General

Profile

jhawthorn (John Hawthorn)

  • Login: jhawthorn
  • Registered on: 12/22/2016
  • Last sign in: 03/26/2026

Issues

open closed Total
Assigned issues 19 68 87
Reported issues 6 26 32

Projects

Project Roles Registered on
Ruby Committer 11/25/2021

Activity

04/06/2026

10:36 PM Ruby Revision 20211460 (git): Use RB_BUILTIN_TYPE in RCLASS_SINGLETON_P
This should avoid us emitting the check for a special constant. jhawthorn (John Hawthorn)
10:36 PM Ruby Revision a2a69b42 (git): Add assertion to rb_class_alloc
We should only ever call rb_class_alloc with a T_CLASS. Adding this
assert/assumption allows us to elide later checks for T_CLASS>
jhawthorn (John Hawthorn)
10:33 PM Ruby Revision 3e851ea7 (git): Avoid box st_lookup in rb_class_real
jhawthorn (John Hawthorn)

04/03/2026

12:36 AM Ruby Feature #21981 (Open): Remove CREF rewriting for methods on cloned classes/modules
When a class or module is cloned, Ruby currently rewrites the CREF chain of each copied method so that it points at the new class instead of the original. I don't think this should happen, and methods on a cloned class should retain thei... jhawthorn (John Hawthorn)

04/02/2026

07:26 PM Ruby Revision 7aa3cbb0 (git): Convert K&R function definitions in configure.ac
jhawthorn (John Hawthorn)
04:13 AM Ruby Bug #20948 (Closed): Constant references incorrectly cached in `module (expr)::Foo`
Applied in changeset commit:git|91ae69860591f0dfc85571cfbd023dd199e17e73.
----------
Use compile-time flag to indicate dynamic CREFs
The inline constant cache previously used `RCLASS_SINGLETON_P` to detect
"unstable" CREFs that need ic...
jhawthorn (John Hawthorn)
04:13 AM Ruby Revision 91ae6986 (git): Use compile-time flag to indicate dynamic CREFs
The inline constant cache previously used `RCLASS_SINGLETON_P` to detect
"unstable" CREFs that need ic_cref stored and checked on every IC hit.
This caused the `class << self` pattern to create inline caches which
requires extra checks a...
jhawthorn (John Hawthorn)
02:21 AM Ruby Bug #21978 (Closed): Fix class variable cache isn't invalidated via modules
Applied in changeset commit:git|dd3542a0cd00b40d406763e85ac12a1086bab682.
----------
Fix class variable cache not invalidated by class_variable_set
The previous invalidation walked subclasses but missed cvars from
included modules, and...
jhawthorn (John Hawthorn)
02:21 AM Ruby Revision dd3542a0 (git): Fix class variable cache not invalidated by class_variable_set
The previous invalidation walked subclasses but missed cvars from
included modules, and skipped invalidation when creating a new cvar on
modules entirely. Always invalidate when a new class variable is
created, since this should be relat...
jhawthorn (John Hawthorn)

04/01/2026

06:50 PM Ruby Bug #21978 (Closed): Fix class variable cache isn't invalidated via modules

```ruby
module M; @@x = 1; end
class A; end
class B < A
include M
def self.x; @@x; end
end
B.x # warm cache
A.class_variable_set(:@@x, 2)
B.x
```
The last call to `B.x` should fail with `Should raise: class variable ...
jhawthorn (John Hawthorn)

Also available in: Atom