Get AI summaries of any video or article — Sign up free
Ladybird On Swift vs Rust thumbnail

Ladybird On Swift vs Rust

The PrimeTime·
4 min read

Based on The PrimeTime's video on YouTube. If you like this content, support the original creators by watching, liking and subscribing to their content.

TL;DR

Rust was praised for systems-style input-to-output programming but criticized when modeling browser-like, object-oriented document structures.

Briefing

Ladybird’s Swift choice over Rust comes down to fit: Rust shines for input-to-output systems work, but it becomes tedious when developers try to model object-oriented, inheritance-heavy structures common in browser-style document models. In a recent evaluation, multiple people started Rust projects with excitement—fuelled by hype and momentum around the language—but returned frustrated once the work moved beyond “trivial” transformations into more complex modeling tasks.

The contrast shows up most sharply in how Rust handles browser-adjacent abstractions. The web stack’s core APIs were designed in the 1990s and reflect an object-oriented style inspired by Java and XML. That style relies on inheritance as a fundamental building block. Rust’s lack of inheritance makes it harder to express those patterns cleanly, turning otherwise straightforward modeling into repetitive, time-consuming work. The result: nobody had a good time when attempting to build in a browser-like paradigm, even though Rust felt “delightful” for classic C-style programs that take input and produce output.

The discussion also highlights a broader theme: language enjoyment often tracks with the kind of work a developer finds fun. Rust’s strengths—precise types, zero-cost abstractions, and low-level control—can be a joy for people who like thinking in terms of dispatch, interfaces, and exact behavior. But for developers who prefer procedural workflows, Rust’s required skill set can feel like mandatory overhead. Even when Rust’s safety and expressiveness are respected, the day-to-day friction can outweigh the benefits.

Zig enters as a counterpoint. Zig is described as pleasant and even “shockingly lovely” for building without heavy abstraction, but it demands constant attention to manual memory management. It also lacks an “amazing expressive type system,” making interface construction unusually hard—down to building vtables by hand. That tradeoff produces a different kind of tedium: less about Rust’s modeling friction, more about the ongoing mental tax of memory and interface plumbing.

Swift, by contrast, lands as a safe, modern language with strong object-oriented capabilities—positioned as even better than C++ in some respects. It uses value semantics and relies on ARC for memory management, which helps explain why it can feel both safer and more natural for real-world application structures. The team also points to Swift’s expanding platform support: Swift 6 is expected to improve cross-platform readiness beyond Apple ecosystems, including Linux and Windows.

Overall, the evaluation doesn’t frame Rust as “wrong,” but as task-dependent. Memory-safe languages are broadly favored, and the industry direction is toward safety. Still, the practical verdict is that Swift worked better with the “real world” patterns they needed—especially where object-oriented modeling and inheritance-like structures matter—while Rust’s best fit remained narrower.

Cornell Notes

The core takeaway is that Rust’s strengths don’t automatically translate to every application domain. In an evaluation, Rust felt excellent for systems-style programs that transform input to output, but it became tedious when developers tried to model browser-like, object-oriented document structures that rely on inheritance. Zig was also praised for pleasant, low-abstraction building, yet criticized for manual memory management and difficult interface construction (including hand-built vtables). Swift emerged as the practical alternative because it offers value semantics, strong object-oriented capabilities, and memory safety via ARC, with improving support across platforms as Swift 6 approaches. The result is a “best tool for the job” conclusion: language enjoyment and productivity depend heavily on the paradigm being modeled.

Why did Rust feel productive for some tasks but frustrating for others?

Rust was described as “delightful” for C-like programs that take input and produce output—where iteration over data and zero-cost abstractions shine. The friction appeared when work required modeling browser-style structures. Those environments lean on object-oriented patterns and inheritance as a core building block, and Rust’s lack of inheritance makes those models harder to express cleanly. Developers reported frustration once they moved beyond trivial transformations into more complex document/modeling work.

What role did inheritance (or its absence) play in the Rust-vs-Swift comparison?

The browser/document model was framed as heavily object-oriented, inspired by Java/XML-era APIs. Inheritance is treated as a fundamental “building block” for expressing those relationships. Rust’s missing inheritance forced developers into more tedious approaches for representing those structures, whereas Swift’s object-oriented capabilities were seen as a better match for that paradigm.

How did the discussion connect language choice to what developers find fun?

A key idea was that programming language preference often reflects what feels enjoyable day-to-day. Some people enjoy Rust’s precise type thinking and dispatch mechanics; others prefer procedural workflows. When a language’s required mental model doesn’t align with that preference, even strong features (like safety and expressiveness) can feel like mandatory overhead rather than empowerment.

What were the main criticisms of Zig in this conversation?

Zig was called pleasant for building directly, but it requires constant manual memory management—initializing and deinitializing correctly—described as “never fun.” Interface construction was also criticized for lacking an expressive type system, forcing developers to build vtables by hand. The combination made Zig feel less enjoyable than Rust for the kinds of abstractions being discussed.

What specific reasons made Swift look like the better fit in this evaluation?

Swift was characterized as a safe, modern language with strong object-oriented capabilities, potentially even outperforming C++ in some ways. It supports value semantics and uses ARC for memory management. The team also pointed to Swift’s growing cross-platform momentum (Linux and Windows), with Swift 6 expected to improve that readiness—making Swift feel more viable beyond Apple-centric environments.

Review Questions

  1. What kinds of application modeling tasks tended to expose Rust’s weaknesses in this discussion, and why?
  2. Compare the “tedium sources” for Rust and Zig as described here—what kinds of work created the friction in each case?
  3. Why did Swift’s combination of value semantics, object-oriented features, and ARC matter for the specific problems being targeted?

Key Points

  1. 1

    Rust was praised for systems-style input-to-output programming but criticized when modeling browser-like, object-oriented document structures.

  2. 2

    The lack of inheritance in Rust was a major reason object-oriented modeling became tedious in the browser paradigm.

  3. 3

    Zig was described as pleasant for direct building, but manual memory management and hand-built vtables made interface work hard.

  4. 4

    Language preference was framed as strongly tied to what developers find enjoyable: procedural vs type/dispatch-heavy workflows.

  5. 5

    Swift was selected as a safer, modern option with strong object-oriented capabilities and value semantics, using ARC for memory management.

  6. 6

    Swift’s cross-platform trajectory (including Swift 6) was treated as a practical factor in choosing it over Rust for real-world deployment needs.

Highlights

Rust felt “fantastic” for classic input-transform-output programs, but became tedious when developers tried to model browser-style object-oriented structures.
Inheritance was singled out as a key missing fit: Rust’s lack of inheritance made it harder to express the object-oriented web document model.
Swift’s value semantics plus ARC, paired with strong object-oriented capabilities, made it a more natural match for the needed real-world patterns.
Zig’s appeal came with a cost: manual memory management and difficult interface construction (including vtables) reduced day-to-day enjoyment.

Topics

Mentioned

  • ARC