From Fedora Project Wiki
No edit summary
No edit summary
Line 171: Line 171:
https://github.com/ruby/ruby/blob/v2_1_0/NEWS
https://github.com/ruby/ruby/blob/v2_1_0/NEWS


[[Category:ChangePageIncomplete]]
[[Category:ChangeReadyForWrangler]]
<!-- When your change proposal page is completed and ready for review and announcement -->
<!-- When your change proposal page is completed and ready for review and announcement -->
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler -->
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler -->

Revision as of 10:28, 16 January 2014


Ruby 2.1

Summary

Ruby 2.1 is the latest stable version of Ruby, with major increases in speed, memory efficiency and reliability. With this major update from Ruby 2.0.0 in Fedora 20 to Ruby 2.1 in Fedora 21, alongside JRuby, Fedora becomes the superior Ruby development platform.

Owner

  • Name: Vít Ondruch
  • Email: vondruch@redhat.com
  • Release notes owner:

Current status

  • Targeted release: Fedora 21
  • Last updated: 2014-01-16
  • Tracker bug: <will be assigned by the Wrangler>

Detailed Description

Ruby 2.1 is upstream's new major release of Ruby. Notable changes are:

  • VM (method cache)
  • RGenGC
  • refinements
  • syntax changes
    • Rational/Complex Literal
    • def’s return value
  • Bignum use GMP
  • String#scrub
  • Socket.getifaddrs
  • RDoc 4.1.0 and RubyGems 2.2.0
  • “literal”.freeze is now optimized
  • add Exception#cause
  • update libraries like BigDecimal, JSON, NKF and Rake
  • remove curses

Please also note, that Ruby moved to semantic versioning since this version.

Yet, it is source level backward compatible with Ruby 2.0.0, so your software will continue to work.

Benefit to Fedora

With a latest release, Ruby language is supporting the newest language features, which enables even faster and easier development of Ruby applications.

Scope

  • Proposal owners:
    • Update of Packaging Guidelines for Ruby packages. This needs to reflect recent changes introduced by recent version of RubyGems shipped with Ruby 2.1.
    • Rebuilding of Ruby packages providing native extensions (i.e. packages which depends on libruby), including changes needed by updated packaging guidelines.
  • Other developers:
  • Release engineering:
    • Rebuilding of Ruby packages providing native extensions (i.e. packages which depends on libruby), including changes needed by updated packaging guidelines.
  • Policies and guidelines:
    • Update of Packaging Guidelines for Ruby packages. This needs to reflect recent changes introduced by recent version of RubyGems shipped with Ruby 2.1.

Upgrade/compatibility impact

  • Users packaging their own RubyGems (not included in Fedora repository) will need to adjust their packages to the recent packaging guidelines.
  • User specific Ruby binary extensions needs to be rebuild.

How To Test

  • No special hardware is needed.
  • To test, install Ruby 2.1 from the testing repository (TBD)
  • Try to locally rebuild your packages using Ruby 2.1.
  • Use the packages with your applications previously written in Ruby (be sure to upgrade your applications to Ruby 2.1 first).
  • If something doesn't work as it should, let us know.

User Experience

The Ruby programmes/scripts should behave as they were used to.

Dependencies

The packages depending on libruby.so will need to be rebuid:

$ repoquery --disablerepo=* --enablerepo=rawhide --arch=x86_64 --whatrequires 'libruby*' | wc -l
125

Contingency Plan

  • Contingency mechanism: We would like to get a special buildroot tag to be able to rebuild necessary the packages with Ruby 2.1. If anything goes wrong, the tag could be easily dropped and previous version of Ruby 2.0.0 and its dependencies stays intact. The tag would be merged into F20 after everything is rebuild.
  • Contingency deadline: TBD (probably F21 software string freeze)
  • Blocks release? No

Documentation

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

Release Notes

  • The Ruby 2.1 bumps soname, therefore Ruby packages, which use binary extensions, should be rebuilt. Nevertheless, since upstream payed great attention to source compatibility, no changes to your code are needed.
  • RubyGems with binary extensions needs to be updated to the recent Package guidelines, to ensure compatibility with new RubyGems release.

https://github.com/ruby/ruby/blob/v2_1_0/NEWS