From Fedora Project Wiki
No edit summary
No edit summary
Line 90: Line 90:
* Use the packages, ideally with your applications previously written in Ruby (be sure to upgrade your applications to Ruby 1.9.3 first).
* Use the packages, ideally with your applications previously written in Ruby (be sure to upgrade your applications to Ruby 1.9.3 first).
* If something doesn't work as it should, let us know (specifically, concentrate on correct load paths, encodings, changes in binary extensions and also other new features added between 1.8.7 and 1.9.3).
* If something doesn't work as it should, let us know (specifically, concentrate on correct load paths, encodings, changes in binary extensions and also other new features added between 1.8.7 and 1.9.3).


Please note that we already tested all packages available in Fedora for compatibility with Ruby 1.9.3. You can go through the findings in following mailing list threads:
Please note that we already tested all packages available in Fedora for compatibility with Ruby 1.9.3. You can go through the findings in following mailing list threads:
Line 110: Line 111:
== Documentation ==
== Documentation ==


* http://svn.ruby-lang.org/repos/ruby/tags/v1_8_7_352/NEWS
http://www.ruby-doc.org/
* http://svn.ruby-lang.org/repos/ruby/tags/v1_9_1_431/NEWS
* http://svn.ruby-lang.org/repos/ruby/tags/v1_9_2_290/NEWS
* http://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_0/NEWS


== Upstream EOL ==
== Upstream EOL ==
Line 124: Line 122:
<!-- The Fedora Release Notes inform end-users about what is new in the release.  Examples of past release notes are here: http://docs.fedoraproject.org/release-notes/ -->
<!-- The Fedora Release Notes inform end-users about what is new in the release.  Examples of past release notes are here: http://docs.fedoraproject.org/release-notes/ -->
<!-- The release notes also help users know how to deal with platform changes such as ABIs/APIs, configuration or data file formats, or upgrade concerns.  If there are any such changes involved in this feature, indicate them here.  You can also link to upstream documentation if it satisfies this need.  This information forms the basis of the release notes edited by the documentation team and shipped with the release. -->
<!-- The release notes also help users know how to deal with platform changes such as ABIs/APIs, configuration or data file formats, or upgrade concerns.  If there are any such changes involved in this feature, indicate them here.  You can also link to upstream documentation if it satisfies this need.  This information forms the basis of the release notes edited by the documentation team and shipped with the release. -->
*
 
* The Ruby 1.9.3 breaks ABI/API compatibility with previous version of Ruby, therefore soname was bumped. All RubyGems which uses binary extensions should be rebuild. All applications which uses Ruby binding should be rebuild.
* Ruby 1.9.3 as well as integrated version of RubyGems now use different folder structure, compatible with FHS. All libraries should be adjusted to this change. This change is reflected in new [[PackagingDrafts/Ruby| packaging guidelines draft]].
** Unprivileged user now installs gems automatically into her/his home directory, root is installing gems into /usr/local directory structure and system gems, managed by RPM are installed into /usr
** Ruby libraries managed by RPM are no installed into vendor directories while other libraries managed by system administrator should go into site directories.
 
 
* http://svn.ruby-lang.org/repos/ruby/tags/v1_9_1_431/NEWS
* http://svn.ruby-lang.org/repos/ruby/tags/v1_9_2_290/NEWS
* http://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_0/NEWS


== Comments and Discussion ==
== Comments and Discussion ==

Revision as of 13:47, 3 January 2012


Ruby 1.9.3

Summary

Ruby 1.9.3 is the latest stable version of Ruby, with major increases in speed and reliability. With this major update from Ruby 1.8.7 in Fedora 16 to Ruby 1.9.3 in Fedora 17, alongside JRuby, Fedora becomes the superior Ruby development platform.

Owner

  • Email: vondruch@redhat.com

Current status

  • Targeted release: Fedora 17
  • Last updated: 2011-09-07
  • Percentage of completion: 30%


Detailed Description

Ruby 1.9.3 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.3 to Fedora is essential for Fedora to be at the top of it's game as a Ruby development platform.

Benefit to Fedora

Supporting the growth of a young language with a performance-enhancing milestone release. Add to that the multiplatform targetted development we enable downstream parties to do using our distribution.

Scope

The following includes a summary of changes included in this feature:

  • New Packaging Guidelines for Ruby packages (gems and extension libraries)
  • Rebuilding of all Ruby packages, and all packages depending on Ruby
  • Changes to the search path to comply with the multi-versioning
  • Changes to the location of files to comply with FHS, multilib and packaging standards

New Packaging Guidelines

Drafts of new packaging guidelines will have to be proposed to FESCo. You can see the current draft.

Ruby Search path

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

$ ruby -e "puts $:"
/usr/local/lib64/ruby/site_ruby
/usr/local/share/ruby/site_ruby
/usr/lib64/ruby/vendor_ruby
/usr/share/ruby/vendor_ruby
/usr/lib64/ruby
/usr/lib64/ruby/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"

Requires rebuilding numerous packages that depend on ruby(abi) = 1.8, or have Requires or BuildRequires for package dependent on ruby(abi) = 1.8. All these packages has to be updated to support ruby(abi) = 1.9

  • 115 in total
repoquery --repoid=rawhide-source --arch=src --whatrequires 'ruby(abi) = 1.8' | sort | uniq

Packages that require "*ruby*"

  • 334 in total (115 matches from previous query, of course)
repoquery --repoid=rawhide-source --arch=src --whatrequires '*ruby*' | sort | uniq

How To Test

  • No special hardware is needed.
  • To test, install Ruby 1.9.3 and the rebuilt packages from the testing repository http://vondruch.fedorapeople.org/ruby_1.9.3.repo . For more updates, please follow the Ruby-SIG mailing list thread http://lists.fedoraproject.org/pipermail/ruby-sig/2011-December/000705.html . We hope to have available soon dedicated BuildRoot in Koji.
  • Use the packages, ideally with your applications previously written in Ruby (be sure to upgrade your applications to Ruby 1.9.3 first).
  • If something doesn't work as it should, let us know (specifically, concentrate on correct load paths, encodings, changes in binary extensions and also other new features added between 1.8.7 and 1.9.3).


Please note that we already tested all packages available in Fedora for compatibility with Ruby 1.9.3. You can go through the findings in following mailing list threads:

User Experience

The Ruby programmes/scripts will get significantly faster compared to the current state.

Dependencies

Ruby has more than three hundred dependencies in Fedora, most of them are Rubygems. All of these 300 will have to be rebuilt and tested.

Contingency Plan

We would like to get a special buildroot tag to be able to rebuild all the packages with Ruby 1.9.3. If anything goes wrong, the tag could be easily dropped and previous version of Ruby 1.8.7 and its dependencies stays intact.

Documentation

http://www.ruby-doc.org/

Upstream EOL

Release Notes

  • The Ruby 1.9.3 breaks ABI/API compatibility with previous version of Ruby, therefore soname was bumped. All RubyGems which uses binary extensions should be rebuild. All applications which uses Ruby binding should be rebuild.
  • Ruby 1.9.3 as well as integrated version of RubyGems now use different folder structure, compatible with FHS. All libraries should be adjusted to this change. This change is reflected in new packaging guidelines draft.
    • Unprivileged user now installs gems automatically into her/his home directory, root is installing gems into /usr/local directory structure and system gems, managed by RPM are installed into /usr
    • Ruby libraries managed by RPM are no installed into vendor directories while other libraries managed by system administrator should go into site directories.


Comments and Discussion