Features/Ruby 1.9.1

From FedoraProject

< Features
Revision as of 23:57, 21 December 2009 by Kanarip (Talk | contribs)

Jump to: navigation, search

Contents

Ruby 1.9.1

Summary

Ruby 1.9.1 is a long awaited, much anticipated version of Ruby, with major increases in speed and reliability. With Ruby 1.9.1 alongside Ruby 1.8.6 in Fedora 13, possibly including Ruby 1.8.5 as well, Fedora becomes the superior Ruby development platform.

Owner

Interested People

Current status

  • Targeted release: Fedora 13
  • Last updated: Sat Dec 19 2009
  • Percentage of completion: 50%

Latest Status Updates

Detailed Description

Ruby-1.9.1 is upstream's new major release of Ruby. The MRI reference interpreter is replaced by the YARV bytecode interpreter, designed to greatly improve the execution time of ruby programs. [1]

In doing so, upstream has set the anticipations for downstream consumers with faster and more reliable Ruby. Bringing Ruby 1.9.1 to Fedora is essential for Fedora to be at the top of it's game as a Ruby development platform.

While ruby-1.9.1 is great (and all that), some programs have problems with the changes and are unable to keep up in a decent fashion. Admittedly, Ruby does not know a stable ABI nor a stable API, and major-minor-teeny versions can have subtle but significant changes in either the ABI or the API.

In order for Fedora to be the most excellent development platform for Ruby applications (including Ruby on Rails applications), we should make sure that we run at least the following Ruby stacks, noted that the stacks marked with a "(?)" are not in the scope of the current plan;

  • ruby-trunk (?)
  • ruby-1.9.1
  • ruby-1.8.6
  • ruby-1.8.5 (?)

In order to do so, and comply with progressive Packaging Standards (which have been pretty immature for Ruby packages), huge changes to Ruby are necessary and desirable.

Benefit to Fedora

Supporting the growth of a young language with a performance-enhancing milestone release. Ubuntu already includes Ruby-1.9.1 in their 9.10 release.

Scope

Requires rebuilding numerous packages that depend on ruby(abi) = 1.8, or have Requires or BuildRequires for package dependent on ruby(abi) = 1.8

Ruby Search path

The ruby search path is going to change. Not set in stone yet, but this is what it is right now (on my workstation):

[jmeeuwen@ghandalf master]$ ruby -e 'puts $:'
/usr/lib64/ruby/site_ruby/1.9.1
/usr/lib64/ruby/site_ruby/1.9.1/x86_64-linux
/usr/lib64/ruby/site_ruby
/usr/lib64/ruby/vendor_ruby/1.9.1
/usr/lib64/ruby/vendor_ruby/1.9.1/x86_64-linux
/usr/lib64/ruby/vendor_ruby
/usr/lib64/ruby/1.9.1
/usr/lib64/ruby/1.9.1/x86_64-linux 

Changes like these mean that the Packaging Guidelines for Ruby will also need to be updated.

Packages that require "ruby(abi) = 1.8"

  • 80 in total
repoquery -c rawhide-i386.conf --qf="%{SOURCERPM}" --whatrequires "ruby(abi) = 1.8" | sort | uniq

Packages that require "*ruby*"

  • 119 in total (80 matches from previous query, of course)
repoquery -c rawhide-i386.conf --qf="%{SOURCERPM}" --whatrequires "*ruby*" | sort | uniq

Test Plan

  1. Make a compatibility package available: compat-ruby1.8-1.8.6.287
    1. Rebuild packages requiring ruby(abi) = 1.8 against the compat- package
  2. Release ruby-1.9.1
    1. Start moving packages to requiring ruby(abi) = 1.9 and test functionality
    2. Fix upstream whereever possible

User Experience

  • Puppet had better work, no matter what -- Yaakov M. Nemoy 16:49, 6 December 2009 (UTC)

Dependencies

  • Maintainers of packages dependent on ruby need to be in the loop
  • provenpackager membership for /me (done)
  • Package Guidelines change

Contingency Plan

  • Revert compat-ruby1.8-1.8.6.287 to just ruby-1.8.6.287

Documentation

Release Notes

...