General

Profile

alanwu (Alan Wu)

  • Login: alanwu
  • Registered on: 10/28/2018
  • Last sign in: 10/29/2025

Issues

open closed Total
Assigned issues 4 20 24
Reported issues 3 47 50

Projects

Project Roles Registered on
Ruby Committer 03/19/2021

Activity

Today

09:31 PM Ruby Bug #21655: segfault when building 3.3.10, regression from 3.3.9
It's surprising that leaving the temporary struct uninitialized avoids the crash. Smells like a GCC bug or some UB on our end the optimizer is exploiting.
Does building with `-fno-strict-aliasing` help?
alanwu (Alan Wu)

10/23/2025

09:59 PM Ruby Revision c2bce540 (git): ZJIT: Replace `as usize` casts in codegen.rs
The `as` casts are somewhat dangerous since when the type on either side
change, it silently becomes a lossy conversion. This is why we have
`IntoUsize` as well as other guaranteed lossless conversion utilities
in stdlib. Use them.
For ...
alanwu (Alan Wu)
09:59 PM Ruby Revision 8de628dc (git): ZJIT: s/as_usize/to_usize/ to comply with rust API guidelines
When the name is `as_*`, the guideline expects the return type to be a
reference type. Also, it's good to have contrast in the naming from
the more dangerous `as usize` cast `IntoUsize` is meant to be preferred
over.
See: https://rust-l...
alanwu (Alan Wu)

10/22/2025

11:35 PM Ruby Revision dfcb79ca (git): ZJIT: Fix unused warnings in `make zjit-test` [ci skip]
alanwu (Alan Wu)
09:24 PM Ruby Revision fee863b4 (git): YJIT: Buffer writes to the perf map
alanwu (Alan Wu)
09:24 PM Ruby Revision 71e3ef3d (git): ZJIT: Buffer writes to the perf map
alanwu (Alan Wu)
08:53 PM Ruby Revision 3afa38d0 (git): YJIT: Fix `defined?(yield)` and `block_given?` at top level
Previously, YJIT returned truthy for the block given query at the top
level. That's incorrect because the top level script never receives a
block, and `yield` is a syntax error there.
Inside methods, the number of hops to get from `iseq...
alanwu (Alan Wu)
04:43 PM Ruby Revision 619110b1 (git): ZJIT: A64: Fix Lea with large displacement and overlapping register
Previously, when the output register and the base register are the same
in `out = Lea(Mem(out, disp))`, we did
out = disp
out = out + out
Which wasn't the desired `out = out + disp`.
Fixes a SEGV with `--zjit-call-threshold=2`...
alanwu (Alan Wu)

10/21/2025

10:52 PM Ruby Revision a2a107c2 (git): ZJIT: Handle when SetIvar raises FrozenError
alanwu (Alan Wu)
08:48 PM Ruby Revision b14fac94 (git): ZJIT: Issue `SendWithoutBlockDirect` to `VM_METHOD_TYPE_BMETHOD`
This helps ZJIT optimize ~300,000 more sends in ruby-bench's lobsters
Top-6 not optimized method types for send_without_block
Before After
iseq: 713,899 (48.0%) iseq: 725,668 (62.4...
alanwu (Alan Wu)

Also available in: Atom