1 Punkte von GN⁺ 2024-09-01 | 1 Kommentare | Auf WhatsApp teilen
  • Das Servo-Update für August 2024 deckt ein breites Spektrum ab: von Web-Engine-Funktionen über den servoshell-Browser, Windows-Qualität, Entwicklertools bis hin zur CI-Stabilität
  • In den Nightly-Builds wurden HTMLDialogElement.show(), Rendering von Eingaben in <textarea>, border-image, structuredClone(), crypto.randomUUID(), WAV-Wiedergabe, Web Audio IIRFilterNode, Navigation über cross-origin redirects und mehr hinzugefügt
  • Die zentralen Komponenten wurden auf SpiderMonkey 128, WebRender 0.65, wgpu 22.0 und Rust 1.80.1 aktualisiert; WebXR und flexbox sind nun standardmäßig aktiviert
  • servoshell erhielt Tabbed Browsing sowie eine neue Toolbar und eine neue Tab-Seite; unter Windows wurden Tastaturnavigation, PNG-Ausgabe sowie Probleme mit Fonts und GPU verbessert
  • Mit neuen CI-Runnern wurde die reine Windows-Build-Zeit um 70 % verkürzt; außerdem wurden mehrere Crashes auf realen Websites sowie BorrowErrors im Zusammenhang mit der SpiderMonkey-GC behoben

Neue Web-Plattform-Funktionen

  • In die Servo-Nightly-Builds wurden schrittweise mehrere Web-APIs und CSS-Funktionen aufgenommen
    • 2024-07-27: grundlegende Unterstützung für show() von HTMLDialogElement
    • 2024-07-29: type-Attribut von HTMLFieldSetElement
    • 2024-07-31: Rendering von in <textarea> eingegebenem Text
    • 2024-07-31: CSS-Eigenschaft border-image
    • 2024-08-02: CSP-Quellen unsafe-eval, wasm-unsafe-eval
    • 2024-08-04: Wiedergabe von WAV-Audiodateien
    • 2024-08-09: API structuredClone()
    • 2024-08-12: IIRFilterNode in Web Audio
    • 2024-08-13: Navigation über cross-origin redirects
    • 2024-08-23: API crypto.randomUUID()
    • 2024-08-29: CSS-Eigenschaft clip-path
      • Werte wie path(), polygon(), shape() und url() sind ausgenommen

Änderungen an Engine-Komponenten und Standardverhalten

  • Servo hat wichtige Abhängigkeiten auf neuere Versionen aktualisiert
    • SpiderMonkey 128

    • WebRender 0.65

    • wgpu 22.0

      • Rust 1.80.1
      • WebXR und flexbox sind standardmäßig aktiviert
      • Web-APIs, die Promises zurückgeben, rejecten Promises bei Fehlern nun korrekt, statt Exceptions zu werfen

Verbesserungen bei WebXR und flexbox

  • Die WebXR-API wurde passend zur standardmäßigen Aktivierung bei mehreren Interfaces und Eingabefunktionen überarbeitet
    • Unterstützung für Gamepads wurde hinzugefügt
    • Updates rund um hand input, XRBoundedReferenceSpace, XRFrame, XRInputSource, XRPose, XRSession, XRTargetRayMode, XRView und XRWebGLLayer wurden integriert
    • makeXRCompatible() kann nun nicht nur auf WebGLRenderingContext, sondern auch auf WebGL2RenderingContext aufgerufen werden
  • flexbox wurde um häufig genutzte Layout-Funktionen erweitert
    • Eigenschaft gap
    • align-content: stretch
    • Werte start und end für align-items und align-self
    • grundlegende Unterstützung für flex-direction: column und column-reverse
  • Auch Positionierung und Größenberechnung von flex items wurden genauer
    • position: relative wird bei flex items unterstützt
    • z-index eines flex items erzeugt immer einen stacking context
    • Für flex items und flex container wird die korrekte intrinsic size angewendet
  • Die Unterstützung für bidirektionalen Text ist in Arbeit
    • Dazu gehören Änderungen an der Fragment-Tree-Architektur und Arbeiten am writing-mode-Interface
    • Die Eigenschaften unicode-bidi und dir werden teilweise unterstützt
    • Der Wert dir=auto wird noch nicht unterstützt

servoshell-Browser und Windows-Qualität

  • Servo-the-browser hat eine neue Toolbar und Tabbed Browsing erhalten
  • Die neue Tab-Seite nutzt eine neue API, mit der Servo-Embedder custom protocol handler registrieren können
  • Auch die Ausführungsqualität unter Windows wurde in mehreren Bereichen verbessert
    • Die Tastaturnavigation wurde korrigiert
    • Das Verhalten der PNG-Ausgabe von --output wurde korrigiert
    • Fehler rund um Fonts und GPU wurden behoben
  • Die Windows-bezogenen Fixes betreffen unter anderem Probleme auf servo.org und duckduckgo.com, bei denen Glyphen falsch ausgerichtet waren und Farben nicht stimmten, sowie beschädigte Bilder auf wikipedia.org

Entwicklertools und Entwickler-Workflow

  • Die DevTools-Unterstützung wurde nach dem letzten Monat eines Internship-Projekts ausgebaut
    • Servo unterstützt einen HTML tree
    • Die Panels Styles und Computed werden unterstützt
  • Unter macOS startet servoshell direkt nach dem Build einige Sekunden schneller
  • In der CI läuft clippy in einem eigenen Linting-Job, getrennt vom bestehenden tidy check
  • Durch Spenden wurde ein neuer CI-Runner für Windows-Builds hinzugefügt, wodurch die Windows-only build time um 70 % sank
  • Ein neuer Runner für Linux-Builds soll ebenfalls bald hinzukommen; dadurch sollen WPT-Try-Builds schneller werden
  • Für die Untersuchung von GitHub-Issues laufen Triage-Meetings; das nächste Servo issue triage meeting findet am 2. September um 10:00 UTC statt

Verbesserungen der Engine-Stabilität

  • Im August wurden zahlreiche Crash-Bugs behoben, die auf realen Websites auftraten
  • Wichtige Fixes erstrecken sich über Rendering, Reflow und das Verhalten des HTML-Parsers
    • Crash beim Rendern von Floats in der Nähe von Tabellen in der HTML spec
    • Crash auf w3schools.com durch unnötigen expliziten Reflow
    • Mehrere Website-Crashes, etwa auf kilonova.ro und tweakers.net, wurden behoben, indem der HTML-Parser re-entrant gemacht wurde
  • Darüber hinaus wurden Crashes in Plattform-, API- und Parsing-Pfaden reduziert
    • Crash bei Größenänderung des Fensters unter macOS während der Nutzung von WebGL
    • Crash beim Rendern von Text mit sehr langen grapheme clusters
    • Crash beim Rendern von Tab-Zeichen in bestimmten Fonts
    • Parser-Crash nach Aufruf von window.stop()
    • Crash beim Übergeben bestimmter Werte an console.log()
    • Crash beim Parsen bestimmter <img srcset>-Werte
    • Crash beim Parsen bestimmter HTTP-Header-Werte
    • Crash beim Setzen von window.opener in bestimmten Situationen
    • Crash beim Entfernen eines iframe aus dem Dokument
    • Crash beim Aufruf von new AudioContext() mit nicht unterstützten Optionen
    • Sporadischer Crash in WRSceneBuilder beim Beenden von Servo
  • Mehrere BorrowError-Crashes in der SpiderMonkey-GC wurden behoben
  • Es laufen Arbeiten, diese Art von Bugs durch statische Analyse zu verhindern
  • Beim Navigieren werden DOM-Window-Objekte nicht mehr geleakt
  • Unter Unix beendet sich servoshell bei einem Panic abnormal, sodass Web-Tests das Ergebnis korrekt als „CRASH“ erfassen können

Spendenstatus

  • Servo erhält derzeit 3.077 US-Dollar pro Monat aus wiederkehrenden Spenden, 4,1 % mehr als im Juli
  • Darin enthalten sind Spenden von 12 Personen über LFX, Servo wird jedoch demnächst keine LFX-Spenden mehr annehmen
  • Wiederkehrende Spenden sollten zu GitHub Sponsors oder Open Collective umgezogen werden
  • Servo ist auch bei thanks.dev registriert; drei GitHub-Organisationen, die von Servo abhängen, sponsern bereits
  • Wer Servo-Bibliotheken wie url, html5ever, selectors oder cssparser nutzt, kann über thanks.dev zur Community beitragen
  • Über die Verwendung der Mittel entscheidet das Technical Steering Committee transparent; weitere Details stehen auf der Sponsorship page

1 Kommentare

 
GN⁺ 2024-09-01
Meinungen auf Hacker News
  • Ich bin überrascht, dass der Umfang der Unterstützung so gering ist. Ich frage mich, ob nur persönliche Drittmittel von Einzelpersonen außerhalb großer Organisationen gezählt wurden.
    Wenn man bedenkt, wie viele Leute lautstark sagen, dass Webbrowser über chrom(ium)e von Google beherrscht werden, hätte ich erwartet, dass mehr Einzelpersonen oder Unternehmen ein Interesse daran haben, dass schneller ein Konkurrent entsteht.

    • Vermutlich gibt es so etwas wie eine Tragik der Allmende: Niemand glaubt, dass gerade er so etwas finanzieren sollte.
      Dazu kommt wohl die Wahrnehmung, dass es unrealistisch ist, von Grund auf einen völlig neuen Browser mit einer neuen Engine zu bauen; warum sollte man das also unterstützen? Zum Glück hat Ladybird diesen Punkt vielleicht verändert.
    • Ich denke, viele der lautstarken Leute sind nicht diejenigen mit viel Geld. Vielleicht sind es auch keine Organisationen mit solchen Mitteln.
      Und einige Organisationen, die dieses Geld hätten, haben bereits aufgegeben. Microsoft hat Edge vor ein paar Jahren auf Chromium umgestellt. Außerdem würden viele vermutlich lieber an Firefox spenden, die etablierte Alternative zu Chromium; allerdings ist es in der Praxis ziemlich schwierig, gezielt für die Firefox-Entwicklung zu spenden.
    • Leere Fässer machen den meisten Lärm. Zu einem Thema laut zu sein ist billig; Zeit oder Geld für die Sache aufzubringen nicht.
    • Ein bisschen traurig. Allein HN könnte das Ziel vermutlich erreichen, wenn jeder 5 Dollar pro Monat spenden würde.
      Die meisten hier scheinen sich nur über den schrecklichen Zustand des Webs zu beschweren und tatsächlich nichts zu tun.
  • Lasst uns alle starke Zahlen zeigen.
    Die HN-Community könnte an einem Tag locker über 100.000 Dollar kommen. Es gibt einen neuen Browser, auf den man wirklich hoffen kann, also lasst es uns schaffen.

    • Hoffentlich zeigt sich die Unterstützung wirklich durch Support und Spenden. Wenn alle aktiven HN-Nutzer nur 10 Dollar spenden würden, käme eine enorme Summe zusammen.
  • Spannend zu sehen, dass Servo weiterlebt. Ich drücke die Daumen.

    • Stimme zu. Bis es eine echte Alternative zu anderen Browsern und Engines wird, ist es noch ein weiter Weg.
      Trotzdem finde ich es gut, dass es ernsthafte Bemühungen gibt, alternative Browser und Engines zu entwickeln. Der Ladybird-Browser ist von einem reifen Produkt noch viel weiter entfernt, aber allein seine Existenz ist ein erfreuliches Projekt.
    • Nicht nur die Daumen drücken, sondern auch spenden :)
  • Ich habe die neuesten Änderungen gezogen und mir die neuen Tabs angesehen; dabei war ich überrascht, dass es jetzt RTL-Unterstützung gibt. Vor ein paar Wochen wurde das noch nicht unterstützt.
    Der gemergte PR ist hier: https://github.com/servo/servo/pull/33148

  • War Servo nicht aufgegeben worden?

    • Mozilla hat es aufgegeben, aber laut Wikipedia hat die Linux Foundation es übernommen.