Search
Results (5)
- Feature #22227 (Open): Per-Ractor GC: collect each Ractor's heap locally, stop the world only when needed
- Companion PR: https://github.com/ruby/ruby/pu ... is proposal makes the default GC operate per Ractor. Each Ractor owns an objspace (a private heap) and collects it on its own thread without stopping any other Ractor ("local GC"). A stop-the-world collection o ... d: shareable objects, memory retained across Ractor boundaries, and the heaps of dead Ractors. With this change, allocation-heavy Ractor programs scale like forked processes, and Ractor communication can even beat interprocess communication; end-to-end single-Ractor workloads stay within 2-4% of current perfo ... ction 4.4). ## 1. Motivation Today all Ractors allocate from one shared objspace, and every GC stops every Ractor. This has two consequences: 1. GC pause time grows with the total heap of all Ractor...
- Bug #22098 (Open): RUBY_INTERNAL_THREAD_EVENT_RESUMED runs without GVL held
- Today, it's possible to get a deadlock when a ... be added to quite a few places. To maintain Ractor safety, it would also need to be invoked wit ... . I'm curious about your thoughts @byroot.
- Bug #21295 (Open): macos-13 debug build failures
- @Eregon [ruby/ruby-dev-builder](https://gi ... if one or more of the master builds fail.
- Bug #20158 (Assigned): Ractor affects Coverage results
- I have a large rspec test suite. I found that if I call a Ractor, the Coverage results are strongly affected, ... red. This happens even if I only ever call a Ractor before the library or rspec are required. ... lper.rb of other large suites: ```ruby # Ractor.new { nil } # uncomment this to affect cover ... is greatly reduced and unstable when calling Ractor above p Coverage.result.values.sum { |arr ... ub.com/simplecov-ruby/simplecov/issues/1058).
- Bug #19364 (Assigned): Issue with tracepoint enable/disable across ractors
- This sometimes segfaults: ```ruby def test_enable_disable_in_multiple_ractors_with_target rs = [] 100.times do |i| ... end end 100.times do |i| rs << Ractor.new(i) do |j| meth = :"my_method_to_change_for_tracing_#{j}" tp = TracePoint.new(:line) { } # local to ractor 100.times do tp.enable(targe ... raise end test_enable_disable_in_multiple_ractors_with_target() ``` Changing iseq internals is done without the VM lock. This is true in Tracepoint#enable and Tracepoint#disable methods. I have a patch coming.