github oracle/truffleruby vm-21.0.0
TruffleRuby - GraalVM Community Edition 21.0.0

latest releases: graal-24.1.0, vm-ee-24.1.0, vm-24.1.0...
3 years ago

TruffleRuby is a high-performance implementation of the Ruby programming language.
TruffleRuby aims to be fully compatible with the standard implementation of Ruby, MRI.
The Ruby language support can be added to GraalVM using the gu utility.
More information is available on the GraalVM website: http://www.graalvm.org/ruby/

Changelog

21.0.0

Release notes:

  • The new IRB is quite slow when copy/pasting code into it. This is due to an inefficient io/console implementation which will be addressed in the next release. A workaround is to use irb --readline, which disables some IRB features but is much faster for copy/pasting code.

New features:

  • Updated to Ruby 2.7.2 (#2004).

Bug fixes:

  • Fix error message when the method name is not a Symbol or String for Kernel#respond_to? (#2132, @ssnickolay)
  • Fixed setting of special variables in enumerators and enumerables (#1484).
  • Fixed return value of Enumerable#count and Enumerable#uniq with multiple yielded arguments (#2145, @LillianZ).
  • Fixed String#unpack for w* format (#2143).
  • Fixed issue with Kernel#` when invalid UTF-8 given (#2118).
  • Fixed issue with Method#to_proc and special variable storage (#2156).
  • Add missing offset parameter for FFI::Pointer#put_array_of_* (#1525).
  • Fixed issue with different Structs having the same hash values (#2214).

Compatibility:

  • Implement String#undump (#2131, @kustosz)
  • Errno constants with the same errno number are now the same class.
  • Implement Enumerable#tally and Enumerable#filter_map (#2144 and #2152, @LillianZ).
  • Implement Range#minmax.
  • Pass more Enumerator::Lazy#uniq and Enumerator::Lazy#chunk specs (#2146, @LillianZ).
  • Implement Enumerator#produce (#2160, @zverok)
  • Implement Complex#<=> (#2004, @ssnickolay).
  • Add warning for proc without block (#2004, @ssnickolay).
  • Implemented FrozenError#receiver.
  • Proc#<< and Proc#>> raises TypeError if passed not callable object (#2004, @ssnickolay).
  • Support time and date related messages for Time (#2166).
  • Updated Dir.{glob,[]} to raise ArgumentError for nul-separated strings.
  • Kernel#lambda with no block in a method called with a block raises an exception (#2004, @ssnickolay).
  • Implemented BigDecimal as C extension to improve compatibility.
  • Comment lines can be placed between fluent dot now (#2004, @ssnickolay).
  • Implemented rb_make_exception.
  • **kwargs now accept non-Symbol keys like Ruby 2.7.
  • Updated the Unicode Emoji version (#2173, @wildmaples).
  • Added Enumerator::Yielder#to_proc.
  • Implemented Enumerator::Lazy#eager.
  • Updated Method#inspect to include paremeter information.
  • Update Module#name to return the same frozen string.

Performance:

  • Refactor and implement more performant MatchData#length (#2147, @LillianZ).
  • Refactor and implement more performant Array#sample (#2148, @LillianZ).
  • String#inspect is now more efficient.

Changes:

  • All InteropLibrary messages are now exposed consistently as methods on Truffle::Interop (#2139). Some methods were renamed to match the scheme described in the documentation.

Don't miss a new truffleruby release

NewReleases is sending notifications on new releases.