Skip to content

Releases: oracle/truffleruby

TruffleRuby - GraalVM Community Edition 19.3.0.2

24 Dec 18:38
Compare
Choose a tag to compare

Ruby is an experimental language in the GraalVM 19.3.0.2 release. More information is available on the GraalVM website.

TruffleRuby - GraalVM Community Edition 19.3.0

20 Nov 16:22
Compare
Choose a tag to compare

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

New features:

  • Compilation of C extensions is now done with an internal LLVM toolchain producing both native code and bitcode. This means more C extensions should compile out of the box and this should resolve most linker-related issues.
  • It is no longer necessary to install LLVM for installing C extensions on TruffleRuby.
  • It is no longer necessary to install libc++ and libc++abi for installing C++ extensions on TruffleRuby.
  • On macOS, it is no longer necessary to install the system headers package (#1417).
  • License updated to EPL 2.0/GPL 2.0/LGPL 2.1 like recent JRuby.

Bug fixes:

  • rb_undef_method now works for private methods (#1731, @cky).
  • Fixed several issues when requiring C extensions concurrently (#1565, @eregon).
  • self.method ||= value with a private method now works correctly (#1673, @pitr-ch).
  • Fixed RegexpError: invalid multibyte escape for binary regexps with a non-binary String (#1433, @aardvark179).
  • Arrays now report their methods to other languages for interopability (#1768).
  • Installing sassc now works due to using the LLVM toolchain (#1753).
  • Renamed Truffle::Interop.respond_to? to avoid conflict with Ruby's respond_to? (#1491).
  • Warn only if $VERBOSE is true when a magic comment is ignored (#1757, @nirvdrum).
  • Make C extensions use the same libssl as the one used for the openssl C extension (#1770).

Compatibility:

  • GC.stat can now take an optional argument (#1716, @kirs).
  • Kernel#load with wrap has been implemented (#1739, @chrisseaton).
  • Implemented Kernel#spawn with :chdir (#1492).
  • Implemented rb_str_drop_bytes, notably used by OpenSSL (#1740, @cky).
  • Include executables of default gems, needed for rails new in Rails 6.
  • Use compilation flags similar to MRI for C extension compilation.
  • Warn for gem update --system as it is not fully supported yet and is often not needed.
  • Pass -undefined dynamic_lookup to the linker on macOS like MRI.

Performance:

  • Core methods are no longer always cloned, which reduces memory footprint and should improve warmup.
  • Inline cache calls to rb_intern() with a constant name in C extensions.
  • Improve allocation speed of native handles for C extensions.
  • Improve the performance of NIL_P and INT2FIX in C extensions.
  • Various fixes to improve Rack performance.
  • Optimize String#gsub(String) by not creating a Regexp and using String#index instead.
  • Fixed "FrameWithoutBoxing should not be materialized" compilation issue in TryNode.

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

TruffleRuby - GraalVM Community Edition 19.2.1

15 Oct 18:57
Compare
Choose a tag to compare

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

  • Updated to use GraalVM 19.2.1 release.

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

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.