今月のServoアップデート: タブブラウジング、Windows改善、開発ツールなど
(servo.org)- Servo 2024年8月アップデートでは、Webエンジン機能から servoshell ブラウザー、Windows の品質、開発ツール、CI の安定性まで幅広く扱っている
- Nightly ビルドには
HTMLDialogElement.show(),<textarea>入力レンダリング,border-image,structuredClone(),crypto.randomUUID(), WAV 再生, Web AudioIIRFilterNode, 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:
HTMLDialogElementのshow()を標準サポート - 2024-07-29:
HTMLFieldSetElementのtype属性 - 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()の値は除く
- 2024-07-27:
エンジン構成要素とデフォルト動作の変更
- Servo は主要な依存コンポーネントを最新バージョンへ更新した
-
SpiderMonkey 128
-
WebRender 0.65
-
wgpu 22.0
- Rust 1.80.1
- WebXR と flexbox がデフォルトで有効化された
- 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: stretchalign-items,align-selfのstart,end値flex-direction: column,column-reverseを標準サポート
- flex item の配置とサイズ計算もより正確になった
- flex item で
position: relativeがサポートされた - flex item の
z-indexは常に stacking context を生成する - flex item と flex container に正しい intrinsic size が適用される
- flex item で
- 双方向テキスト対応の作業も進行中
- fragment tree アーキテクチャ変更と
writing-modeインターフェース作業が含まれる unicode-bidi属性とdir属性は部分サポートdir=auto値はまだサポートされていない
- fragment tree アーキテクチャ変更と
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 をサポート
- Styles と Computed パネルをサポート
- 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 に開催される
- 詳細は project#99 を参照
エンジン安定性の改善
- 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件のコメント
Hacker News のコメント
受け取っている支援規模が小さすぎて驚いた。大規模組織を除いた、第三者の個人スポンサーだけを集計しているのか気になる。
Web ブラウザが chrom(ium)e を通じて Google に支配されていると声高に言う人が多いのを見ると、もっと多くの個人や企業が競合の登場を早めることに関心を持つと思っていた。
最初から新しいエンジンで完全に新しいブラウザを作るのは現実的ではないという認識もあり、わざわざなぜ支援するのかという空気があったのだと思う。幸い、Ladybird がこの点を変えたのかもしれない。
そして、そういう資金がある組織の一部はすでに諦めている。数年前に Edge を Chromium に切り替えた Microsoft がそうだ。また、多くの人は Chromium の確立された代替である Firefox に寄付するほうを好みそうだが、実際には Firefox 開発に限定して寄付するのはかなり難しくもある。
ここにいる大半は Web のひどい状況に文句を言うだけで、実際には何もしていないように見える。
みんなで力強い数字を見せよう。
HN コミュニティなら、1日で10万ドルを簡単に超えられる。期待できる本物の新ブラウザが出てきたのだから、やり遂げよう。
Servo が生き続けているのを見るのは興味深い。応援している。
それでも、代替ブラウザとエンジンを開発しようとする真剣な取り組みがあるのは良いことだと思う。Ladybird ブラウザは成熟した製品になるまでさらにずっと遠いが、存在自体がうれしいプロジェクトでもある。
最新の変更を取り込んで新しいタブを見ていたら、RTL サポートが入っているのを見て驚いた。数週間前にはサポートされていなかった。
マージされた PR はこちら: https://github.com/servo/servo/pull/33148
Servo は捨てられたんじゃなかったのか?