Previously, on a Regexp without a fixed encoding (which is most common), we would recompile and overwrite the compiled regex. This meant that if we flip-flopped between two or more encodings we would need to continuously recompile the sa...jhawthorn (John Hawthorn)
Since rb_enc_str_coderange(str2) is called first, str2_cr is never UNKNOWN and rb_enc_cr_str_buf_cat returns it unchanged, so writing it back to str2 is redundant. It is also an unsynchronized write to str2, which may be a frozen string ...jhawthorn (John Hawthorn)
Applied in changeset commit:git|b740f7d553e6ee4abdff8847760394b4e6ea389c. ---------- Don't write str2's code range back in rb_str_buf_append Since rb_enc_str_coderange(str2) is called first, str2_cr is never UNKNOWN and rb_enc_cr_str_b...jhawthorn (John Hawthorn)
Since rb_enc_str_coderange(str2) is called first, str2_cr is never UNKNOWN and rb_enc_cr_str_buf_cat returns it unchanged, so writing it back to str2 is redundant. It is also an unsynchronized write to str2, which may be a frozen string ...jhawthorn (John Hawthorn)
Since 44fff96b0b (Attach a box classext to its class before filling it in) the half-built classext is reachable by the GC while it is being filled, but the new m_tbl was only stored on it once it was complete, and for an ICLASS the GC on...jhawthorn (John Hawthorn)
Under refinements, vm_caller_setup_arg_block caches the func it makes for `&:sym` in the cref's refinements table. The cref belongs to whichever Ractor ran `using`, usually main, but any Ractor calling a method defined there reached the ...jhawthorn (John Hawthorn)
Applied in changeset commit:git|f609897fa4478f6116e6d30009e956c79ff7a186. ---------- Add Ractor#alive? Matches Thread#alive? and Fiber#alive?. Returns false once the ractor's result has been recorded. Reads sync.legacy under the ractor...jhawthorn (John Hawthorn)
Matches Thread#alive? and Fiber#alive?. Returns false once the ractor's result has been recorded. Reads sync.legacy under the ractor lock, as Ractor#monitor does, so it cannot race with termination. [Feature #22441]jhawthorn (John Hawthorn)
Defining a method in a refinement makes rb_method_entry_make (VM lock held) add an entry to the refined class by calling rb_add_method. rb_add_method must be called without the VM lock: it asserts that, and emits warnings, which can run ...jhawthorn (John Hawthorn)