summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-11-26ZJIT: Remove dead unnecessary_transmutes allowStan Lo
``` warning: unknown lint: `unnecessary_transmutes` --> zjit/src/cruby.rs:107:9 | 107 | #[allow(unnecessary_transmutes)] // https://github.com/rust-lang/rust-bindgen/issues/2807 | ^^^^^^^^^^^^^^^^^^^^^^ | = note: `#[warn(unknown_lints)]` on by default ```
2025-11-26Set age bitmap outside of adding to freelistJohn Hawthorn
This allows us to do less work when allocating a fresh page.
2025-11-26Avoid extra set of age bit flagsJohn Hawthorn
2025-11-26[Doc] Fix duplicated entry in GC.stat documentationJean Boussier
2025-11-26[ruby/json] Don't copy JSON_Generator_State in generate_newÉtienne Barrié
Now that the state isn't mutated in generate_new, we no longer need to copy the struct, we can just use it. https://github.com/ruby/json/commit/d7964f8892
2025-11-26[ruby/json] Don't write depth to JSON_Generator_State in some casesÉtienne Barrié
For `JSON.generate` and `JSON::State#generate_new`, don't copy generate_json_data::depth to JSON_Generator_State::depth. In `JSON.generate`, the JSON_Generator_State is on the stack and discarded anyway. In `JSON::State#generate_new`, we copy the struct to avoid mutating the original one. https://github.com/ruby/json/commit/873b29ea34
2025-11-26[ruby/json] Add depth to struct generate_json_dataÉtienne Barrié
Instead of incrementing JSON_Generator_State::depth, we now increment generate_json_data::depth, and only copied at the end. https://github.com/ruby/json/commit/5abd434907
2025-11-26[ruby/json] Test to_json using State#depthÉtienne Barrié
https://github.com/ruby/json/commit/ac0a980668
2025-11-26[ruby/json] Test depthÉtienne Barrié
https://github.com/ruby/json/commit/d02e40324a
2025-11-26[ruby/json] Test that depth of unfrozen State does not changeÉtienne Barrié
https://github.com/ruby/json/commit/9d32cf4618
2025-11-26[ruby/optparse] Remove unneeded `public`Sam Westerman
Removed public visibility from the candidate method. https://github.com/ruby/optparse/commit/9a784a89a2
2025-11-26[ruby/optparse] Put `private` before method declarationsSam Westerman
https://github.com/ruby/optparse/commit/5478354d4f
2025-11-26[ruby/timeout] Revert "Suppress warnings in two tests"Nobuyoshi Nakada
This reverts commit https://github.com/ruby/timeout/commit/983cbf636a17, that is fixed by test-unit 3.7.3. https://github.com/ruby/timeout/commit/095207f270
2025-11-26Update default gems list at ecdeb90fe94af86c6d84fe343c1f95 [ci skip]git
2025-11-26[ruby/rubygems] Bump up to 4.0.0.beta2Hiroshi SHIBATA
https://github.com/ruby/rubygems/commit/b8529f48bf
2025-11-26[ruby/cgi] Fix mixed declarations and codeNobuyoshi Nakada
Use C90 syntax only, as far as supporting ruby 2.6 or earlier. https://github.com/ruby/cgi/commit/886c82982a
2025-11-26[ruby/cgi] Skip unless `CGI::EscapeExt` methods are implementedNobuyoshi Nakada
https://github.com/ruby/cgi/commit/7b5a13952b
2025-11-26[DOC] Exclude the word Box from RDoc's autolinkingNobuyoshi Nakada
2025-11-26Ignore missed commits [ci skip]Nobuyoshi Nakada
2025-11-26Revert miscommit at "Reset the cache variable before retrying"Nobuyoshi Nakada
This reverts commit 26a9e0b4e31f7b5a9cbd755e0a15823a8fa51bae partially.
2025-11-25ZJIT: CI: Run `btest` with call-threshold=2Alan Wu
2025-11-26Update bundled gems list as of 2025-11-25git
2025-11-26Reset the cache variable before retryingNobuyoshi Nakada
2025-11-26Update bundled gems list as of 2025-11-26git
2025-11-26[DOC] Use Aliki as the documentation website theme (#15319)Stan Lo
Use Aliki as the documentation website theme
2025-11-26Box: mark/move Box object referred via ENV/rb_env_tSatoshi Tagomori
2025-11-26Box: Add a test to drop the reference to a boxSatoshi Tagomori
2025-11-25Fix live object count for multi-Ractor forkingPeter Zhu
Since we do not run a Ractor barrier before forking, it's possible that another other Ractor is halfway through allocating an object during forking. This may lead to allocated_objects_count being off by one. For example, the following script reproduces the bug: 100.times do |i| Ractor.new(i) do |j| 10000.times do |i| "#{j}-#{i}" end Ractor.receive end pid = fork { GC.verify_internal_consistency } _, status = Process.waitpid2 pid raise unless status.success? end We need to run with `taskset -c 1` to force it to use a single CPU core to more consistenly reproduce the bug: heap_pages_final_slots: 1, total_freed_objects: 16628 test.rb:8: [BUG] inconsistent live slot number: expect 19589, but 19588. ruby 4.0.0dev (2025-11-25T03:06:55Z master 55892f5994) +PRISM [x86_64-linux] -- Control frame information ----------------------------------------------- c:0007 p:---- s:0029 e:000028 l:y b:---- CFUNC :verify_internal_consistency c:0006 p:0004 s:0025 e:000024 l:n b:---- BLOCK test.rb:8 [FINISH] c:0005 p:---- s:0022 e:000021 l:y b:---- CFUNC :fork c:0004 p:0012 s:0018 E:0014c0 l:n b:---- BLOCK test.rb:8 c:0003 p:0024 s:0011 e:000010 l:y b:0001 METHOD <internal:numeric>:257 c:0002 p:0005 s:0006 E:001730 l:n b:---- EVAL test.rb:1 [FINISH] c:0001 p:0000 s:0003 E:001d20 l:y b:---- DUMMY [FINISH] -- Ruby level backtrace information ---------------------------------------- test.rb:1:in '<main>' <internal:numeric>:257:in 'times' test.rb:8:in 'block in <main>' test.rb:8:in 'fork' test.rb:8:in 'block (2 levels) in <main>' test.rb:8:in 'verify_internal_consistency' -- Threading information --------------------------------------------------- Total ractor count: 1 Ruby thread count for this ractor: 1 -- C level backtrace information ------------------------------------------- ruby(rb_print_backtrace+0x14) [0x61b67ac48b60] vm_dump.c:1105 ruby(rb_vm_bugreport) vm_dump.c:1450 ruby(rb_bug_without_die_internal+0x5f) [0x61b67a818a28] error.c:1098 ruby(rb_bug) error.c:1116 ruby(gc_verify_internal_consistency_+0xbdd) [0x61b67a83d8ed] gc/default/default.c:5186 ruby(gc_verify_internal_consistency+0x2d) [0x61b67a83d960] gc/default/default.c:5241 ruby(rb_gc_verify_internal_consistency) gc/default/default.c:8950 ruby(gc_verify_internal_consistency_m) gc/default/default.c:8966 ruby(vm_call_cfunc_with_frame_+0x10d) [0x61b67a9e50fd] vm_insnhelper.c:3902 ruby(vm_sendish+0x111) [0x61b67a9eeaf1] vm_insnhelper.c:6124 ruby(vm_exec_core+0x84) [0x61b67aa07434] insns.def:903 ruby(vm_exec_loop+0xa) [0x61b67a9f8155] vm.c:2811 ruby(rb_vm_exec) vm.c:2787 ruby(vm_yield_with_cref+0x90) [0x61b67a9fd2ea] vm.c:1865 ruby(vm_yield) vm.c:1873 ruby(rb_yield) vm_eval.c:1362 ruby(rb_protect+0xef) [0x61b67a81fe6f] eval.c:1154 ruby(rb_f_fork+0x16) [0x61b67a8e98ab] process.c:4293 ruby(rb_f_fork) process.c:4284
2025-11-25Store fiber serial as Ractor-localJohn Hawthorn
2025-11-25ZJIT: Specialize setinstancevariable when ivar is already in shape (#15290)Max Bernstein
Don't support shape transitions for now.
2025-11-25vm_cc_new: don't assume `cme` is present.Jean Boussier
[Bug #21694] `vm_search_super_method` explictly calls `vm_cc_new` with `cme=NULL` when there is no super class.
2025-11-25[ruby/rubygems] Support bundle install --lockfile optionJeremy Evans
This allows for specifying the lockfile to read and write. It mirrors the --gemfile option, and has higher priority than the lockfile method in the Gemfile. It also mirrors the bundle lock --lockfile option. When the --lockfile option is used, it is applied twice. First, before the Gemfile is read, to specify the lockfile to operate on, and again after the Gemfile is read, so that if the Gemfile has a lockfile method that overrides the defintion's lockfile, the --lockfile option still has higher precedence. https://github.com/ruby/rubygems/commit/17acdd4a89
2025-11-25CI: Add timeout to compilations [ci skip]Nobuyoshi Nakada
2025-11-25Fix the fallback using mutexNobuyoshi Nakada
2025-11-25Try libatomic only if necessaryNobuyoshi Nakada
2025-11-25Reapply "Fix stdatomic case in `rbimpl_atomic_u64_fetch_add`"Nobuyoshi Nakada
This reverts commit 8a68dc7bdd3d1c97677a6633a4f2b5e524c492ae.
2025-11-24ZJIT: For JIT-to-JIT send, avoid loading uninitialized local through EPAlan Wu
JIT-to-JIT sends don't blit locals to nil in the callee's EP memory region because HIR is aware of this initial state and memory ops are only done when necessary. Previously, we read from this initialized memory by emitting `GetLocal` in e.g. BBs that are immediate successor to an entrypoint. The entry points sets up the frame state properly and we also reload locals if necessary after an operation that potentially makes the environment escape. So, listen to the frame state when it's supposed to be up-to-date (`!local_inval`).
2025-11-24Fix style for rb_gc_impl_after_forkPeter Zhu
2025-11-24Fix style for rb_gc_impl_before_forkPeter Zhu
2025-11-25[ruby/uri] [DOC] Fix result of sample code in `#user=`Yuji Yaginuma
A `password` is cleared when change a user now. https://github.com/ruby/uri/commit/af6714473c
2025-11-24Add SIGABRT to reserved signals in bundler specPeter Zhu
2025-11-24Handle SIGABRT and output bug reportPeter Zhu
SIGABRT is for abnormal termination so we should handle it to output a bug report. Specifically, glibc malloc uses it to exit when there is corruption. For example, the following script produces a double free: mem = Fiddle.malloc(10) Fiddle.free(mem) Fiddle.free(mem) Before this patch, it just outputs the following and exits: free(): double free detected in tcache 2 After this patch, it also outputs a bug report: free(): double free detected in tcache 2 test.rb:11: [BUG] Aborted at 0x000003e8000ab65c
2025-11-24Revert "Fix stdatomic case in `rbimpl_atomic_u64_fetch_add`" (#15311)Max Bernstein
This reverts commit d3b6f835d565ec1590059773fc87589ddf8adc37. This broke the Docker builds and presumably also 32-bit machines that don't already have libatomic installed.
2025-11-24[ruby/forwardable] Use generic argument forwarding (...) instead of ↵Jeremy Evans
ruby2_keywords on Ruby 2.7+ On Ruby 3.4+, generic argument forwarding is significantly faster as it does not allocate. https://github.com/ruby/forwardable/commit/b606c3bf0a
2025-11-24Adjust indent [ci skip]Nobuyoshi Nakada
2025-11-23[ruby/prism] Revert "Reject `p(p a, &block => value)` and similar"Kevin Newton
https://github.com/ruby/prism/commit/fef2c20777
2025-11-23[ruby/prism] Handle destroying implicit parameterKevin Newton
Fixes https://github.com/ruby/prism/pull/3740 https://github.com/ruby/prism/commit/464a849184
2025-11-23Replace vfork with fork for ASANPeter Zhu
Older versions of ASAN do not support vfork. See https://github.com/google/sanitizers/issues/925
2025-11-23[ruby/prism] Avoid reading out-of-bounds in pm_strnstrSteven Johnstone
Fixes https://github.com/ruby/prism/pull/3738. https://github.com/ruby/prism/commit/37bb46ff5f
2025-11-23[ruby/prism] Reject `p(p a, &block => value)` and similarEarlopain
They were being parsed as `p((p a, &block) => value)`. When we get to this point, we must not just have parsed a command call, always consuming the `=>` is not correct. Closes [Bug #21622] https://github.com/ruby/prism/commit/796ab0edf4