@titzerbl.bsky.social
130 followers 52 following 27 posts
Posts Media Videos Starter Packs
titzerbl.bsky.social
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
titzerbl.bsky.social
Yes, thanks. I have trouble operating the internet.
titzerbl.bsky.social
@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
titzerbl.bsky.social
Today I finished implementing the last of the relaxed-simd proposal (now Phase 4). That completes Wizard's support for all of the Wasm 3.0 features, which includes all the good things like exception handling, function references, garbage collection, and tail calls!

github.com/titzer/wizar...
GitHub - titzer/wizard-engine: Research WebAssembly Engine
Research WebAssembly Engine. Contribute to titzer/wizard-engine development by creating an account on GitHub.
github.com
titzerbl.bsky.social
Yeah, unaligned loads are generally pretty fast on intel, but keep in mind that you're benefiting a lot from a forward scan, so prefetching is going to have cache lines ready. It hurts most when you cross a cache line boundary, which is only a fraction of accesses.
titzerbl.bsky.social
Hello, it's 2011 again and I'm crashing the MacOS kernel with 300 byte binaries. If only it were someone *else's* kernel.
titzerbl.bsky.social
Whenever a new feature is hot off the presses I am a little hesitant to use it in "production" code, and certainly a self-hosted compiler requires a stable rev to be usable, but man--unittests? Blast away with those lambda bombs.

I have so much pent-up closuring!
titzerbl.bsky.social
That about does it for lambdas in Virgil.

Woohoo!

First there were just Class, Functions, Tuples, and Type Parameters. Then there were algebraic data types. Then, partial application. Now, full lexical closures!

github.com/titzer/virgi...
[funexpr] Implement captured variables by titzer · Pull Request #395 · titzer/virgil
github.com
titzerbl.bsky.social
That about does it for lambdas in Virgil.

Woohoo!

First there were just Class, Functions, Tuples, and Type Parameters. Then there were algebraic data types. Then, partial application. Now, full lexical closures!

github.com/titzer/virgi...
[funexpr] Implement captured variables by titzer · Pull Request #395 · titzer/virgil
github.com
titzerbl.bsky.social
In other channels, we've been discussing holding a Wasm tooling tutorial at SPLASH in Singapore. Is that something that interests you as well?
Reposted
tomayac.com
As of last December, release 2.0 of the #Wasm specification is “official”! Read Andreas Rossberg's post, which happens to be the first real post on the #WebAssembly website's new News 🗞️ section: webassembly.org/news/2025-03....
- 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
titzerbl.bsky.social
We haven't experimented much with Wasip2 yet, but your comment gives me the idea that we could recompile the wasmtime implementation with the Rust target...hmmm :)
titzerbl.bsky.social
Yesterday we put up the camera-ready for the WALI paper!

This paper introduces Thin Kernel Interfaces for WebAssembly which allows a new class of powerful applications for Wasm and building higher-level interfaces like WASI in an engine-agnostic way.

arxiv.org/abs/2312.03858
Empowering WebAssembly with Thin Kernel Interfaces
Wasm is gaining popularity outside the Web as a well-specified low-level binary format with ISA portability, low memory footprint and polyglot targetability, enabling efficient in-process sandboxing o...
arxiv.org
titzerbl.bsky.social
Performance is a red herring I think here. Getting efficient data represents (read: avoiding boxing and unnecessary allocations) is more than half the battle. But systems also could benefit from some esoteric features like data layouts, which is something I've focused on recently.
titzerbl.bsky.social
Well systems programming is my niche and I feel like systems languages have an unfortunate habit of morphing into application languages. The real systems problems are data representations and safety--not on chasing market share through better ergonomics.
titzerbl.bsky.social
I'm waiting for a certain CEO to tweet that the government doesn't use memory.
titzerbl.bsky.social
I think of two colons as four dots.
titzerbl.bsky.social
Wizard has supported Wasm GC for a while now, but now it finally supports all GC opcodes in JIT-only mode. The object model needs work, but this unblocks more perf work for stack switching.

github.com/titzer/wizar...
[spc] Fix register of ref.test (#298) · titzer/wizard-engine@83436b1
github.com
titzerbl.bsky.social
Over the past week or so I spent some time adding some syntactic sugar (with type inference) to Virgil. The idea is that function/method bodies that are a simple return of an expression can have their return types inferred. A can of worms, but looks nice, IMHO.

github.com/titzer/wizar...
[refactor] Experiment with using simple function bodies · titzer/wizard-engine@39f36f9
github.com
titzerbl.bsky.social
Not that surprised. Back when we were working on Spectre we thought about speculation on data values but concluded CPUs weren't doing it. This is a form of data value speculation and it's extremely hard to reason about all the possible weird things that can happen in speculation because of it.
titzerbl.bsky.social
Windows 95 was launched 30 years ago.

I had a programming book on Windows 95...in 1994!! 500+ pages that documented darn near everything. Glossary, index, working examples, migration path. The amount of preparation that went into this launch was astounding.

www.youtube.com/watch?v=_Jzf...
Microsoft Windows 95 Launch with Bill Gates & Jay Leno (1995)
YouTube video by Blue OS Museum
www.youtube.com
titzerbl.bsky.social
Finally pulled the trigger on another stable revision of the Virgil compiler (checking in the binaries of the compiler having compiled itself), which is good because right after is the perfect time to shake things up with new features and optimizations!

github.com/titzer/virgi...
[stable] Release III-8.1787 (#335) · titzer/virgil@31a9990
github.com