To continue the development of the Ladybird browser, it has been decided to use the Swift language.

Developers of the experimental Ladybird browser have announced their intention to use the Swift programming language as the primary one for their project. The integration of Swift code is planned to begin in the fall, following the release of Swift 6 (using the Swift 5 branch is hampered by dependencies on an older version of Clang, which is incompatible with the current C++ codebase of Ladybird). Thanks to the ability to combine C++ and Swift code, the implementation of Swift will be gradual without rewriting the existing code.

The choice of Swift is driven by several advantages, including safe memory management practices, protection against race conditions, modern syntax, and ergonomics. The object-oriented nature of Swift is particularly significant for the Ladybird team as it allows for more accurate modeling of web specifications and the internal components of the browser. Developers also note the improving support for Swift on non-Apple platforms and active efforts towards compatibility with C++, paving the way for the gradual integration of the language into the project. Despite Swift's historical ties to Apple, the language is becoming increasingly independent, as evidenced by the relocation of its repository to a separate organization on GitHub.

Andreas Kling, the founder of the Ladybird project, shared his thoughts on Rust. In Kling's opinion, although Rust has an impressive ecosystem, it is less convenient for developing long-lived programs with large complex object graphs. Additionally, Kling characterized the Rust community as 'toxic.'

It is worth noting that the Ladybird browser was originally developed within the framework of the SerenityOS project. In June 2024, Andreas Kling, who previously worked at Nokia and was involved in the development of Safari, decided to separate the browser project from the operating system project and fully dedicate his time to its development. In July, the project received a donation of $1 million and began forming the non-profit Ladybird Browser Initiative.

The browser is written in C++ and is distributed under the BSD license. The project develops its own engine LibWeb, a JavaScript interpreter LibJS, a text and 2D graphics rendering library LibGfx, a regular expression engine LibRegex, an XML parser LibXML, an intermediate code interpreter for WebAssembly (LibWasm), a library for working with Unicode LibUnicode, a library for converting text encodings LibTextCodec, a parser for Markdown formatting (LibMarkdown), libraries with cryptographic primitives (LibCrypto, LibTLS), a library for working with archives LibArchive, libraries for audio and video playback (LibAudio, LibVideo), and the LibCore library with a common set of useful functions such as time conversion, input/output, and MIME-type handling.

Ladybird uses a multiprocess architecture, where the process handling the interface is separated from the processes responsible for processing web content, sending network requests, decoding images, and storing cookies. Handlers for image decoding and network interaction are isolated in separate processes for enhanced isolation and security. Each tab uses a dedicated process for web content processing, isolated from the rest of the system. The interface on macOS uses AppKit, on Android the platform's native GUI API, and on other platforms, Qt is used. It supports major web standards (the browser passes Acid3 tests), HTTP/1.1, and HTTPS. The graphical interface is designed in a classic style and supports tabs.

Source: opennet.ru

Buy reliable website hosting with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster