Das neue Werk des SerenityOS-Autors: Ladybird, ein plattformübergreifender Webbrowser

Andreas Kling, Autor des SerenityOS -Systems, stellte kürzlich sein plattformübergreifendes Open-Source-Browserprojekt vor: Ladybird.

Der Ladybird- Browser wurde am 4. Juli dieses Jahres geboren.Die anfängliche Entwicklung von Ladybird war als Debugging-Tool für die "LibWeb"-Browser-Engine des SerenityOS-Systems, und dann wollte Andreas eine einfache GUI dafür bauen. Mit der kontinuierlichen Verbesserung von Ladybird stellte Andreas zwei Monate später fest, dass er den größten Teil der Entwicklung eines Webbrowsers abgeschlossen hatte, Ladybird wurde als plattformübergreifender Webbrowser angesehen.

(Visualisierung des Ladybird-Browsers)

Der Ladybird-Browser basiert auf den LibWeb- und LibJS-Engines von SerenityOS, wobei LibWeb im Jahr 2019 entwickelt wurde und damals als LibHTML bekannt war , und seine JavaScript-Engine LibJS im Jahr 2020 entwickelt wurde.

Grundlegende Architektur

Sowohl LibWeb als auch LibJS sind neue Engines. Der Autor hat in der Vergangenheit Qt- und WebKit-Projekte entwickelt, daher habe ich mich davon inspirieren lassen, aber der gesamte Code ist neu, und die Browser und Bibliotheken sind in C++ geschrieben.

Hier ist eine grobe Aufschlüsselung des aktuellen Browser-Stacks:

  • Ladybird : Browser-GUI-Anwendung mit Registerkarten
  • LibWeb : Web-Engine, mehrere Standards: HTML, DOM, CSS, SVG, …
  • LibJS : ECMAScript-Sprache, Laufzeitbibliothek, Garbage Collector
  • LibGfx : 2D-Grafiken, Textwiedergabe, Bildformate (PNG, JPG, GIF, ...)
  • LibRegex : Engine für reguläre Ausdrücke
  • LibXML : XML-Parser
  • LibWasm : WebAssembly-Parser und -Interpreter
  • LibUnicode : Unicode-Unterstützungsbibliothek
  • LibTextCodec : Konvertierungsbibliothek für die Textcodierung
  • LibMarkdown : Markdown-Parser
  • LibCore : andere Unterstützungsfunktionen (I/O, datetime, MIME-Daten...)
  • Qt : Plattformübergreifende GUI und Netzwerk

LibWeb hat eine PlatformSchicht, in die Ladybird Qt-Unterstützungscode für Ereignisschleifen, Timer, Systemschrifteinstellungen usw. einfügt. Ladybird verwendet derzeit Qt für Netzwerkaufgaben, da es außerhalb von SerenityOS kein RequestServer-System mit mehreren Prozessen gibt. Ebenso ist Ladybird derzeit ein Einzelprozess, während der SerenityOS-Browser ein Pro-Tab-Prozess ist.

Fertigstellung: niedrig

Ladybird läuft derzeit auf Linux, macOS, Windows (WSL) und Android, befindet sich jedoch noch in einem frühen Entwicklungsstadium, Funktionen fehlen noch oder sind für viele Webplattformen defekt, und es dauert lange, bis es für das tägliche Surfen bereit ist.

Ladybird hat den klassischen Acid3-Standardtest bestanden , der eine Reihe grundlegender CSS-Layoutfunktionen und verschiedene DOM/HTML-APIs abdeckt.

Der Acid3-Test ist eine Webtestseite des Web Standards Project, die Webbrowser auf die Einhaltung von Elementen verschiedener Webstandards überprüft, insbesondere des Document Object Model (DOM) und von JavaScript.

Der Test deckt jedoch nicht die neuesten Webstandards und Funktionen wie CSS Flexbox, CSS Grid usw. ab. Dies führt dazu, dass es viele Layout- und Kompatibilitätsprobleme gibt. Um beispielsweise die Reddit-Seite mit dem Ladybird-Browser zu durchsuchen:

Offensichtlich gibt es immer noch viele Renderprobleme wie Fehlausrichtung und Zeilenumbrüche.

 

Derzeit sind die GUI und der Engine-Code von Ladybird Open Source unter der BSD-2-Clause-Lizenz, und der Code wird auf GitHub gehostet .

Supongo que te gusta

Origin www.oschina.net/news/210084/cross-platform-browser-project-ladybird
Recomendado
Clasificación