Ruby 2.4.0-preview1 Released

We are pleased to announce the release of Ruby 2.4.0-preview1.

Ruby 2.4.0-preview1 is the first preview of Ruby 2.4.0. This preview1 is released earlier than usual because it includes so many new features and improvements. Feel free to send feedback since you can still change the features.

Unify Fixnum and Bignum into Integer

Though ISO/IEC 30170:2012 doesn’t specify details of the Integer class, CRuby has two visible Integer classes: Fixnum and Bignum. Ruby 2.4 unifies them into Integer.

String supports Unicode case mappings

String/Symbol#upcase/downcase/swapcase/capitalize(!) now handle Unicode case mappings instead of only ASCII case mappings.

Performance improvements

Ruby 2.4 also contains the following performance improvements including language changes:

Array#max, Array#min

[x, y].max and [x, y].min are optimized to not create a temporary array under certain conditions.

Regexp#match?

Added Regexp#match?, which executes a regexp match without creating a back reference object and changing $~ to reduce object allocation.

Other performance improvements

Debugging

Thread#report_on_exception and Thread.report_on_exception

Ruby ignores exceptions in threads unless another thread explicitly joins them. With report_on_exception = true, you can notice if a thread has died due to an unhandled exception.

Send us feedback what should be the default for report_on_exception and about report-on-GC.

Thread deadlock detection now shows threads with their backtrace and dependency

Ruby has deadlock detection around waiting threads, but its report doesn’t include enough information for debugging. Ruby 2.4’s deadlock detection shows threads with their backtrace and dependent threads.

Try and enjoy programming with Ruby 2.4.0-preview1, and send us feedback!

Notable Changes since 2.3

See NEWS and ChangeLog for details.

With those changes, 1140 files changed, 33126 insertions(+), 50993 deletions(-) since Ruby 2.3.0!

Download

  • https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview1.tar.bz2

    • SIZE: 14108114 bytes
    • SHA1: 7dcc42548d0724d83b6589ab98f34282845d7bcd
    • SHA256: 17570f0b84215ca82252f10c167ee50bc075383c018420c6b2601ae1cade0649
    • SHA512: c9873e8686eb54dbde61d6e23cd5197beebccd6cb31fd12c82763ebe1fde17095d7514d9d93c2c82b238032c98691df5479dc2d666a8a590e0fc54450ec29cb5
  • https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview1.tar.gz

    • SIZE: 17605452 bytes
    • SHA1: 1003a1e57547d81f4bb979c0f40f242afc284cd5
    • SHA256: 80d02f49f40e7ce07b70bee7efda751b0595a349a017306e9fe8caad5da13e64
    • SHA512: 4b603ab4ff9ea7e8bb8053aa4b638839d534241466d7f0e4d5bca3f2ea416694c2ea391790f1ffdc07fa538918d27707621741eb0ddc7bd00eb9d7628622787a
  • https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview1.tar.xz

    • SIZE: 11155800 bytes
    • SHA1: bc33085277266f5a09a143bf6817affcb77f8e7f
    • SHA256: 62942c7300727469fe3d2b43e5a5c772d4836cf624a1d644bdece2afaca472c8
    • SHA512: dfc2c6642d49fa95383817a6dc82c416b3218ddfdaf882d6d2e5a7da22d0a5ac142e516a57aa96214070f3c7551d275044233ac052c82d67189b01c39847aad4
  • https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview1.zip

    • SIZE: 19904781 bytes
    • SHA1: 25c16ee91bbcb0224f80e20d938f5c08832973f7
    • SHA256: fd588aea1558b1171f87a3dd342ee207b8995a2c0a8241d7aa15bcfa16036854
    • SHA512: f2fff35ff9157a4b31177b3d6b91bdaad04c22b3c626c3a5e5ec9a31b103f9607b31c909ef27880065cfdbcfa5d6901a6db89d22e0c645666d069c5b6dd1818b

Release Comment

See also the release schedule and other information:

ReleaseEngineering24