Releases: ruby/ruby
3.2.5
What's Changed
- Bug #20421: String#index and String#byteindex don't clear
$~
when offset > size (or bytesize) - Bug #20183:
erb/escape.so
cannot be loaded when--with-static-linked-ext
- Rename
data
->buffer
for better readability. by ioquatix · Pull Request #7836 - Improvements to
IO::Buffer
read
/write
/pread
/pwrite
. by ioquatix · Pull Request #7826 - Fix
io_buffer_get_string
default length computation. by ioquatix · Pull Request #8427 - Bug #20516: The version of rexml in ruby 3.3.2 has not been updated since 3.2.6.
- YJIT: Add a cargo job for Arm64 and remove .cirrus.yml by k0kubun · Pull Request #8679
- [DOC] README.md: Remove Cirrus CI badge image. by junaruga · Pull Request #8785
- Bug #20569: Instruction sequence generated from
shareable_constant_value: literal
files may not be serialized to binary - Bug #20180: Inconsistent evaluation of
**{}
depending on position in array - Bug #20493: Segfault on rb_io_getline_fast
- Bug #20494: Non-default directories are not searched when checking for a gmp header
- Bug #20515: --with-gmp is not working - GMP support won't be built
- Bug #20499: Ruby builds on macOS store absolute paths for AR and NM in rbconfig since Ruby 3.2.3/3.3.0
- Bug #20414:
Fiber#raise
should recurse toresumed_fiber
rather than failing. - Bug #20393:
after_fork_ruby
clears all pending interrupts for both parent and child process. - Bug #20286: TracePoint does not emit
thread_end
event when thread exits with exception - Bug #20305: commit 1d2d25dcadda0764f303183ac091d0c87b432566 breaks grapheme_clusters
- Bug #20239: Segmentation fault when using Regex on a large String
- Bug #20311: Struct.new("A") memory leak?
- Bug #20162: Memory leak when duplicating too complex object
- Bug #20250: Crash with "Object ID seen, but not in mapping table: proc" error
- Bug #20307:
Hash#update
from compare_by_identity hash can have unfrozen string keys - Bug #20169:
GC.compact
can raisesEFAULT
on IO - Bug #20292: Abort ruby by
String#initialize
- Bug #20296: Complex(:sym, exception: false) generate exception with weird timing
- Bug #20431: Ruby 3.3.0 build fail with make: *** [io_buffer.o] Error 1
- Bug #20304: Memory leak when setting Encoding.default_internal
- Bug #20322: rb_enc_interned_str_cstr doesn't accept null pointer for encoding
- Bug #20342: Top level
public
,private
andruby2_keywords
do not work in wrapped load - Bug #20633: compile error at vm_insnhelper.c when HAVE_DECL_ATOMIC_SIGNAL_FENCE is 0
- Bug #20030:
Ripper.tokenize('"\\C-あ"')
separates encoding valid string to encoding invalid string. - Bug #20517:
Ripper.tokenize('"\\M-あ"')
separates encoding valid string to encoding invalid string. - Bug #20468: Segfault on safe navigation in for target
- Bug #20592: Interrupting Addrinfo causes Segmentation fault on alpine
- Bug #20573: Warning.warn shouldn't be called for disabled warnings
- Bug #19781: Stack consistency error with tailcall and YJIT enabled
- Bug #19619: Numbered parameters don't work with method definition with parameters
Note: This list is automatically generated by tool/gen-github-release.rb. Because of this, some commits may be missing.
Full Changelog
3.3.4
What's Changed
- Bug #20573: Warning.warn shouldn't be called for disabled warnings
- Bug #20585: Size of memory allocated by String.new(:capacity) is different from the specified value
- Bug #20581: Ruby 3.3.3 install has missing deps for bundled net-pop gem
- Bug #20595: Corruption of encoding name string
- Bug #20598: Corruption of internal encoding string
- Bug #20562: Categorize
RUBY_FREE_AT_EXIT
warning - Bug #20468: Segfault on safe navigation in for target
- Bug #20592: Interrupting Addrinfo causes Segmentation fault on alpine
- Bug #20239: Segmentation fault when using Regex on a large String
- Bug #20570: Nokey behavior changed since 3.3.
- Bug #20605: Add explicit compiler fence when pushing frames to ensure safe profiling
Note: This list is automatically generated by tool/gen-github-release.rb. Because of this, some commits may be missing.
Full Changelog
3.3.3
What's Changed
- Bug #20447: Ruby 3.3.1 broken on i686 due to "incompatible pointer type" error
- Bug #20515: --with-gmp is not working - GMP support won't be built
- Bug #20516: The version of rexml in ruby 3.3.2 has not been updated since 3.2.6.
- Bug #20496: Segfault when enabling YJIT
- Bug #20522: YJIT can panic if shape transition in
gen_setinstancevariable
emits a performance warning - Bug #20517:
Ripper.tokenize('"\\M-あ"')
separates encoding valid string to encoding invalid string. - Merge RubyGems 3.5.11 and Bundler 2.5.11 for Ruby 3.3 by hsbt · Pull Request #10870
- Don't add
YJIT
toRUBY_DESCRIPTION
until it's actually enabled by casperisfine · Pull Request #10920 - Bug #20180: Inconsistent evaluation of
**{}
depending on position in array - Bug #20280: Error at invalid encoding symbols
- Bug #20569: Instruction sequence generated from
shareable_constant_value: literal
files may not be serialized to binary - Bug #20499: Ruby builds on macOS store absolute paths for AR and NM in rbconfig since Ruby 3.2.3/3.3.0
- Bug #20521: Memory leak in Ripper parsing
- Bug #20270: Options with
--parser=prism
Note: This list is automatically generated by tool/gen-github-release.rb. Because of this, some commits may be missing.
Full Changelog
3.3.2
What's Changed
- Bug #20493: Segfault on rb_io_getline_fast
- Bug #20450: Ruby 3.3.1 broken with bootsnap
- Bug #20169:
GC.compact
can raisesEFAULT
on IO - Bug #20192: YJIT in 3.3.0 miscompiles
yield
with keyword splats - Bug #20307:
Hash#update
from compare_by_identity hash can have unfrozen string keys - Bug #20511: Update bundled reline gem version to v0.5.7
- Bug #20204: 3.3.0 YJIT rises TypeError instead of ArgumentError with some incorrect calls
- Bug #20195: 3.3.0 YJIT mishandles ruby2_keywords splat into methods taking a rest parameter
- Bug #20288:
rb_fiber_scheduler_close
exceptions are not handled inrb_fiber_scheduler_set
. - Bug #20286: TracePoint does not emit
thread_end
event when thread exits with exception - Bug #20292: Abort ruby by
String#initialize
- Bug #20445: Reduce
if
for decreasing counter on OP_REPEAT_INC - Bug #20296: Complex(:sym, exception: false) generate exception with weird timing
- Bug #20322: rb_enc_interned_str_cstr doesn't accept null pointer for encoding
- Bug #20289: Bug in Zlib::GzipReader#eof? breaks reading certain sizes of gzipped files.
- Bug #20393:
after_fork_ruby
clears all pending interrupts for both parent and child process. - Bug #20305: commit 1d2d25dcadda0764f303183ac091d0c87b432566 breaks grapheme_clusters
- Bug #20342: Top level
public
,private
andruby2_keywords
do not work in wrapped load - Bug #20413: Enumerator can block fiber scheduler.
- Bug #20427: Backport: Heap buffer overflow in
Array#sort!
when block modifies target array - Bug #20414:
Fiber#raise
should recurse toresumed_fiber
rather than failing. - Bug #20453: Pointer being freed was not allocated in Regexp timeout
- Bug #20494: Non-default directories are not searched when checking for a gmp header
- Bug #20094: Inline while loop behavior changed unexpectedly in 3.3.0
- Bug #20502: Backport pthread_kill fix to Ruby 3.3
- Bug #20431: Ruby 3.3.0 build fail with make: *** [io_buffer.o] Error 1
- Bug #20500: Non-system directories are not searched when checking for jemalloc headers and libs, and building
enc
Note: This list is automatically generated by tool/gen-github-release.rb. Because of this, some commits may be missing.
Full Changelog
3.1.6
What's Changed
- Bug #20151: Can't build Ruby 3.1 on FreeBSD 14.0 and Bug #18997: Don't define ruby_qsort when POSIX qsort_r is available
- Bug #20451: Bad Ruby 3.1.5 backport causes fiddle to fail to build
- Bug #20431: Ruby 3.3.0 build fail with make: *** [io_buffer.o] Error 1 and Refer autoconfigured endian macro by nobu · Pull Request #10572
- Bug #19751: Ruby 3.2.2 Fails to Compile from Source
- Bug #19920: Ruby 3.1 fails to build with --enable-shared on macos-arm64: is an incompatible architecture (have 'arm64', need '')
Note: This list is automatically generated by tool/gen-github-release.rb. Because of this, some commits may be missing.
Full Changelog
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.