Skip to content

TruffleRuby 25.0.0

Latest
Compare
Choose a tag to compare
@graalvmbot graalvmbot released this 16 Sep 12:54
· 50 commits to master since this release

TruffleRuby is a high-performance implementation of the Ruby programming language. It aims to be fully compatible with the standard implementation of Ruby, MRI.

More information is available at https://github.com/oracle/truffleruby/blob/master/README.md.

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.

Changelog

New features:

Bug fixes:

  • Fix Range#cover? on begin-less ranges and non-integer values (@nirvdrum, @rwstauner).
  • Fix Time.new with String argument and handle nanoseconds correctly (#3836, @andrykonchin).
  • Fix a possible case of infinite recursion when implementing frozen? in a native extension (@nirvdrum).
  • Fix parameters forwarding to a method call executed with Kernel#eval (@andrykonchin).
  • Fix segfaults in native extensions when the reference processing thread is interrupted and would longjmp() incorrectly (#3903, @eregon).

Compatibility:

  • Support Timezone argument to Time.{new,at} and Time#{getlocal,localtime} (#1717, @patricklinpl, @manefz, @rwstauner).
  • Updated to Ruby 3.3.7 (@andrykonchin).
  • Implement StringScanner#{peek_byte,scan_byte,scan_integer,named_captures} methods (#3788, @andrykonchin).
  • Support String patterns in StringScanner#{exist?,scan_until,skip_until,check_until,search_full} methods (@andrykonchin).
  • Implement ObjectSpace::WeakKeyMap (#3681, @andrykonchin).
  • Fix String#slice called with negative offset (@andrykonchin).
  • Fix explicitly inherited Struct subclasses and don't provide #members method (#3802, @andrykonchin).
  • Support Digest plugins (#1390, @nirvdrum).
  • Joni has been updated from 2.2.1 to 2.2.6 (@andrykonchin).
  • Fix numeric coercing when #coerce method is not public (#3848, @andrykonchin).
  • Fix Kernel#raise and don't override cause at exception re-raising (#3831, @andrykonchin).
  • Return a pointer with #type_size of 1 for Pointer#read_pointer (@eregon).
  • Fix rb_str_locktmp() and rb_str_unlocktmp() to raise FrozenError when string argument is frozen (#3752, @andrykonchin).
  • Fix Struct setters to raise FrozenError when a struct is frozen (#3850, @andrykonchin).
  • Fix Struct#initialize when mixed positional and keyword arguments (#3855, @andrykonchin).
  • Fix Integer.sqrt for large values (#3872, @tompng).
  • Fix Data#inspect when data contains a recursive attribute (#3847, @andrykonchin).
  • Fix StringIO#{gets,readline} when it is called with both separator and limit to truncate the separator if the limit is exceeded (#3856, @andrykonchin).
  • Implement rb_error_frozen_object for the google-protobuf gem (@nirvdrum).
  • Adjust a FrozenError's message and add a receiver when a frozen module or class is modified (e.g. by defining or undefining an instance method or by defining a nested module (@andrykonchin).
  • Fix Kernel#sprintf and %p format specification to produce "nil" for nil argument (#3846, @andrykonchin).
  • Reimplement Data#with to not call Data.new that can be removed or redefined (#3890, @andrykonchin).

Performance:

  • Use TRegex for binary Regexps with non-US-ASCII characters in the pattern like /[\x80-\xff]/n (#3858, @eregon).