General

Profile

alanwu (Alan Wu)

  • Login: alanwu
  • Registered on: 10/28/2018
  • Last sign in: 03/19/2026

Issues

open closed Total
Assigned issues 4 25 29
Reported issues 1 49 50

Projects

Project Roles Registered on
Ruby Committer 03/19/2021

Activity

04/30/2026

12:08 AM Ruby Revision d61424bb (git): ZJIT: More recognizable JIT return poison, assert only when RUBY_DEBUG
A good poison value gives a recognizable fault address if someone
erroneously dereferences. Asserting the pointer is not poison shouldn't
be necessary, so move it to RUBY_DEBUG builds.
alanwu (Alan Wu)

04/29/2026

10:22 PM Ruby Revision 4d56fc62 (git): YJIT: Replace std::mem::transmute with pointer casting
As the documentation puts it, transmute is "incredibly unsafe". We can
express what we need to with pointer casts in these closure FFI
situations, so let's use pointer casts.
alanwu (Alan Wu)
10:22 PM Ruby Revision acbc0ce5 (git): ZJIT: Replace std::mem::transmute with pointer casting
As the documentation puts it, transmute is "incredibly unsafe". We can
express what we need to with pointer casts in these closure FFI
situations, so let's use pointer casts.
alanwu (Alan Wu)
10:22 PM Ruby Revision 62e59f2a (git): ZJIT: Prefer raw pointer over references in with_ruby_vm()
When references show up on in the type declaration, it's an invitation
to think about how long the implicit lifetime is. This code
doesn't do anything tricky lifetime-wise, so it looks better declaring
only raw pointers.
alanwu (Alan Wu)

04/10/2026

07:35 PM Ruby Revision 4978bfb2 (git): ZJIT: `fmt::Debug` for VALUE in hex. Shorthand for rb_obj_info()
The default `{:?}` still always prints the pointer address and never
dereferences it, but now in hex.
The "alternate" flag lets you do `println!("{my_ruby_object:#?}")` and
get a rich printout like `VALUE(0x000000010232fd00 T_CLASS/Obje...
alanwu (Alan Wu)
07:32 PM Ruby Revision 5ffaaf04 (git): ZJIT: Assert no side exits in assert_compiles()
Most of the time, we want to assert that we compile and the compiled
code runs without exiting. A small number of tests trigger side exits,
and those are changed to use assert_compiles_allowing_exits().
```console
$ rg -F 'assert_compil...
alanwu (Alan Wu)

04/09/2026

11:26 PM Ruby Revision 0c1ce03b (git): ZJIT: Make `hir::types::Class` not final and have it include metaclasses
Every class boots with a metaclass, and all metaclasses are subclasses
of Class, so `types::Class` has no business in `ExactBitsAndClass`.
In fact, we should never see an object whose RBasic::class is exactly
rb_cClass because classes ge...
alanwu (Alan Wu)

04/08/2026

09:44 PM Ruby Revision aa7e671c (git): ZJIT: [DOC] induce_breakpoint! behaves differently when ZJIT is on
alanwu (Alan Wu)

04/07/2026

12:17 AM Ruby Revision 158c1fdb (git): ZJIT: Print the Cptr, not a pointer to the pointer
Previously, we had none-sensical lines such as:
```
v15:CPtr[CPtr(0x1008)] = Const CPtr(0x1010)
```
Which was a contradiction as the pointer in the type specialization
should match the pointer on the right hand side.
alanwu (Alan Wu)
12:17 AM Ruby Revision fa8c9194 (git): ZJIT: Profiling: Separate bits for T_CLASS and T_MODULE
So I don't need to use is_subclass_of(). We already have two branches
for the two types during profiling anyways.
alanwu (Alan Wu)

Also available in: Atom