ruby: update to 4.0.0
Ruby 4.0 introduces "Ruby Box" and "ZJIT", and adds many improvements.
- Introduce experimental ZJIT compiler
- Improve YJIT performance and memory usage
- Add experimental Ruby Boxes object layout optimization
- VM and GC performance improvements
- Ractor runtime and scheduling enhancements
- Update language syntax and semantics (*nil behavior, logical operator parsing)
- Add Array#rfind and optimized Array#find
- Improve Binding API and implicit parameter access
- Extend Enumerator.produce with size keyword
- Enhance ArgumentError diagnostics with caller/callee context
- Add Fiber#raise(cause:)
- IO.select accepts Float::INFINITY timeout
- Improve Kernel#inspect extensibility
- Add Math.log1p and Math.expm1
- Promote Pathname and Set to core classes
- Extend Ractor API (join, value, lifecycle helpers)
- Fix endless and infinite Range behavior
- Define new top-level Ruby module
- Update Unicode to 17.0 and extend String strip methods
- Update bundled gems (RubyGems, Bundler, IRB, etc.)
Packaging changes:
- Include license files for all packages
- As ruby set moved into core, ruby-set is gone.
ruby-setsubclasscompact was added to include the set subclass
compatible layer
- Added conditional libatomic dependency for libruby
- YJIT and ZJIT are not built when cross-compiling (almost always for
openwrt, even when archs matches). However, the Makefile is ready for
both when upstream adds that feature. Config entries are marked as
BROKEN for now.
Changelog: https://github.com/ruby/ruby/compare/v3_4_0...v4.0.0
Signed-off-by: Luiz Angelo Daros de Luca <luizluca@gmail.com>