General

Profile

jhawthorn (John Hawthorn)

  • Login: jhawthorn
  • Registered on: 12/22/2016
  • Last sign in: 09/21/2026

Issues

open closed Total
Assigned issues 15 86 101
Reported issues 6 33 39

Projects

Project Roles Registered on
Ruby Committer 11/25/2021

Activity

09/25/2026

06:53 PM Ruby Bug #22381 (Closed): MatchData assigned to $~ is incorrectly reused
Applied in changeset commit:git|ea3cd7efe1f6bab78572b31774462e891ef01243.
----------
Fix reuse of MatchData assigned to $~
$~ = m = /a/.match("a").dup
/b/ =~ "b"
p m
[Bug #22381]
jhawthorn (John Hawthorn)
06:53 PM Ruby Revision ea3cd7ef (git): Fix reuse of MatchData assigned to $~
$~ = m = /a/.match("a").dup
/b/ =~ "b"
p m
[Bug #22381]
jhawthorn (John Hawthorn)

09/24/2026

08:05 PM Ruby Bug #22381 (Closed): MatchData assigned to $~ is incorrectly reused
```ruby
m = /a/.match("a").dup # dup a MatchData (has no "busy" flag set)
$~ = m # assign to $~
/b/ =~ "b" # perform a match that sets $~
p m
# "b" on Ruby 4.0 (and 1.8-2.7, incorrect)
# "a" on Ruby 3.0-3.4 (correct)
```
This i...
jhawthorn (John Hawthorn)

09/22/2026

09:37 PM Ruby Feature #22376 (Open): Undefine the allocator for Class
Uninitialized classes, created by `Class.allocate`, are a recurring source of bugs (most recently #22341). Every place that inspects a class's superclass chain has to check whether the class has been initialized, and it's easy to forget ... jhawthorn (John Hawthorn)
02:51 PM Ruby Bug #22341: Class#superclass can crash the interpreter in debug build
Great catch! This is my mistake from https://github.com/ruby/ruby/commit/e01e89f55c82be8db5d8ccbf305ee38e3769e582
It should be safe to remove that assertion, but I also think it should probably be forbidden to include on an uninitiali...
jhawthorn (John Hawthorn)

09/17/2026

07:05 PM Ruby Revision 0bdfb4c9 (git): ZJIT: Support getivar in multi-Ractor mode
jhawthorn (John Hawthorn)
04:33 PM Ruby Revision 742699d2 (git): Support Marshal dump hooks in the Ractor courier
Previously the courier only carried the core types natively, and any
other object made the whole message fall back to Marshal.dump on the
sender and Marshal.load on the receiver. That serialized everything
reachable into bytes, so a Ract...
jhawthorn (John Hawthorn)
04:33 PM Ruby Revision 1bd863dd (git): Use Marshal compat from Ractor courier
For some types (probably most notably Set), Marshal loading is defined
with compatibility functions. We should use those when set.
jhawthorn (John Hawthorn)
04:33 PM Ruby Revision dea2cdac (git): Remove marshal fallback for Ractor copy
The previous commit integrated Marshal's hooks into the native courier
copying path. That should cover most cases.
One exception I've noticed that this doesn't implement is singleton
classes which have been extended by modules. I would ...
jhawthorn (John Hawthorn)
04:33 PM Ruby Revision ab49f881 (git): Allow copying objects with a singleton class
Previously the Ractor courier rejected singleton class objects. However
we have existing tests of OpenStruct that those objects can be
Ractor-copied.
dup and clone, which were used prior to RLGC's merge, also just ignore
singleton class...
jhawthorn (John Hawthorn)

Also available in: Atom