Releases: ruby/ruby
3.4.0-preview1
What's Changed
- Feature #18980: Re-reconsider numbered parameters:
it
as a default block parameter - Feature #19370: Anonymous parameters for blocks?
- Fix Window private file mapping unlink EACCES issue. by ioquatix · Pull Request #9358
- Feature #19982: Bump required Visual Studio version to 2015 after 3.3
- Bug #20087: Uninitialized instance variable warning - obsolete documentation
- Test_SyncDefaultGems: Fail when editor run by sorah · Pull Request #9365
- Bug #20094: Inline while loop behavior changed unexpectedly in 3.3.0
- Bug #20088: Ruby 3.3.0 does not cross-complie on arm64-darwin
- Bug #20085: Fiber.new{ }.resume causes Segmentation fault for Ruby 3.3.0 on aarch64-linux
- Bug #20096: Ruby 3.2.2 win32/registry: Junk appended to Windows Registry String Value
- Bug #20083: String#match? behaving inconsistently with Ruby 3.3.0
- [DOC] Add What's Here for Complex by BurdetteLamar · Pull Request #9366
- Bug #14607: Fix use of the rb_profile_frames start parameter
- Bug #20098: Wrong regexp match in ruby 3.2 and 3.3
- Reduce
if
for decreasing counter on OP_REPEAT_INC by makenowjust · Pull Request #9393 - [DOC] Fix wrong description about Process.waitpid2 by takaram · Pull Request #9401
- Roll net-* bundled gems from git to fix CI by sorah · Pull Request #9403
- Bug #20104: Regexp#match returns nil but allocates T_MATCH objects
- Bug #19409: Object's shape is reset after a ractor move
- Bug #20145: Memory leak when duplicating identhash
- Bug #19916: URI#to_s can serialize to a value that doesn't deserialize to the original
- Bug #11526: Streaming HTTP requests are not idempotent and should not be retried
- YJIT: Let RubyVM::YJIT.enable respect --yjit-stats by k0kubun · Pull Request #9415
- Bug #20157: Regression in GC.measure_total_time
- Bug #20150: Memory leak in grapheme clusters
- YJIT: Fallback Integer#<< if a shift amount varies by k0kubun · Pull Request #9426
- Bug #20161: Memory leak in regexp grapheme clusters
- Fix to work match cache with peek next optimization by makenowjust · Pull Request #9459
- Fix test case for
test_match_cache_with_peek_optimization
by makenowjust · Pull Request #9466 - Bug #20101: rb_file_open and rb_io_fdopen don't perform CRLF -> LF conversion when encoding is set
- Bug #20162: Memory leak when duplicating too complex object
- Bug #20111:
defined?
returnsexpression
for assignment operators combined with fully qualified constants - Remove unnecessary semicolons by S-H-GAMELINKS · Pull Request #9469
- Bug #20172: Socket.addrinfo failing randomly
- Remove a unused variable in i_print_name_entry by makenowjust · Pull Request #9468
- Bug #19990: Could we reconsider the second argument to Kernel#load?
- Bug #20178: Out of bounds stack read on Array#first when built with -O0
- Bug #20001: Make Ruby work properly with ASAN enabled
- YJIT: expandarray for non-arrays by ywenc · Pull Request #9495
- Bug #20064: Inconsistent behavior between array splat *nil and hash splat **nil
- Improve behavioural consistency of unallocated (zero length)
IO::Buffer
. by ioquatix · Pull Request #9532 - YJIT: Optimize Integer#succ by k0kubun · Pull Request #9519
- YJIT: optimized codegen for String#length by maximecb · Pull Request #9543
- Bug #20184: Ruby segfaults on Fly.io with 256 MB RAM
- Bump the required BASERUBY version to 2.7 by k0kubun · Pull Request #9566
- YJIT: specialized codegen for integer right shift by maximecb · Pull Request #9564
- YJIT: Support empty splat and some block_arg calls to ivar getters by XrXr · Pull Request #9567
- [DOC] RDoc for ARGF by BurdetteLamar · Pull Request #9558
- YJIT: Stop incrementing chain_depth on defer_compilation by k0kubun · Pull Request #9597
- Bug #20192: YJIT in 3.3.0 miscompiles
yield
with keyword splats - YJIT: Optimize defined?(yield) by k0kubun · Pull Request #9599
- YJIT: Avoid doubly splitting Opnd::Value on CSel by k0kubun · Pull Request #9617
- Bug #20198: Threaded DNS resolver does not propagate errno to the calling thread
- YJIT: Drop extra arguments passed by yield by XrXr · Pull Request #9596
- Set a cached Ruby path using setup-ruby by k0kubun · Pull Request #9645
- Bump shlex from 1.1.0 to 1.3.0 in /yjit/bindgen by dependabot[bot] · Pull Request #9652
- Bump capstone from 0.10.0 to 0.11.0 in /yjit by dependabot[bot] · Pull Request #9653
- Bug #20194: Memory leak with TracePoint on bmethod
- Bug #20204: 3.3.0 YJIT rises TypeError instead of ArgumentError with some incorrect calls
- YJIT: Allow inlining ISEQ calls with a block by k0kubun · Pull Request #9622
- Rewrite Array#each in Ruby using Primitive by k0kubun · Pull Request #9533
- Dump annotations on RubyVM::ISeq.disasm by k0kubun · Pull Request #9667
- Bug #20195: 3.3.0 YJIT mishandles ruby2_keywords splat into methods taking a rest parameter
- YJIT: fix small bug causing jit_rb_int_rshift to side-exit by maximecb · Pull Request #9684
- YJIT: reduce default exec mem size to 48MiB by maximecb · Pull Request #9685
- YJIT: Update yjit.md about mem size by k0kubun · Pull Request #9687
- Bug #20209: YJIT can leak memory by retaining objects with singleton class
- Omit TestCompilePrism on s390x for now by k0kubun · Pull Request #9694
- Bug #20197: Postponed job invocations are significantly reduced in Ruby 3.3
- YJIT: Add a counter for invokebuiltin exits by k0kubun · Pull Request #9696
- YJIT: Support concattoarray and pushtoarray by k0kubun · Pull Request #9708
- Bundle rbs-3.4.3 by soutaro · Pull Request #9702
- YJIT: Fix exits on splatkw instruction by k0kubun · Pull Request #9711
- Optimize compilation of large literal arrays by jeremyevans · Pull Request #9721
- Bug #20217: void value not checked for begin/ensure/rescue
- Bug #20219: Segfault with circular parameter
- Bug #20207: Segmentation fault for a regexp containing positive and negative lookaheads
- YJIT: add asm comment when we clear local types by maximecb · Pull Request #9713
- YJIT: Fix tailcall and JIT entry eating up FINISH frames by XrXr · Pull Request #9729
- YJIT: print warning when disasm options used without a dev build by maximecb · Pull Request #9744
- Bug #20227: Unexpected "internal:array" appears since c84237f
- YJIT: add specialized codegen for fixnum XOR by maximecb · Pull Request #9763
- YJIT: Specialize splatkw on T_HASH by k0kubun · Pull Request #9764
- [Annotate Symbol#to_s as leaf by k0kubun · Pull R...
3.3.1
Security fix
- CVE-2024-27282: Arbitrary memory address read vulnerability with Regex search
- CVE-2024-27281: RCE vulnerability with .rdoc_options in RDoc
- CVE-2024-27280: Buffer overread vulnerability in StringIO
What's Changed
- Update net-* gems for Ruby 3.3 by hsbt · Pull Request #9418
- Bug #20086: Windows memory mapped file
IO::Buffer
is buggy. - Bug #20083: String#match? behaving inconsistently with Ruby 3.3.0
- Bug #20094: Inline while loop behavior changed unexpectedly in 3.3.0
- Bug #20090: Anonymous arguments are now syntax errors in unambiguous cases
- Bug #20104: Regexp#match returns nil but allocates T_MATCH objects
- Bug #20145: Memory leak when duplicating identhash
- Bug #20149: Fix memory leak in IPSocket rb_getaddrinfo
- Bug #20157: Regression in GC.measure_total_time
- Backport bundled_gems.rb for Ruby 3.3 by hsbt · Pull Request #9457
- Bug #20173: Backport 597955a, 8b65d15
- Bug #20162: Memory leak when duplicating too complex object
- Fix test session reuse but expire by nurse · Pull Request #9824
- Bug #20172: Socket.addrinfo failing randomly
- Bug #20178: Out of bounds stack read on Array#first when built with -O0
- YJIT: reduce default exec mem size to 48MiB by maximecb · Pull Request #9692
- Backport #9415 to ruby_3_3 by k0kubun · Pull Request #9424
- Bug #19542: Operations on zero-sized IO::Buffer are raising
- Bug #20231: Don't wait in io_binwrite_string if not necessary.
- Bug #20085: Fiber.new{ }.resume causes Segmentation fault for Ruby 3.3.0 on aarch64-linux
- Merge RubyGems 3.5.5 and Bundler 2.5.5 by hsbt · Pull Request #9676
- Bug #20214: Backport https://github.com/ruby/ruby/pull/9711 to fix exits on Ruby 3.3's new instruction
- Bug #20096: Ruby 3.2.2 win32/registry: Junk appended to Windows Registry String Value
- Bug #20161: Memory leak in regexp grapheme clusters
- Feature #19982: Bump required Visual Studio version to 2015 after 3.3
- Bug #20198: Threaded DNS resolver does not propagate errno to the calling thread
- Bug #20150: Memory leak in grapheme clusters
- Bug #20209: YJIT can leak memory by retaining objects with singleton class
- Backport #9498 to Ruby 3.3 by krk · Pull Request #9805
- Bug #20208: Net::HTTP errors with Errno::EAFNOSUPPORT when setting local_host with Addrinfo
- Bug #20098: Wrong regexp match in ruby 3.2 and 3.3
- Bug #20194: Memory leak with TracePoint on bmethod
- Bug #20197: Postponed job invocations are significantly reduced in Ruby 3.3
- Bug #20213: zsuper with keyword splat without explicit keywords incorrectly uses mutable keyword splat
- Bug #20190:
invalid_encoding_string << number
should be valid encoding in some case, but does not - Bug #20228: Memory leak in Regexp timeout
- Bug #20207: Segmentation fault for a regexp containing positive and negative lookaheads
- Bug #20245: Crash when checking symbol encoding
- Bug #20246: Unexpected behavior for Regexp in Subexpression Calls on Ruby 3.3.0
- Bug #20183:
erb/escape.so
cannot be loaded when--with-static-linked-ext
- Bug #20250: Crash with "Object ID seen, but not in mapping table: proc" error
- Bug #20327: Time.new behaves differently when passing a zone as timezone object
- Bug #19907: Method calls with keyword arguments in eval leaks callcache and callinfo objects
- Bug #20311: Struct.new("A") memory leak?
- CVE-2024-27281 for Ruby 3.3 by hsbt · Pull Request #10316
- Bug #20304: Memory leak when setting Encoding.default_internal
- Bug #20324:
(1..).overlap?('foo'..)
returns true - Backport https://github.com/ruby/ruby/pull/10347 by hsbt · Pull Request #10349
- Merge RubyGems 3.5.9 and Bundler 2.5.9 (Fixed CI at Ruby 3.3) by hsbt · Pull Request #10348
Note: This list is automatically generated by tool/gen-github-release.rb. Because of this, some commits may be missing.
Full Changelog
3.2.4
Security fix
- CVE-2024-27282: Arbitrary memory address read vulnerability with Regex search
- CVE-2024-27281: RCE vulnerability with .rdoc_options in RDoc
- CVE-2024-27280: Buffer overread vulnerability in StringIO
What's Changed
- Bug #19967: Already installed libruby.dylib is used for test on macOS
- Bug #19973: Duplicate keyword argument names don't always warn
- Bug #18743: Enumerator#next / peek re-use each others stacktraces
- Fix test session reuse but expire by nurse · Pull Request #9824
- Bug #20231: Don't wait in io_binwrite_string if not necessary.
- Bug #20194: Memory leak with TracePoint on bmethod
- Bug #20190:
invalid_encoding_string << number
should be valid encoding in some case, but does not - Bug #20245: Crash when checking symbol encoding
- Bug #19592: Unable to statically link a single extension in 3.2.x and >=3.1.4
- Bug #20327: Time.new behaves differently when passing a zone as timezone object
- Bug #20050: Segfault on Ruby 3.2.2 (and 3.1) on x86_64 Darwin 20 (rb_id_table_lookup for #hash)
Note: This list is automatically generated by tool/gen-github-release.rb. Because of this, some commits may be missing.
Full Changelog
3.1.5
Security fix
- CVE-2024-27282: Arbitrary memory address read vulnerability with Regex search
- CVE-2024-27281: RCE vulnerability with .rdoc_options in RDoc
- CVE-2024-27280: Buffer overread vulnerability in StringIO
What's Changed
- Use vcpkg instead of chocolatey for openssl by nurse · Pull Request #7788
- Skip drb tests on mswin by nurse · Pull Request #7789
- Fix test-bundled-gems for Ruby 3.1 by hsbt · Pull Request #7935
- Bug #19323: Integer overflow in
Integer#<<
- Bug #19439: Marshal.load doesn't load Regexp instance variables
- Bug #19532: Handling of 6-byte codepoints in left_adjust_char_head in CESU-8 encoding is broken
- Bug #19585: Ruby Fails to Build on macOS with --enable-shared and --with-jemalloc
- CVE-2023-36617 for Ruby 3.1 by hsbt · Pull Request #7996
- Bug #19593: Crash due to throw data set as cause
- Bug #19580: Ensure ruby_xfree won't segfault if called after ruby_vm_destruct
- Bug #19577: Backport commit 537183cd2ac0163851277b46a2f21ea5914c11c0
- Bug #19739: String coderange not cleared by String#slice!
- Bug #19379: Regex: "end pattern with unmatched parenthesis" with Ruby 3.2 and interpolation
- Bug #19543: Resizing IO::Buffer to zero bytes fails
- Bug #19084: Using
IO::Buffer
to change an extended String affects other Strings sharing the same buffer - Bug #19602:
PLATFORM_GET_INC
is broken unless unaligned word access is allowed - Bug #19025: Ripper cannot parse syntax ok code that has numbered parameters
- Bug #19788: Ripper returns a symbol instead of a token as operator for "::"
- Bug #19246: Rebuilding the loaded feature index much slower in Ruby 3.1
- Bug #19855: Array#bsearch gets wrong result when its block returns a non-integer numeric value.
- Bug #19880: Missing write barrier in iseq instruction list
- Bug #18914: Segmentation fault during Ruby test suite execution
- Bug #19894: Memory leak in complemented method entries
- Bug #19778: mkmf.rb pkg_config() interaction with RbConfig::CONFIG["cflags"]
- Relax matching pattern for rake version for Ruby 3.1 by hsbt · Pull Request #8798
- Bug #18991: False LocalJumpError when branch coverage is enabled
- Bug #19754:
IO::Buffer#get_string
raises unsuitable exception for too large offset - Bug #19985: Confusing error message when nonexistent
Pathname
forrequire
- Merge RubyGems-3.3.27 and Bundler-2.3.27 by hsbt · Pull Request #8889
- Use bundler-2.3.27 for Ruby 3.1 by hsbt · Pull Request #8895
- Lock gem versions for C ext dependencies by hsbt · Pull Request #8918
- Bug #19969: Regression of memory usage with Ruby 3.1
- Fix test session reuse but expire by nurse · Pull Request #9824
Note: This list is automatically generated by tool/gen-github-release.rb. Because of this, some commits may be missing.
Full Changelog
3.0.7
Security fix
- CVE-2024-27282: Arbitrary memory address read vulnerability with Regex search
- CVE-2024-27281: RCE vulnerability with .rdoc_options in RDoc
- CVE-2024-27280: Buffer overread vulnerability in StringIO
What's Changed
- Fix test-bundled-gems for Ruby 3.0 by hsbt · Pull Request #7936
- CVE-2023-36617 for Ruby 3.0 by hsbt · Pull Request #7997
Note: This list is automatically generated by tool/gen-github-release.rb. Because of this, some commits may be missing.
Full Changelog
3.2.3
What's Changed
- Bug #19307: Fix
OpenSSL::X509::CertificateError: invalid digest
on CentOS 9 / RHEL 9 - Bug #19323: Integer overflow in
Integer#<<
- Bug #19529: [BUG] ObjectSpace::WeakMap can segfault after compaction
- Bug #18464: RUBY_INTERNAL_EVENT_NEWOBJ tracepoint causes an interpreter crash when combined with Ractors
- ruby_3_2 backport for #8006 by XrXr · Pull Request #8008
- Bug #19463: YJIT
[BUG] Stack consistency error
under certain invalidation scenarios - Bug #19483: rubyzip not behaving well with YJIT
- Bug #19482: Fix crash when allocating classes with newobj hook
- Bug #19543: Resizing IO::Buffer to zero bytes fails
- Bug #19546: IO::Buffer is incorrectly invoking fiber scheduler interface.
- Bug #19084: Using
IO::Buffer
to change an extended String affects other Strings sharing the same buffer - Bug #19550: Memory leak in iclass for 32 bit systems
- Bug #19575: Crash in Time on 32-bit systems
- Bug #19577: Backport commit 537183cd2ac0163851277b46a2f21ea5914c11c0
- Bug #19580: Ensure ruby_xfree won't segfault if called after ruby_vm_destruct
- Bug #19582: Segmentation fault when running the tests for Ruby 3.2.2
- Bug #19595: YJIT: Crash from missing argc check in known cfuncs
- Bug #19587: Segmentation fault with ruby 3.2.0 - when running rspec suit.
- Bug #19589: Expecting system stack error but crashing
- Bug #19533: Behavior of ===/include? on a beginless/endless range (nil..nil) changed in ruby 3.2
- Bug #19593: Crash due to throw data set as cause
- Bug #19601: YJIT
try to mark T_NONE object
stemming from object shape transition onself
- Bug #19455: Ruby 3.2: wrong Regexp encoding with non-ASCII comments
- Bug #19750: Ruby hangs when parsing Regexp with unterminated unicode "/\u{"
- Bug #19531: ObjectSpace::WeakMap: replaced values still clear the key they were assigned to
- Bug #19602:
PLATFORM_GET_INC
is broken unless unaligned word access is allowed - Bug #19025: Ripper cannot parse syntax ok code that has numbered parameters
- Bug #19640:
IO#puts
can generate zero length iov which can cause rb_bug crash. - Bug #19709:
Thread.join(timeout)
hangs in fiber scheduler. - Bug #19535: Instance variables order is unpredictable on objects with
OBJ_TOO_COMPLEX_SHAPE_ID
- Bug #19532: Handling of 6-byte codepoints in left_adjust_char_head in CESU-8 encoding is broken
- Bug #19585: Ruby Fails to Build on macOS with --enable-shared and --with-jemalloc
- Bug #19748:
String#byteindex
crashes whenoffset
is too large - Bug #19774:
END {return}
segfaults since in 3.2 - Bug #19759: Surprising automatic splat with ruby2_keywords_hash
- Bug #19293: The new Time.new(String) API is nice... but we still need a stricter version of this
- Bug #19751: Ruby 3.2.2 Fails to Compile from Source
- Bug #19786: Data::define() does not work as documented
- Ruby 3.2 - Speed up rebuilding the loaded feature index and realpath cache by krk · Pull Request #8023
- Bug #19789: YJIT + rustc 1.71.0 is broken with macOS
- Bug #19793: Segmentation fault when requiring files after defining Object#method_missing
- Bug #19833: Superclass of BasicObject is broken.
- Skip running brew upgrade by k0kubun · Pull Request #8189
- Bug #19835: Parser leaks memory for incomplete tokens
- Bug #19836: Parser leaks memory for incomplete lambdas
- Bug #19855: Array#bsearch gets wrong result when its block returns a non-integer numeric value.
- Bug #19788: Ripper returns a symbol instead of a token as operator for "::"
- [For ruby_3_2] Fix unused_mut Rust warnings by XrXr · Pull Request #8435
- [Backport 3.2] Fix missing write barrier in iseq instruction list by peterzhu2118 · Pull Request #8431
- Bug #19864: Ruby 3.2 Changed Behavior With One Sided Ranges
- Bug #19853: Segfault when calling
system
from a non-blocking fiber - Bug #19894: Memory leak in complemented method entries
- Bug #19792: arm の alpine 上でネストしたハッシュに長い文字列を入れると segmentation fault が発生する
- Bug #19845:
Fiber[key] = value
fails if key is not interned. - Bug #19778: mkmf.rb pkg_config() interaction with RbConfig::CONFIG["cflags"]
- Bug #19896: Ruby method refinement memory leak
- Bug #19901: Module clone memory leak
- Bug #19903: Fix memory leak in generating and loading iseq
- Bug #19902: strftimeの返り値のascii_only?が間違っていることがある
- Bug #19754:
IO::Buffer#get_string
raises unsuitable exception for too large offset - Bug #19985: Confusing error message when nonexistent
Pathname
forrequire
- Bug #19924: Character literal escaped \xFF stops parsing
- Bug #19999: Backport: .travis.yml and fixed commits
- Bug #19969: Regression of memory usage with Ruby 3.1
- test/fiber/test_queue.rb: Make the stuck test fail. by junaruga · Pull Request #8791
- [3.2 backport] Fix compile error on older systems without clock_get* by Bo98 · Pull Request #8948
- Bug #20010: Backport 84a12d65 (Fix compile error on older systems without clock_get*)
- Bug #20036: Backport 6ebcf25de2859b5b6402b7e8b181066c32d0e0bf
- Backport YJIT docs for Ruby 3.2 by k0kubun · Pull Request #9245
- Bug #20042: ObjectSpace finalizer can cause segfault
- Bug #20150: Memory leak in grapheme clusters
- Bug #20161: Memory leak in regexp grapheme clusters
- Bug #20096: Ruby 3.2.2 win32/registry: Junk appended to Windows Registry String Value
- Bug #20174: Ruby 3.2 jit_cont_free segfault with YJIT enabled
Note: This list is automatically generated by tool/gen-github-release.rb. Because of this, some commits may be missing.
Full Changelog
3.3.0
What's Changed
- YJIT: implement call fuzzer script by maximecb · Pull Request #9129
- [DOC] Complex doc by BurdetteLamar · Pull Request #9185
- [DOC] Fix RDoc to match actual Kenrel.require behavior by hogelog · Pull Request #9180
- Initialize interrupt queue before signal handlers by k0kubun · Pull Request #9196
- Bug #20048: UDPSocket#remote_address spec errors
- Bug #20051: Op asgn calls handle keywords and keyword splats as positional arguments
- Bug #19114: Calling TracePoint#enable multiple times causes TracePoint to be activated multiple times
- Sync with upstream rubygems by deivid-rodriguez · Pull Request #9206
- Move --repeat-count=2 job to macos-arm-oss by k0kubun · Pull Request #9208
- YJIT: Fix off-by-one in Kernel#send type handling by XrXr · Pull Request #9212
- Feature #20057: Change behaviour of rb_register_postponed_job for Ruby 3.3
- Fix a typo for
RJIT_TARGET_OK
by nobu · Pull Request #8222 - Bug #20061: test_free_on_exit_env_var failed with some cppflags
- RJIT: Just skip generating code for aarch64/arm64 by k0kubun · Pull Request #9221
- YJIT: Add --yjit-disable to help and reorder it by k0kubun · Pull Request #9230
- Bug #20060: bundled_gems.rb is not working with Bootsnap
- Feature #20005: Add C API to return symbols of native extensions resolved from features
- [DOC] RDoc for Complex by BurdetteLamar · Pull Request #9231
- [DOC] Adjust some new features wording/examples. by zverok · Pull Request #9183
- [DOC] Enhance docs for WeakMap and WeakKeyMap by zverok · Pull Request #9160
- Bug #20050: Segfault on Ruby 3.2.2 (and 3.1) on x86_64 Darwin 20 (rb_id_table_lookup for #hash)
- [DOC] RDoc for Complex by BurdetteLamar · Pull Request #9243
- Bug #20062: Numbered parameters are broken in Ruby 3.3-dev
- [DOC] RDoc for Complex by BurdetteLamar · Pull Request #9254
- Bug #20044: Add runtime flag and environment variable for prism
- Bug #20068: Strings equality doesn't imply hash equality
- Improve YJIT documentation for Ruby 3.3 by k0kubun · Pull Request #9263
- Bug #19012: BasicSocket#recv* methods return an empty packet instead of nil on closed connections
- Bug #20071: Reading code from stdin SEGV's when
--parser=prism
- [DOC] RDoc for Complex by BurdetteLamar · Pull Request #9260
- Bug #20042: ObjectSpace finalizer can cause segfault
- Bug #20073: Method lookup incorrect with
--parser=prism
- YJIT: Add stats option to RubyVM::YJIT.enable by k0kubun · Pull Request #9297
- Bug #19917: Segmentation fault or lost objects when using Ractor.select with moved exceptions
- Bug #19831: warning message of linker with macOS Sonoma beta
- Bug #19683: ruby-3.3.0-preview1 does not build with BSD make without --with-baseruby
- Bundle RBS 3.4.0 by soutaro · Pull Request #9293
- Bug #20016: 3.3.0dev
rb_postponed_job_register_one
crashes whenRUBY_MN_THREADS=1
- [DOC] Fix NoMethodError example of rendering by zverok · Pull Request #9309
- [DOC] Improve NEWS.md rendering and add missing features by zverok · Pull Request #9308
- Bug #20017: 3.3.0dev
rb_thread_profile_frames
crashes whenRUBY_MN_THREADS=1
- Bug #19977: (nil..nil) === x can raise an exception, differing from Range#cover?
- [DOC] RDoc for Complex by BurdetteLamar · Pull Request #9307
- [DOC] Clean up doc for File#flock by BurdetteLamar · Pull Request #9332
- IO::Buffer improvements and documentation. by ioquatix · Pull Request #9329
- Correctly release the underlying file mapping. by ioquatix · Pull Request #9340
- Feature #19370: Anonymous parameters for blocks?
Note: This list is automatically generated by tool/gen-github-release.rb. Because of this, some commits may be missing.
Full Changelog
3.3.0.rc1
What's Changed
- YJIT: shrink
Context
down to 15 bytes by maximecb · Pull Request #8911 - Fix IRB tests by hsbt · Pull Request #8925
- [DOC] More on JSON extensions by BurdetteLamar · Pull Request #8898
- YJIT: make --yjit-max-versions=N option undocumented by maximecb · Pull Request #8962
- YJIT: Print a disasm path to stderr by k0kubun · Pull Request #8967
- Bug #11183: Cumulative error on Complex::I ** 100000000000000000000000000000000
- Bundle rbs-3.3.1 by soutaro · Pull Request #8921
- Bug #20004: Release CI is broken with Ruby master
- Bundle rbs-3.3.2 by soutaro · Pull Request #8974
- YJIT: Skip dump-disasm if it fails to create a file by k0kubun · Pull Request #8968
- [wasm] Fix Asyncify loop exit condition for normal return by kateinoigakukun · Pull Request #9007
- YJIT: add an extra btest for shape too complex by maximecb · Pull Request #9013
- YJIT: Avoid a register spill on arm64 by k0kubun · Pull Request #9014
- windows-arm64 support by pbo-linaro · Pull Request #8995
- YJIT: Fix jmp_ptr_bytes on x86_64 by k0kubun · Pull Request #9016
- YJIT: Apply patches ignoring page_end_reserve by k0kubun · Pull Request #9015
- YJIT: record
num_send_cfunc
stat by maximecb · Pull Request #9022 - Bug #19928: IPV6 nameserver issues: "Protocol not supported - socket(2) - udp"
- Bug #19994: Seemingly require causes segfault??
- Bug #13513: Resolv::DNS::Message.decode hangs after detecting truncation in UDP messages
- Feature #18151: Incorrect Resolv result when DNS server is unreachable
- Bug #20023: rb_require("noexist") causes segfault
- YJIT: add top C function call counts to
--yjit-stats
by maximecb · Pull Request #9047 - Feature #18551: Make
Range#reverse_each
to raise an exception if endless - YJIT: Assert no patch overlap on pos_marker by k0kubun · Pull Request #9048
- Bug #20019: Ruby 3.3 GVL instrumentation events are fired out of order
- YJIT: reduce default exec-mem-size to 64MiB by maximecb · Pull Request #9054
- YJIT: fix bug in top cfunc logging in
--yjit-stats
by maximecb · Pull Request #9056 - Bug #20025: Parsing identifiers/constants is case-folding dependent
- Bug #17037: rounding of Rational#to_f
- YJIT: edit
yjit.md
and bring it up to date by maximecb · Pull Request #9068 - Feature #19630: [RFC] Deprecate
Kernel#open("|command-here")
due to frequent security issues - Bug #19877: Non intuitive behavior of syntax only applied to literal value
- YJIT: Bump ec->cfp after setting cfp->jit_return by k0kubun · Pull Request #9072
- Bug #19417: Regexp \p{Word} and [[:word:]] do not match Unicode Other_Number character
- YJIT: optimized codegen for
rb_ary_length()
by maximecb · Pull Request #9085 - YJIT: Cancel on-stack jit_return on invalidation by k0kubun · Pull Request #9086
- Bug #20030:
Ripper.tokenize('"\\C-あ"')
separates encoding valid string to encoding invalid string. - Bug #19838: Ripper nested heredocs
- Bug #20033:
/#{''}(?<lvar>)/ =~ s
looks like a dynamic regexp match but assigns to local variable - [DOC] More on What's Here by BurdetteLamar · Pull Request #9099
- [Fix] Support when nil is assigned to variable
name
by jinroq · Pull Request #9105 - YJIT: Mark and update stubs in invalidated blocks by XrXr · Pull Request #9104
- Don't warn generally, only warn on specific code paths e.g.
map
. by ioquatix · Pull Request #9131 - Add news for
Fiber#kill
. by ioquatix · Pull Request #9134 - Fix incorrect "nested_fake_name" documentation. by ioquatix · Pull Request #9135
- YJIT: Avoid register allocation conflict with a higher stack_idx by k0kubun · Pull Request #9143
- Fix SEGV caused by
GC::Profiler.raw_data
by soutaro · Pull Request #9122 - Bug #20039: Matching US-ASCII string to copied UTF-8 Regexp causes invalid multibyte character error
- Warn
it
by k0kubun · Pull Request #9152 - Set AI_ADDRCONFIG when making getaddrinfo(3) calls for outgoing conns by KJTsanaktsidis · Pull Request #7295
- Bug #20022: GC.verify_compaction_references does not actually move all objects
- Bug #19779:
eval "return"
at top level raisesLocalJumpError
- Bug #18886: Struct aref and aset don't trigger any tracepoints.
- YJIT: Fix on-stack ISEQ comparison for auto_compact by k0kubun · Pull Request #9164
- Bug #20021: TestGCCompact#test_moving_hashes_down_size_pools is flaky
- [DOC] RDoc for Complex by BurdetteLamar · Pull Request #9181
Note: This list is automatically generated by tool/gen-github-release.rb. Because of this, some commits may be missing.
Full Changelog
3.3.0.preview3
What's Changed
- Bug #19868:
Process::Status
methods for compatibility withFixnum
- Fix
io_buffer_get_string
default length computation. by ioquatix · Pull Request #8427 - YJIT: Initialize Assembler vectors with capacity by k0kubun · Pull Request #8437
- Bug #19877: Non intuitive behavior of syntax only applied to literal value
- YJIT: Initialize Vec with capacity for iterators by k0kubun · Pull Request #8439
- [YARP] Fix up alias and true node by kddnewton · Pull Request #8423
- YJIT: Skip Insn::Comment and format! if disasm is disabled by k0kubun · Pull Request #8441
- Bug #19873: Thread#native_thread_id is incorrectly cached across fork on Linux
- Bug #19778: mkmf.rb pkg_config() interaction with RbConfig::CONFIG["cflags"]
- Bug #19882: :$0x should be rejected
- [DOC] Globals doc by BurdetteLamar · Pull Request #8445
- YJIT: Avoid creating a vector in get_temp_regs() by k0kubun · Pull Request #8446
- Feature #19839: Need a method to check if two ranges overlap
- Bug #19864: Ruby 3.2 Changed Behavior With One Sided Ranges
- Bug #19887: RUBYOPT doesn't work unless starting with
-
- [YARP] Miscellaneous bug fixes by jemmaissroff · Pull Request #8453
- [YARP] Restructure tests to compare YARP evaluation to CRuby evaluation by jemmaissroff · Pull Request #8467
- [DOC] Add production performance tips to yjit.md by k0kubun · Pull Request #8472
- Bug #18257: rb_mRubyVMFrozenCore is broken by GC run
- [YARP] Minor linting [ci skip] by jemmaissroff · Pull Request #8480
- Bug #19894: Memory leak in complemented method entries
- [YARP] Pop AliasNode when appropriate by jemmaissroff · Pull Request #8466
- Bug #19624: Backticks - IO object leakage
- Bug #19892: Build fails when release archive is prepared with
-keep_temp
option - [YARP] Add tests for popped instructions by jemmaissroff · Pull Request #8494
- Bug #19896: Ruby method refinement memory leak
- [YARP] Remove minor instances of rb_intern by jemmaissroff · Pull Request #8497
- Resync yarp by jemmaissroff · Pull Request #8498
- [YARP] Use the integer base flag by kddnewton · Pull Request #8476
- Bug #19901: Module clone memory leak
- [DOC] Correction for doc guide + TOC fix in File by BurdetteLamar · Pull Request #8505
- Feature #19790: Optionally write Ruby crash reports into a file rather than STDERR
- Bug #19902: strftimeの返り値のascii_only?が間違っていることがある
- [YARP] Implemented BlockArgumentNode by jemmaissroff · Pull Request #8499
- Bug #17146: Queue operations are allowed after it is frozen
- [DOC] RDoc for Open3.popen3 by BurdetteLamar · Pull Request #8521
- Bug #19890: File#realine(chomp: true) slower/more allocations than readline.chomp!
- YJIT: Remove obsoleted jit_rb_int_mul by k0kubun · Pull Request #8539
- YJIT: Report all insn exit reasons by k0kubun · Pull Request #8541
- YJIT: Use registers for passing C method arguments by k0kubun · Pull Request #8538
- .travis.yml: Upgrade the used Ubuntu s390x to 22.04 (Jammy). by junaruga · Pull Request #8401
- YJIT: Chain-guard opt_mult overflow by k0kubun · Pull Request #8554
- Bug #19906: fix kwarg memory leak
- [DOC] Another example for spawn by BurdetteLamar · Pull Request #8575
- YJIT: Fix assert_no_exits by k0kubun · Pull Request #8579
- Allow changing RUBY_PATCHLEVEL_STR if RUBY_PATCHLEVEL == -1 by k0kubun · Pull Request #8578
- YJIT: Stop spilling temps on jit_prepare_routine_call by k0kubun · Pull Request #8581
- YJIT: add heuristic to avoid compiling cold ISEQs by maximecb · Pull Request #8522
- YJIT: Call mprotect after entry stub failure by k0kubun · Pull Request #8582
- YJIT: Build on BSD platforms with GNU make by Freaky · Pull Request #8591
- YJIT: shink local types from 8 to 4 bytes by maximecb · Pull Request #8597
- testing_ruby.md: Document running test suites on s390x CPU architecture [ci skip] by junaruga · Pull Request #8589
- YJIT: Allow --yjit-trace-exits on release builds by k0kubun · Pull Request #8619
- Feature #19842: Introduce M:N threads
- Feature #19422: Make
--enabled-shared
mandatory on macOS - Test YJIT on macOS Arm64 GitHub Actions by k0kubun · Pull Request #8633
- YJIT: port call threshold logic from Rust to C for performance by maximecb · Pull Request #8628
- Bug #19924: Character literal escaped \xFF stops parsing
- Bug #19919: Variable assignments in condition are warned however class variable assignment and constant declaration are not warned
- Remove paths-ignore from required status checks by k0kubun · Pull Request #8646
- YJIT: Fix argument clobbering in some block_arg+rest_param calls by XrXr · Pull Request #8647
- YJIT: Fallback opt_getconstant_path for const_missing by k0kubun · Pull Request #8623
- [PRISM] Compile fixes by jemmaissroff · Pull Request #8644
- [PRISM] Add --dump=prism mode by jemmaissroff · Pull Request #8643
- Bug #19926: Range#size returns an incorrect result for ranges with a Rational endpoint
- YJIT: Count cold_iseq_entry by default by k0kubun · Pull Request #8654
- [PRISM] prevent underflow on popped splatarray by HParker · Pull Request #8657
- [PRISM] Fix more bugs in the compiler by jemmaissroff · Pull Request #8658
- Remove YJIT --repeat-count=2 job by k0kubun · Pull Request #8669
- [PRISM] Compile AliasGlobalVariableNode by jemmaissroff · Pull Request #8675
- YJIT: Add a cargo job for Arm64 and remove .cirrus.yml by k0kubun · Pull Request #8679
- YJIT: Add a few missing counters for send fallback by k0kubun · Pull Request #8681
- YJIT: Use RbConfig.ruby instead of EnvUtil.rubybin by k0kubun · Pull Request #8689
- Prefer RbConfig.ruby over the 3.times fallback by k0kubun · Pull Request #8691
- YJIT: Add --yjit-perf by k0kubun · Pull Request #8697
- Feature #18515: Add Range#reverse_each implementation
- YJIT: Add RubyVM::YJIT.enable by k0kubun · Pull Request #8705
- YJIT: remove unused
--yjit-greedy-versioning
command-line option by maximecb · Pull Request #8713 - Bug #19966: Prism defines global method instead of singleton method
- Bug #19921: TestYJIT#test_bug_19316 test failure
- YJIT: Skip printing stats at exit if --yjit-disable by k0kubun · Pull Request #8727
- Extract IO::Buffer.for string locking test by headius · Pull Request #8729
- Raise TypeError for bad IO::Buffer.map argument by headius · Pull Request #8728
- Bug #19967: Already installed libruby.dylib is used for test on macOS
- [[PRISM] Add tests for BlockNode, BlockLocalVariableNode, Block...
3.3.0.preview2
What's Changed
- Bug #19635: errno may be overwritten by rb_sprintf if it triggers GC
- Remove warnings and errors in
regexec.c
withONIG_DEBUG_...
macros by makenowjust · Pull Request #7803 - Bug #19025: Ripper cannot parse syntax ok code that has numbered parameters
rb_io_puts
should not write zero length strings. by ioquatix · Pull Request #7806- Unskip the test skipped in #4173 by KJTsanaktsidis · Pull Request #7809
- Lrama v0.5.0 by yui-knk · Pull Request #7814
- Remove explicit SIGCHLD handling. by ioquatix · Pull Request #7816
- Ensure SIGCHLD always uses a signal handler. by ioquatix · Pull Request #7819
- Add Fiber#kill, similar to Thread#kill. by ioquatix · Pull Request #7823
- YJIT: Enable debug symbols in dev_nodebug by k0kubun · Pull Request #7822
- Feature #19643: Direct primitive compare sort for Array#sort_by
- Don't leak pipes. by ioquatix · Pull Request #7820
- Allow the match cache optimization for atomic groups by makenowjust · Pull Request #7804
- Rename
data
->buffer
for better readability. by ioquatix · Pull Request #7836 - Fix mutation on shared strings. by ioquatix · Pull Request #7837
- Revert "Apply timeout-scale to test_thr_kill." by junaruga · Pull Request #7838
- Feature #19236: Allow to create hashes with a specific capacity from Ruby
- Add support for pread/pwrite on windows. by ioquatix · Pull Request #7827
- Improvements to
IO::Buffer
read
/write
/pread
/pwrite
. by ioquatix · Pull Request #7826 - gc.c: get rid of unused objspace parameters by byroot · Pull Request #7853
- Fix "runs a C function with the global lock unlocked and unlocks IO with the generic RUBY_UBF_IO" on Windows. by ioquatix · Pull Request #7848
- Feature #19571: Add REMEMBERED_WB_UNPROTECTED_OBJECTS_LIMIT_RATIO to the GC
- Allow environment variable to control madvise advice. by ioquatix · Pull Request #7855
- Feature #19678: Don't immediately promote children of old objects
- [DOC] Link fix by BurdetteLamar · Pull Request #7862
- Improve
read
/write
/pread
/pwrite
consistency. by ioquatix · Pull Request #7860 - Feature #19695: mkmf: Adding the extra option --with-verbose to enable verbose mode.
- Hide most of the implementation of
struct rb_io
. by ioquatix · Pull Request #6511 - YJIT: Force showing a backtrace on panic by k0kubun · Pull Request #7869
- Bug #19704: Unable to install readline-ext since 18e55fc1e1ec20e8f3166e3059e76c885fc9f8f2
- Hide the usage of
rb_io_t
where possible. by ioquatix · Pull Request #7880 - Use a real Ruby mutex in rb_io_close_wait_list by KJTsanaktsidis · Pull Request #7884
- Revert "Revert https://github.com/ruby/io-console/pull/43" by ioquatix · Pull Request #7882
- Drop
_t
suffix from struct names. by ioquatix · Pull Request #7886 - Expose
enum rb_io_event
flags without_t
suffix. by ioquatix · Pull Request #7887 - Bug #19379: Regex: "end pattern with unmatched parenthesis" with Ruby 3.2 and interpolation
- YJIT: Introduce RubyVM::YJIT.stats_string by k0kubun · Pull Request #7857
- YJIT: Use #[cfg] instead of if cfg! by k0kubun · Pull Request #7899
- Fix
Thread.join(timeout)
when running inside the fiber scheduler. by ioquatix · Pull Request #7903 - Bug #19685: ruby --helpに --yydebugの情報がない
- YJIT: Fix a warning on cargo test by k0kubun · Pull Request #7909
- Unify length field for embedded and heap strings by peterzhu2118 · Pull Request #7908
- YJIT: Avoid identity-based known-class guards for IO objects by XrXr · Pull Request #7911
- Add deprecations for public
struct rb_io
members. by ioquatix · Pull Request #7916 - Add VM_ASSERT on
fiber->blocking == 0
. by ioquatix · Pull Request #7926 - Feature #19719: Universal Parser
- YJIT: Break register cycles for C arguments by k0kubun · Pull Request #7918
- Fix byteslice by ioquatix · Pull Request #1909
- Bug #19732: Possible missing header (stdint.h) in event.h
- Remove taint and untrusted flags by nobu · Pull Request #7958
- Bug #19736: Ripper.tokenize ignores token after heredoc_beg when embexpr inside heredoc is unclosed
- [DOC] Regexp doc by BurdetteLamar · Pull Request #7923
- Allow setting the name of a class or module. by ioquatix · Pull Request #7483
- Feature #19741: Mirror YARP to Ruby
- Bug #19743: Ruby's parser seems to ignoring DOT at the end of file just after digits
- Bug #19479: Support IPv4-mapped IPv6 addresses in IPAddr#private?
- Bug #8730: "rescue Exception" rescues Timeout::ExitException
- Bug #19569: #map on Enumerator::Lazy block arguments seem to differ from regular #map
- Bug #19746:
String#index
with regexp and too large offset doesn't clear$~
- Bug #19748:
String#byteindex
crashes whenoffset
is too large - [DOC] Fixes for link fragments by BurdetteLamar · Pull Request #7981
- Fix broken wiki links by jemmaissroff · Pull Request #8002
- Bug #19750: Ruby hangs when parsing Regexp with unterminated unicode "/\u{"
- Bug #19728: Automate (checking of) Regexp character property documentation
- Bug #18933: Dir.tmpdir implemented in non-Ractor-safe manner
- [DOC] Dir doc by BurdetteLamar · Pull Request #8014
- YJIT: Fix autosplat miscomp for blocks with optionals by XrXr · Pull Request #8006
- YJIT: Break register cycles for C arguments (take 2) by k0kubun · Pull Request #8018
- YJIT: Avoid reloading InsnOut operands by k0kubun · Pull Request #8021
- [DOC] RDoc for some of dir.c by BurdetteLamar · Pull Request #8026
- YJIT: Use --yjit-exec-mem-size=128 by default by k0kubun · Pull Request #8031
- YJIT: add new stats counter for compiled ISEQ entry points by maximecb · Pull Request #8032
- Resync YARP by jemmaissroff · Pull Request #8036
- YJIT: Use registers to pass stack temps to C calls by k0kubun · Pull Request #7920
- Add ruby_globals to lldb for easier debugging by jemmaissroff · Pull Request #8041
- [DOC] RDoc for dir.c by BurdetteLamar · Pull Request #8037
- Bug #19763: Inconsistent error message for String#index vs String#rindex
- [ruby/yarp] Fix endless method definitions binding power to accept args by jemmaissroff · Pull Request #8051
- Bug #19759: Surprising automatic splat with ruby2_keywords_hash
- YJIT: add counter for untracked gbpp exit reason by maximecb · Pull Request #8052
- YARP resync by jemmaissroff · Pull Request #8059
- Feature #19729: Store object age in a bitmap
- Feature #19757: Add new C API to create a subclass of
Data
- [Feature #19730: Remove transient heap](https://bugs.ruby-lang.org/issues...