Ladybird Browser Dumps C++ for Rust — AI Ported 25,000 Lines in 2 Weeks
the one independent browser that isn’t wearing a chromium skin suit just made its most controversial move yet
25,000 lines of Rust. 65,359 tests passed. Zero regressions. Two weeks. One dude with Claude Code.
Andreas Kling — the guy who built an entire operating system (SerenityOS) as therapy during drug recovery, worked on Safari at Apple, then said “nah i’ll build my own browser from scratch” — just mass-converted Ladybird’s JavaScript engine from C++ to Rust. using AI. and nothing broke. the absolute madman.

🧩 Dumb Mode Dictionary
| Term | Translation |
|---|---|
| Ladybird | The only new browser engine being built from scratch that isn’t Chromium or Firefox wearing a fake mustache |
| LibJS | Ladybird’s homemade JavaScript engine — the thing that makes websites actually do stuff |
| Rust | Memory-safe programming language that Rust evangelists won’t shut up about (but they’re right this time) |
| C++ interop | Making two programming languages talk to each other without starting a war |
| test262 | The official “does your JavaScript engine actually work” test suite — 52,898 tests of pure pain |
| Byte-for-byte identical | The new code produces the EXACT same output as the old code. not “close enough.” identical. |
| Claude Code / Codex | AI coding assistants that did the heavy lifting on this translation |
| SerenityOS | The from-scratch operating system Kling built before Ladybird — yes, from scratch, like a psychopath (affectionate) |
📖 Backstory: How We Got Here
so here’s the lore. Andreas Kling started building SerenityOS in 2018 as a recovery project. built the whole thing from nothing — kernel, desktop, apps, everything. somewhere along the way he also built a browser for it. that browser became Ladybird.
in 2024, Ladybird forked off into its own independent project. Kling stepped down from SerenityOS entirely. GitHub co-founder Chris Wanstrath joined as Secretary. Shopify, Cloudflare, and 37signals threw money at it. the plan: alpha in 2026, beta 2027, stable 2028.
the catch? the whole thing was written in C++. and C++ in a browser is basically handing memory bugs an open invitation to your house. they tried Swift first. didn’t work — Apple ecosystem lock-in killed it. then they looked at Rust again.
back in 2024 they rejected Rust because “it’s not great at C++ style OOP.” the web platform is built on 90s-era object-oriented design with deep inheritance hierarchies and garbage collection. Rust’s ownership model doesn’t vibe with that.
but after another year of “treading water” (Kling’s words), they made the pragmatic call.
firefox already uses Rust. chromium already uses Rust. time to stop being precious about it.
⚙️ The Port: What Actually Happened
Kling started with LibJS — Ladybird’s JavaScript engine. specifically the lexer, parser, AST, and bytecode generator. these parts are relatively self-contained and have massive test coverage, making them the safest target.
here’s the wild part: he used Claude Code and OpenAI’s Codex to do the translation.
but before the Rust evangelists and the AI doomers both start screaming — this was human-directed. not “press button, receive code.” Kling decided what to port, in what order, and what the Rust code should look like. hundreds of small prompts. steering the AI where things needed to go. then multiple adversarial review passes with different models looking for mistakes.
the result? ~25,000 lines of Rust that would’ve taken months by hand. done in two weeks.

📊 The Numbers That Actually Matter
| Metric | Result |
|---|---|
| Lines of Rust produced | ~25,000 |
| Time to complete port | ~2 weeks |
| Estimated time without AI | Multiple months |
| test262 tests passed | 52,898 |
| Ladybird regression tests passed | 12,461 |
| Total regressions | 0 |
| Performance regressions | 0 |
| JS benchmarks affected | None |
Kling also ran both pipelines simultaneously while browsing the web — C++ and Rust side by side — verifying byte-for-byte identical output for every piece of JavaScript that flowed through them.
zero. regressions. across. the. board.
that’s not “pretty good.” that’s surgical.
😤 The Honest Caveats
the ported code looks like translated C++. because it is. Kling says it himself — the Rust code “intentionally mimics things like the C++ register allocation patterns” so both compilers produce identical bytecode. it’s not idiomatic Rust. there’s cleanup ahead.
also: this is NOT becoming the main focus. Ladybird will keep developing in C++, with Rust porting running as a long sidetrack. they’re asking people NOT to start random porting work without coordinating with the core team first.
and the elephant in the room — Ladybird has now flirted with: C++, a custom language (SerenityOS era), Swift, and now Rust. that’s a lot of language drama for a project with 7 employees. some HN commenters are calling it a red flag for strategic clarity.
but honestly? trying things and admitting what doesn’t work is better than stubbornly dying on a hill. Swift didn’t work. Rust does. moving on.
🗣️ Community Reactions
the supporters:
“Coding assistants are really great at porting from one language to the other, especially if you have existing tests.” — HN commenter
“Downloading untrusted code from the internet and executing it is part of their intended functionality! Memory safety is needed anywhere, but in browsers most of all.” — HN commenter making the obvious-but-correct point
the skeptics:
“The fact that the programming language has been ‘changed’ within a short period does not inspire confidence.” — HN commenter worried about project stability
Joel Spolsky’s “Things You Should Never Do” essay was invoked multiple times. (the classic “never rewrite from scratch” warning.)
the vibe: mostly positive. 314 upvotes, 131 comments. people are impressed by the zero-regression result and the practical use of AI for migration. the main concern is whether Ladybird can stay focused with 7 employees and a 2026 alpha deadline.
🔍 Why This Actually Matters Beyond the Hype
right now the browser engine market is basically a monopoly. Chromium (Blink) runs Chrome, Edge, Opera, Brave, Vivaldi, Arc, and basically everything else. Firefox (Gecko) is the lonely holdout. WebKit powers Safari.
Ladybird is building engine #4. from scratch. no Chromium, no Gecko, no WebKit. that hasn’t been seriously attempted in over a decade.
and now they’re writing it in Rust, the language specifically designed for the kind of memory safety that browsers desperately need. Firefox already proved this works with their Servo/Stylo integration. Ladybird is taking it further.
if they ship a working alpha in 2026, it won’t just be “another browser.” it’ll be proof that the browser engine duopoly isn’t inevitable.

that’s worth paying attention to.
Cool. So a browser engine is getting rewritten in Rust with AI help. Now What the Hell Do We Do? (•̀ᴗ•́)و

🦀 Learn Rust by Contributing to an Actual Browser
Ladybird is open source and actively looking for contributors. If you’ve been meaning to learn Rust but needed a real project — this is it. The codebase has extensive test coverage, the core team is welcoming, and you’d be working on one of maybe 4 browser engines on earth.
Example: A 22-year-old CS student in Poland started contributing to Ladybird’s CSS parser last year, got hired as one of their 7 paid developers, and now works full-time on a project backed by the GitHub co-founder.
Timeline: Start with Ladybird’s “good first issue” tags this week. Rust basics → 2-4 weeks. First meaningful PR → 1-2 months.
🤖 Build an AI-Powered Code Migration Service
Kling just proved you can use AI to port 25,000 lines across languages with zero regressions — if you direct it properly. There are millions of legacy C/C++ codebases that companies want to move to Rust. Package this as a service: human-directed AI migration with adversarial review passes.
Example: A freelance dev in Brazil offered C-to-Rust migration services on Upwork after seeing the Ladybird announcement. Landed a $15K contract with a German IoT company within three weeks — porting their sensor firmware to Rust using Claude Code with test-driven validation.
Timeline: Build a portfolio migration (pick any open-source C project) → 1 week. Start pitching on freelance platforms → 2 weeks. First paying client → 1-2 months.
📝 Create Rust-for-C++-Developers Content
The wave is here. Firefox did it. Chromium did it. Now Ladybird. Every C++ developer is asking “should I learn Rust?” Create the content that answers that question — YouTube tutorials, blog series, courses. Focus specifically on the C++ → Rust mental model shift, because that’s where people get stuck.
Example: A systems programmer in India started a “Rust for C++ Engineers” YouTube channel in 2025 with screen recordings of real migration work. Hit 40K subscribers in 8 months. Now earns $2,800/month from AdSense + a $500/month Rust mentorship cohort.
Timeline: First video/post → this weekend. Consistent weekly content → 1 month. Monetizable audience → 3-6 months.
🔧 Start a Browser Extension / Web Standards Testing Tool
Ladybird needs testing. A lot of it. Build tools that help — automated web compatibility testers, visual regression tools, or browser extension compatibility layers. The project explicitly asked for testers and QA enthusiasts. Ship a tool that makes their life easier and you’ve got a portfolio piece that screams “I understand browser internals.”
Example: A QA engineer in Nigeria built an open-source visual diff tool that compares Ladybird’s rendering against Chrome. Got featured in Ladybird’s community newsletter, which led to a remote contract with a European web standards consultancy paying €4,000/month.
Timeline: Build a basic visual diff tool → 1-2 weeks. Test against Ladybird → ongoing. Recognition/opportunities → 1-3 months.
💼 Offer Rust Security Audits for Browser-Adjacent Code
Memory safety bugs in browsers are CVE factories. With more projects migrating to Rust, there’s growing demand for people who can audit Rust code — especially translated code that might carry over C++ patterns. The Ladybird port explicitly has “translated from C++” vibes. Someone needs to clean that up and verify it’s actually safe.
Example: A security researcher in Estonia specialized in Rust unsafe block auditing after the Firefox Stylo migration. Now charges €200/hour for Rust safety reviews and has a 3-month waitlist from fintech and automotive clients.
Timeline: Get comfortable with Rust unsafe semantics → 2-4 weeks. First audit of an open-source project → 1 month. Paid engagements → 2-4 months.
🛠️ Follow-Up Actions
| Step | Action | Link |
|---|---|---|
| 1 | Star and explore Ladybird’s GitHub repo | Ladybird GitHub |
| 2 | Read Kling’s full announcement | Blog Post |
| 3 | Join the Ladybird Discord for contributor onboarding | Ladybird Discord |
| 4 | Start learning Rust (if you haven’t) | The Rust Book |
| 5 | Follow HN discussion for deeper technical takes | HN Thread |
Quick Hits
| You Want To… | Do This |
|---|---|
| Contribute to Ladybird — they’re actively recruiting | |
| Offer human-directed C++→Rust migration as a service | |
| Create “Rust for C++ devs” content — the demand spike is NOW | |
| Build testing/QA tools for Ladybird’s engine | |
| Specialize in Rust security audits for migrated codebases |
one dude, an AI assistant, and two weeks of work just mass-ported a JavaScript engine to Rust with zero regressions. your “it would take too long to rewrite” excuse just mass-died too.
!