General

Profile

eightbitraptor (Matt V-H)

Issues

open closed Total
Assigned issues 3 22 25
Reported issues 1 32 33

Projects

Project Roles Registered on
Ruby Committer 03/09/2023

Activity

Today

09:46 AM Ruby Revision 05e951b6 (git): [ruby/mmtk] Exclude flaky URI linear time test
the test_merge_path_dot_dot_removal_is_linear test bases its time limit
on the CPU time of the calling thread.
But the limit is actually checked against wall clock time so GC pauses
count against it - despite that work happening on othe...
eightbitraptor (Matt V-H)

11/06/2026

10:13 PM Ruby Revision c78695fc (git): [ruby/mmtk] Keep Ruby's GC disable state across a forced GC.start
GC.start has to run even when GC is disabled, so we enable collection,
run the GC and then disable it again. #134 fixed the crash we saw when
another Ractor requested a GC before we could re-disable, but we still
restore whatever state w...
eightbitraptor (Matt V-H)
10:13 PM Ruby Revision bf1ad76f (git): [ruby/mmtk] Compact obj_free candidates in place
use retain_mut in process_obj_free_candidates instead of building a new
Vec on every GC.
This saves about 38MiB of peak RSS when running the Lobsters benchmark
with 12 workers.
https://github.com/ruby/mmtk/commit/1292d9a488
eightbitraptor (Matt V-H)
10:12 PM Ruby Revision 24de3621 (git): [ruby/mmtk] Distribute free candidates without a modulo per object
add_obj_free_candidates_batch walked the whole batch once for every
bucket and kept the objects where i % num_buckets == idx. Each flush of
128 candidates ran 128 * num_buckets modulo operations on the mutator
thread. There is one bucket...
eightbitraptor (Matt V-H)
08:26 PM Ruby Revision 2a8f329f (git): Read the object_id of a shareable T_DATA without the VM lock
object_id took the VM lock for every shareable object in multi-Ractor mode, even
when the object already had an id.
Kernel#hash reaches object_id through rb_obj_hash, so a shareable T_DATA such as
an Encoding, a Ractor or a Ractor::Port...
eightbitraptor (Matt V-H)
08:26 PM Ruby Revision 6702f60a (git): Read fields_obj atomically too
eightbitraptor (Matt V-H)

11/05/2026

11:08 PM Ruby Revision 0dcc5b6a (git): [ruby/mmtk] Exclude flaky Gem::SafeYAML linear time test
test_load_block_scalar_strip_indicator_in_linear_time asserts on wall
clock time, and it fails intermittently when Ruby runs with MMTk.
https://github.com/ruby/mmtk/commit/627a8eca44
eightbitraptor (Matt V-H)
12:50 PM Ruby Revision 336946c0 (git): Fix UAF in marshall.c
Marshal.load uses load_arg to store state but wasn't marking the src string or
the proc. Usually not a problem because the caller would keep the string
alive. But when a Ractor.make_shareable falls back to using Marshal then nothing
keep...
eightbitraptor (Matt V-H)

11/03/2026

10:17 AM Ruby Revision 25ad3d64 (git): [ruby/mmtk] Skip the write barrier when the plan has none
rb_gc_impl_writebarrier and rb_gc_impl_writebarrier_remember looked up
the Ractor cache and called into Rust for every store, even for Immix,
MarkSweep and NoGC, whose barrier is NoBarrier and does nothing. Lobsters
runs about 920k barri...
eightbitraptor (Matt V-H)

10/26/2026

10:01 PM Ruby Revision e14d739e (git): Promote the ring before measuring oldmalloc major intervals
test_major_sweep_does_not_create_oldmalloc_debt assumed the ring was
already old when the loop started. When Ruby is running with parse.y
this isn't always the case. That only held when GCs ran while
the ring was built. Under parse.y oft...
eightbitraptor (Matt V-H)

Also available in: Atom