Releases: ruby/ruby
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...
3.3.0.preview1
What's Changed
- Rewrite Kernel#loop in Ruby by k0kubun · Pull Request #6983
- Bug #19263: MJIT fails to compile multiple values in a single case in Ruby 3.2.0
- Fix round_half_even by mrkn · Pull Request #7023
- Fix [Bug 19273], set correct value to
outer_repeat
onOP_REPEAT
by makenowjust · Pull Request #7035 - Coverage.supported? recognizes oneshot_lines mode by kevin-j-m · Pull Request #7040
- Bug #19284: Integer overflow when using RUBY_GC_HEAP_INIT_SLOTS environment variable
- Bug #19290: Documentation: "produces:" (introducing terminal output) is wrongly formatted in few places
- Bug #19292: Time object's wday, yday, and isdst returns broken value (and so does to_a) when kwarg in: 'UTC' was given
- Bug #18899: Inconsistent argument handling in IO#set_encoding
- Bug #19291: Ripper's on_parse_error token has wrong content
- Bug #19296: Time.new's argument check is incomplete
- Bug #19298:
lib/mjit/instruction.rb
was reintroduced by merge mistake - Bug #19299: YJIT panicked while holding VM lock acquired at ./yjit/src/core.rs:1693. Aborting...
- Bug #19305: TracePoint#parameters segfaults when certain method creation pattern is used
- Bug #19271: irb ignores rbs and debug
- Bug #19150: pack/unpack silently ignores unknown directives
- Bug #19248: TestGCCompact#test_moving_objects_between_size_pools test failure
- Skip reviews for cruby_bindings-only PRs [ci skip] by k0kubun · Pull Request #7004
- Bug #19262: Segmentation fault on RubyVM::AbstractSyntaxTree.node_id_for_backtrace_location
- Bug #19312: SEGV during test_ast.rb: <internal:ast>:76: [BUG] parser_token2id: unknown token -1
- Bug #19319: Crash in rb_str_casemap
- YJIT: Colorize outlined code differently on --yjit-dump-disasm by k0kubun · Pull Request #7073
- YJIT: Make iseq_get_location consistent with iseq.c by k0kubun · Pull Request #7074
- Bug #19323: Integer overflow in
Integer#<<
- YJIT: Remove old comments for regenerated branches by k0kubun · Pull Request #7083
- Bug #19320: Crash during compaction while traversing the stack
- YJIT: Fix a compilation warning with release build by k0kubun · Pull Request #7092
- Bug #19316: YJIT crash in 3.2.0
- Differentiate T_ARRAY and array subclasses by tenderlove · Pull Request #7091
- YJIT: Add a few asm comments by k0kubun · Pull Request #7105
- Assert possible hash functions in RHASH_ST_TABLE by k0kubun · Pull Request #7107
- Enable
clippy
checks for yjit in CI by ianks · Pull Request #7093 - YJIT: Do not refer to an undefined constant by k0kubun · Pull Request #7112
- Bug #4040: SystemStackError with Hash[*a] for Large a
- Bug #19335: Integer#remainder and Numeric#remainder should respect #coerce
- [DOC] Correction to RDoc for Regexp.new by BurdetteLamar · Pull Request #7130
- Bug #19339: Defining ivar on special constants with @ syntax causes segv
- Bug #19348: GVL being released earlier than expected when loading iseqs
- Update RBS commit hash by soutaro · Pull Request #7143
- Add stats so we can keep track of x86 rel32 vs register calls by maximecb · Pull Request #7142
- YJIT: implement codegen for
String#empty?
by maximecb · Pull Request #7148 - Test some missing coverage too. by ioquatix · Pull Request #7041
- YJIT: Set RUST_BACKTRACE=1 on YJIT GitHub Actions by k0kubun · Pull Request #7152
- Bug #19289: RbConfig::CONFIG["STRIP"] should keep
ruby_abi_version
andruby_abi_version
should always be part of Ruby - Implement splat for cfuncs. Split exit exit cases to better capture where we are exiting by jimmyhmiller · Pull Request #6929
- YJIT: Remove duplicated information in BranchTarget by k0kubun · Pull Request #7151
- Bug #19341: Write cache issue with class variables
- Bundle RBS 2.8.4 by soutaro · Pull Request #7159
- Feature #19314: String#bytesplice should support partial copy
- Bug #19237: Hash default_proc is not thread-safe to lazy-initialize value for a given key
- YJIT: Avoid BorrowError on GC.compact by k0kubun · Pull Request #7164
- Add
doc/distribution.md
to help reduce some of the confusion. by ioquatix · Pull Request #6856 - Windows build instructions documentation. by ioquatix · Pull Request #6956
- Ensure main file has default coverage if required. by ioquatix · Pull Request #7169
- More coverage tests & specs. by ioquatix · Pull Request #7171
- Bug #19343: Integer#ceildiv should respect #coerce
- Bug #19340: Ruby master 'make install' not installing rbs gem
- Pass through
line_offset
argument correctly (but it was always 0). by ioquatix · Pull Request #7177 - Bug #19255: YJIT: global symbol leakage
- Bug #19389: StringIO gets(..., chomp: true) behaves differently to File/IO.
- [DOC] Make changes to docs in ractor.rb by luke-gru · Pull Request #7180
- Bug #19390: Time.new: Assertion Failed: bignum.c:4187:rb_int_parse_cstr:len != 0
- Bug #19379: Regex: "end pattern with unmatched parenthesis" with Ruby 3.2 and interpolation
- YJIT: Inline return address callback by XrXr · Pull Request #7198
- YJIT: Skip defer_compilation for fixnums if possible by k0kubun · Pull Request #7168
- YJIT: Fix BorrowMutError on GC.compact by k0kubun · Pull Request #7176
- YJIT: Initial implementation of splat with optional params by jimmyhmiller · Pull Request #7166
- YJIT: Add splat optimized_send by jimmyhmiller · Pull Request #7167
- Use matrix.entry for the Ubuntu workflow by k0kubun · Pull Request #7205
- Fix a broken matrix by k0kubun · Pull Request #7207
- Test VM_CHECK_MODE on GitHub Actions by k0kubun · Pull Request #7204
- YJIT: Implement codegen for Kernel#block_given? by k0kubun · Pull Request #7202
- Make sure RUBY_YJIT_ENABLE only enables YJIT for truthy values by maximecb · Pull Request #7208
- YJIT: Fix BorrowMutError on BOP invalidation by k0kubun · Pull Request #7212
- YJIT: Handle splat with opt more fully by jimmyhmiller · Pull Request #7209
- Bug #19398: Memory leak in WeakMap
- use correct svar by ko1 · Pull Request #7225
- Bug #19399: Ripper::Lexer.parse throws NoMethodError error for some input
- Add a test for svar #7225 by k0kubun · Pull Request #7228
- Bug #19385: YJIT panicked while holding VM lock acquired at ./yjit/src/core.rs:1693. Aborting.
- YJIT: log the names of methods we call to in disasm by maximecb · Pull Request #7231
- YJIT: Support ifunc on invokeblock by k0kubun · Pull Request #7233
- [DOC] Fix call-seq of Struct.new by kyanagi · Pull Request #7246
- [YJIT: Check interrupts on frame pop by k...
3.2.2
Security Fixes
What's Changed
- Backport [Bug #19158] for Ruby 3.2 by hsbt · Pull Request #7356
- Bug #19415: Incorrect circularity warning for concurrent requires
- Bug #19400: YJIT fails to boot on ARM64 systems with 64 KiB pages
- Bug #19419: [BUG] try to mark T_NONE object in
ibf_dump_mark
- Bug #19444: YJIT String#+@ miscompilations
- Bug #19445: Segmentation fault with Numeric#step
- Bug #19439: Marshal.load doesn't load Regexp instance variables
- Bug #19459: Is
length
ofIO::Buffer#read
required or optional? - Bug #19464: YJIT miscompiles
BasicObject#__send__
to alias methods ofsend
- Bug #19468: Ruby 3.2: net/http sets UTF-8 encoding for binary responses
- Bug #19469: Crash when resizing generic iv list
- Bug #19161: Cannot compile 3.0.5 or 3.1.3 on Red Hat Enterprise Linux 7
- Bug #19467: Some linear_time regexp does not match in linear time
- Bug #19476: Regexp unexpected partial match
- Bug #19536: Frozen status loss when moving objects
- Bug #19485: Unexpected behavior in squiggly heredocs
- Bug #19471: Regexp::compile does not handle :timeout argument
- Use URI-0.12.1 for Ruby 3.2 by hsbt · Pull Request #7603
- Merge RubyGems-3.4.10 and Bundler-2.4.10 by hsbt · Pull Request #7479
- Merge Time-0.2.2 by hsbt · Pull Request #7623
Note: This list is automatically generated by tool/gen-github-release.rb. Because of this, some commits may be missing.
Full Changelog
3.1.4
Security Fixes
What's Changed
- Bug #19187: Ruby 3.1.3 testsuite fails after timezone 2022g update is applied
- Bug #19153: Since 2.7.7 CGI::Cookie raises ArgumentError when cookie domains is prefixed with a dot
- Bug #18629: block args array splatting assigns to higher scope _ var
- Bug #18765: Wrong description introduced by https://github.com/ruby/ruby/pull/4938/files
- Bug #19189: Ruby 3.1.3/3.2.x can no longer find pkg-config if not present at buildtime
- Bug #19292: Time object's wday, yday, and isdst returns broken value (and so does to_a) when kwarg in: 'UTC' was given
- Bug #19305: TracePoint#parameters segfaults when certain method creation pattern is used
- Bug #19319: Crash in rb_str_casemap
- Bug #19316: YJIT crash in 3.2.0
- Bug #19284: Integer overflow when using RUBY_GC_HEAP_INIT_SLOTS environment variable
- Bug #19320: Crash during compaction while traversing the stack
- Bug #19389: StringIO gets(..., chomp: true) behaves differently to File/IO.
- Bug #19284: Integer overflow when using RUBY_GC_HEAP_INIT_SLOTS environment variable
- Bug #19398: Memory leak in WeakMap
- Bug #19403: Unable to Build Native Gems on Mac with Ruby 3.1.0+
- Bug #19415: Incorrect circularity warning for concurrent requires
- Bug #19419: [BUG] try to mark T_NONE object in
ibf_dump_mark
- Bug #19445: Segmentation fault with Numeric#step
- Bug #19161: Cannot compile 3.0.5 or 3.1.3 on Red Hat Enterprise Linux 7
- Bug #18989: Backport f229b36087f1b387d77af8f3fa50f9bffd2fd44e to ruby_3_1
- Bug #18748: Range#cover? returns true for beginless range of different type
- Bug #18827:
__ENCODING__
is not set to the source encoding when saving script lines - Bug #19242: Circular cause by Marshal
- Bug #19243: Windows: Dir.home returns string in wrong encoding
- Bug #19115: RubyGems fails to detect OpenSSL in --with-static-linked-ext builds
- Bug #18464: RUBY_INTERNAL_EVENT_NEWOBJ tracepoint causes an interpreter crash when combined with Ractors
- Bug #19529: [BUG] ObjectSpace::WeakMap can segfault after compaction
- Bug #19485: Unexpected behavior in squiggly heredocs
Note: This list is automatically generated by tool/gen-github-release.rb. Because of this, some commits may be missing.
Full Changelog
3.0.6
Security Fixes
What's Changed
- Bug #19187: Ruby 3.1.3 testsuite fails after timezone 2022g update is applied
- Rename --jit to --mjit by k0kubun · Pull Request #5248
- Merge URI-0.10.2 for Ruby 3.0 by hsbt · Pull Request #7607
- Bug #19161: Cannot compile 3.0.5 or 3.1.3 on Red Hat Enterprise Linux 7
Note: This list is automatically generated by tool/gen-github-release.rb. Because of this, some commits may be missing.
Full Changelog
2.7.8
Security Fixes
What's Changed
Note: This list is automatically generated by tool/gen-github-release.rb. Because of this, some commits may be missing.
Full Changelog
3.2.1
What's Changed
- Bug #19263: MJIT fails to compile multiple values in a single case in Ruby 3.2.0
- Bug #19273: [Regexp] regexp does not match expected
- Bug #19284: Integer overflow when using RUBY_GC_HEAP_INIT_SLOTS environment variable
- Bug #19292: Time object's wday, yday, and isdst returns broken value (and so does to_a) when kwarg in: 'UTC' was given
- Bug #19336: Backport commit eab7f4623fbf0488e828b75843d70c8e02dc8aa5
- Bug #19296: Time.new's argument check is incomplete
- Bug #19299: YJIT panicked while holding VM lock acquired at ./yjit/src/core.rs:1693. Aborting...
- Bug #19271: irb ignores rbs and debug
- Bug #19316: YJIT crash in 3.2.0
- Bug #19298:
lib/mjit/instruction.rb
was reintroduced by merge mistake - Bug #19305: TracePoint#parameters segfaults when certain method creation pattern is used
- Bug #19248: TestGCCompact#test_moving_objects_between_size_pools test failure
- Bug #19262: Segmentation fault on RubyVM::AbstractSyntaxTree.node_id_for_backtrace_location
- Bug #19319: Crash in rb_str_casemap
- Bug #19327: Backport commits 3be2acfafd3b3c6168e2266c7c6561d143d7ae5c and 9726736006b3f74635fd8af05814fe0908e2cf84
- Bug #19356: Backport f7b72462aa27716370c6bea1f2c240983aca9a55
- Bug #19339: Defining ivar on special constants with @ syntax causes segv
- Bug #19320: Crash during compaction while traversing the stack
- Bug #19348: GVL being released earlier than expected when loading iseqs
- Bug #19289: RbConfig::CONFIG["STRIP"] should keep
ruby_abi_version
andruby_abi_version
should always be part of Ruby - Bug #19360: Enabling coverage with
-r
option isn't sufficient to intercept top level script. - Merge the latest stable versions of RubyGems and Bundler to Ruby 3.2.x by hsbt · Pull Request #7061
- Bug #19389: StringIO gets(..., chomp: true) behaves differently to File/IO.
- Bug #19390: Time.new: Assertion Failed: bignum.c:4187:rb_int_parse_cstr:len != 0
- Bug #19379: Regex: "end pattern with unmatched parenthesis" with Ruby 3.2 and interpolation
- Bug #19327: Backport commits 3be2acfafd3b3c6168e2266c7c6561d143d7ae5c and 9726736006b3f74635fd8af05814fe0908e2cf84
- Merge RubyGems 3.4.6 and Bundler 2.4.6 by hsbt · Pull Request #7214
- Bug #19385: YJIT panicked while holding VM lock acquired at ./yjit/src/core.rs:1693. Aborting.
- Bug #19404: Backport request for 3b83b265f11965582d4b9b439eff8a501792ab68
- Bug #19398: Memory leak in WeakMap
- Bug #19399: Ripper::Lexer.parse throws NoMethodError error for some input
- Bug #19403: Unable to Build Native Gems on Mac with Ruby 3.1.0+
Note: This list is automatically generated by tool/gen-github-release.rb. Because of this, some commits may be missing.
Full Changelog
3.2.0
What's Changed
- Bug #18623:
make runnable
does not work - Feature #19183: Add bin/goruby, bin/ruby, and lib/libruby.so.3.2.0 (or similar) to .gitignore
- Feature #18367: Stop the interpreter from escaping error messages
- Bug #19187: Ruby 3.1.3 testsuite fails after timezone 2022g update is applied
- Update YJIT warning, mention need to install rustc by maximecb · Pull Request #6873
- Add debug counters to RubyVM.stat by chrisseaton · Pull Request #6086
- Introduce
IO.new(..., path:)
and promoteFile#path
toIO#path
. by ioquatix · Pull Request #6867 - Bug #19169: Kernel#freeze doesn't propagate to singleton class when the singleton class has prepended modules
- YJIT: implement opt_newarray_min YARV instruction by maximecb · Pull Request #6888
- YJIT: Drop Copy trait from Context by k0kubun · Pull Request #6889
- Bug #19167: Object#inspect does not correctly show NilClass TrueClass and FalseClass stored in instance variables
- YJIT: Filter out 0-exit ops from Top-20 exit ops by k0kubun · Pull Request #6892
- YJIT: implement
getconstant
YARV instruction by maximecb · Pull Request #6884 - YJIT: Split send_iseq_complex_callee exit reasons by k0kubun · Pull Request #6895
- Add spec for fiber storage. by ioquatix · Pull Request #6896
- Bug #19181: lib/unicode-normalize/tables.rb does not get updated even if ALWAYS_UPDATE_UNICODE is set to yes
- Bug #19087: String#to_c supports multiple "_"
- Expose need_major_gc via GC.latest_gc_info by mirek26 · Pull Request #6791
- Bug #19182: ALWAYS_UPDATE_UNICODE=yes downloads all the Unicode files twice when executing make
- MJIT: Compile methods in batches by k0kubun · Pull Request #6900
- Feature #18273: Class#subclasses
- Feature #19104: Introduce the cache-based optimization for Regexp matching
- YJIT: Implement opt_newarray_max instruction by k0kubun · Pull Request #6893
- Make it so YJIT is no longer marked as experimental by maximecb · Pull Request #6909
- YJIT: Generate debug info in release builds by XrXr · Pull Request #6910
- Avoid overwriting revision.h when .git doesn't exist by k0kubun · Pull Request #6915
- Bug #19195: Pattern match pin becomes syntax error if there is newline before closing paren
- YJIT: Change the default mem size to 64MiB by k0kubun · Pull Request #6912
- socket.rb - don't load io/wait by MSP-Greg · Pull Request #6922
- Add
Regexp.linear_time?
by makenowjust · Pull Request #6901 - Fix build when enable_shared is on by jimmyhmiller · Pull Request #6924
- Remove
require 'io/wait'
as it's no longer necessary. by ioquatix · Pull Request #6932 - Bug #19189: Ruby 3.1.3/3.2.x can no longer find pkg-config if not present at buildtime
- Feature #19134: ** is not allowed in def foo(...)
- Bug #19234: [3.2.0dev] YJIT code GC can lead to crashes
- Bug #19150: pack/unpack silently ignores unknown directives
- Feature #18033: Time.new to parse a string
- Add tests for
Queue#pop
with fiber scheduler. by ioquatix · Pull Request #6953 - MJIT: Refactor BitField dereference byte and bitmask by Maumagnaguagno · Pull Request #6955
- Is this code ever used? by ioquatix · Pull Request #6957
- YJIT: Make --yjit-stats always visible on --help by k0kubun · Pull Request #6946
- YJIT: Improve the description about --enable-yjit by k0kubun · Pull Request #6947
- YJIT: skip map in print_sorted_exit_counts by Maumagnaguagno · Pull Request #6954
- Bug #19242: Circular cause by Marshal
- Feature #19245: Strict mode for Array#pack that doesn't silently truncate numbers that are too large for the given directive
- MJIT: Refactor Compiler#cast_offset by Maumagnaguagno · Pull Request #6967
- Set up RBS_SKIP_TESTS by soutaro · Pull Request #6862
- Feature #19000: Data: Add "Copy with changes method" [Follow-on to #16122 Data: simple immutable value object]
- Put RubyVM::MJIT::Compiler under ruby_vm directory by k0kubun · Pull Request #6989
- Clean intermediate source file in
TestMJIT#test_jit_failure
by nobu · Pull Request #6994 - Bump necojackarc/auto-request-review from 0.8.0 to 0.10.0 by dependabot[bot] · Pull Request #7002
- Fix backtrace beyond _singtramp on macOS arm64 by nurse · Pull Request #7015
- MJIT: Export fewer shape functions by k0kubun · Pull Request #7007
- Fix missing handling of offset argument. by ioquatix · Pull Request #7012
- [DOC] Document new methods of IO::Buffer and Fiber::Scheduler by zverok · Pull Request #7016
- MJIT: Cancel all on disastrous situations by k0kubun · Pull Request #7019
Note: This list is automatically generated by tool/gen-github-release.rb. Because of this, some commits may be missing.
Full Changelog
3.2.0.rc1
What's Changed
- YJIT: Remove unused src_ctx from Block by k0kubun · Pull Request #6714
- YJIT: Fix invalidation for c_call and c_return by XrXr · Pull Request #6719
- YJIT: Instrument global allocations on stats build by k0kubun · Pull Request #6712
- Reduce the number of branches in jit_exec by k0kubun · Pull Request #6722
- Bug #19127: Build of 3.2.0-preview3 fails unless Ruby is already installed
- Rename --mjit-min-calls to --mjit-call-threshold by k0kubun · Pull Request #6731
- YJIT: Invalidate redefined methods only through cme by k0kubun · Pull Request #6734
- YJIT: Count getivar side exits by receiver flag changes by k0kubun · Pull Request #6735
- YJIT: Include actual memory region size in stats by k0kubun · Pull Request #6736
- YJIT: Always encode Opnd::Value in 64 bits on x86_64 for GC offsets by k0kubun · Pull Request #6733
- Rewrite Symbol#to_sym and #intern in Ruby by k0kubun · Pull Request #6683
- Let mjit-bindgen use BASERUBY and bundle/inline by k0kubun · Pull Request #6740
- YJIT: Show YJIT build option in RUBY_DESCRIPTION by k0kubun · Pull Request #6738
- YJIT: Shrink the vectors of Block after mutation by k0kubun · Pull Request #6739
- YJIT: Stop wrapping CmePtr with CmeDependency by k0kubun · Pull Request #6747
- YJIT: Add compiled_branch_count stats by k0kubun · Pull Request #6746
- YJIT: Pack BlockId and CodePtr by k0kubun · Pull Request #6748
- YJIT: Shrink version lists after mutation by k0kubun · Pull Request #6749
- Windows: Readlink improvements by larskanis · Pull Request #6745
- YJIT: Fix typo in stats references by k0kubun · Pull Request #6753
- YJIT: Add object shape count to stats by k0kubun · Pull Request #6754
- Add support for
sockaddr_un
on Windows. by ioquatix · Pull Request #6513 - Refactor RB_SPECIAL_CONST_P by k0kubun · Pull Request #6759
- Fix bug involving .send and overwritten methods. by jimmyhmiller · Pull Request #6752
- Bug #19132:
**
を引数に指定すると no anonymous keyword rest parameter になる - YJIT: Improve the failure message on enlarging a branch by k0kubun · Pull Request #6769
- Bug #19016: syntax_suggest is not working with Ruby 3.2.0-preview2
- Feature #19070: Enhance keep_tokens option for RubyVM::AbstractSyntaxTree parsing methods
- Fix typos by ydah · Pull Request #6775
- YJIT: Lower the required Rust version from 1.58.1 to 1.58.0 by k0kubun · Pull Request #6780
- Increment max_iv_count on class based on number of set_iv in initialize by jemmaissroff · Pull Request #6788
- YJIT: Skip padding jumps to side exits on Arm by k0kubun · Pull Request #6790
- Fix YJIT backend to account for unsigned int immediates by jemmaissroff · Pull Request #6789
- YJIT: Simplify code for RB_SPECIAL_CONST_P by k0kubun · Pull Request #6795
- YJIT: Use NonNull pointer for CodePtr by k0kubun · Pull Request #6792
- YJIT: Simplify Insn::CCall to obviate Target::FunPtr by k0kubun · Pull Request #6793
- YJIT: rename
InsnOpnd
=>YARVOpnd
by maximecb · Pull Request #6801 - Misc #19146: Failed to activate YJIT for 3.2.0-dev on macOS Ventura (M1: Apple Silicon)
- Update YJIT section of
NEWS.md
by maximecb · Pull Request #6803 - Bug #18974: Wrong line number in the rescue iseq for the exception matching code
- Bug #18580: Range#include? inconsistency for beginless String ranges
- Feature #18925: Add
FileUtils.ln_sr
to create symbolic links relative to link location - Bug #18931: Inconsistent handling of invalid codepoints in String#lstrip and String#rstrip
- Bug #19145: TestException#test_exception_in_message timeouts
- Bug #18971: Enumerator::Lazy.take(0) leaks first element into next operation
- Bug #19115: RubyGems fails to detect OpenSSL in --with-static-linked-ext builds
- Update bundled_gems by soutaro · Pull Request #6813
- Bundle RBS 2.8.1 by soutaro · Pull Request #6819
- Feature #19134: ** is not allowed in def foo(...)
- MJIT: Make it parsable by Solargraph by k0kubun · Pull Request #6827
- YJIT: Skip checking interrupt_mask by k0kubun · Pull Request #6825
- Feature #17134: Add resolv_timeout to TCPSocket
- Bug #19159: ObjectSpace segfaults
- YJIT: add new counters for deferred compilation and queued blocks by maximecb · Pull Request #6837
- YJIT: Optimize rb_int_equal by k0kubun · Pull Request #6838
- Feature #19138:
SyntaxError#path
for syntax_suggest - Bug #19108: Format routines like pack blindly treat a string as ASCII-encoded
- Introduce
Fiber#storage
for inheritable fiber-scoped variables. by ioquatix · Pull Request #6612 - YJIT: fix 32 and 16 bit register store by jemmaissroff · Pull Request #6840
- Feature #19163: Data object should be frozen
- YJIT: Reorder branches for Fixnum opt_case_dispatch by k0kubun · Pull Request #6841
- Bug #19087: String#to_c supports multiple "_"
- Bug #19164: [3.2.0dev] Freezing an object can prevent removing methods on its class
- YJIT: Respect destination num_bits on STUR by k0kubun · Pull Request #6848
- Clarify the storage argument. by ioquatix · Pull Request #6849
- Feature #6047: read_all: Grow buffer exponentially in generic case
- YJIT: Change the default --yjit-call-threshold to 30 by k0kubun · Pull Request #6850
- YJIT: Make case-when optimization respect === redefinition by XrXr · Pull Request #6846
- Bug #19174: YJIT configure "checking whether rustc works for YJIT... no" in rustc 1.65.0 on x86_64
- YJIT: check that we correctly auto-enable YJIT on Linux by maximecb · Pull Request #6854
- Bug #19173: syntax_suggest segfaults on syntax error when refinement activated
- YJIT: Extract SHAPE_ID_NUM_BITS into a constant by jemmaissroff · Pull Request #6863
- YJIT: Remove --yjit-code-page-size by XrXr · Pull Request #6865
- Bug #19180: rbconfig.rb does not get updated when common.mk is changed
Note: This list is automatically generated by tool/gen-github-release.rb. Because of this, some commits may be missing.