1 ポイント 投稿者 GN⁺ 2024-09-01 | 1件のコメント | WhatsAppで共有
  • Servo 2024年8月アップデートでは、Webエンジン機能から servoshell ブラウザー、Windows の品質、開発ツール、CI の安定性まで幅広く扱っている
  • Nightly ビルドには HTMLDialogElement.show(), <textarea> 入力レンダリング, border-image, structuredClone(), crypto.randomUUID(), WAV 再生, Web Audio IIRFilterNode, cross-origin redirect ナビゲーションなどが追加された
  • 中核コンポーネントは SpiderMonkey 128, WebRender 0.65, wgpu 22.0, Rust 1.80.1 に更新され、WebXR と flexbox がデフォルトで有効化された
  • servoshell は タブブラウジング と新しいツールバー・新しいタブページを獲得し、Windows ではキーボードナビゲーション、PNG 出力、フォント・GPU 関連の問題が改善された
  • 新しい CI ランナーにより Windows 専用ビルド時間が 70%短縮され、実際のWebサイトで発生していた複数のクラッシュや SpiderMonkey GC 関連の BorrowError も修正された

Webプラットフォーム機能の追加

  • Servo nightly ビルドに複数の Web API と CSS 機能が順次導入された
    • 2024-07-27: HTMLDialogElementshow() を標準サポート
    • 2024-07-29: HTMLFieldSetElementtype 属性
    • 2024-07-31: <textarea> に入力したテキストのレンダリング
    • 2024-07-31: CSS border-image 属性
    • 2024-08-02: CSP ソース unsafe-eval, wasm-unsafe-eval
    • 2024-08-04: WAV オーディオファイルの再生
    • 2024-08-09: structuredClone() API
    • 2024-08-12: Web Audio の IIRFilterNode
    • 2024-08-13: cross-origin redirect ナビゲーション
    • 2024-08-23: crypto.randomUUID() API
    • 2024-08-29: CSS clip-path 属性
      • path(), polygon(), shape(), url() の値は除く

エンジン構成要素とデフォルト動作の変更

  • Servo は主要な依存コンポーネントを最新バージョンへ更新した
    • SpiderMonkey 128

    • WebRender 0.65

    • wgpu 22.0

      • Rust 1.80.1
      • WebXRflexbox がデフォルトで有効化された
      • Promise を返す Web API は、失敗時に例外を投げる代わりに Promise を正しく reject するようになった

WebXR と flexbox の改善

  • WebXR API はデフォルト有効化に合わせて複数のインターフェースと入力機能が刷新された
    • Gamepad サポートが追加された
    • hand input, XRBoundedReferenceSpace, XRFrame, XRInputSource, XRPose, XRSession, XRTargetRayMode, XRView, XRWebGLLayer 関連の更新が入った
    • makeXRCompatible() は今や WebGLRenderingContext だけでなく WebGL2RenderingContext でも呼び出せる
  • flexbox にはよく使われる レイアウト機能が強化された
    • gap 属性
    • align-content: stretch
    • align-items, align-selfstart, end
    • flex-direction: column, column-reverse を標準サポート
  • flex item の配置とサイズ計算もより正確になった
    • flex item で position: relative がサポートされた
    • flex item の z-index は常に stacking context を生成する
    • flex item と flex container に正しい intrinsic size が適用される
  • 双方向テキスト対応の作業も進行中
    • fragment tree アーキテクチャ変更と writing-mode インターフェース作業が含まれる
    • unicode-bidi 属性と dir 属性は部分サポート
    • dir=auto 値はまだサポートされていない

servoshell ブラウザーと Windows 品質

  • Servo-the-browser新しいツールバータブブラウジング が追加された
  • 新しいタブページは、Servo 埋め込み側が custom protocol handler を登録できる新APIを利用する
  • Windows 実行品質も複数領域で改善された
    • キーボードナビゲーションが修正された
    • --output の PNG 出力動作が修正された
    • フォントと GPU 関連のバグが修正された
  • Windows 関連の修正は、servo.org と duckduckgo.com でグリフの配置がずれ色も誤っていた問題、wikipedia.org で画像が壊れていた問題に関連する

開発ツールと開発者ワークフロー

  • devtools サポートはインターンシッププロジェクト最終月の作業以降、機能が増えた
    • Servo が HTML tree をサポート
    • StylesComputed パネルをサポート
  • macOS ではビルド直後の servoshell 起動が数秒速くなった
  • CI では従来の tidy check とは別に、専用 linting job で clippy が実行される
  • 寄付により Windows ビルド用の新しい CI ランナーが追加され、Windows-only build time が 70% 減少した
  • Linux ビルド用の新しいランナーもまもなく追加予定で、WPT try build はさらに高速化される見込み
  • GitHub issue 調査のための triage meeting が進行中で、次回の Servo issue triage meeting は 9月2日 10:00 UTC に開催される

エンジン安定性の改善

  • 8月には実際のWebサイトで発生していた クラッシュバグ が多数修正された
  • 主な修正例はレンダリング、reflow、HTML parser の動作にまたがる
    • HTML spec で table 付近の float レンダリング中に発生していたクラッシュ
    • w3schools.com で不要な明示的 reflow によって発生していたクラッシュ
    • HTML parser を re-entrant にして kilonova.ro, tweakers.net など複数サイトのクラッシュを修正
  • そのほかにもプラットフォーム・API・パース経路で発生していたクラッシュが減少した
    • macOS で WebGL 使用中にウィンドウサイズ変更時のクラッシュ
    • 非常に長い grapheme cluster テキストのレンダリング中のクラッシュ
    • 特定フォントの tab 文字レンダリング中のクラッシュ
    • window.stop() 呼び出し後の parser クラッシュ
    • 一部の値を console.log() に渡した際のクラッシュ
    • 一部の <img srcset> 値のパース中のクラッシュ
    • 一部の HTTP header 値のパース中のクラッシュ
    • 特定状況で window.opener 設定時のクラッシュ
    • ドキュメントから iframe を削除した際のクラッシュ
    • 未対応オプションで new AudioContext() を呼び出した際のクラッシュ
    • Servo 終了時に WRSceneBuilder で断続的に発生していたクラッシュ
  • SpiderMonkey GC で発生していた複数の BorrowError クラッシュが修正された
  • この種のバグを静的解析で防ぐための作業が進行中
  • ナビゲーション時に DOM Window オブジェクトがもはやリークしなくなった
  • Unix では servoshell は panic 時に異常終了し、web test が結果を「CRASH」と正しく記録できる

寄付状況

  • Servo は継続寄付で現在 月3,077ドル を受けており、7月比で 4.1% 増加した
  • LFX 経由の 12 件の寄付が含まれるが、Servo はまもなく LFX 経由の寄付受付を停止する予定
  • 継続寄付は GitHub Sponsors または Open Collective に移行する必要がある
  • Servo は thanks.dev にも登録されており、Servo に依存する GitHub 組織 3 件がすでに支援中
  • url, html5ever, selectors, cssparser のような Servo ライブラリを利用している場合、thanks.dev を通じてコミュニティに貢献できる
  • 資金の使途は Technical Steering Committee によって透明性をもって決定され、詳細は Sponsorship page にある

1件のコメント

 
GN⁺ 2024-09-01
Hacker News のコメント
  • 受け取っている支援規模が小さすぎて驚いた。大規模組織を除いた、第三者の個人スポンサーだけを集計しているのか気になる。
    Web ブラウザが chrom(ium)e を通じて Google に支配されていると声高に言う人が多いのを見ると、もっと多くの個人や企業が競合の登場を早めることに関心を持つと思っていた。

    • おそらくコモンズの悲劇のようなものがあって、誰も自分がこういう取り組みを支援すべきだとは考えていないようだ。
      最初から新しいエンジンで完全に新しいブラウザを作るのは現実的ではないという認識もあり、わざわざなぜ支援するのかという空気があったのだと思う。幸い、Ladybird がこの点を変えたのかもしれない。
    • 声を大きく上げている人たちのかなり多くは、大金を持っている人たちではないと思う。そういう資金を持つ組織でもないかもしれない。
      そして、そういう資金がある組織の一部はすでに諦めている。数年前に Edge を Chromium に切り替えた Microsoft がそうだ。また、多くの人は Chromium の確立された代替である Firefox に寄付するほうを好みそうだが、実際には Firefox 開発に限定して寄付するのはかなり難しくもある。
    • 空の荷車ほど音が大きいということだ。ある話題について声を上げるのは安上がりだが、その大義のために時間やお金を出すのはそうではない。
    • 少し悲しい。HN だけでも月に5ドルずつ寄付すれば、おそらく目標額に届くはずなのに。
      ここにいる大半は Web のひどい状況に文句を言うだけで、実際には何もしていないように見える。
  • みんなで力強い数字を見せよう。
    HN コミュニティなら、1日で10万ドルを簡単に超えられる。期待できる本物の新ブラウザが出てきたのだから、やり遂げよう。

    • ぜひ支持と寄付で示してほしい。HN のアクティブユーザー全員が10ドルずつだけ寄付しても、ものすごい規模になる。
  • Servo が生き続けているのを見るのは興味深い。応援している。

    • 同意する。他のブラウザやエンジンの真の代替になるには、まだ先は長い。
      それでも、代替ブラウザとエンジンを開発しようとする真剣な取り組みがあるのは良いことだと思う。Ladybird ブラウザは成熟した製品になるまでさらにずっと遠いが、存在自体がうれしいプロジェクトでもある。
    • 応援だけでなく、寄付もしよう :)
  • 最新の変更を取り込んで新しいタブを見ていたら、RTL サポートが入っているのを見て驚いた。数週間前にはサポートされていなかった。
    マージされた PR はこちら: https://github.com/servo/servo/pull/33148

  • Servo は捨てられたんじゃなかったのか?

    • Mozilla は手放したが、Wikipedia によると Linux Foundation が引き継いだ。