TruffleRuby 33.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.
More information is available in the README.
TruffleRuby comes in two standalone modes, native and jvm, each built with both Oracle GraalVM and Community Edition.
See the documentation for which release asset corresponds to what.
Blog Post
https://truffleruby.dev/blog/truffleruby-33-is-released
Changelog
New features:
Hashis now thread-safe on TruffleRuby, based on Benoit Daloze's PhD research (#3869, #3112, #2763, @eregon).- The TruffleRuby version changed from being based on the GraalVM version to being based on the CRuby version. TruffleRuby version
AB.C.Daims to be compatible with CRubyA.B. See the README for more details (#4020, @eregon). - TruffleRuby now ships with its own
libyamland no longer needs a systemlibyaml(#3479, @eregon). - TruffleRuby now ships with its own
libssland no longer needs a systemlibssl. It still requires CA certificates from the system. (#3479, @eregon).
Bug fixes:
- Fix
Integer#%when called with a bignum argument (#3931, @andrykonchin).
Compatibility:
- Fix extra warnings for
Kernel#sprintf(#3938, @eregon). - Support using tailwindcss-ruby's native platform gems (@nirvdrum).
- Fix a
TypeErrorwhen callingKernel#warnwith explicituplevel: nil(@earlopain). - Fix inspect output of symbols that contain non-ASCII letters (@earlopain).
- Implement
rb_struct_initialize()for bothStructandData(#3997, @eregon). - Fix
Hash#{select,slice,transform_values}andHash.[]methods and retaincompare_by_identityflag (@andrykonchin). - Fix
Hash#rejectand do not retaindefaultanddefault_procvalues (@andrykonchin). - Fix
Comparable#clampwhen the given an infinite interval (#3945, @andrykonchin). File.pathnow checks for\0and encoding (#4047, @nobu).- Implement
MatchData#bytebeginandMatchData#byteendfor Ruby 3.4 (#3883, @Schwad). - Define
Data#initializeto help deserializing Data instances (@eregon). - Fix
Rational()and arguments type conversion (#3969, #3954 @andrykonchin). - Support
Rational()withexceptionkeyword argument (#3969, @andrykonchin). - Ignore
bom|prefix if file is not opened for reading (#4079, @rwstauner).
Incompatible Changes:
- Maven coordinates to embed TruffleRuby have changed from
org.graalvm.polyglot:ruby/org.graalvm.ruby:rubytodev.truffleruby:truffleruby(#4034, @eregon). - The
--single-threadedoption now defaults to false also when embedding TruffleRuby (#3958, @eregon).
Other contributions without Changelog entries
- Add Dockerfiles and GitHub Actions to generate and publish docker images (#2405, @flavorjones).
- Fix invalid inlining usage of BooleanCastNode (#4043, @chumer).