JS Wei (Jack) Sun

Claude Code ships AI-ported Bun, NeMo wires Diffusers, Willison annotates SQLite

Three unrelated AI-tech ships: a Claude-written Bun rewrite, a NeMo-Diffusers fine-tuning bridge, and Willison's browser SQLite plan annotator.

Claude Code ships AI-ported Bun, NeMo wires Diffusers, Willison annotates SQLite

TL;DR

  • Claude Code v2.1.181 silently swapped Bun for an unreleased Rust port with 13,365 unsafe blocks.
  • The new Rust core cuts memory for 2,000 parallel builds from 6.7 GB to 609 MB.
  • NVIDIA and Hugging Face wired Diffusers into NeMo Automodel at 4.44 img/s/GPU on 8×H100.
  • Simon Willison shipped a browser SQLite EXPLAIN annotator with Claude Fable writing most of the code.

Three unrelated tech ships today, though two share a hook: Claude wrote the code. Anthropic’s Claude Code v2.1.181 silently swapped its Bun runtime for a Claude-authored Rust port that trims 2,000-build memory from 6.7 GB to 609 MB — and ships with 13,365 unsafe blocks, roughly twice Deno’s density. Simon Willison’s new browser SQLite EXPLAIN annotator was likewise mostly written by Claude Fable, running Pyodide client-side against an undocumented query-plan format.

Sitting between them, NVIDIA and Hugging Face wired Diffusers model IDs directly into NeMo Automodel — FLUX.1-dev full fine-tune at 4.44 img/s/GPU on 8×H100, toggled from YAML. The issue tracker openly logs FSDP2 checkpoint slowdowns above 40B params and reverse-pass precision anomalies, so the seams are visible even as the pipeline lands.

Claude Code ships a Bun that Claude rewrote in Rust

Source: simon-willison · published 2026-07-19

TL;DR

  • Claude Code v2.1.181 silently swapped its Bun runtime for an unreleased v1.4.0 ported from Zig to Rust.
  • Memory for 2,000 parallel builds fell from 6.7 GB to 609 MB on the new Rust core.
  • An independent audit counts 13,365 unsafe blocks in the port — roughly 2× Deno’s density.
  • Zig’s Andrew Kelley calls the original Bun code “horrifying… beginner energy”.

The strings-dump smoking gun

Willison’s post is a two-command binary-forensics vignette: strings ~/.local/bin/claude | grep 'Bun v1' returns Bun v1.4.0 — a version that doesn’t exist on Bun’s GitHub, where the latest tag is v1.3.14 from May. A second grep yields 563 src/**/*.rs paths embedded in the executable. Jarred Sumner’s claim that Claude Code v2.1.181 (June 17) runs the Rust port, with a quiet 10% Linux startup win, checks out on every laptop with Claude Code installed.

The 10% is almost incidental. Anthropic’s own acquisition post spells out the real prize: Claude Code ships as a single 51 MB Bun-compiled binary that cold-starts in ~3 ms, sidestepping the Node/Python “distribution nightmare” for an agent that has to land on millions of dev machines 1. Owning the runtime is vertical integration for the agent’s execution substrate.

The numbers cut both ways

On throughput, the rewrite delivers. Independent benchmarks show memory for 2,000 parallel builds collapsing from 6.7 GB on Zig v1.3.14 to 609 MB on Rust v1.4.0, a ~20% smaller binary on Linux and Windows, and 2–5% HTTP gains 2. That’s a real jump, not a marketing chart.

The safety story is muddier. A pre-release audit surfaced by Weekly Rust counts 13,365 unsafe blocks — an unsafe density nearly double Deno’s — and at least five functions where undefined behavior is reachable from safe code, including a PathString::init that erases slice lifetimes and fails Miri 3. Reviewers describe much of the output as “Zig with Rust syntax,” which is what you’d expect when the porters are LLMs pattern-matching against the original.

Kelley called the original Bun source “horrifying” and full of “beginner energy,” saying the Zig core team long viewed the project as a “net liability” 4.

That’s the sharpest rebuttal to the “Rust saved us from Zig” framing: the crashes weren’t a language problem, they were a code-quality problem the Rust compiler happens to catch.

Collateral damage from moving fast

The same “boring is good” pipeline has already coughed up loud failures. In March 2026, Claude Code v2.1.88 shipped cli.js.map files that embedded ~512,000 lines of unobfuscated TypeScript source — traced in part to a Bun bundler bug that ignored production: true 5. Running a pre-release runtime in production has costs, and Anthropic paid one publicly.

The compiled-binary distribution model that lets Willison run strings on claude also broke the community’s ability to patch it. r/ClaudeCode users describe the shift from a readable cli.js bundle to a sealed executable as Anthropic “quietly killing” third-party CLI tooling and custom hook injection 6.

What’s actually being tested here

Willison’s post is a fun forensics moment. The real experiment is whether a codebase of ~500k–950k lines, ported by Claude, reviewed largely by Claude, and shipped to millions of developers inside Claude Code, stays maintainable when the 13k unsafe blocks start biting 3. The startup number is the headline. The audit trail is the story.


NeMo Automodel wires Diffusers into H100 fine-tuning clusters

Source: huggingface-blog · published 2026-07-17

TL;DR

  • NVIDIA and Hugging Face wired Diffusers model IDs into NeMo Automodel, with FSDP2 and pipeline parallelism toggled via YAML.
  • FLUX.1-dev full fine-tune hits 4.44 img/s/GPU on 8×H100 at 512px, with 63.9 GiB peak memory.
  • Same FLUX.1 backbone that NVIDIA trained in 12.5 minutes on 1,152 Blackwell GPUs at MLPerf v5.1 using NVFP4.
  • Issue tracker flags FSDP2 checkpoint slowdowns above 40B params, broken Context Parallelism with sequence packing, and FSDP2 reverse-pass precision anomalies.

The pitch: parallelism as a config variable

The bet in NeMo Automodel is that distributed fine-tuning of large diffusion models should be a YAML edit, not a refactor. Point pretrained_model_name_or_path at a Diffusers ID, pick your sharding scheme (FSDP2, tensor, expert, context, pipeline), and the same finetune.py scales from one H100 to a full cluster. Checkpoints round-trip back to the Hub. The integration targets flow-matching models specifically, with pre-cached VAE latents and text embeddings plus multi-resolution bucketed dataloading to keep GPUs fed.

Supported recipes cover the current DiT frontier: FLUX.1-dev (12B) and FLUX.2-dev (32B) for images; Wan 2.1 (1.3B/14B), Wan 2.2 T2V A14B (27B MoE), and HunyuanVideo 1.5 (13B) for video; Qwen-Image (20B MMDiT) for multimodal. Both full fine-tune and LoRA are wired in.

The 8×H100 numbers

ModelTaskStep timeThroughput/GPUPeak mem
FLUX.1-devT2I 512²0.902s4.44 img/s63.9 GiB
Qwen-ImageT2I 512²0.974s5.15 img/s
Wan 2.1-14BT2V 512²×49f3.798s0.263 clips/s
HunyuanVideo 1.5T2V 512²×49f5.926s0.170 clips/s15.9 GiB

Independent adoption coverage lines up: reviewers report ~35.5 img/s aggregate for FLUX.1-dev full fine-tune on the same 8×H100 config and >53 img/s for LoRA 7. That’s the local ceiling. The bigger story is vertical — NVIDIA’s MLPerf Training v5.1 submission trained FLUX.1 in 12.5 minutes on 1,152 Blackwell GPUs using NVFP4, and was the only vendor to submit a FLUX.1 result at all 8. Automodel is how you get onto that curve from a Diffusers checkpoint without hand-rolling the distributed code.

The rough edges NVIDIA doesn’t lead with

The blog’s “toggle parallelism via YAML” pitch works cleanly inside the shipped recipes. Step outside them and the issue tracker gets honest: FSDP2 checkpoint saves become significantly slower for models above ~40B parameters, Context Parallelism combined with sequence packing is currently broken, and precision anomalies have been observed in the FSDP2 reverse pass 9. The 26.06–26.08 roadmap explicitly targets these — a Model Capability Registry to track which parallelism strategies are validated per model family, mixed-weight FP8+BF16 FSDP2 fixes, and container/uv dependency cleanup 10. That’s a healthy acknowledgment, but it means FLUX.2-dev at 32B or Wan 2.2 MoE at 27B are exactly the configurations most likely to hit the sharp edges today.

Who this is for

Not you, if you have a 4090. Independent comparisons of the fine-tuning stack put ai-toolkit as the default for 24GB consumer cards and note diffusion-pipe lagging on prosumer FLUX LoRA — NeMo isn’t contesting that tier 11. Adoption commentary flags a persistent “usability wall” for non-enterprise users who still find NeMo buggy versus ComfyUI when juggling heterogeneous VRAM 7. FLUX.2-dev makes the split concrete: BF16 weights alone need ~90GB to load, so anyone off the data-center path is stuck with FP8/NVFP4 or QLoRA regardless of framework.

The honest read: this is the Hugging-Face-native front door to NVIDIA’s scaling stack, and it’s a real one — provided you have the cluster the stack was designed for.


Willison ships a browser SQLite EXPLAIN annotator

Source: simon-willison · published 2026-07-18

TL;DR

  • Simon Willison shipped a browser tool that annotates SQLite’s EXPLAIN and EXPLAIN QUERY PLAN output in plain English.
  • The stack runs SQLite in Pyodide in WASM, entirely client-side, with Claude “Fable” writing most of the code.
  • EXPLAIN QUERY PLAN is undocumented — a debugging aid whose format can shift between releases.
  • A single ANALYZE gave Julia Evans a 100× speedup (5s → 0.05s) — the kind of win better plan-reading unlocks.

What the tool does

Point it at a SQL query and it runs the query against a local SQLite instance, captures both diagnostic outputs, and hangs a natural-language gloss on each row of the query plan and each VDBE opcode. SCAN gets flagged as a full-table scan, SEARCH as an index lookup, and temporary B-trees for sorting get called out as likely performance smells 12. On the bytecode side, instructions like OpenRead, Column, and Next get one-line descriptions of what they do to cursors and registers.

The entire thing runs in the browser. No backend, no signup — Pyodide ships CPython and SQLite compiled to WebAssembly, so your query and data never leave the tab.

flowchart LR
    Q[User SQL query] --> P[Pyodide + SQLite in WASM]
    P --> E1[EXPLAIN QUERY PLAN]
    P --> E2[EXPLAIN bytecode]
    E1 --> A[LLM-derived annotations]
    E2 --> A
    A --> U[Interactive explanation]

Why this fills a real gap

Willison’s motivation was a throwaway line from Julia Evans — “maybe one day I’ll learn to read a query plan” — but Evans’ same write-up is the one where a single ANALYZE dropped a query from 5 seconds to 0.05 seconds 13. That’s the shape of the problem: SQLite performance often hinges on plan-reading, but SQLite is unusually opaque compared to Postgres because it has no native EXPLAIN ANALYZE. Plans are predictions, not measurements.

Other people are attacking the same gap from different angles. The open-source Tabularis client is building a “Visual EXPLAIN” that parses the id/parent columns and renders the plan as an interactive ReactFlow tree, on the theory that complex joins and subqueries are “nearly impossible to track mentally in the standard list format” 14. Willison’s tool goes the natural-language route instead of the graph route.

The foundation is shaky, and he says so

Willison’s own “approach with caution” caveat is more warranted than it sounds. Longtime SQLite contributors have argued that EXPLAIN QUERY PLAN is deliberately undocumented, intended for interactive debugging only, and tools that parse it “may break frequently” 15. The EXPLAIN bytecode layer is even more volatile — it exposes VDBE internals that carry no compatibility promise.

That matters because LLM commentary on database internals has a documented failure mode. In a separate experiment, a model reimplemented SQLite in Rust and produced 576,000 lines that compiled and passed basic tests but ran 20,171× slower than the original, because it captured opcode syntax while missing semantic details like index flags 16. Syntactically right, semantically wrong is exactly the risk profile for AI-generated bytecode annotations.

The Claude Fable model doing the code generation has its own critics — developers report it’s roughly 3× slower than predecessors and tends to over-map environments before acting 17 — but that’s a build-time concern, not a runtime one.

Where it’s most trustworthy

The annotations most likely to be correct are the ones grounded in stable, well-known plan vocabulary: SCAN vs SEARCH, index-vs-no-index, temporary B-trees, join order. Those map to language SQLite documentation has used for years. Treat it as a teaching aid that turns opaque output into a starting hypothesis — not as an authoritative profiler. For anything load-bearing, the sqlite3 CLI and the official docs remain the ground truth.

Footnotes

  1. Anthropic — ‘Anthropic acquires Bun’ announcementhttps://www.anthropic.com/news/anthropic-acquires-bun-as-claude-code-reaches-usd1b-milestone

    Claude Code is distributed as a single-file, 51MB binary that utilizes Bun’s ability to compile JavaScript into self-contained executables… Bun’s runtime reportedly begins execution in roughly three milliseconds

  2. grigio.org — ‘Bun 1.4: the controversial AI-driven rewrite’https://grigio.org/bun-1-4-the-controversial-ai-driven-rewrite-from-zig-to-rust/

    In benchmarks executing 2,000 parallel builds, memory consumption plummeted from 6.7 GB in the Zig-based v1.3.14 to just 609 MB in v1.4.0

  3. Weekly Rust Substack — ‘The Great Zig to Rust Experiment’https://weeklyrust.substack.com/p/the-great-zig-to-rust-experiment

    A pre-release technical audit of the resulting Rust port identified 13,365 unsafe blocks, representing an unsafe density nearly double that of the Deno runtime… at least five unsound functions were initially discovered where UB was reachable from safe code

    2
  4. Andrew Kelley, ‘My thoughts on the Bun Rust rewrite’ (via r/Zig)https://www.reddit.com/r/Zig/comments/1urnjvh/my_thoughts_on_the_bun_rust_rewrite_andrew_kelly/

    Kelley characterized the original Bun source code as ‘horrifying’ and filled with ‘beginner energy,’ claiming that the Zig core team had long viewed the project as a ‘net liability’ to the Zig Software Foundation

  5. Medium (neonmaxima) — Claude Code source leak writeuphttps://medium.com/@neonmaxima/anthropic-left-claude-codes-source-code-in-its-npm-package-for-anyone-to-download-772b06f19320

    Version 2.1.88 was published with cli.js.map files that accidentally embedded… the original, unobfuscated TypeScript source, totaling over 512,000 lines… traced to… a known bug in Bun’s bundler, which reportedly ignored production: true flags

  6. r/ClaudeCode — ‘Anthropic quietly killed third-party CLI tooling’https://www.reddit.com/r/ClaudeCode/comments/1sowe2d/anthropic_quietly_killed_thirdparty_cli_tooling/

    the move from a readable cli.js bundle to a compiled binary prevents community patching and custom hook injection, effectively ‘locking down’ the CLI

  7. hyper.ai — NeMo 2.0 / Automodel adoption reviewhttps://hyper.ai/en/stories/2369b1fe4d4a565cd7b4659bb2f7c135

    Full fine-tuning of FLUX.1-dev at 512px reaches ~35.5 images/s on 8×H100 and LoRA exceeds 53 images/s, but a ‘usability wall’ persists for non-enterprise users who still find NeMo buggy compared with ComfyUI when sharding VRAM on heterogeneous hardware.

    2
  8. Wccftech — MLPerf Training v5.1 coveragehttps://wccftech.com/nvidia-blackwell-ultra-gb300-nvl72-secures-win-all-seven-mlperf-ai-training-benchmarks/

    NVIDIA’s submission trained the new FLUX.1 text-to-image benchmark in 12.5 minutes on 1,152 Blackwell GPUs using NVFP4 precision — and was the only vendor to submit a FLUX.1 result this round.

  9. NVIDIA-NeMo/Automodel GitHub issue #2952https://github.com/NVIDIA-NeMo/Automodel/issues/2952

    Checkpoint saving times with FSDP2 can be significantly longer than anticipated for models exceeding 40 billion parameters; Context Parallelism combined with sequence packing is currently broken, and precision anomalies have been reported during the FSDP2 reverse process.

  10. NVIDIA-NeMo/Automodel roadmap (issue tracker)https://github.com/NVIDIA-NeMo/Automodel/issues/2952

    Roadmap cycles 26.06–26.08 add a ‘Model Capability Registry’ to track which parallelism strategies are validated per model family, plus fixes for mixed-weight FP8+BF16 FSDP2 handling and container/uv dependency predictability.

  11. YouTube comparison — ai-toolkit vs SimpleTuner vs diffusion-pipehttps://www.youtube.com/watch?v=se3qpLkJnrk

    ai-toolkit remains the standard for 24GB consumer cards, while diffusion-pipe is reportedly slower than competitors for FLUX LoRA on an RTX 4060 Ti — leaving NeMo squarely aimed at multi-node H100 clusters rather than prosumer setups.

  12. llm-works.ai coverage of Willison’s toolhttps://news.llm-works.ai/

    It distinguishes between ‘SCAN’ (full table scans) and ‘SEARCH’ (index-based lookups), highlighting potential performance pitfalls like missing indexes or the use of temporary B-trees for sorting

  13. Developers Digest recap of Julia Evans posthttps://www.developersdigest.tech/blog/sqlite-production-tips-julia-evans

    running the ANALYZE command resulted in a 100x performance boost for specific queries, dropping execution time from 5 seconds to 0.05 seconds

  14. r/sqlite thread on Tabularis ‘Visual EXPLAIN’https://www.reddit.com/r/sqlite/comments/1shxlzd/building_visual_explain_query_plan_into_an/

    Tabularis parses the id and parent columns to reconstruct and render an interactive tree graph using ReactFlow… complex joins and subqueries are nearly impossible to track mentally in the standard list format

  15. sqlite-users mailing list (narkive archive)https://sqlite-users.sqlite.narkive.com/8et4yS0k/explain-me-explain-and-explain-query-plan

    EXPLAIN QUERY PLAN is not formally documented and is intended only for interactive debugging, meaning tools that parse its output may break frequently

  16. Hacker News thread (via query 5 synthesis)https://news.ycombinator.com/item?id=42235796

    576,000 lines of code successfully compiled and passed basic tests but executed 20,171 times slower than the original… correctly implemented the opcode syntax but failed to include critical performance checks, such as index flags

  17. r/ClaudeAI discussion of Mythos/Fable tierhttps://www.reddit.com/r/ClaudeAI/comments/1u1h6o7/team_mythos_is_hype_is_not_doing_too_well_right/

    up to three times slower than predecessors… often spends excessive time ‘mapping’ environments, leading to timeouts on tasks that simpler models finish quickly

Jack Sun

Jack Sun, writing.

Engineer · Bay Area

Hands-on with agentic AI all day — building frameworks, reading what industry ships, occasionally writing them down.

Digest
All · AI Tech · AI Research · AI News
Writing
Essays
Elsewhere
Subscribe
All · AI Tech · AI Research · AI News · Essays

© 2026 Wei (Jack) Sun · jacksunwei.me Built on Astro · hosted on Cloudflare