Skip to content

Releases: oracle/truffleruby

TruffleRuby - GraalVM Community Edition 19.2.0.1

13 Sep 17:55
Compare
Choose a tag to compare

Ruby is an experimental language in the GraalVM 19.2.0.1 release. More information is available on the GraalVM website. Changes in 19.2.0.1:

  • Updated to use GraalVM 19.2.0.1 release.

The general GraalVM 19.2.0.1 release notes are available on the graalvm.org website.

TruffleRuby - GraalVM Community Edition 19.2.0

20 Aug 18:10
Compare
Choose a tag to compare

Ruby is an experimental language in the GraalVM 19.2.0 release. More information is available on the GraalVM website. Changes in 19.2.0 (from the project changelog):

New features:

  • Fiddle has been implemented.

Bug fixes:

  • Set RbConfig::CONFIG['ruby_version'] to the same value as the TruffleRuby version. This fixes reusing C extensions between different versions of TruffleRuby with Bundler (#1715).
  • Fixed Symbol#match returning MatchData (#1706).
  • Allow Time#strftime to be called with binary format strings.
  • Do not modify the argument passed to IO#write when the encoding does not match (#1714).
  • Use the class where the method was defined to check if an UnboundMethod can be used for #define_method (#1710).
  • Fixed setting $~ for Enumerable and Enumerator::Lazy's #grep and #grep_v.
  • Improved errors when interacting with single-threaded languages (#1709).

Compatibility:

  • Added Kernel#then (#1703).
  • FFI::Struct#[]= is now supported for inline character arrays.
  • blocking: true is now supported for FFI::Library#attach_function.
  • Implemented Proc#>> and #<< (#1688).
  • Thread.report_on_exception is now true by default like MRI 2.5+.
  • BigDecimal compatibility has been generally improved in several ways.

Changes:

  • An interop read message sent to a Proc will no longer call the Proc.

Performance:

  • Several String methods have been made faster by the usage of vector instructions
    when searching for a single-byte character in a String.
  • Methods needing the caller frame are now better optimized.

The general GraalVM 19.2.0 release notes are available on the graalvm.org website.

TruffleRuby - GraalVM Community Edition 19.2.0-dev-b01

12 Aug 10:30
Compare
Choose a tag to compare

This is a preview release for 19.2 and we recommend testing it for all users.

TruffleRuby - GraalVM Community Edition 19.1.1

17 Jul 13:02
Compare
Choose a tag to compare

Ruby is an experimental language in the GraalVM 19.1.1 release. More information is available on the GraalVM website. Changes in 19.1.1:

  • Updated to use GraalVM 19.1.1 release.

TruffleRuby - GraalVM Community Edition 19.1.0

02 Jul 16:39
Compare
Choose a tag to compare

Ruby is an experimental language in the GraalVM 19.1.0 release.

More information is available on the GraalVM website: http://www.graalvm.org/docs/reference-manual/languages/ruby/

Changes in 19.1.0:

Bug fixes:

  • Sharing for thread-safety of objects is now triggered later as intended, e.g., when a second Thread is started.
  • Fixed Array#to_h so it doesn't set a default value (#1698).
  • Removed extra public methods on IO (#1702).
  • Fixed Process.kill(signal, Process.pid) when the signal is trapped as :IGNORE (#1702).
  • Fixed Addrinfo.new(String) to reliably find the address family (#1702).
  • Fixed argument checks in BasicSocket#setsockopt (#1460).
  • Fixed ObjectSpace.trace_object_allocations (#1456).
  • Fixed BigDecimal#{clone,dup} so it now just returns the receiver, per Ruby 2.5+ semantics (#1680).
  • Fixed creating BigDecimal instances from non-finite Float values (#1685).
  • Fixed BigDecimal#inspect output for non-finite values (e.g, NaN or -Infinity) (#1683).
  • Fixed BigDecimal#hash to return the same value for two BigDecimal objects that are equal (#1656).
  • Added missing BigDecimal constant definitions (#1684).
  • Implemented rb_eval_string_protect.
  • Fixed rb_get_kwargs to correctly handle optional and rest arguments.
  • Calling Kernel#raise with a raised exception will no longer set the cause of the exception to itself (#1682).
  • Return a FFI::Function correctly for functions returning a callback.
  • Convert to intuitive Ruby exceptions when INVOKE fails (#1690).
  • Implemented FFI::Pointer#clear (#1687).
  • Procs will now yield to the block in their declaration context even when called with a block argument (#1657).
  • Fixed problems with calling POSIX methods if Symbol#[] is redefined (#1665).
  • Fixed sharing of Array and Hash elements for thread-safety of objects (#1601).
  • Fixed concurrent modifications of Gem::Specification::LOAD_CACHE (#1601).
  • Fix TCPServer#accept to set #do_not_reverse_lookup correctly on the created TCPSocket.

Compatibility:

  • Exceptions from coerce are no longer rescued, like MRI.
  • Implemented Integer#{allbits?,anybits?,nobits?}.
  • Integer#{ceil,floor,truncate} now accept a precision and Integer#round accepts a rounding mode.
  • Added missing Enumerable#filter and Enumerator::Lazy#filter aliases to the respective select method (#1610).
  • Implemented more Ripper methods as no-ops (#1694).
  • Implemented rb_enc_sprintf (#1702).
  • Implemented ENV#{filter,filter!} aliases for select and select!.
  • Non-blocking StringIO and Socket APIs now support exception: false like MRI (#1702).
  • Increased compatibility of BigDecimal.
  • String#-@ now performs string deduplication (#1608).
  • Hash#merge now preserves the key order from the original hash for merged values (#1650).
  • Coerce values given to FFI::Pointer methods.
  • FrozenError is now defined and is used for can't modify frozen object exceptions.
  • StringIO is now available by default like in MRI, because it is required by RubyGems.

Changes:

  • Interactive sources (like the GraalVM polyglot shell) now all share the same binding (#1695).
  • Hash code calculation has been improved to reduce hash collisions for Hash and other cases.

Performance:

  • eval(code, binding) for a fixed code containing blocks is now much faster. This improves the performance of rendering ERB templates containing loops.
  • rb_str_cat has been changed to improve performance. THe C string is now concatentated without first being converted to a Ruby string or having its encoding checked. As a side effect the behaviour of rb_str_cat should now more closely match that of MRI.

TruffleRuby - GraalVM Community Edition 19.0.2

14 Jun 18:35
Compare
Choose a tag to compare

Ruby is an experimental language in the GraalVM 19.0.2 release. More information is available on the GraalVM website. Changes in 19.0.2:

  • Updated to use GraalVM 19.0.2 release.

TruffleRuby - GraalVM Community Edition 19.0.0

09 May 18:44
Compare
Choose a tag to compare

Ruby is an experimental language in the GraalVM 19.0.0 release

Bug fixes:

  • The debugger now sees global variables as the global scope.
  • Temporary variables are no longer visible in the debugger.
  • Setting breakpoints on some lines has been fixed.
  • The OpenSSL C extension is now always recompiled, fixing various bugs when using the extension (e.g., when using Bundler in TravisCI) (#1676, #1627, #1632).
  • Initialize $0 when not run from the 'ruby' launcher, which is needed to require gems (#1653).

Compatibility:

  • do...end blocks can now have rescue/else/ensure clauses like MRI (#1618).

Changes:

  • TruffleRuby.sulong? has been replaced by TruffleRuby.cexts?, and TruffleRuby.graal? has been replaced by TruffleRuby.jit?. The old methods will continue to work for now, but will produce warnings, and will be removed at a future release.

TruffleRuby - GraalVM Community Edition 1.0 RC16

19 Apr 15:34
Compare
Choose a tag to compare

Bug fixes:

  • Fixed Hash#merge with no arguments to return a new copy of the receiver (#1645).
  • Fixed yield with a splat and keyword arguments (#1613).
  • Fixed rb_scan_args to correctly handle kwargs in combination with optional args.
  • Many fixes for FFI::Pointer to be more compatible with the ffi gem.

New features:

  • Rounding modes have been implemented or improved for Float, Rational, BigDecimal (#1509).
  • Support Homebrew installed in other prefixes than /usr/local (#1583).
  • Added a pure-Ruby implementation of FFI which passes almost all Ruby FFI specs (#1529, #1524).

Changes:

  • Support for the Darkfish theme for RDoc generation has been removed.

Compatibility:

  • The KeyError raised from ENV#fetch and Hash#fetch now matches MRI's message formatting (#1633).
  • Add the missing key and receiver values to KeyError raised from ENV#fetch.
  • String#unicode_normalize has been moved to the core library like in MRI.
  • StringScanner will now match a regexp beginning with ^ even when not scanning from the start of the string.
  • Module#define_method is now public like in MRI.
  • Kernel#warn now supports the uplevel: keyword argument.

TruffleRuby - GraalVM Community Edition 1.0 RC15

05 Apr 16:14
Compare
Choose a tag to compare

Bug fixes:

  • Improved compatibility with MRI's Float#to_s formatting (#1626).
  • Fixed String#inspect when the string uses a non-UTF-8 ASCII-compatible encoding and has non-ASCII characters.
  • Fixed puts for strings with non-ASCII-compatible encodings.
  • rb_protect now returns Qnil when an error occurs.
  • Fixed a race condition when using the interpolate-once (/o) modifier in regular expressions.
  • Calling StringIO#close multiple times no longer raises an exception (#1640).
  • Fixed a bug in include file resolution when compiling C extensions.

New features:

  • Process.clock_getres has been implemented.

Changes:

  • debug, profile, profiler, which were already marked as unsupported, have been removed.
  • Our experimental JRuby-compatible Java interop has been removed - use Polyglot and Java instead.
  • The Trufle handle patches applied to psych C extension have now been removed.
  • The rb_tr_handle_* functions have been removed as they are no longer used in any C extension patches.

Bug fixes:

  • autoload :C, "path"; require "path" now correctly triggers the autoload.
  • Fixed UDPSocket#bind to specify family and socktype when resolving address.
  • The shell standard library can now be require-d.
  • Fixed a bug where for could result in a NullPointerException when trying to assign the iteration variable.
  • Existing global variables can now become aliases of other global variables (#1590).

Compatibility:

  • ERB now uses StringScanner and not the fallback, like on MRI. As a result strscan is required by require 'erb' (#1615).
  • Yield different number of arguments for Hash#each and Hash#each_pair based on the block arity like MRI (#1629).
  • Add support for the base keyword argument to Dir.{[], glob}.

TruffleRuby - GraalVM Community Edition 1.0 RC14

05 Apr 13:17
Compare
Choose a tag to compare

Updated to Ruby 2.6.2.

Bug fixes:

  • Implement rb_io_wait_writable (#1586).
  • Fixed error when using arrows keys first within irb or pry (#1478, #1486).
  • Coerce the right hand side for all BigDecimal operations (#1598).
  • Combining multiple ** arguments containing duplicate keys produced an incorrect hash. This has now been fixed (#1469).
  • IO#read_nonblock now returns the passed buffer object, if one is supplied.
  • Worked out autoloading issue (#1614).

New features:

  • Implemented String#delete_prefix, #delete_suffix, and related methods.
  • Implemented Dir.children and Dir#children.
  • Implemented Integer#sqrt.

Changes:

  • -Xoptions has been removed - use --help:languages instead.
  • -Xlog= has been removed - use --log.level= instead.
  • -J has been removed - use --vm. instead.
  • -J-cp lib.jar and so on have removed - use --vm.cp=lib.jar or --vm.classpath=lib.jar instead.
  • --jvm. and --native. have been deprecated, use --vm. instead to pass VM options.
  • -Xoption=value has been removed - use --option=value instead.
  • The -X option now works as in MRI.
  • --help:debug is now --help:internal.
  • ripper is still not implemented, but the module now exists and has some methods that are implemented as no-ops.