titzerbl.bsky.social
@titzerbl.bsky.social
*sigh* After two months of fits and starts, I finally landed the big global regalloc refactor that passes the CI, and both Virgil and Wizard tests all pass now at -O3.

I just have to fix the symbols for debugging, then stable rev...
February 10, 2026 at 9:02 PM
Elizabeth's work on Whamm triggered a New Stack article!
January 20, 2026 at 5:50 PM
Olivier*
January 14, 2026 at 2:59 AM
Start with Oliver Fluckinger's thesis.
January 14, 2026 at 2:59 AM
So that "simple" register allocator bugfix metastasized into a rewrite of about one third--approaching one half, TBH--of the graph coloring allocator.

And I just realized that deconstructing SSA before doing the pre-spill (shadow stack) phase was...unwise.
January 14, 2026 at 2:23 AM
Getting dragged down into the register allocator hole again.

Every time I disappear down the hole I spend several days paging stuff back in, learning two or three minor insights, fix a bug by turning something off, and then promptly forget it all.
January 7, 2026 at 12:53 AM
Ugh, I am so close to being able to squashing the last -O3 bug in the Virgil compiler! It passes all of Virgil's, with bootstrap, and passes nearly all of Wizard's, except some mysterious coverage monitor bug and WASI fd_write.

After -O3 it's time to stable rev!
December 23, 2025 at 2:06 AM
Please enjoy your trip through this door!
December 18, 2025 at 4:20 PM
@shriram.bsky.social

You always refer to your offspring as "kid".

I wrote a song about the first Scientist. Somehow "Kid A" reminds of your stories of them.

suno.com/s/07w8E55Fo9...
Purple-ometer
Listen and make your own on Suno.
suno.com
December 13, 2025 at 11:12 PM
I submitted a PR to add Wizard to the features page for the official WebAssembly site:

webassembly.org/features/

(cached preview doesn't seem to show that new column, though)
Feature Status - WebAssembly
WebAssembly (abbreviated Wasm) is a binary instruction format for a stack-based virtual machine. Wasm is designed as a portable compilation target for programming languages, enabling deployment on the...
webassembly.org
November 21, 2025 at 12:44 AM
Don't question the power talk of the go-jillionaires!
November 19, 2025 at 3:59 PM
A more generous interpretation is that he meant they need to *move* more electrons...which is more or less true. AI is limited by electrical power generation at this point.
November 19, 2025 at 3:56 PM
It wouldn't be x86 otherwise!
November 14, 2025 at 1:40 AM
Indexing an array and the array length are two slightly different cases IMO. In the first, obviously there is a dynamic check (and Virgil allows any-sized or any-signed integers as an index). In the later, the length being unsigned encodes an invariant useful to other code.
November 13, 2025 at 6:52 PM
Reposted
Haven't tried myself yet, but this VSCode extension for customisable debug visualisations looks absolutely amazing. marketplace.visualstudio.com/items?itemNa...
November 12, 2025 at 5:00 PM
Reposted
new bloggery: a look back on the last couple years of developments in v8's garbage collector

wingolog.org/archives/202...
the last couple years in v8's garbage collector — wingolog
wingolog: article: the last couple years in v8's garbage collector
wingolog.org
November 13, 2025 at 3:22 PM
The Virgil compiler interprets its SSA representation directly, as compile-time initialization allows the full language--a simplification after two generations of customized interpreters. It does basically what Mike wrote, except gotos assign the values of phis instead of looking them up.
November 13, 2025 at 1:32 PM
Numeric types are actually pretty tricky to get right in language design. FWIW, Virgil defines array lengths to be 32-bit signed integers, like Java. Yet array and range indexing is overloaded to allow any integer type as an index. github.com/titzer/virgi...
github.com
November 12, 2025 at 4:34 PM
Not sure I buy this. One nice principle is "make invalid states unrepresentable" and unsigned types are one mechanism for that.

The irony is that up until C23, overflow of signed integers was UB, and now it's defined to wrap. So this stuff about "compiler will catch errors" is tripe.
November 12, 2025 at 3:24 PM
Today I presented to the Wasm CG a proposal for fine-grained dynamic code generation as a core WebAssembly feature. The proposal is now at phase 1!

github.com/WebAssembly/...

Also immortalized in song: suno.com/song/19e0679...
GitHub - WebAssembly/jit-interface: WebAssembly specification, reference interpreter, and test suite for the jit-interfaces proposal.
WebAssembly specification, reference interpreter, and test suite for the jit-interfaces proposal. - WebAssembly/jit-interface
github.com
October 29, 2025 at 9:49 PM
I'm curious if your backend is targeting Wasm GC or linear memory.
October 12, 2025 at 2:09 PM
Reposted
It’s live! "@graalvm.org meets #WebAssembly” from @devoxx.com: compile JVM apps to Wasm (Web Image) and run Wasm in Java or Kotlin at near‑native speed (GraalWasm). Lots of live demos included!
www.youtube.com/watch?v=uefc...
GraalVM meets WebAssembly by Fabio Niephaus
YouTube video by Devoxx
www.youtube.com
October 10, 2025 at 12:54 PM
How I'm feeling about data layout / protocol description languages right now.

...except none of them even ending up becoming standard!

xkcd.com/927/
Standards
xkcd.com
September 17, 2025 at 3:35 PM
Yes, thanks. I have trouble operating the internet.
September 16, 2025 at 2:26 PM
@dubroy.com alerted me to the Safari release notes (developer.apple.com/documentatio...) say version 26 ships an in-place interpreter for WebAssembly, which is in part based on the Wizard design, but adapted for Safari's use cases.

This is cool!

Wasm brings all the VMs to tiers!
developer.apple.com
September 16, 2025 at 1:44 PM