Advertisement · 728 × 90

Posts by Ian Grunert

I thought return_call_indirect had to do a runtime table load + type check, whereas br_table was on a label index where the labels are known upfront?

1 week ago 0 0 1 1

I'm surprised return_call_indirect is reasonably quick on wastrel.

I think it'd be possible to use br_table as a tail call - the code would be similar to the switch based interpreter without returning to the main opcode dispatch loop between each instruction.

1 week ago 0 0 1 0
Eight years of wanting, three months of building with AI For eight years, I’ve wanted a high-quality set of devtools for working with SQLite. Given how important SQLite is to the industry1, I’ve long been puzzled that no one has invested in building a reall...

I just published a deep-dive into the 250-hour build behind syntaqlite, a SQLite formatter and LSP I built using AI agents.

AI agents were the only reason built this after 8 years of wanting but there's a psychological toll to AI-assisted engineering.

The post-mortem:
lalitm.com/post/buildin...

2 weeks ago 206 38 15 12

It's tempting to re-prompt the same session to fix up the work, but I think unless it's really trivial it's better to start a fresh session / context.

2 weeks ago 1 0 0 0
Writing a JS Engine using Claude Code Over the past 2 months, I’ve been working on a JavaScript interpreter using Claude Code. It’s been an interesting side project, to learn about the weird corners of the ECMAScript spec while figuring o...

"No sense of time" also applies to being very eager to write lots of code; most people would feel that a change that's getting too large / taking too long, take a step back and rethink the approach.

I had similar experiences with refactoring for this project:

iangrunert.com/2026/03/22/w...

2 weeks ago 0 0 1 1

Yeah I think you might be able to do the br_table without returning to the top level dispatch loop? Not sure how you'd convince the compiler to do that though.

2 weeks ago 1 0 0 0

I think this might be lowered to a return_call_indirect wasm instruction, which pushes to the value stack. For a tail recursive it'd be return_call which'd be faster.

I guess you might be able to get a block per opcode function and use br_table? No idea if you could coax the compiler to do that.

2 weeks ago 1 0 1 0

Great, wide-ranging episode. Not just about the technical pieces, but about (slightly unorthodox) decisions on how to build, grow, and retain the company behind it.

2 weeks ago 1 0 0 0
Preview
Squarespace & Web Standards: How We Helped Bring HTML Video & Audio Lazy Loading to Today’s Browsers — Squarespace Engineering Blog At Squarespace, many of our core products are built on web standards, and our engineers are constantly pushing the boundaries of the web’s capabilities. Occasionally, those boundaries reveal a limitat...

New on the Squarespace Engineering Blog! Squarespace & Web Standards: How We Helped Bring HTML Video & Audio Lazy-Loading to Today’s Browsers.

I'm real proud of the teamwork that went into this. Stay tuned for part 2 next week, which will cover dev best practices for using this new HTML standard.

3 weeks ago 42 19 3 3
Writing a JS Engine using Claude Code Over the past 2 months, I’ve been working on a JavaScript interpreter using Claude Code. It’s been an interesting side project, to learn about the weird corners of the ECMAScript spec while figuring o...

Read more about writing a JS Engine using Claude Code here:

iangrunert.com/2026/03/22/w...

3 weeks ago 1 0 1 0
Advertisement
Replace regexp2 with QuickJS libregexp via WASM/wazero · iangrunert/gojiscript@452e170 Replace the dlclark/regexp2 regex engine with QuickJS's libregexp compiled to WebAssembly and called via wazero (pure Go, zero CGO). This gives full ECMAScript regex compliance including Unicod...

Claude Code is great at "duct tape" work. Here's an example of a refactor + build config task.

Input: Could we compile quickjs libregexp to wasm, call it via wazero, and use it as a replacement for regexp2 which can actually handle some of the unicode edge cases?

github.com/iangrunert/g...

3 weeks ago 1 0 1 0
Writing a JS Engine using Claude Code Over the past 2 months, I’ve been working on a JavaScript interpreter using Claude Code. It’s been an interesting side project, to learn about the weird corners of the ECMAScript spec while figuring o...

Over the past two months, I wrote a JS Engine in Go using Claude Code.

It's passing ~44000 Test262 tests, almost reaching parity with QuickJS on Test262.

iangrunert.com/2026/03/22/w...

4 weeks ago 4 1 0 0
Post image Post image

New blog post: A Decade of Slug
This talks about the evolution of the Slug font rendering algorithm, and it includes an exciting announcement: The patent has been dedicated to the public domain.
terathon.com/blog/decade-...

1 month ago 273 86 11 4

There's no e-mail marketing team more optimistic than Mattress Firm.

Just bought a mattress? Want another one?

1 month ago 1 1 0 0
Chrome Platform Status

It's odd to me that V8SloppyMode is used on ~92% of page loads, while V8StrictMode is used on ~82% of page loads. Must be a lot of mixed strict and sloppy JS on the same page?

chromestatus.com/metrics/feat...

1 month ago 0 1 0 0
Preview
Fix GC thread terminology in comments to reflect multiple GC threads by ruthvikkonda · Pull Request #58714 · WebKit/WebKit f634318 Fix GC thread terminology in comments to reflect multiple GC threads https://bugs.webkit.org/show_bug.cgi?id=307897 rdar://170377922 Reviewed by NOBODY (OOPS\!). WebKit's garbage coll...

github.com/WebKit/WebKi...

The WebKit change was reviewed, however the backslash before the exclamation mark prevented the merge queue automated tooling from replacing the Reviewed by line to reflect that.

1 month ago 1 0 1 0

Sometimes it gets confused when rebasing and introduces a commit that undoes all the changes. Pretty easy to catch on review, though.

1 month ago 0 0 0 0
C++ Memory Safety in WebKit - Geoffrey Garen - C++Now 2025
C++ Memory Safety in WebKit - Geoffrey Garen - C++Now 2025 YouTube video by CppNow

The WebKit team at Apple is taking a different approach to achieve more safety; I take that as signal that their colleagues on LLVM aren't prioritizing implementation of profiles.

www.youtube.com/watch?v=RLw1...

1 month ago 4 0 1 0
A trick for Claude Code context windows A big part of the job of working with Claude Code currently is task breakdown. This serves two purposes:

This trick might fit into this series:

> Can we plan to execute each phase in a separate agent session? This would help manage the context window.

iangrunert.com/2026/02/14/c...

1 month ago 2 0 0 0
Advertisement

Very neat!

How did you come across this video?

1 month ago 1 0 1 0
A trick for Claude Code context windows A big part of the job of working with Claude Code currently is task breakdown. This serves two purposes:

iangrunert.com/2026/02/14/c...

Claude successfully implemented a very complicated 16-phase refactoring plan using this one weird trick.

2 months ago 2 0 0 0

Link to 2025 schedule is broken

2 months ago 1 0 1 0
Preview
MacRumors Buyer's Guide: Know When to Buy iPhone, Mac, iPad This page provides a product summary for each Apple model. The intent is to provide our best recommendations regarding current product cycles, and to provide a summary of currently available rumors fo...

If you don't already have one, I'd hold off on buying an Apple TV right now. Should get updated really soon.

buyersguide.macrumors.com#Apple_TV

2 months ago 4 0 1 0
Preview
Building a C compiler with a team of parallel Claudes Anthropic is an AI safety and research company that's working to build reliable, interpretable, and steerable AI systems.

Good tips in here even if you're running a single window of Claude Code.

We're only scratching the surface of how we can use this technology in our discipline.

www.anthropic.com/engineering/...

2 months ago 1 0 0 0
test262.fyi daily runner of test262 for many engines

When did JavaScriptCore overtake LibJS on test262 execution time on test262.fyi? @goose.icu

2 months ago 2 0 1 0

Been deep in some browser & standards contributions lately and feeling renewed love for this idea that when companies need a certain feature, they can build it one-off, or they can propose (and prototype) a way to build it into browsers for everybody. Latter’s more approachable than many think!

3 months ago 20 3 0 0
Big ideas begin here: Sergey Brin at Stanford
Big ideas begin here: Sergey Brin at Stanford YouTube video by Stanford University School of Engineering

youtu.be/0nlNX94FcUE?...

> “I had this vision that I was gonna sit in cafés and study physics, which was my passion at the time” - Sergey Brin

www.youtube.com/watch?v=GmJI...

3 months ago 2 0 0 0
Advertisement
Post image
3 months ago 0 0 0 0

new jynpost jyn.dev/i-m-just-hav...

4 months ago 69 18 6 2
Video

Super Exciting Announcement: #Steam page for my multiplayer falling sand game is now LIVE at store.steampowered.com/app/3816900/...

Announce Trailer: www.slowrush.dev/signs-trailer

2 years of hard work, but now the real work begins :)

#fallingsand #indiegame #indiegamedev #indiedev #gamedev

4 months ago 44 21 3 5