Closing this as we are no longer pursuing Swift adoption
Reason Swift Adoption Was Dropped
- Official commit message: Swift work had “made no progress for a very long time,” so it was removed to acknowledge it wasn’t going anywhere.
- Commenters infer the practical cause as repeated build breakage and immature Swift–C++ interop: conflicting C++ libs, operator/version issues, fragile CMake integration.
- Several people note Ladybird is highly productivity‑ and milestone‑driven; sinking time into a language migration instead of browser features was seen as unjustified.
C++ vs Safer Languages for Browsers
- Some argue C++ is “battle tested” and every major browser uses it, so sticking with it is pragmatic.
- Others counter that browsers are “stuck” with C++, and large projects (Chromium, Firefox) are actively moving hot paths to safer languages or safer subsets; building a brand‑new browser in C++ is seen as repeating old mistakes.
- Discussion of a “safe subset of C++”: skeptics say this is largely aspirational; even with modern STL and ranges, memory‑unsafety bugs keep appearing (Chromium CVEs mentioned).
Swift vs Rust (and Other Language Choices)
- Ladybird previously compared Swift and Rust and chose Swift, citing better OO support and C++ interop for their existing OOP-heavy C++ codebase.
- Critics note this prediction failed in practice: Swift’s C++ interop was too flaky; Rust might have been a better long‑term bet.
- Rust is criticized as awkward for large, cyclic object graphs (DOM/GUI), good for short-lived A→B transforms, and having a “toxic” community. That aligns with why Ladybird avoided it.
- Some suggest D, Go, C#, or memory-safe C/C++ subsets, but there’s no consensus “best” language.
Assessments of Swift and Apple’s Ecosystem
- Multiple commenters describe Swift as:
- Overly complex for its age.
- Slow to compile.
- Designed primarily around Apple’s needs (Obj‑C interop, ABI, no GC), not general-purpose use.
- Weakly “open source” given Apple’s culture and OSS restrictions on employees.
- Others defend Swift as pleasant, expressive, and with strong C++ interop for many use cases; the problem here is framed as tooling maturity and lack of Swift expertise on Ladybird, not inherent unsuitability.
Views on Ladybird’s Direction and Alternatives
- Some see frequent big‑picture shifts (Swift, Jakt, etc.) as ADHD‑like and risky for a donation‑funded project.
- Others push back: Ladybird split from a “everything from scratch” OS, dropped much homegrown infrastructure, and is described as intensely pragmatic and fast‑moving.
- Comparisons to Servo:
- Servo is praised for modular Rust components but criticized for slow visible progress and complexity.
- Several predict Ladybird will become “usable” sooner than Servo, despite starting later and using C++.
Broader Rust/LLVM and Community Dynamics
- Long subthread on LLVM and its designer: some call LLVM and Swift “successful messes” (slow, unstable ABI, so‑so optimization); others strongly disagree, pointing to LLVM’s ubiquity and lack of serious alternatives.
- Some compiler authors complain about LLVM complexity and performance, but others note that highly optimized languages overwhelmingly target LLVM.
- Rust’s community is characterized by some as aggressively evangelistic and “toxic,” with frustration at Rust being injected into every language discussion; others say simply proposing Rust isn’t toxic in itself.
Miscellaneous Technical Points
- JS/privacy: one commenter hopes Ladybird will implement Tor‑style fingerprint‑resistant JS behavior; others warn this would break many mainstream sites or get flagged as bots.
- Interop: experience reports show Swift C++ interop is powerful but spotty; often a C or ObjC++ shim is still needed.