The JRuby community is pleased to announce the release of JRuby 10.0.0.0.
- Homepage: https://www.jruby.org/
- Download: Downloads — JRuby.org
JRuby 10 is finally here! We've jumped to Ruby 3.4 compatibility and Java
21 minimum to bring you the best Ruby on JVM experience possible. We are
confident this is the most compatible and stable major release we’ve ever
had.
Our blog post on JRuby 10 provides a high-level overview of the major
changes, with some additional details below. We will update the blog post
with additional detailed articles over the coming weeks:
As with any "dot zero" release, we are planning a series of quick updates
to address any last-minute issues that snuck into the release. Please file
bugs for any issues you see while testing JRuby 10.0:
Contributors
The JRuby core team today includes Charles Oliver Nutter (@headius), Thomas
Enebo (@enebo), and Karol Bucek (@kares). Over the past year we have been
honored to accept contributions from many other developers, and JRuby 10
would not be as stable or complete without their help:
@andsel, @mrnoname1000, @ahorek, @evaniainbrooks, @edipofederle, @ccutrer,
@danini-the-panini, @ntkme, @andrykonchin, @mohamedhafez, @jsvd, @jpcamara,
@mullermp, @ikaronen-relex, @jimtng, @ryannevell, @eregon, @moste00, @sk757a
Ruby Compatibility
- Ruby compatibility has been updated to Ruby 3.4. We consider this
release equivalent to Ruby 3.4.2.
- Most features of Ruby 3.2, 3.3, 3.4 are complete, but some are still
in progress. See our checklists based on CRuby's release notes: Ruby 3.2,
Ruby 3.3, Ruby 3.4
- Except where a more recent gem was available or a library is
unsupported by JRuby, we have included the same standard libraries as Ruby
3.4.
Java 21
After nearly a decade of supporting Java 8, the JRuby team decided it’s
time for us to move to a more modern version of Java. The new requirement
of Java 21 will allow us to take advantage of many features that were
impossible to utilize while simultaneously supporting Java 8:
- On-by-default optimization using InvokeDynamic, which has
significantly improved since Java 8.
- Support for thousands of Fibers using the lightweight virtual thread
support from Project Loom.
- Fast native function calling and native memory management using
Project Panama.
- Greatly improved startup time using Application Class Data Store,
enabled by default by our launcher executables.
- Easier access to post-Java 21 features like the Ahead-of-time compiler
cache in Project Leyden.
Upgrading to JRuby 10
This release marks a big leap forward for JRuby users, and we are standing
by to help with your transition from JRuby 9.x or migration from CRuby.
Support services are available to help migrate your critical applications.
Many existing users trust JRuby Support by Headius Enterprises to keep
their applications in peak condition and to prepare for future updates.
Issues and Pull Requests
There are hundreds of closed issues and merged pull requests in this
release. Visit the JRuby 10.0.0.0 milestone for the full list.
201 Issues and PRs resolved for 10.0.0.0
#6094 Less modes to run JRuby, and one single mode to benchmark JRuby
#6598 Modularize all the things
#7516 Improvements to instance variable shaping
#7638 Add support for Ruby 3.2 attached_object
#7646 Add Integer#ceildiv
#7788 Add support for a rescue trace event
#7871 Ruby 3.2 - Remove deprecated methods: trust/taint and friends
#7909 Intermittent failure on duped pipe tests JDK 19+
#7973 Use gem for tempfile
#8058 Ruby 3.3 support: Queue#freeze now raises TypeError
#8059 Ruby 3.3 support: add symbolize_names kwarg to
MatchData#named_captures
#8084 remove JRuby-specific (deprecated) Class#subclasses(arg)
#8143 Remove versioned methods
#8145 Refactor external API to ease extension porting
#8152 New parser
#8153 Update parser to 3.4
#8154 Update and run CRuby 3.4 tests
#8159 Fix last obvious syntax problem (involving nested pattern kwargs
going off rails)
#8160 Proc#{dup,clone} should be like other objs
#8161 Finalizers also are on cloned/duped objects
#8162 Finalizers also are on cloned/duped objects
#8163 tracepoint only runs in thread it was enabled on
#8164 {,Unbound}Method#{proc,dup} need to be more like other Ruby
objects
#8165 Add MatchData#deconstruct…
#8168 First stab at Err#typeError in api
#8169 Update json to eliminate references to “19” methods
#8170 Implement block_given? call as optimized instruction
#8172 Optimized method and callee
#8174 Unify call paths for most framed scopes
#8175 These may have been hanging due to a block_given? bug
#8176 Simplify fixnum and string ranges
#8177 A few frozen string and symbol optimizations
#8180 Optimizations for dynamic string building
#8181 Add ability to generically optimize instr during LOP
#8214 Disable eager constants in JRuby 10
#8223 Make Exception#detailed_message,full_message pass specs
#8226 Implement 'chilled' Strings
#8227 Narrow frame name optimization to method scopes
#8228 IO#readlines accepts another arg
#8229 Fix full_message formatting and Throwable impl
#8230 More frame name fixes
#8233 Implement Regexp#linear_time?
#8236 More string interpolation optimizations
#8238 Implement regexp timeout
#8240 Fix IO#each_line specs
#8249 Reduce deopt from print use of $_
#8253 Optimize literal fixnum and float arrays
#8259 Improved representation of JRuby for JVM tools
#8260 Rewrite Marshal.dump logic for efficiency
#8262 Proc spreading changed in 3.2 with kwrest
#8263 Implement Coverage::supported?
#8266 Enable invokedynamic by default
#8267 Print out paths for syntax errors
#8268 Unbound method
#8276 Struct specs
#8277 Time#new spec fixes.
#8279 Reduce overhead of ObjectSpace#each_object when disabled
#8291 Fix remaining copy stream specs
#8293 Eliminate last consumers of Variable logic
#8295 3 new Convert API methods
#8297 Make common method for handling to_r calls in Rational
#8298 Api changes
#8299 Linkage errors from java_import are lazy
#8300 Do initialize classes during java_import
#8301 Decode ByteList properly for toString
#8304 Eager initialize java_import’ed classes
#8317 New asFixnum, asBoolean, asString in Convert
#8330 Eliminate dynscope for leaf blocks with break/return
#8375 Revisit chilled strings and pass all specs
#8376 Get most Enumerator::Product specs passing
#8377 No backtick in errors
#8378 Update to latest CRuby 3.4 tests and stdlib
#8390 Fix foreach with mode: kwarg
#8402 Hash#inspect: no arrow for symbol keys. add spacing to match C
Ruby
#8410 Permute indy invoke paths to reduce uncached stack
#8414 Pre-generate specialized object shapes
#8418 Some small refactoring while looking for example snippet code of
new API
#8420 A bunch of new API calls and new JRubyAPI annotation
#8430 More dogfooding of new API
#8432 argumentError API conversions with a lot of runtime to tc
replacement
#8437 context through RubyArray using more API
#8444 Nearly all newArray is converted to API
#8450 Enable invokedynamic by default
#8452 newFixnum,Symbol,Float are unified with asXXX.
#8454 more api conversion around Time+
#8459 API: Nearly all remaining newArgumentError to argumentError
#8460 more newSymbols made into asSymbol
#8461 new runtimeError api
#8467 api: new rangeError, indexError
#8468 to_s with TC. new dupString api
#8470 Inspect wrong object when symbol/string wanted in error
#8471 more illegal formatting added to printf/format
#8472 Add new Check#checkEmbeddedNulls to replace StringSupport method
#8473 Make Time load its Ruby-impl side
#8474 Create#newEmptyString
#8475 Create#new{,Small}Hash
#8484 Various array optimizations
#8485 Fixes for MRI tests
#8489 Bind directly to all supported arities of native methods
#8490 New define API
#8491 Make hash() always call to hash(ThreadContext) and deprecate
#8492 Make Numeric#coerce use TC with deprecated fallback
#8493 is_zero+zero_p TCification
#8494 TCification of isPositive
#8495 TCification of isNegative
#8496 Make initialize_copy use TC
#8498 See how dot format is for specs
#8507 Eliminate use of unsafe in StringSupport
#8508 Replace Unsafe byte long-walking with VarHandle
#8514 Move to simple Access apis (context available)
#8517 Add trace instr for rescue when trace enabled
#8518 Switch more error backquotes to single
#8519 inspect() -> inspect(ThreadContext)
#8520 All String JRuby Methods use context now
#8521 Make all jruby methods use context in Array
#8522 context for all numeric types jruby methods
#8524 context for all Struct methods
#8525 Warn api
#8529 Data fixes
#8530 Update gem_prelude from Ruby 3.4
#8531 getSingletonClass() replaced with singleonClass(context)
#8532 Deprecate defineOrGetClassUnder
#8533 Fixes and impls for Ruby 3.4 specs
#8534 Last boostrapping classes/modules decoupled from non-boot
#8537 We should always have a valid staticScope
#8541 most of constant settin and RubyModule to be TCified
#8543 allocate() needs ThreadContext
#8544 [Extra '' around singleton in {Name No}MethodError]#8544
#8545 Reduce getRuntime() and make alloc use TC
#8546 Fix specs involving comments in unpack format strings
#8547 Fix failing specs for chilled symbols
#8548 tcification of regex
#8549 Remove more use of getRuntime()
#8551 More removal of getRuntime() from non-deprecated code paths
#8552 more API usage and some runtime removal
#8553 More API work: toInt, toInteger, toLong, asLong, asInt
#8554 Fix arity specs for blocks in language
#8556 Rest args dup keyword hash
#8558 More API conversion
#8564 Eliminate exact math and reduce allocations
#8576 Force a Thread’s block to optimize eagerly
#8580 Implement **nil
#8581 implement restriction on aryset to not allow blocks or kwargs
#8582 Update Ruby 3.4 gems from release
#8587 Add warning for ::Ruby = as reserved constant
#8588 Implement MatchData#byte{beg,end}
#8589 Change singleton_method to look at extend/prepend
#8616 Eiminate last uses of UnsafeHolder
#8617 Reduce RubyModule/RubyClass size and creation overhead
#8618 Improve performance of CI test suites
#8619 Eliminate fillnil from newArray
#8622 Move specs toward green
#8628 Integer spec fixes for JRuby 10
#8629 Fix Range specs for JRuby 10
#8631 unused warnings became useless warnings
#8633 Fiber specs for JRuby 10
#8636 Remove upfront fillNill in Array
#8637 We should only warn on actual modification of singleton
#8639 Remove raw array methods and helpers with fillnil changed
#8646 More work on numeric API
#8647 Previous changes from raw array and I put in wrong field name
#8650 Depre warns
#8664 Unicode 15.0
#8668 Propagate Java throwables during load without wrapping
#8673 parser passes block node vs only single last value to when
#8674 Ruby 3.4 seems to have simplified ruby2_keywords_hash
#8676 JRuby 9.4 to_s() signatures must be kept in 10
#8677 FString logic cleanup
#8678 Symbol type calculation tweaks
#8679 Implement Data natively
#8683 New marshal could break ext authors using old one
#8684 Deprecation problems + new reporting system
#8685 Additional improvements to new marshal logic
#8689 MarshalLoader to match dumper
#8693 Cleaning up MRI excludes and fixing some stuff
#8695 Update stdlib from Ruby 3.4.2
#8698 JRuby 10: incorrect Method#arity with keyword arguments
#8699 optimist gem specs get StackOverflowError on JRuby 10
#8702 was recursively warning on itself
#8706 Add missing logic I added for procs to methods for ruby-facing
arity
#8708 Refactor launcher AppCDS logic
#8709 JRuby HEAD Exception#full_message fails with uninitialized
constant ErrorHighlight::RubyVM for Exceptions thrown from JRrubyVM
#8710 Encoding error with bad raise message in StringIO
#8711 Less eager coderange when converting Java String
#8712 JRuby10 inline bundler error
#8713 Negative capa
#8718 Apply Java version-specific flags in launcher script
#8721 Restructure gem_prelude to fit JRuby's needs
#8723 JRuby10: an existing it variable inside a block caused
SyntaxError: ordinary parameter is defined
#8725 nonsense error check for 'it' in parser
#8729 spec fixed at some point in past
#8735 JRuby10: (NameError) undefined local variable or method ‘it’ in
eval
#8737 Fixes #8735. it in eval broken
#8741 NUMERIC_TO_OBJECT was making BigDecimal a Long
#8742 A few micro optimizations
#8744 Use platform line separator for backtrace output
#8745 Updates from CRuby 3.4.2
#8748 Reduce overhead of indy plumbing
#8751 Update URI gem to 1.0.3 in JRuby 10
#8753 Java version detection improvements
#8759 Fixed enough javadoc "errors" where it no longer stops build
···
--
blog: http://blog.enebo.com twitter: tom_enebo
mail: tom.enebo@gmail.com