{"slug": "cruller-bun-s-zig-runtime-continued-on-zig-0-16", "title": "Cruller: Bun's Zig Runtime, Continued on Zig 0.16", "summary": "Cruller, a production-focused fork of the Bun runtime ported to vanilla Zig 0.16, reduces the official Bun 1.3.14 binary size by about 18% to 73.0 MiB while maintaining performance parity on a V8 Crypto pure-JS benchmark. The project, hosted at github.com/solenopsys/cruller, strips development-oriented subsystems to serve as a minimal runtime for pre-built JavaScript servers, supporting HTTP/1-3, WebSockets, fetch, and static serving.", "body_md": "Cruller: a production-focused Bun runtime ported to Zig 0.16\n\nCruller is a fork of the last Zig-based Bun release, reduced to the parts needed to run already-built production JavaScript servers and ported to vanilla Zig 0.16.\n\nRepository: [GitHub - solenopsys/cruller: fork of Bun · GitHub](https://github.com/solenopsys/cruller)\n\nThe project keeps JavaScriptCore, `Bun.serve`\n\n, HTTP/1-3, WebSockets, `fetch`\n\n, streams, `Blob`\n\n, `Request`\n\n/`Response`\n\n, static serving, and the module resolver for pre-built JavaScript. It removes the package manager, bundler/transpiler, shell, test runner, most CLI dispatch, N-API, SQL clients, archive support, and other development-oriented subsystems.\n\nThe interesting part of the port was separating the runtime from Bun’s old patched Zig build integration. Cruller now has a vanilla Zig 0.16 build graph, compatibility shims for APIs changed since Zig 0.15, and a generated-code embedding module so release builds remain portable instead of loading generated JS from the build directory at runtime.\n\nThe main design decision is to treat this as a runtime, not a general-purpose Bun replacement. A minimal launcher loads a pre-built entrypoint; features that require package installation, bundling, TypeScript transformation, or `bun test`\n\nare intentionally outside the scope.\n\nCurrent measurements on Linux x64, compared with the official Bun 1.3.14 binary:\n\n- Cruller\n`ReleaseFast`\n\nstripped runtime: 73.0 MiB\n- Official Bun runtime: 88.5 MiB\n- Size reduction: about 18%\n- V8 Crypto pure-JS benchmark: performance parity; Cruller’s median was about 2% higher, within normal run-to-run variance\n\nThe runtime is still work in progress, but Zig semantic checks, release builds, CJS/ESM entrypoints, Node path tests, and an HTTP `Bun.serve`\n\nplus built-in `fetch()`\n\nsmoke test currently pass.\n\nSupported Zig versions\n\n- Zig 0.16.0\n- Linux x64 is the currently supported build target\n\nSuggested topic tags: `showcase`\n\n, `zig-0-16`\n\n, `llm`\n\nAI / LLM usage disclosure\n\nAI was used as an engineering assistant for parts of the Zig 0.16 migration, build/debug investigation, and focused test work. The project scope, architecture decisions, review of changes, and build/test verification remain maintainer-directed. This is not a purely AI-generated project.", "url": "https://wpnews.pro/news/cruller-bun-s-zig-runtime-continued-on-zig-0-16", "canonical_source": "https://ziggit.dev/t/cruller-buns-zig-runtime-continued-on-zig-0-16/16734", "published_at": "2026-07-23 05:40:20+00:00", "updated_at": "2026-07-23 05:52:13.952873+00:00", "lang": "en", "topics": ["developer-tools"], "entities": ["Cruller", "Bun", "Zig", "solenopsys", "JavaScriptCore"], "alternates": {"html": "https://wpnews.pro/news/cruller-bun-s-zig-runtime-continued-on-zig-0-16", "markdown": "https://wpnews.pro/news/cruller-bun-s-zig-runtime-continued-on-zig-0-16.md", "text": "https://wpnews.pro/news/cruller-bun-s-zig-runtime-continued-on-zig-0-16.txt", "jsonld": "https://wpnews.pro/news/cruller-bun-s-zig-runtime-continued-on-zig-0-16.jsonld"}}