GC: scan a thread's machine stack once per collection
The Ractor root scan marked each thread's ec directly and then marked the wrapper of the fiber that ec lives in. Both reach rb_executio
The Ractor root scan marked each thread's ec directly and then marked the wrapper of the fiber that ec lives in. Both reach rb_executio
1) Remove copied code in gc_fastpath.rs 2) RbGcZjitDefaultNewObjFastpath and RbGcZjitMmtkNewObjFastpath structs were copied from the cruby_
This also enables the alloc fastpath where it previously wasn't enabled when `-DRUBY_DEBUG` is set in cflags during compilation. This wi
The allocation fastpath just advances the cursor and we don't want to emit code that checks for this rare case. Emit a patchpoint instea
Rewrite FixnumMod with a positive power-of-two constant divisor into FixnumAnd, and FixnumDiv into FixnumRShift. The sign of Ruby's modu
The Ruby Programming Language. Contribute to ruby/ruby development by creating an account on GitHub.
The Ruby Programming Language. Contribute to ruby/ruby development by creating an account on GitHub.
The Ruby Programming Language. Contribute to ruby/ruby development by creating an account on GitHub.
…(#58384) Active Storage passes attachment bytes to a media library in three operations: analysis, preview generation, and variant processi
This commit centralizes shape setting for objects in the ZJIT GC fastpath into the rb_zjit_new_obj_shape function to avoid each type having
Fix the `Request#media_type` documentation example
* https://logs.rubyci.org/osx1400arm/ruby-master/log/20260807T174503Z.fail.html.gz 1) File.setgid? accepts a path in a non-UTF-8, ASCII-
Active Record ivar ractor safety
Ruby on Rails. Contribute to rails/rails development by creating an account on GitHub.
Ruby on Rails. Contribute to rails/rails development by creating an account on GitHub.
…tor safe
Instead of delegating assignment, we calculate the value instead when it is not set. Benchmarks show this doesn't regress performance enough
Re-enable rb_gc_impl_zjit_new_obj_fastpath, was stubbed to "return false" by the recent rlgc merge. The bump-pointer state moved
はじめに 本記事は「2026 Japan AWS Jr. Champions 真夏のQiitaリレー」の7日目の記事です! 下記URLから他の方の記事を確認できます。ぜひご覧ください! さて、本題に移ります。 最近仕事をしていて、開発・検証環境は、稼働時間が意外と長...
Allow to configure ERB options through `ActionView::Base`
Ractor compatible Active Support Notifications
- There is a concern that users may be adding unfrozen string to that configuration so we want to ancipate and freeze things for them.
- ### Problem In #970bf380fe8 we added a :nodoc: to official not document AV::Template::Handlers::ERB, but some applications were leg
Add back `loaded` to RoutesReloader
… tests
The Ruby Programming Language. Contribute to ruby/ruby development by creating an account on GitHub.
Follow-up on dd93d13c8a38d1116f4df24c117e902f8144db43 (#18071). Baking revision.h into dump_ast couples every builtin *.rbinc to the curren
It was removed on https://github.com/rails/rails/pull/58225 but it is public API of the framework.
The Ruby Programming Language. Contribute to ruby/ruby development by creating an account on GitHub.
PowerVS上でのPower9のEOL(End of Life)が発表されました。 「Release notes for Power Virtual Server - August 2026」に下記が記載されました。 投稿時点では、日本語版には掲載されていませんでした。 ...
「AI で業務効率化」が当たり前になった一方で、こんな経験はないでしょうか。 思ったような出力をしてくれない… 出力に、いらないデータが混ざっている… 事実と異なる結果を、それっぽく返してくる… さらに、チームで使い始めると別の不安も出てきます。 このエージェント、社...
A char is more than large enough for counting rebuilds, and it's fine if it rolls over. The table being rebuilt exactly 255 times betwee
Co-authored-by: Reinder Nijhoff <reinder@mediamonks.com>
- ### Problem It is currently not possible to instrument code using ActiveSupport::Notifications inside Ractors. The underying notif
Build Better Websites. Create modern, resilient user experiences with web fundamentals. - Escape server-rendered CSS style text (#11672) · r
Previously the embedded path allocated a full-size embedded string via str_alloc_heap plus STR_SET_EMBED, which capped the copy at the defau
The documented request is a GET, which carries no body and therefore no `Content-Type`, so `media_type` returns `nil` instead of the documen
gcc used to inline four vm_sendish calls into vm_exec_core; it now inlines three. The fourth was a constprop clone -- the one specialised f
rgengc_check_relation asks rgengc_remember to remember the parent for every child that is young or write-barrier unprotected. Remembering i
Returns the AST node that the proc or method was compiled from, by re-parsing the source ([Feature #21795]). Returns nil if the node cannot
Returns the AST node at the location: the node of the surrounding method or block is retrieved and validated in the same way as Proc#syntax_
Isolate console modes and version information from `IO` into a common namespace. https://github.com/ruby/io-console/commit/62890333ac
The Ruby Programming Language. Contribute to ruby/ruby development by creating an account on GitHub.
The Ruby Programming Language. Contribute to ruby/ruby development by creating an account on GitHub.
本記事は、BIPROGY / ユニアデックス社内AWSコミュニティ「BIPROGY AWS SPARK」の定期投稿企画第10回目の記事です。 他の定期投稿企画の記事は、インデックスページをご覧ください 目次 はじめに やりたいこと 全体アーキテクチャ 実装の全体...
heap_alloc_slot tested is_incremental_marking() and bumped a counter on every allocation, to bring the mutator out to newobj_refill every IN
RubyVM::InstructionSequence#to_binary raises "should not compile with coverage" while coverage measurement is enabled. Most to_bin
The Ruby Programming Language. Contribute to ruby/ruby development by creating an account on GitHub.
Extract duplicated local cache multi-read resolution in Strategy::LocalCache
Extract duplicated job matching logic in ActiveJob::TestHelper
Extract duplicated UPDATE self-join preparation into Arel::Visitors::…
…tegers. When this code was refactored in 9c4db31, the mantissa_digits captured only the length of the mantissa and the negative sign was c
A move courier carries an IO by taking over its rb_io, so the source IO is already a RactorMovedObject and nobody else can close the descrip
…tor-local roots Skipping test_enable leaves GC enabled for the rest of the suite, which exposes two more tests: (1) test_stress_and_stres
Implement send(move: true) with an off-heap courier that carries the payload between objspaces, neutralizing the source into a RactorMovedOb
After a native copy succeeds, ractor_basket_alloc can still raise NoMemoryError before cr->pin_capture is handed to the basket. The stal
Adding a generic-fields entry takes the VM-wide generic_fields_lock and then calls st_insert, which mallocs when the table grows. With this
Verified from an independent review's findings: - Ractor#value: the legacy_taken check ran only before the wait for ractor_terminated
Give each Ractor its own objspace so an ordinary local GC runs without the VM lock or a barrier. A stop-the-world global GC does the cross-
Keep the generic-ivar host-to-fields_obj mapping in one global table, serializing mutators with a dedicated lock. A local GC marks only the
Order thread teardown against GC-time frees, route Fiber and Thread frees from a local GC through the VM lock, and stop touching VM-global f
Ractor#value used to be repeatable: the successor could call it again and get the same object back, because the value stayed reachable from
Make the VM-global GC roots per-Ractor so the main Ractor's ordinary local GC runs lock-free. Add the shareability and objspace-localit
Adjust bootstraptest and test-all for the per-Ractor local GC, and add regression tests for the Ractor lifecycle and cross-objspace cases.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
A single-objspace implementation has no pinning or shareable-reference bits, no zombie objspaces, and no per-Ractor local GC: liveness is de
A monitor entry holds a port of the monitoring Ractor and the exit token is sent through it, so the monitoring Ractor's struct has to ou
Rewriting the atfork block to reinitialize the GC's locks dropped the two lines that reinitialize vm->once_lock and vm->once_cond.
RACTOR_CHECK_MODE stamped every object with the id of the Ractor that allocated it (a 4 byte suffix on every slot), and re-stamped whole obj
The Ruby Programming Language. Contribute to ruby/ruby development by creating an account on GitHub.
Ruby on Rails. Contribute to rails/rails development by creating an account on GitHub.
はじめに 先日のROSCon JP 2026のライトニングトークで、このツールを紹介しました。 ……が、「ライトニング」の名に忠実過ぎました。 久しぶりの口頭発表で心臓バクバクしてまして、なぜこれが必要なのかも、中で何をしているのかも、ほとんど伝えられないまま終了。 会場...
The subclasses lists are kept only in the prime classext and thus shared by all boxes, so a module included into a builtin class in a box wa
Ruby on Rails. Contribute to rails/rails development by creating an account on GitHub.
Ruby on Rails. Contribute to rails/rails development by creating an account on GitHub.
Compute a TypeDistributionSummary for the profiled block handler distribution up front instead of deriving only the monomorphic class from i
The Ruby Programming Language. Contribute to ruby/ruby development by creating an account on GitHub.
Cover yield sites that see a mix of ISEQ, proc, symbol, and ifunc block handlers: * HIR tests that a profile mixing ISEQ blocks with proc/s
Instead of hard-coding the 2 * SIZEOF_VALUE offset of rb_captured_block's code union, compute it with offset_of! from the bindgen-generated
これはなに こんにちは、レバテック開発部のもりたです。 今回はアプリケーションを作る上でわりと出会う楽観ロックの実装方法についてまとめます。 コードの例はPHP/Laravelですが、基本的には言語やフレームワークに制限はありません。 構成 構成 楽観ロックとは 課題 楽
Bumps the github-actions group with 4 updates in the / directory: [github/codeql-action/init](https://github.com/github/codeql-action), [git
Provide narrow accessors so `ext/objspace` does not depend on call cache and call info layouts.
Keep `internal/gc.h` usable without VM-private definitions so bundled extensions do not inherit `vm_core.h` dependencies.
Provide a narrow coverage interface so `ext/coverage` does not depend on GC or VM implementation headers.
Proposed in https://bugs.ruby-lang.org/issues/22118 Merged in #17353
…alCache