First posted at https://railsatscale.com/2026-04-20-hitting-a-reverted-breaking-change-in-rust/ 
 The story starts with Rust 1.85.0 giving me a surprise SIGTRAP in some test code. For reasons not important here, I had to bump opt-level from 0 to 1 for tests. That made a bunch of tests fail with SIGTRAP , whose default signal handler terminates the process. 
 The SIGTRAP happened in Rust…
The bit twiddling office called. They want a function to compute a sequence of
ARM64 instructions that fills a register with an arbitrary constant 64-bit
number. 
 Zeros in positive number 
 All ARM64 instructions are 32 bits long, so one instruction can’t possibly
handle all 64-bit patterns. One straightforward way to assemble the desired bit
pattern is to use
…
Let’s say you want to associate a property with an object, but you don’t want
to write to the object directly, maybe for design reasons or logistical reasons.
(What if the object is frozen and immutable?) You can use WeakMap for this,
and the garbage collector is free to collect keys of the map: 
 object = [] 
 map = ObjectSpace :: WeakMap . new
 map [ object ]…
Recently, I took a distribution version update for a Ubuntu system with a GTX
460 and I ended up spending a few hours to find out that the proprietary driver
no longer works with the newest kernels. The open source nouveau driver
didn’t handle the decade old card any better. I had to downgrade to an older
LTS kernel and use Nvidia’s driver. 
 A different machine of…
This is a post about the bits and pieces I learned while trying to fix a symbol
leakage problem for YJIT-enabled Ruby. The symbols I’m talking about are the
labels in object, executable, and shared library files that help linkers work. 
 Thinking back to my first few contacts with linkers, I found them somewhat
mysterious. I think this is because I get errors from compilers…
Recently I was asked how I review C99 code for problems that arise from
failing to follow the so called “strict aliasing rules”. I struggled to
answer, so I thought I would write a post to hopefully make my explanation more
coherent. 
 The strict aliasing rules can be surprising because the way optimizers take
advantage of them doesn’t mesh well with the…
This guide intends to help Ruby native extension maintainers upgrade libraries to be compatible with GC.compact . Application developers can also use this guide to check applications for compaction compatibility. At the time of writing, the latest Ruby release is version 3.0.0. 
 Using automated tests to surface crashes 
 If your test suite runs under Ruby 2.7.0 or newer, it is possible to…
I have a K-Type , which is a programmable keyboard that lets me
configure custom hotkeys. The configurations live with and on the keyboard,
which is neat. Among other things, this lets my configuration work across
different operating systems. 
 My current configuration has several navigation hotkeys that activate with the
 CAPSLOCK key. CAPSLOCK+{j,k,l,;} send arrow keys, in a…
The first commit I made for my compiler was in 2016, it read “Here’s hoping I get this done in time”.
I’m not sure if I met the deadline that message was referring to, but the compiler is certainly “done” now. 
 Of course, no one in the right mind would use the compiler for anything serious, but the compiler compiles code,
and I’ve made a…