Repository navigation
Releases: ruby/ruby
Release list
4.1.0-preview1
NEWS for Ruby 4.1.0-preview1
This document is a list of user-visible feature changes
since the 4.0.0 release, except for bug fixes.
Note that each entry is kept to a minimum, see links for details.
Language changes
-
superin a module method that was called viasuperfrom a refinement
method now works correctly.
[[Feature #22309]] -
Module#cloneandModule#dupno longer rewrite the lexical scope of
copied methods. Constants and class variables resolve through the
original class, consistent with inheritance and mixins.
[[Feature #21981]] -
aliasandModule#alias_methodin a module emit a deprecation warning
when the original method is not a method of the module or its ancestors
and is only found through the fallback toObject. The fallback will be
removed in Ruby 4.3, and such an alias will raise aNameError.
[[Bug #22276]] -
aliasandModule#alias_methodemit a deprecation warning when the
original method is defined in a prepended module. This behavior will
be removed in Ruby 4.3, and alias lookup will start at the origin
class (after prepended modules).
[[Bug #22273]]
Core classes updates
Note: We're only listing outstanding class updates.
-
C API
RB_NOGVL_PENDING_INTR_FAILis added as a flag forrb_nogvl.
rb_nogvldoes not enter the blocking region (and does not call the
given function), returning0, if the current thread has pending
interrupts, including interrupts masked byThread.handle_interrupt.
As with the existing skip path,errnois0because the function was
never called.RHASH_TBLis deprecated. [[Feature #22232]]
-
Array
Array#packaccepts new formatsRandrfor unsigned and signed
LEB128 encoded integers. [[Feature #21785]]Array#packaccepts new formatsx!and@!to align the current
offset to a byte boundary or to the ABI alignment of another
directive. [[Feature #22185]]
-
Dir
Dir.globsupports***/for recursive matching that follows
directory symbolic links, stopping at links to ancestor directories.
[[Feature #17548]]
-
ENV
ENV.fetch_valuesis added. It returns an array of values for the
given names, raisingKeyErrorfor missing names unless a block is
given. [[Feature #21781]]
-
Fiber::Scheduler
- The
fiber_interrupthook is now required. Schedulers which do not
implement it can no longer be installed withFiber.set_scheduler.
- The
-
GC
GC.statacceptsscope: :ractor(the default),scope: :local
(a synonym for:ractor), andscope: :global.
With the default collector, the global scope reports cumulative collection
counts and measured marking/sweeping CPU time across Ractors, including
history from destroyed object spaces, without requesting a stop-the-world
snapshot. UnscopedGC.stat,GC.count, andGC.total_timeretain their
current-Ractor behavior.GC.statreports a new key,:global_gc_count: the number of
stop-the-world global garbage collection cycles the current Ractor
initiated. Each global collection is attributed to exactly one Ractor,
so the values sum across Ractors.GC.stat(:global_gc_count, scope: :global)reports the process total, including the counts of
terminated Ractors.- A global garbage collection is not counted in
:major_gc_count.
:countequals:minor_gc_countplus:major_gc_countplus
:global_gc_countin both scopes. When another Ractor's object space
exists, including one left by a terminated Ractor that is not yet
absorbed, or one was absorbed since the last global collection,
GC.startruns a global collection by default, so it increments
:global_gc_countrather than:major_gc_count; passglobal: false
for a local major collection. - Global compaction no longer counts overlapping CPU intervals in scalar GC
timing statistics. Profiler wall-time intervals are unchanged.
-
Hash
Hash.ruby2_keywords_hash?andHash.ruby2_keywords_hashare
deprecated and will be removed in Ruby 4.5. [[Feature #22205]]
-
Integer
Integer#bit_countis added. It returns the number of1bits in the
binary representation of a non-negative integer (its population count).
[[Feature #20163]]
-
IO::Buffer
-
read,write,pread, andpwritenow perform one IO operation using
(offset, length), wherelengthis the maximum transfer size. Short
transfers are returned directly. -
The corresponding fiber scheduler hooks are no longer experimental and
now use the same(offset, length)argument order and single-operation
semantics.
-
-
Kernel
Kernel#autoload_relativeandModule#autoload_relativeare added.
These methods work likeautoload, but resolve the file path relative
to the file where the method is called, similar torequire_relative.
This makes it easier to autoload constants from files in the same
directory without hardcoding absolute paths or manipulating$LOAD_PATH.
[[Feature #15330]]
-
MatchData
MatchData#integer_atis added. It converts the matched substring to
integer and return the result. [[Feature #21932]]
-
Module
Module#descendantsis added. It returns an array of classes and
modules that have the receiver in their ancestors. [[Feature #9779]]Module#ruby2_keywordsand top-levelruby2_keywordsare
deprecated and will be removed in Ruby 4.4. [[Feature #22205]]Module#method_defined?now accepts a third optional argument to also
match private methods. [[Feature #22297]]
-
ObjectSpace
ObjectSpace._id2refwas removed. [[Feature #22135]]
-
Proc
Proc#refinedis added. It returns a newProcthat behaves like the
receiver but with the refinements activated by the given modules
in effect inside its body, without affecting the originalProc.
[[Feature #22097]]Proc#ruby2_keywordsis deprecated and will be removed in Ruby 4.4.
[[Feature #22205]]
-
Range
Range#clampis added. It returns a newRangeinstance whose
begin and end values are clamped to the given bounds. [[Feature #22175]]
-
Regexp
- All instances of
Regexpare now frozen, not just literals.
Subclasses ofRegexpare not frozen for compatibility.
[[Feature #8948]]
- All instances of
-
Set
- A deprecated behavior,
Set#to_set,Range#to_set, and
Enumerable#to_setaccepting arguments, was removed. [[Feature #21390]]
- A deprecated behavior,
-
String
String#unpackandString#unpack1accept new formatsRandr
for unsigned and signed LEB128 encoded integers. [[Feature #21785]]String#unpackandString#unpack1accept a new format^that
returns the current offset. Useful when combined with variable
width formats like LEB128. [[Feature #21796]]String#unpackandString#unpack1accept new formatsx!and
@!to align the current offset to a byte boundary or to the ABI
alignment of another directive. [[Feature #22185]]- Basic bit operations are added.
String#bit_get,String#bit_set?,
String#bit_set,String#bit_clear,String#bit_flipand
String#bit_counthandle individual bits, andString#bitwise_not,
String#bitwise_and,String#bitwise_or,String#bitwise_xor
(with their!variants) handle whole strings. [[Feature #22118]] String#trnow accept a Hash for multi-character replacement.
[[Feature #22238]]
-
Symbol
Symbol#to_snow returns a frozen string. [[Feature #22137]]
-
Thread
- Assigning
nilwithThread#thread_variable_setnow deletes the
thread-local variable. [[Feature #19333]]
- Assigning
-
Thread::Backtrace::Location
Thread::Backtrace::Location#source_rangeis added. It returns a
Ruby::SourceRangefor the Ruby expression associated with the frame.
Stdlib updates
-
Psych
- An experimental libfyaml backend has been added. It is only
enabled when psych is built with--enable-libfyaml, and the
default libyaml backend remains unchanged otherwise. It is not
supported on Windows. [[GH-psych #805]]
- An experimental libfyaml backend has been added. It is only
-
Ruby::Prism
Ruby::Prismis added. It is the prism parser built into the
interpreter, i.e., the very parser that parsed the running program,
independent of the prism gem. It is autoloaded.
Method#syntax_treeand others return its nodes. Its API may change
between Ruby minor versions; use theprismgem unless you need the
parser of the running interpreter. [[Bug #22379]]
The following bundled gems are added.
We only list stdlib changes that are notable feature changes.
Other changes are listed in the following sections. We also listed release
history from the previous bundled version that is Ruby 3.4.0 if it has GitHub
releases.
The following bundled gems are promoted from default gems.
- prism 1.9.0
- tsort 0.2.0
- win32-registry 0.1.2
The following bundled gems are removed.
- net-ftp 0.3.9
- net-pop 0.1.2
They are still available on rubygems.org and can be installed with
gem install. [[Feature #21835]]
The following default gem is added.
The following default gems are updated.
- RubyGems 4.1.0.beta2
- 4.0.3 to [v4.0.4][RubyGems-v4.0.4], [v4.0.5][RubyGems-v4.0.5], [v4.0.6][RubyGems-v4.0.6], [v4.0.7][RubyGems-v4.0.7], [v4.0.8][RubyGems-v4.0.8], [v4.0.9][RubyGems-v4.0.9], [v4.0.10][RubyGems-v4.0.10], [v4.0.11][RubyGems-v4.0.11], [v4.0.12][RubyGems-v4.0.12], [v4.0.13][...
3.4.11
What's Changed
- Bug #22196: Heap-use-after-free in
fiber_switchwith transfer-terminated async tasks on 3.4.10 - Ruby - Ruby Issue Tracking System - Guard fiber target across
fiber_store. by samuel-williams-shopify · Pull Request #17951 - Bug #21842: Encoding of rb_interned_str - Ruby - Ruby Issue Tracking System
- Bug #22126: Stack underflow for partial DCE and loops - Ruby - Ruby Issue Tracking System
- Bug #22124: void value missed in parse.y - Ruby - Ruby Issue Tracking System
- Bug #22183: parse.y interpolation inside lambda literal - Ruby - Ruby Issue Tracking System
- Bug #22099: Keyword-only method silently accepts a positional argument - Ruby - Ruby Issue Tracking System
- Bug #22133: Ruby's default SIGINT handling ignores
Thread.handle_interruptmasking. - Ruby - Ruby Issue Tracking System - Bug #22189:
Enumerator::Lazy#to_enumdoes not accept method names as strings - Ruby - Ruby Issue Tracking System - Bug #22191:
Signal.trap(:EXIT)exception only shown ifat_exitalso raises - Ruby - Ruby Issue Tracking System - Bug #22198: win32: heap overflow in Kernel#system - Ruby - Ruby Issue Tracking System
- Bug #20958: fix ENV.keys encoding on windows - Ruby - Ruby Issue Tracking System
- Bug #11438: native_thread_init_stack() get machine.stack_start unequal to thread's stack start address, x86 win32 - Ruby - Ruby Issue Tracking System
- Bug #22218: Line TracePoint misses executed loop condition after a guard - Ruby - Ruby Issue Tracking System
- Bug #22223: Socket.tcp with connect_timeout returns a phantom "connected" socket for a refused connection on macOS 27 (kernel answers EISCONN on connect retry; SO_ERROR never consulted) - Ruby - Ruby Issue Tracking System
- Bug #22290: Adding instance variables to anonymous object may bloat all future classes - Ruby - Ruby Issue Tracking System
- Bug #22269:
Coverage.line_stubclobbers already-collected coverage data - Ruby - Ruby Issue Tracking System - Bug #22257: Prepending a module to an already-included module leaves stale super caches - Ruby - Ruby Issue Tracking System
- Handle spurious wakeups in
Thread#join. by samuel-williams-shopify · Pull Request #13532 - Bug #22311: Build crashes on macOS 26 with the macOS 27 SDK because pipe2() and dup3() are unavailable - Ruby - Ruby Issue Tracking System
- Bug #22259: Arrays sharding a buffer segfault when concatenating with each other - Ruby - Ruby Issue Tracking System
- Bug #22264: Warning missing from parse.y hash literals - Ruby - Ruby Issue Tracking System
- Bug #22303: EncodingError from interpolating symbol crashes whole process - Ruby - Ruby Issue Tracking System
- Bug #22315: heap-use-after-free in String unpack with a block that mutates the receiver - Ruby - Ruby Issue Tracking System
- Bug #22318: heap uaf triggered in array.flatten - Ruby - Ruby Issue Tracking System
- Bug #22319: heap buffer overflow triggered by array's zip function - Ruby - Ruby Issue Tracking System
- Bug #22322: AddressSanitizer: use-after-poison in econv_description /ruby-src/build/../transcode.c - Ruby - Ruby Issue Tracking System
- Bug #22321: Assertion Failed: rb_vm_search_method_slowpath:RB_TYPE_2_P(klass, RUBY_T_CLASS, RUBY_T_ICLASS): klass: T_MODULE - Ruby - Ruby Issue Tracking System
- Bug #22334: Assertion Failed: VM_ENV_FLAGS:FIXNUM_P(flags) - Ruby - Ruby Issue Tracking System
- Bug #22336: IO:Buffer Heap uaf - Ruby - Ruby Issue Tracking System
- Bug #9932: Permutation - Segment fault - Ruby - Ruby Issue Tracking System
- Bug #22330: heap uaf from string.encode() - Ruby - Ruby Issue Tracking System
- Bug #22340: Win32: File.stat succeeds on symbolic-link loops on Windows - Ruby - Ruby Issue Tracking System
- Bug #22335: Stack corruption with >31 keyword args and refined Integer#== - Ruby - Ruby Issue Tracking System
- Bug #22338: [Backport] win32: create directory symlinks for relative directory targets - 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
4.0.7
What's Changed
- Bug #22188: addr2line doesn't find symbols when compiled with GCC LTO - Ruby - Ruby Issue Tracking System
- Bug #22210: Check if issue #19969 is still reproducible / re-opened in 4.0.x - Ruby - Ruby Issue Tracking System
- Bug #22217: Segmentation fault when resuming execution with
Coverage.startand ruby/debug - Ruby - Ruby Issue Tracking System - Fix formatting in ObjectSpace._id2ref error path by eregon · Pull Request #18206
- Bug #22200: ObjectSpace._id2ref can return a different object than the id's owner on Ruby 4.0 (stale id2ref_tbl entry for objects with generic fields) - Ruby - Ruby Issue Tracking System
- Bug #22123: Ruby::Box +
BUNDLER_SETUPcan evaluate gemspecs before main-box RubyGems initialization - Ruby - Ruby Issue Tracking System - Bump ERB to 6.0.7 by k0kubun · Pull Request #18282
- Bug #22237: GC.auto_compact corrupts a String or segfaults from String#tr with dup or gsub - Ruby - Ruby Issue Tracking System
- Bug #22243: Change fork behavior when Process._fork raises an exception during fork with a block argument - Ruby - Ruby Issue Tracking System
- Bug #22223: Socket.tcp with connect_timeout returns a phantom "connected" socket for a refused connection on macOS 27 (kernel answers EISCONN on connect retry; SO_ERROR never consulted) - Ruby - Ruby Issue Tracking System
- Bug #22220: Performance regression when requiring
aws-sdk-ec2in Ruby 4.0.6 - Ruby - Ruby Issue Tracking System - Bug #22218: Line TracePoint misses executed loop condition after a guard - Ruby - Ruby Issue Tracking System
- Bug #22198: win32: heap overflow in Kernel#system - Ruby - Ruby Issue Tracking System
- Bug #22196: Heap-use-after-free in
fiber_switchwith transfer-terminated async tasks on 3.4.10 - Ruby - Ruby Issue Tracking System - Bug #22190: Class#subclasses does not include clones of classes that include modules - Ruby - Ruby Issue Tracking System
- Bug #11438: native_thread_init_stack() get machine.stack_start unequal to thread's stack start address, x86 win32 - Ruby - Ruby Issue Tracking System
- Bug #22257: Prepending a module to an already-included module leaves stale super caches - Ruby - Ruby Issue Tracking System
- Bug #22242: SEGV in method dispatch (
vm_call_iseq_setup_kwparm_nokwarg/def_iseq_ptr) on Ruby 4.0.6 — Rails CI - Ruby - Ruby Issue Tracking System - Bug #22269:
Coverage.line_stubclobbers already-collected coverage data - Ruby - Ruby Issue Tracking System - Bug #22290: Adding instance variables to anonymous object may bloat all future classes - Ruby - Ruby Issue Tracking System
- Bug #22292: YJIT/ZJIT: Struct accessor crashes after an instance variable is set on a Struct that exactly fills the largest GC slot - Ruby - Ruby Issue Tracking System
- Bug #20958: fix ENV.keys encoding on windows - Ruby - Ruby Issue Tracking System
- Bug #22259: Arrays sharding a buffer segfault when concatenating with each other - Ruby - Ruby Issue Tracking System
- Bug #22264: Warning missing from parse.y hash literals - Ruby - Ruby Issue Tracking System
- Bug #22303: EncodingError from interpolating symbol crashes whole process - Ruby - Ruby Issue Tracking System
- Bug #22224: YJIT: rb_yjit_invalidate_ep_is_bp takes the VM lock stopping Ractors on every Proc materialization; multi-Ractor throughput collapses (up to ~150x) - 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.12
What's Changed
This release includes the following security fixes.
This release updates the default gem erb to 4.0.3.1 and the bundled gem net-imap to 0.4.25. The net-imap update fixes CVE-2026-42245, CVE-2026-42246, CVE-2026-42256, CVE-2026-42257, CVE-2026-42258, CVE-2026-47240, CVE-2026-47241 and CVE-2026-47242. Please see the release notes of net-imap v0.4.24 and net-imap v0.4.25 for the details of these fixes.
Full Changelog
4.0.6
What's Changed
- Bug #22070:
Thread.each_caller_location(1, 1)segfaults when called from a cfunc - Ruby - Ruby Issue Tracking System - Bug #22075: heap-use-after-free in
rb_vm_ci_lookupunder parallel Ractors - Ruby - Ruby Issue Tracking System - Bug #22076: defined? returns nil for protected methods defined in a module even when callable - Ruby - Ruby Issue Tracking System
- Bug #22072: [BUG] should have cvar cache entry - Ruby - Ruby Issue Tracking System
- Bug #22074: YJIT misaligns locals when there are > 256 local variables - Ruby - Ruby Issue Tracking System
- Bug #22064: GC compaction breaks compare-by-identity sets - Ruby - Ruby Issue Tracking System
- Bug #22084: invokesuper from define_method in Ractor can call wrong super method or crash - Ruby - Ruby Issue Tracking System
- Bug #22092:
Array#sumtakes slow path, does not perform compensated summation of Float elements when init argument is a Float - Ruby - Ruby Issue Tracking System - Bug #14635: Float#round(n) returns a wrong result when n is big - Ruby - Ruby Issue Tracking System
- Bug #22079: Float#ceil gives incorrect result - Ruby - Ruby Issue Tracking System
- Bug #22096: Freeing a mutex locked by a fiber inside fiber scheduler can crash - Ruby - Ruby Issue Tracking System
- Bug #21996: Crash when modifying instance variables during inspect or Marshal dump - Ruby - Ruby Issue Tracking System
- Bug #22101: ASAN heap-use-after-free in rb_data_free after TypedData dfree frees dynamic rb_data_type_t - Ruby - Ruby Issue Tracking System
- Bug #22103: Constant-folded /o regexp crashes with dupstring of a Regexp - Ruby - Ruby Issue Tracking System
- Bug #21991:
$!stays as the first exception in Ruby Box - Ruby - Ruby Issue Tracking System - Feature #21881: Split the root box into the (newer) root box and the master of copied user boxes - Ruby - Ruby Issue Tracking System
- Bug #22120: Segfault caused by ar_find_entry_hint() not checking for conversion to st_table - Ruby - Ruby Issue Tracking System
- Bug #22129: error_highlight raises NotImplementedError for ArgumentErrors that get wrapped - Ruby - Ruby Issue Tracking System
- Bug #21864: Inconsistencies in type coercion error messages for integers - Ruby - Ruby Issue Tracking System
- Bug #21882: IO::Buffer#locked leaves the buffer locked when the block raises - Ruby - Ruby Issue Tracking System
- Bug #22127: parse.y regexp crash on invalid encoding - Ruby - Ruby Issue Tracking System
- Bug #22126: Stack underflow for partial DCE and loops - Ruby - Ruby Issue Tracking System
- Bug #22124: void value missed in parse.y - Ruby - Ruby Issue Tracking System
- Bug #22104: Segfault in PRISM while Bootsnap compiles aws-sdk client_api.rb - Ruby - Ruby Issue Tracking System
- Bug #21685: Unnecessary context-switching, especially bad on multi-core machines. - Ruby - Ruby Issue Tracking System
- Bug #22099: Keyword-only method silently accepts a positional argument - Ruby - Ruby Issue Tracking System
- Bug #22183: parse.y interpolation inside lambda literal - Ruby - Ruby Issue Tracking System
- Bug #22181: SEGV in branch peephole optimization due to label/insn struct aliasing - Ruby - Ruby Issue Tracking System
- Bug #22133: Ruby's default SIGINT handling ignores
Thread.handle_interruptmasking. - Ruby - Ruby Issue Tracking System - Bug #22189:
Enumerator::Lazy#to_enumdoes not accept method names as strings - Ruby - Ruby Issue Tracking System - Bug #22191:
Signal.trap(:EXIT)exception only shown ifat_exitalso raises - 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.10
What's Changed
- Bug #21992: Defining BasicObject#initialize causes segmentation fault - Ruby - Ruby Issue Tracking System
- Bug #22004: parse.y doesn't executes loop body with
while true || truecondition - Ruby - Ruby Issue Tracking System - Bug #22018: ISeq created via
RubyVM::InstructionSequence.compiledon't support coverage - Ruby - Ruby Issue Tracking System - Bug #21941: Local variable becomes nil when YJIT enabled mid-method with fork/signal/ensure - Ruby - Ruby Issue Tracking System
- Bug #21947:
Timeout.timeoutdoesn't useTimeout::ExitExceptionwhen Fiber scheduler is in use. - Ruby - Ruby Issue Tracking System - Bug #21847: Backport
syntax_suggest2.0.3 to supported branches - Ruby - Ruby Issue Tracking System - Bug #21880: The ultra_safe mode of pstore bundled with Ruby 4.0 is broken. - Ruby - Ruby Issue Tracking System
- Bug #22070:
Thread.each_caller_location(1, 1)segfaults when called from a cfunc - Ruby - Ruby Issue Tracking System - Bug #21955:
Fiber#transfer: machine stack not released when fiber terminates, causingFiberError: can't set a guard page- Ruby - Ruby Issue Tracking System - Bug #21961: Marshal.load freeze option fail to freeze linked strings - Ruby - Ruby Issue Tracking System
- Bug #21959: rb_internal_thread_event_hooks_rw_lock is not reinitialized after fork causing deadlocks - Ruby - Ruby Issue Tracking System
- Bug #21985: RubyVM::AST negative numbers do not include - in location - Ruby - Ruby Issue Tracking System
- Bug #22017: Backport win32-resolv - Ruby - Ruby Issue Tracking System
- Bug #21927: Prism: misleading error message for forwarding in lambda argument - Ruby - Ruby Issue Tracking System
- Bug #21925: Prism misparses standalone "in" pattern matching in "case/in" - Ruby - Ruby Issue Tracking System
- Bug #21831: Prism doesn't count underscores in the fraction part of rational float - Ruby - Ruby Issue Tracking System
- Bug #21986: RubyVM::AST incorrect location for literals followed by modifier
if- Ruby - Ruby Issue Tracking System - Bug #22003: .bundle extensions not built when doing out-of-source build - Ruby - Ruby Issue Tracking System
- Bug #22002: argument stack underflow (-1) - Ruby - Ruby Issue Tracking System
- Bug #22076: defined? returns nil for protected methods defined in a module even when callable - Ruby - Ruby Issue Tracking System
- Bug #22074: YJIT misaligns locals when there are > 256 local variables - Ruby - Ruby Issue Tracking System
- Bug #22079: Float#ceil gives incorrect result - Ruby - Ruby Issue Tracking System
- Bug #21882: IO::Buffer#locked leaves the buffer locked when the block raises - Ruby - Ruby Issue Tracking System
- Bug #22112: Backport for IO::Buffer USF issues - Ruby - Ruby Issue Tracking System
- Bug #22092:
Array#sumtakes slow path, does not perform compensated summation of Float elements when init argument is a Float - Ruby - Ruby Issue Tracking System - Bug #22101: ASAN heap-use-after-free in rb_data_free after TypedData dfree frees dynamic rb_data_type_t - Ruby - Ruby Issue Tracking System
- Bug #22120: Segfault caused by ar_find_entry_hint() not checking for conversion to st_table - 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
4.0.5
What's Changed
- CVE-2026-46727: Use-after-free in pthread-based getaddrinfo timeout handler
- Bug #22065:
make rdocfails withinvalid byte sequence in US-ASCIIon Ruby 4.0.4 under C locale - 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
4.0.4
What's Changed
- Bug #21955:
Fiber#transfer: machine stack not released when fiber terminates, causingFiberError: can't set a guard page- Ruby - Ruby Issue Tracking System - Bug #21964: Fiber stack acquire can expand unnecessarily - Ruby - Ruby Issue Tracking System
- Bug #21971: Fix regexp performance regression for patterns starting with s/k - Ruby - Ruby Issue Tracking System
- Bug #21961: Marshal.load freeze option fail to freeze linked strings - Ruby - Ruby Issue Tracking System
- Bug #21959: rb_internal_thread_event_hooks_rw_lock is not reinitialized after fork causing deadlocks - Ruby - Ruby Issue Tracking System
- Bug #21954: NoMethodError instead of Gem::LoadError on gem activation problem in Ruby 4.0.2 - Ruby - Ruby Issue Tracking System
- Bug #21844: Inconsistent ArgumentError message for Data::define.new - Ruby - Ruby Issue Tracking System
- Bug #21992: Defining BasicObject#initialize causes segmentation fault - Ruby - Ruby Issue Tracking System
- Bug #22018: ISeq created via
RubyVM::InstructionSequence.compiledon't support coverage - Ruby - Ruby Issue Tracking System - Bug #21985: RubyVM::AST negative numbers do not include - in location - Ruby - Ruby Issue Tracking System
- Bug #21986: RubyVM::AST incorrect location for literals followed by modifier
if- Ruby - Ruby Issue Tracking System - Bug #21933: Ruby::Box: named capture local variable can become nil after non-matching lines - Ruby - Ruby Issue Tracking System
- Bug #21940: Ruby::Box:
$_returns stale value due to gvar_tbl caching - Ruby - Ruby Issue Tracking System - Bug #22004: parse.y doesn't executes loop body with
while true || truecondition - Ruby - Ruby Issue Tracking System - Bug #21952: Ruby::Box double free at process exit when
fiddle/importis required in multiple boxes - Ruby - Ruby Issue Tracking System - Bug #22003: .bundle extensions not built when doing out-of-source build - Ruby - Ruby Issue Tracking System
- Bug #22002: argument stack underflow (-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
4.0.3
What's Changed
Full Changelog
3.3.11
What's Changed
- Bug #21625: Allow IO#wait_readable together with IO#ungetc even in text mode - Ruby - Ruby Issue Tracking System
- Fix indents in Onigmo files to use spaces instead of tabs by makenowjust · Pull Request #14047
- Bug #13671: Regexp with lookbehind and case-insensitivity raises RegexpError only on strings with certain characters - Ruby - Ruby Issue Tracking System
- Bug #21560: RUBY_MN_THREADS=1 causes large performance regression in Puma 7 - Ruby - Ruby Issue Tracking System
- Bug #21668: Backport 6cc66469a007d2fb272397e5e27c20b4ce628f5e - Ruby - Ruby Issue Tracking System
- Bug #21652: Marshal#dump documentation out-of-date/unclear regarding Data class - Ruby - Ruby Issue Tracking System
- Bug #21673: Segmentation Fault in IRB when refining
Kernel#putsusingModule#refine(Regression since Ruby 3.4) - Ruby - Ruby Issue Tracking System - Bug #21655: segfault when building 3.3.10 with GCC 15.2.1, regression from 3.3.9 - Ruby - Ruby Issue Tracking System
- Bug #21666: Math.lgamma(-1).should == [infinity_value, 1] fails with Fedora glibc-2.42.9000-8.fc44 - Ruby - Ruby Issue Tracking System
- Bug #21680: Integer#digits bug starting from Ruby 3.1 - Ruby - Ruby Issue Tracking System
- Bug #21705:
UNIXServer.open(nil)segfaults on Windows - Ruby - Ruby Issue Tracking System - Bug #21715: Miscompilation on x86-64-v2 due to undefined behavior in search_nonascii in string.c - Ruby - Ruby Issue Tracking System
- Bug #21860: Process.fork: the child may deadlock on
th->interrupt_lockinthreadptr_interrupt_exec_cleanup- Ruby - Ruby Issue Tracking System - Bug #21873:
UnboundMethod#==returns false for methods from included/extended modules - Ruby - Ruby Issue Tracking System - Bug #21931: GC Crash in
String#%(backport 726205b354d1068147719fb42e1de743f1838ef1) - Ruby - Ruby Issue Tracking System - Bug #21266: YJIT GC safety crash with proc objects as block argument - Ruby - Ruby Issue Tracking System
- Bug #21847: Backport
syntax_suggest2.0.3 to supported branches - Ruby - Ruby Issue Tracking System - Bug #21959: rb_internal_thread_event_hooks_rw_lock is not reinitialized after fork causing deadlocks - Ruby - Ruby Issue Tracking System
- Bug #21703: RUBY_CRASH_REPORT does not work when shelling out in some cases - Ruby - Ruby Issue Tracking System
- Bug #21446: StackOverflow when changing visibility in reopened refinement - Ruby - Ruby Issue Tracking System
- Bug #21779: Do not export functions from statically linked extensions - Ruby - Ruby Issue Tracking System
- Bug #21811: Fix underflow in Array#pack - Ruby - Ruby Issue Tracking System
- Bug #21814: 0.pow(2,-9999999999999999990) should be zero - Ruby - Ruby Issue Tracking System
- Bug #21819: A Data object should be frozen even if it has no members - Ruby - Ruby Issue Tracking System
- Bug #21961: Marshal.load freeze option fail to free linked strings - Ruby - Ruby Issue Tracking System
- Feature #16495: Inconsistent quotes in error messages - Ruby - Ruby Issue Tracking System
- Bug #21880: The ultra_safe mode of pstore bundled with Ruby 4.0 is broken. - 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.