Releases: ruby/ruby
3.4.4
What's Changed
- YJIT: Split the block on optimized getlocal/setlocal by k0kubun · Pull Request #13331
- Bug #21257: YJIT can generate infinite loop when OOM - Ruby - Ruby Issue Tracking System
- Bug #21286: Windows - MSYS2 just updated to GCC 15.1.0, builds failing - Ruby - Ruby Issue Tracking System
- Bug #21327: Windows builds seem broken after clock_gettime changes? - Ruby - Ruby Issue Tracking System
- Bug #21331: heap-use-after-free caused by rehash during transform_values! - Ruby - Ruby Issue Tracking System
- Bug #21289: Fix C level backtraces for USE_ELF - Ruby - Ruby Issue Tracking System
Note: This list is automatically generated by tool/gen-github-release.rb. Because of this, some commits may be missing.
Full Changelog
3.4.3
What's Changed
- Bug #21145: Prism accepts newlines in-between curly unicode escape - Ruby - Ruby Issue Tracking System
- Bug #21153: ::Foo ||= p 1 should parse - Ruby - Ruby Issue Tracking System
- Bug #21030: Bug: #step with
Range<ActiveSupport::Duration>
behavior broken on Ruby 3.4.1 - Ruby - Ruby Issue Tracking System - Bug #21131: IO.copy_stream: yielded string changes value when duped - Ruby - Ruby Issue Tracking System
- Feature #19521: Support for
Module#name=
andClass#name=
. - Ruby - Ruby Issue Tracking System - Bug #21159:
Module#set_temporary_name
should freeze given name - Ruby - Ruby Issue Tracking System - Bug #21161: Crash when locale is set to Turkish tr_TR.UTF-8 - Ruby - Ruby Issue Tracking System
- Bug #21144: Win32: Use Windows time zone ID as the time zone name if TZ is not set - Ruby - Ruby Issue Tracking System
- Bug #21170: Corrupted Hash (bad VALUE and missing entry) when -1 returned from .hash - Ruby - Ruby Issue Tracking System
- Bug #21172: Race condition in
register_fstring
- Ruby - Ruby Issue Tracking System - Bug #21163: Inconsistencies in Kernel.Float compared to other number parsing methods - Ruby - Ruby Issue Tracking System
- Bug #21173: RUBY_FREE_AT_EXIT does not work when error in -r - Ruby - Ruby Issue Tracking System
- Bug #21179: Introduction Happy Eyeballs Version 2 broke
Socket.tcp
from secondary Ractors - Ruby - Ruby Issue Tracking System - Bug #19841: Marshal.dump stack overflow with recursive Time - Ruby - Ruby Issue Tracking System
- Bug #21180: SEGV while marking
imemo_env->iseq
- Ruby - Ruby Issue Tracking System - Bug #21186: Inconsistent parsing of ?あand 0 - Ruby - Ruby Issue Tracking System
- Bug #21094: Module#set_temporary_name does not affect a name of a nested module - Ruby - Ruby Issue Tracking System
- Bug #21195: Crash when using IO#timeout - Ruby - Ruby Issue Tracking System
- Bug #21196: Ruby 3.4 ignores visibility when passing arguments using
...
- Ruby - Ruby Issue Tracking System - Bug #21141:
Time#utc?
does not work with a timezone object - Ruby - Ruby Issue Tracking System - Bug #21211: Incomplete Backtrace for Socket Errors in Ruby 3.4+ - Ruby - Ruby Issue Tracking System
- Bug #21197: Prism does not accept newline after defined? keyword - Ruby - Ruby Issue Tracking System
- Bug #21183: Ractor error with Prism::VERSION - Ruby - Ruby Issue Tracking System
- Bug #21217: Integer.sqrt produces wrong results even on input <= 1e18 - Ruby - Ruby Issue Tracking System
- Bug #21220: Memory corruption in update_line_coverage() [write at index -1] - Ruby - Ruby Issue Tracking System
Note: This list is automatically generated by tool/gen-github-release.rb. Because of this, some commits may be missing.
Full Changelog
3.3.8
What's Changed
- Bump net-imap to 0.4.19 for Ruby 3.3 (CVE-2025-25186) by nevans · Pull Request #12732
- Bug #21170: Corrupted Hash (bad VALUE and missing entry) when -1 returned from .hash - Ruby - Ruby Issue Tracking System
- Bug #20951: Confusing handling of timezone object's
#utc_to_local
results - Ruby - Ruby Issue Tracking System - Bug #21046: Backport: TLS fix for ARM64 - Ruby - Ruby Issue Tracking System
- Bug #21032:
Module#autoload?
is slow when$LOAD_PATH
contains a relative path - Ruby - Ruby Issue Tracking System - Bug #21095: Prefer
uname -n
overhostname
in tests. - Ruby - Ruby Issue Tracking System - Bug #21112: Typo in error message when an incorrect key is used with WeakKeyMap - Ruby - Ruby Issue Tracking System
- Bug #21092: error building ruby 3.4.1 on cygwin/msys2 - Ruby - Ruby Issue Tracking System
- Bug #21159:
Module#set_temporary_name
should freeze given name - Ruby - Ruby Issue Tracking System - Bug #21172: Race condition in
register_fstring
- Ruby - Ruby Issue Tracking System - Bug #21144: Win32: Use Windows time zone ID as the time zone name if TZ is not set - Ruby - Ruby Issue Tracking System
- Bug #21180: SEGV while marking
imemo_env->iseq
- Ruby - Ruby Issue Tracking System - Bug #21131: IO.copy_stream: yielded string changes value when duped - Ruby - Ruby Issue Tracking System
- Bug #19841: Marshal.dump stack overflow with recursive Time - Ruby - Ruby Issue Tracking System
- Bug #21186: Inconsistent parsing of ?あand 0 - Ruby - Ruby Issue Tracking System
- Bug #21094: Module#set_temporary_name does not affect a name of a nested module - Ruby - Ruby Issue Tracking System
- Bug #21195: Crash when using IO#timeout - Ruby - Ruby Issue Tracking System
- Bug #20984: ENV.inspect is not encoding aware - Ruby - Ruby Issue Tracking System
- Bug #21027:
not()
receiver should benil
- Ruby - Ruby Issue Tracking System - Bug #21217: Integer.sqrt produces wrong results even on input <= 1e18 - Ruby - Ruby Issue Tracking System
- Bug #21141:
Time#utc?
does not work with a timezone object - Ruby - Ruby Issue Tracking System
Note: This list is automatically generated by tool/gen-github-release.rb. Because of this, some commits may be missing.
Full Changelog
3.2.8
Security fixes
What's Changed
- Bug #21092: error building ruby 3.4.1 on cygwin/msys2 - Ruby - Ruby Issue Tracking System
- Bug #21170: Corrupted Hash (bad VALUE and missing entry) when -1 returned from .hash - Ruby - Ruby Issue Tracking System
- Bug #21144: Win32: Use Windows time zone ID as the time zone name if TZ is not set - Ruby - Ruby Issue Tracking System
- Bug #18257: rb_mRubyVMFrozenCore is broken by GC run - Ruby - Ruby Issue Tracking System
- Bug #21032:
Module#autoload?
is slow when$LOAD_PATH
contains a relative path - Ruby - Ruby Issue Tracking System - Bug #21131: IO.copy_stream: yielded string changes value when duped - Ruby - Ruby Issue Tracking System
- Bug #19584: Crash in rb_gc_register_address - Ruby - Ruby Issue Tracking System
- Bug #21180: SEGV while marking
imemo_env->iseq
- Ruby - Ruby Issue Tracking System - Bug #20025: Parsing identifiers/constants is case-folding dependent - Ruby - Ruby Issue Tracking System
- Bug #19426: Endless
Range#step
of object with#succ
method does not work - Ruby - Ruby Issue Tracking System
Note: This list is automatically generated by tool/gen-github-release.rb. Because of this, some commits may be missing.
Full Changelog
3.1.7
Security fixes
- CVE-2025-27219, CVE-2025-27220 and CVE-2025-27221
- Update REXML-3.3.4 and rss-0.3.1 as bundled gems
What's Changed
- Bug #20516: The version of rexml in ruby 3.3.2 has not been updated since 3.2.6. - Ruby - Ruby Issue Tracking System
- Improve base time of assert_linear_performance by tompng · Pull Request #11369
Note: This list is automatically generated by tool/gen-github-release.rb. Because of this, some commits may be missing.
Full Changelog
3.4.2
What's Changed
- Bug #21024: Ruby including generates compilation warning with GCC 15, header is deprecated in C++17,
- Bug #21021: "try to mark T_NONE object" with 3.4.1
- Bug #20997: YJIT panic assertion
left == right
failed: leave instruction expects stack size 1, but was: 2 - Bug #20981: rb_undefine_finalizer is missing
- Bug #20989: Segmentation fault in Ripper when lexing
/#{"\xcd"}/
- Bug #21003: unexpected warning about ignored block
- Bug #21002: Please include license information of turbo_tests
- Bug #21001: unexpected nil result from proc with ensure and next
- Bug #21010: Endless method definition of
[]=
is SyntaxError in parse.y but allowed in Prism - Bug #20992:
eval(ascii_encoded_code)
raises EncodingError when multibyte local variable exists - Bug #21017:
--with-parser=parse.y
configure option does not work - Bug #21014: Prism doesn't set node_id on iseqs correctly
- Bug #21027:
not()
receiver should benil
- Bug #20995: exception escapes block given to IO.popen("-") in child process
- Bug #21008: Array#sum, Enumerator#sum, Numeric subclass
- Bug #21044: Prism maximum recursion depth is 1_000, parse.y is 10_000
- Bug #21031: Incompatibility with prism and parse.y when eval'ing unnamed forwarding variables
- Bug #21085: [BUG] Stack consistency error with -ne
- Bug #21048: [Prism] rescue in modifier form with condition behaves differently
- Bug #21046: Backport: TLS fix for ARM64
- Bug #21012: Compiling
a['a','b'],=1
with parse.y fails - Bug #21038: Preserve
errno
inrb_fiber_scheduler_unblock
- Bug #21032:
Module#autoload?
is slow when$LOAD_PATH
contains a relative path - Bug #21092: error building ruby 3.4.1 on cygwin/msys2
- Bug #21095: Prefer
uname -n
overhostname
in tests. - Bug #21103: Binding problem with delegate methods
- Bug #21088: TCPSocket.new raises Socket::ResolutionError instead of Errno::ECONNREFUSED for hosts defined in /etc/hosts
- Bug #21112: Typo in error message when an incorrect key is used with WeakKeyMap
- Bug #21117: Inconsistent behaviour between "_1" and "it" variables
- Bug #21114: Prism hangs up while parsing deeply nested
def
- Bug #20984: ENV.inspect is not encoding aware
- Bug #20982: Inconsistency between Hash#inspect and ENV.inspect in Ruby 3.4
Note: This list is automatically generated by tool/gen-github-release.rb. Because of this, some commits may be missing.
Full Changelog
3.2.7
What's Changed
- Bug #20853: Hash key retrieval after Process.warmup
- Bug #20868: Method#hash changes after compaction
- Bug #20883: sprintf with binary strings has incorrect coderange
- Bug #20873:
printf("%f")
returns wrong result forRational
withFIXNUM_MIN
- Bug #20898: Backport https://github.com/ruby/ruby/pull/9737 to Ruby 3.3 and 3.2
- Bug #20871: Including methods in Enumerable doesn't make them available in Array
- Bug #20907: Fiber scheduler does not correctly re-lock mutex if
Mutex#sleep
is interrupted. - Bug #20909: Backport String indexing bug fixes
- Bug #20921: Use-after-free in constant cache
- Bug #20915: Segfault with
TracePoint#parameters
and aliased C method - Bug #20447: Ruby 3.3.1 broken on i686 due to "incompatible pointer type" error
- Bug #20924: IO#readline ignores the limit argument when the encoding is UTF-32LE and the limit would split a character
- Bug #20984: ENV.inspect is not encoding aware
- Bug #20995: exception escapes block given to IO.popen("-") in child process
- Bug #21008: Array#sum, Enumerator#sum, Numeric subclass
- Bug #21012: Compiling
a['a','b'],=1
with parse.y fails - Bug #21038: Preserve
errno
inrb_fiber_scheduler_unblock
- Bug #20997: YJIT panic assertion
left == right
failed: leave instruction expects stack size 1, but was: 2
Note: This list is automatically generated by tool/gen-github-release.rb. Because of this, some commits may be missing.
Full Changelog
3.3.7
What's Changed
- Bug #20883: sprintf with binary strings has incorrect coderange
- Bug #20886: Crash due to double free on regex timeout after stack allocations
- Bug #20892:
ObjectSpace.dump
can produce broken JSON for classes with temporary names - [Backport 3.3] wasm: align fiber stack pointer to 16 bytes by kateinoigakukun · Pull Request #12101
- Bug #20787: IO#readline does not check its arguments like IO#gets and will read more data than limit
- Bug #20868: Method#hash changes after compaction
- Bug #20873:
printf("%f")
returns wrong result forRational
withFIXNUM_MIN
- Bug #20907: Fiber scheduler does not correctly re-lock mutex if
Mutex#sleep
is interrupted. - Bug #20871: Including methods in Enumerable doesn't make them available in Array
- Bug #20909: Backport String indexing bug fixes
- Bug #20915: Segfault with
TracePoint#parameters
and aliased C method - Bug #20921: Use-after-free in constant cache
- Bug #20924: IO#readline ignores the limit argument when the encoding is UTF-32LE and the limit would split a character
- Bug #20950: Use-after-free in ep in Proc#dup for ifunc procs
- Bug #21012: Compiling
a['a','b'],=1
with parse.y fails - Bug #20984: ENV.inspect is not encoding aware
- Bug #20995: exception escapes block given to IO.popen("-") in child process
- Bug #21008: Array#sum, Enumerator#sum, Numeric subclass
- Bug #21038: Preserve
errno
inrb_fiber_scheduler_unblock
- Bug #20997: YJIT panic assertion
left == right
failed: leave instruction expects stack size 1, but was: 2
Note: This list is automatically generated by tool/gen-github-release.rb. Because of this, some commits may be missing.
Full Changelog
3.4.1
3.4.0
This release only listed between 3.4.0-rc1 and 3.4.0 final release. See also 3.4.0-preview1, 3.4.0-preview2 and 3.4.0-rc1.
What's Changed
- Launchable: Start recording test-spec results by ono-max · Pull Request #12302
- Feature #20884: reserve "Ruby" toplevel module for Ruby language
- Feature #20875: Atomic initialization for Ractor local storage
- [DOC] Fix grammar errors, typos, and improve readability of trace_point.rb by st0012 · Pull Request #12150
- Bug #20918: Prism error indicates line number of
-e
that does not exist - Feature #20861: Add an environment variable for tuning the default thread quantum
- [DOC] Improve formatting in Markdown files by amomchilov · Pull Request #12322
- Improve "Building Ruby" docs by amomchilov · Pull Request #12320
- get rid of unknown error on travis-ci by nobu · Pull Request #1171
- Launchable: Refactor entrypoint.sh by ono-max · Pull Request #12314
- Bug #20950: Use-after-free in ep in Proc#dup for ifunc procs
- YJIT: Speculate block arg for
c_func_method(&nil)
calls by XrXr · Pull Request #12326 - [DOC] Fix incorrect
Array#fetch_values
examples by kyanagi · Pull Request #12337 - [DOC] Improve array.rb documentation by alexcrocha · Pull Request #12340
- Feature #20205: Enable
frozen_string_literal
by default - Bug #20952: A weird error message for []= with keyword arguments
- Bug #20638: Threads not collected by GC under RUBY_MN_THREADS=1
- Improve APIs for Globally Enabling/Disabling fast_fallback in Socket by shioimm · Pull Request #12257
- Update NEWS.md for
Socket.tcp
andTCPSocket.new
by shioimm · Pull Request #12347 - Bug #20927:
{ **{ } }
behaves differently whenshareable_constant_value: experimental_everything
- Bug #20951: Confusing handling of timezone object's
#utc_to_local
results - Bug #20940: Colored syntax error from prism
- [DOC] Adjust argument unpacking docs and document **nil by zverok · Pull Request #12228
- Bug #20954: Ractor.main? returns 0 on the main ractor
- Bug #20785: Should
a in b, and c
a in b, or c
a in b, rescue c
be syntax ok? - Add back summary table for pack/unpack directives by eregon · Pull Request #12349
- Fix constant documents by soutaro · Pull Request #12357
- Launchable: Start recording test-spec in compilers.yaml by ono-max · Pull Request #12364
- Bug #20956: Nested alternation pattern matching bug in 3.4.0-rc1
- [DOC] Change arg names from n to count by BurdetteLamar · Pull Request #12288
- YJIT: Load registers on JIT entry to reuse blocks by k0kubun · Pull Request #12355
- [DOC] Added references of github releases for bundled gems by hsbt · Pull Request #12365
- Wrap
do_fast_fallback_getaddrinfo
withrb_thread_prevent_fork
by shioimm · Pull Request #12366 - Bug #20963: compile error due to lack of MAYBE_UNUSED macro e.g. Oracle Developer Studio 12.x on Solaris 10
- Bug #20433: Hash.inspect for some hash returns syntax invalid representation
- Document 'it' and update numbered parameters docs by zverok · Pull Request #12375
- Bug #20965:
it
vsbinding.local_variables
- Bug #20969: Segmentation fault with
Ripper.lex '/(?<_1>)/=~s'
- Bundle rbs-3.8 by soutaro · Pull Request #12399
- Bug #20942: Infinite loop when out of memory
- Fix tests for fast_fallback by shioimm · Pull Request #12406
- Bug #20973:
it
in pattern matching pin operator causes BUG - [DOC] Refresh standard libraries page by st0012 · Pull Request #12404
- Bug #20916: Prism compiler should support ** in Ractor constant
- Properly document Ractor#require by zverok · Pull Request #12389
- [DOC] Move Time#xmlschema docs to the core by zverok · Pull Request #12403
- Bug #3456: bisarre comma
- Improve doc for
Socket::ResolutionError
by shioimm · Pull Request #12434 - Bug #20978: Ractor[]/Thread[]/Fiber[] behavior difference
- YJIT: Return None if entry block compilation fails by k0kubun · Pull Request #12445
- Bug #20779: Un-rescuable thread creation limit on Mac
- Bug #19562: Setting default_(in|ex)ternal encoding after running an Ractor freezes ruby
- Bug #20929: TestTime have an assertion different from current implementation.
- Bug #20979: +comment does not affect parsetree without
--parser=parse.y
- Bundle rbs-3.8.0 by soutaro · Pull Request #12453
- Introduce a timeout to prevent
rb_thread_fd_select
from hanging with write(2) failure by shioimm · Pull Request #12457 - [DOC] Adjust documentation related to backtraces by zverok · Pull Request #12420
Note: This list is automatically generated by tool/gen-github-release.rb. Because of this, some commits may be missing.