TruffleRuby - GraalVM Community Edition 21.0.0
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 useirb --readline
, which disables some IRB features but is much faster for copy/pasting code.
New features:
- Updated to Ruby 2.7.2 (#2004, @eregon, @chrisseaton).
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, @aardvark179).
- Fixed return value of
Enumerable#count
andEnumerable#uniq
with multiple yielded arguments (#2145, @LillianZ). - Fixed
String#unpack
forw*
format (#2143, @bjfish). - 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 forFFI::Pointer#put_array_of_*
(#1525). - Fixed issue with different
Struct
s having the same hash values (#2214).
Compatibility:
- Implement
String#undump
(#2131, @kustosz) Errno
constants with the sameerrno
number are now the same class.- Implement
Enumerable#tally
andEnumerable#filter_map
(#2144 and #2152, @LillianZ). - Implement
Range#minmax
. - Pass more
Enumerator::Lazy#uniq
andEnumerator::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#<<
andProc#>>
raises TypeError if passed not callable object (#2004, @ssnickolay).- Support time and date related messages for
Time
(#2166). - Updated
Dir.{glob,[]}
to raiseArgumentError
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 onTruffle::Interop
(#2139). Some methods were renamed to match the scheme described in the documentation.