April 8, 2026

Lowercase vs. Caps Lock: FIGHT!

Building a JavaScript runtime in one month

Tiny 2MB JavaScript engine drops — sparks “AI slop” brawl and newbie panic

TLDR: A developer says he built “Ant,” a 2MB JavaScript engine in a month and posted the code. Comments erupted into a fight over authenticity—accusations of AI-written hype—while beginners asked how to learn the internals, turning the thread into equal parts gatekeeping, curiosity clinic, and meme factory.

A solo dev claims he built Ant, a tiny 2MB JavaScript engine in one month, and the internet immediately split into two camps: “whoa” and “who wrote this, a bot?” His post walks through packing data into number bits (a clever space-saving trick), wrestling with garbage collection (the code that cleans up memory), and hacking features together by reading MDN — all in poetic lowercase. But the vibe shifted fast when one top comment sneered that the style was trying to look “less AI-generated,” and another blasted it as “AI slop” on the front page. Ouch.

Amid the snark, a different mood emerged: curious beginners begged for the roadmap. “How do you even learn how JavaScript works inside?” “Do I really have to read Google’s massive V8 code?” “How much C/C++ do I need?” It turned into a classic forum duel: authenticity police vs. aspiring builders, with lowercase jokes flying (“caps lock is garbage-collected”) and people squinting at the 2MB claim like it’s a magic trick. Love it or hate it, the repo’s on GitHub and the dev’s story reads like a sleepless sprint powered by coffee and chaos. The real headline? One month, one tiny engine, and one very loud comment section.

Key Points

  • The author built Ant, a ~2 MB JavaScript runtime in about a month, with source code, tests, and documentation on GitHub.
  • Ant is designed to be embeddable in C, avoiding large dependencies like V8 or Node; prior minimal Deno attempts were insufficient.
  • All JavaScript values are represented via NaN-boxing in a single 64-bit integer (jsval_t), relying on IEEE 754 unused NaN encodings and compile-time size checks.
  • Early features included numeric operations, string built-ins, a rudimentary CommonJS module system, and later variables, functions, loops, arrow functions, IIFEs, optional chaining, and nullish coalescing.
  • Garbage collection was the primary obstacle, with repeated attempts (manual free-list and external GC integration) causing breakages and performance issues.

Hottest takes

“It’s like he thought it’d look less AI-generated if he just stopped capitalizing” — yesitcan
“Why is this ‘AI slop’ on the front page?” — opem
“How do you actually learn how JS works inside out… and what level of C/C++ do you need?” — vivzkestrel
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.