v3_4_0_preview1
版本发布时间: 2024-05-28 16:13:52
ruby/ruby最新发布版本:v3_3_5(2024-09-03 14:38:19)
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 c84237f9531aed3b204d3fdacc2dd9d2bd4c7d81
- 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 Request #9769
- YJIT: Add jit_prepare_call_with_gc function by k0kubun · Pull Request #9775
- YJIT: Add codegen for Float arithmetics by k0kubun · Pull Request #9774
-
Don't wait in
io_binwrite_string
if not necessary. by ioquatix · Pull Request #9792 - [DOC] Pretty tables for Kernel#test doc by BurdetteLamar · Pull Request #9751
- Bug #20228: Memory leak in Regexp timeout
- YJIT: add missing jge comparison instruction by maximecb · Pull Request #9819
-
Bug #20169:
GC.compact
can raisesEFAULT
on IO - Bug #20220: M:N threading needs to tell ASAN about stack switches
- Fix test session reuse but expire by nurse · Pull Request #9824
- Bug #20239: Segmentation fault when using Regex on a large String
- Bug #20221: ASAN: make test-basic: un-prefixed symbol leakage
- Bundle rbs-3.4.4 by soutaro · Pull Request #9883
- Bug #20245: Crash when checking symbol encoding
- YJIT: Skip pushing a frame for Hash#empty? by k0kubun · Pull Request #9875
- YJIT: Use jit_prepare_call_with_gc as much as possible by k0kubun · Pull Request #9874
- YJIT: Report invalidation counts in non-stats mode by jhawthorn · Pull Request #9878
- YJIT: Maintain MapToLocal that is just upgraded by k0kubun · Pull Request #9876
- YJIT: Allow tracing a counted exit by k0kubun · Pull Request #9890
- YJIT: Remove unnecessary casts for chain_depth by k0kubun · Pull Request #9893
- YJIT: Refactor recv_known_class to Option by k0kubun · Pull Request #9895
- Bug #20250: Crash with "Object ID seen, but not in mapping table: proc" error
- More on IO doc by BurdetteLamar · Pull Request #9842
- YJIT: Fallback megamorphic opt_case_dispatch by k0kubun · Pull Request #9894
- YJIT: Add top ISEQ call counts to --yjit-stats by k0kubun · Pull Request #9906
- Bug #20256: Make required ASAN settings "built in" without the need for ASAN_OPTIONS env var
- Bug #20248: Ruby does not build with ASAN support with clang
-
[DOC]
:stopdoc:
directive must be on its own line by nobu · Pull Request #9916 - YJIT: Fix insufficient type guards by k0kubun · Pull Request #9911
- YJIT: Adjust the padding size of counts automatically by k0kubun · Pull Request #9912
-
Bug #20253:
Proc.dup
andProc#clone
don't preserve finalizers - YJIT: Prefer an overloaded cme if available by k0kubun · Pull Request #9913
- More on auto-link by BurdetteLamar · Pull Request #9907
- Bug #20246: Unexpected behavior for Regexp in Subexpression Calls on Ruby 3.3.0
- Specialize String#byteslice(a, b) by tenderlove · Pull Request #9939
- [DOC] Doc compliance by BurdetteLamar · Pull Request #9944
- [DOC] Doc compliance by BurdetteLamar · Pull Request #9955
- YJIT: Simplify Kernel#send guards and admit more cases by XrXr · Pull Request #9956
- YJIT: Add --yjit-perf=codegen option by k0kubun · Pull Request #9957
- YJIT: Use i32 over isize for ctx.sp_opnd() by XrXr · Pull Request #9968
- YJIT: Replace perf_fn! with a simpler macro by k0kubun · Pull Request #9971
- Feature #16495: Inconsistent quotes in error messages
- Feature #19117: Include the method owner in backtraces, not just the method name
- YJIT: Pass nil to anonymous kwrest when empty by XrXr · Pull Request #9972
- Let annocheck workflow run only test-annocheck by k0kubun · Pull Request #9990
- Bump the required BASERUBY version to 3.0 by k0kubun · Pull Request #9976
- Bug #20280: Error at invalid encoding symbols
- Feature #20257: Rearchitect Ripper
- [DOC] Fix links in doc by BurdetteLamar · Pull Request #9970
- YJIT: Verify the assumption of leaf C calls by k0kubun · Pull Request #10002
- YJIT: rb_str_concat_literals is not leaf by k0kubun · Pull Request #10035
- Ensure that exiting thread invokes end-of-life behaviour. by ioquatix · Pull Request #10039
-
Fix exception handling in
rb_fiber_scheduler_set
. by ioquatix · Pull Request #10042 - YJIT: Allow non-leaf calls on opt_* insns by k0kubun · Pull Request #10033
- [DOC] Doc for field processing by BurdetteLamar · Pull Request #10008
- YJIT: Grab stack operands after SP change in String#byteslice by XrXr · Pull Request #10060
- Fix the insn position shown by rb_vm_check_canary by k0kubun · Pull Request #10062
- YJIT: Assert Opnd::Stack's SP expectation by k0kubun · Pull Request #10061
-
Remove
SAVE_ROOT_JMPBUF
as it no longer has any effect. by ioquatix · Pull Request #10066 -
Bug #20292: Abort ruby by
String#initialize
- YJIT: Optimize attr_writer by k0kubun · Pull Request #9986
- Skip under_gc_compact_stress on s390x by k0kubun · Pull Request #10073
- Fallback every macos-arm-oss usage to macos-14 by k0kubun · Pull Request #10074
- Fix -Wmaybe-uninitialized on Complex#** by k0kubun · Pull Request #10075
-
Bug #20295: Segmentation fault when parsing
/invalid_regexp/ =~ s
- Bug #20258: Socket::IPV6_RECVERR for IPv6
- Bug #20234: Segfault parsing begin statement inside method definition receiver
- YJIT: Lazily push a frame for specialized C funcs by k0kubun · Pull Request #10080
- [DOC] Doc for command line options by BurdetteLamar · Pull Request #10059
- Bug #20296: Complex(:sym, exception: false) generate exception with weird timing
- Bump capstone from 0.11.0 to 0.12.0 in /yjit by dependabot[bot] · Pull Request #10094
- Introduction of Happy Eyeballs Version 2 (RFC8305) in Socket.tcp by shioimm · Pull Request #9374
- Bug #5179: Complex#rationalize and to_r with approximate zeros
- Bug #20305: commit 1d2d25dcadda0764f303183ac091d0c87b432566 breaks grapheme_clusters
- Bug #20302: Multiple refinements cannot be applied to the same module
- [DOC] Stop discouraging the use of Array#each by k0kubun · Pull Request #10119
- Feature #20274: Add RubyVM::ASAN.enabled?
- Migrate auto_request_review back to CODEOWNERS by k0kubun · Pull Request #10133
- Update bundled_gems by soutaro · Pull Request #10121
- YJIT: Support inlining putself by k0kubun · Pull Request #10137
- Bug #20311: Struct.new("A") memory leak?
- YJIT: Support opt_invokebuiltin_delegate for leaf builtin by k0kubun · Pull Request #10152
- Optimize Hash methods with Kernel#hash by k0kubun · Pull Request #10160
- Bug #20322: rb_enc_interned_str_cstr doesn't accept null pointer for encoding
- Feature #20273: Disable callcc when compiled with ASAN
-
Bug #20324:
(1..).overlap?('foo'..)
returns true -
[DOC] Fix invalid documentation for
reachable_objects_from
by iridakos · Pull Request #10172 - Bug #19975: ISeq#to_binary loses hidden local variable indices
-
Hide public implementation of
rb_io
. by ioquatix · Pull Request #9568 - [DOC] Ruby command-line options by BurdetteLamar · Pull Request #10138
- YJIT: String#getbyte codegen by maximecb · Pull Request #10188
- Bug #20327: Time.new behaves differently when passing a zone as timezone object
- Bundle unmerged rbs for testing by soutaro · Pull Request #10211
-
Pass
RUN_OPTS
in YJIT macos test by nobu · Pull Request #10214 -
Bug #20277: Remove stale
String
test conditionals - Revisions for help text by BurdetteLamar · Pull Request #10198
-
Bug #20188:
Module#const_source_location
returns wrong information when real constant was defined but autoload is still ongoing - YJIT: Fallback cfunc varg splat for ruby2_keywords by k0kubun · Pull Request #10226
- [DOC] Array doc by BurdetteLamar · Pull Request #10199
-
Bug #20307:
Hash#update
from compare_by_identity hash can have unfrozen string keys -
Feature #20293: Add
Warning.categories
method that returns the warning category names - Feature #20244: Show the conflicting another chdir block
- Feature #13557: there's no way to pass backtrace locations as a massaged backtrace
- Feature #20306: Add rb_free_at_exit_p
- Feature #20265: Deprecate and remove rb_newobj and rb_newobj_of
- YJIT: Let yjit_perf.py support perf with Python disabled by k0kubun · Pull Request #10246
-
Bug #19918: Should
a[&b]=c
be syntax valid? - Bug #20218: aset/masgn/op_asgn with keyword arguments
-
Update unmerged RBS to debug
EBADF
error by soutaro · Pull Request #10275 - YJIT: Support arity=-2 cfuncs by XrXr · Pull Request #10268
-
Feature #20205: Enable
frozen_string_literal
by default -
Misc #20279: Is the implementation of
respond_to_missing?
in BasicObject documentation correct? - [DOC] Unify Doxygen formats by k0kubun · Pull Request #10285
- YJIT: Get rid of Type::TProc by k0kubun · Pull Request #10287
- Bug #20339: Parser segfault with ractor comment
- Declare all jobs in matrix.include by k0kubun · Pull Request #10327
- Feature #20275: Avoid extra backtrace entries for rescue and ensure
- Bug #20388: super + ruby2_keywords isn't working
- Bug #20389: Issue with chilled strings and mutability after 12be40ae
- Bug #20310: ASAN fake stacks need to be marked during GC for non-current execution context
- YJIT: Propagate Array, Hash, and String classes by k0kubun · Pull Request #10323
- Bug #15784: RUBY_DEBUG=gc_stress dumps core
- Bug #20392: Delegate super calls with a block
- Don't clear pending interrupts in the parent process. by ioquatix · Pull Request #10365
- Feature #20390: Issue with StringIO and chilled strings
- Bug #20398: heap-buffer-overflow in numeric literal parsing
- YJIT: add iseq_alloc_count to stats by maximecb · Pull Request #10398
- Bug #20402: Double-free in TestIseqLoad#test_stressful_roundtrip
- Bug #20403: TestResolvDNS#test_query_ipv4_address_truncated_tcp_fallback can flake if TCP port is in use
- Feature #20331: Should parser warn hash duplication and when clause?
-
Feature #20345: Add
--target-rbconfig
option to mkmf - YJIT: A64: Use ADDS/SUBS/CMP (immediate) when possible by XrXr · Pull Request #10402
- Revert "Migrate auto_request_review back to CODEOWNERS" by k0kubun · Pull Request #10441
- YJIT: Suppress warn(static_mut_refs) by k0kubun · Pull Request #10440
- YJIT: Let sp_opnd take the number of slots by k0kubun · Pull Request #10442
- YJIT: update code optimization tips in yjit.md by maximecb · Pull Request #10445
-
Bug #20342: Top level
public
,private
andruby2_keywords
do not work in wrapped load -
Feature #20329: Clean up
--dump
sub-options - Enumerator should use a non-blocking fiber. by ioquatix · Pull Request #10478
-
Prefer to use
Fiber#transfer
in scheduler implementation. by ioquatix · Pull Request #10479 -
Enumerator should use a non-blocking fiber, change
rb_fiber_new
to be non-blocking by default. by ioquatix · Pull Request #10481 - Bug #20417: RubyVM::AbstractSyntaxTree.parse warns about block local variables
-
YJIT: x64: Remove register shuffle with
opt_and
and friends by XrXr · Pull Request #10498 - Bug #20423: Anonymous block forwarding shouldn't work with ... but it does
- Feature #15554: warn/error passing a block to a method which never use a block
- Feature #13077: [PATCH] introduce String#fstring method
-
YJIT: A64: Avoid intermediate register in
opt_and
and friends by XrXr · Pull Request #10509 - Bug #20325: Enumerator.product.size bug with zero * infinite enumerators
- YJIT: End send fallback blocks by k0kubun · Pull Request #10539
-
Bug #20418:
StringIO#read(..., buffer)
doesn't preserve buffer's encoding - Feature #20429: Emit a performance warning when specially optimized core methods are redefined
-
Feature #20335:
Thread.each_caller_location
should accept the same arguments ascaller
andcaller_locations
- Feature #20347: Separate docs task from all
-
Fiber#raise
recursively raises on nested resuming_fiber. by ioquatix · Pull Request #10482 - YJIT: Optimize local variables when EP == BP by k0kubun · Pull Request #10487
-
Feature #18576: Rename
ASCII-8BIT
encoding toBINARY
- YJIT: Fix canary crash with Array#<< by XrXr · Pull Request #10568
- chore: remove repetitive words by careworry · Pull Request #10573
- Refer autoconfigured endian macro by nobu · Pull Request #10572
- Revert "YJIT: Optimize local variables when EP == BP" by XrXr · Pull Request #10584
- YJIT: Fix shrinking block with assumption too much by XrXr · Pull Request #10585
- Sync IRB f9347b1 by st0012 · Pull Request #10611
-
YJIT: Add a specialized codegen function for
Class#superclass
. by nirvdrum · Pull Request #10613 - Bug #20450: Ruby 3.3.1 broken with bootsnap
- YJIT: Optimize local variables when EP == BP (take 2) by k0kubun · Pull Request #10607
- Bug #20453: Pointer being freed was not allocated in Regexp timeout
- YJIT: Try splitting getlocal/setlocal blocks by k0kubun · Pull Request #10648
- Fixed a value specified for OPT_THREADED_CODE by jinroq · Pull Request #10657
-
YJIT: Add specialized codegen function for
TrueClass#===
by rwstauner · Pull Request #10640 -
YJIT: Expand codegen for
TrueClass#===
toFalseClass
andNilClass
by rwstauner · Pull Request #10679 -
YJIT: Pass options to test-spec with
-T
by XrXr · Pull Request #10599 - YJIT: print msg to stderr when RubyVM::YJIT.disasm not available by maximecb · Pull Request #10688
-
YJIT: Fix
Struct
accessors not firing tracing events by XrXr · Pull Request #10690 - Bug #19974: OpenSSL::PKCS7 generates SegFault when parsing invalid data
- Bug #20168: Process won't exit when Ractor.select waiting a Ractor
- [DOC] rewrite inject doc by pragdave · Pull Request #10009
- YJIT: Fix comment and counter in rb_yjit_invalidate_ep_is_bp() by XrXr · Pull Request #10722
- Bug #20474: Heredoc common leading whitespace calculation question
-
Bug #20421: String#index and String#byteindex don't clear
$~
when offset > size (or bytesize) - Bug #7759: Marshal.load is not documented to be dangerous
- Bug #20481: Untrusted Marshal data can overwrite class/module instance variables
- Bug #20482: nil variables in a guard clause of a standalone => or in expression
Note: This list is automatically generated by tool/gen-github-release.rb. Because of this, some commits may be missing.
Full Changelog
https://github.com/ruby/ruby/compare/v3_3_0...v3_4_0_preview1