Ladybird browser to start using Swift language this fall
Swift and LLVM Fork
- Discussion clarifies that Swift uses an open-source LLVM fork, not a closed one.
- Some ask why changes aren’t upstreamed to reduce Apple’s maintenance burden.
- Replies: Apple can’t dictate LLVM’s direction, upstreaming takes time and may be rejected, and permissive licenses allow long-lived forks.
Language Choice for Ladybird (Swift vs Rust vs C++)
- Many expected Rust for guaranteed memory safety; others note Swift is also memory-safe and now adds data-race safety in Swift 6.
- Swift’s C++ interop is seen as crucial for incremental migration instead of a big-bang rewrite.
- Critics compare this to game studios switching engines mid-project and predict schedule slips or failure.
- Some argue staying in C++ is safer given team expertise; others say moving off a memory-unsafe language is worth early pain.
Rust: Strengths, Weaknesses, and Community
- Rust praised for memory safety, ecosystem, and reliability, especially for “input A → output B” programs.
- Several claim Rust is clunky for long-lived programs with complex, cyclic object graphs; patterns exist but are awkward.
- Big subthread on “toxic community” and “Rust evangelism”:
- Some report dismissive or harassing behavior and vandalism of C++ resources.
- Others say their day-to-day Rust interactions are helpful and toxicity is overblown or mostly meme-level.
- Debate over what a code of conduct can realistically enforce.
Swift Capabilities and Ecosystem
- Swift described as memory-safe, ARC-based, with improving concurrency (async/await, actors) and structured cancellation.
- Positive experiences reported with async/await; actors seen as useful but not a panacea.
- Cross-platform story: LSP and VS Code are “usable now,” but tooling and package ecosystem feel immature compared to Node or .NET.
- Concerns about slow compilation and Apple-centric governance; some worry about being tied to Apple’s priorities.
- Others see Ladybird as a chance to grow non-Apple Swift, similar to how Servo helped shape Rust.
Alternative Languages (C#, Zig, Jai, etc.)
- Some argue C#/.NET would be a stronger choice: good AOT performance, mature tooling, many bindings, and cross-platform reach; main knock is GC and perception in “systems” contexts.
- Zig mentioned but criticized for lacking a strong use-after-free story.
- Jai noted as unsafe and missing key features; not seen as viable here.
Project Direction, Politics, and Viability
- Some distrust the decision, speculating about funding or “marketing” motives; others say timeline (non-profit + decoupling from SerenityOS) better explains it.
- Prior disputes over pronoun use and “no politics” policies in related projects color how some perceive the move and comments about “toxic” communities.
- Overall sentiment is sharply split between optimism (modern, safer stack; new contributors) and pessimism (tooling immaturity, mid-course language change, risk to project success).