4 ms·
LadyBird grew out of the SerenityOS project which was originally written in C++ (they've since moved to Jakt). All software for Serenity had to be written nativ
by BirAdam 1y ago
LadyBird grew out of the SerenityOS project which was originally written in C++ (they've since moved to Jakt). All software for Serenity had to be written natively for the OS, and C++ was the language originally supported there. Andreas had worked on browsers previously (notable Safari), and was already a seasoned C/C++/ObjC developer. While one can cite many valid reasons for using a C language for a browser (and OS), I think his experience and preferences were likely a large part of it.
- zelphirkalt 1y agoThe language is actually something that makes me look elsewhere. We already have enough sufficiently vulnerable browsers and other network related software. Choosing C/C++ as language may work to make something that works, and it may be in the realm of experience the people building it have. However, it does not make this browser stand out in terms of security/safety. While they may deliver tremendous work, that work is still "just" another Cee thingy. Experience tells us, that even elite C/C++ hackers will make mistakes regarding memory management. Mozilla slowly using more and more Rust in Firefox seems better from that perspective, if they are actually still trying to do so.
- LeFantome 1y agoAs stated elsewhere, the Ladybird team expects to move to Swift. There are still a couple blockers keeping them from doing so. They have actively rejected Rust as they see it as unsuitable for a heavily OOP code base. They see OOP as a great fit for implementing the web spec.
- zelphirkalt 1y agoI am far from a Rust expert. Only have tried it some time ago. I think Rust does a good job with forcing composition over inheritance, steering towards the approaches, that have been found to be superior to deep inheritance hierarchies, by its concepts of structs and traits implemented for structs, and not having classes. Of course, if one equates OOP with classes and inheritance, then Rust will not meet that definition of OOP.