- Servo 0.3.0は5月にマージされた391件のコミットを収録し、Webプラットフォーム、埋め込みAPI、性能、安定性、セキュリティ修正をまとめて反映したリリース
- Webプラットフォームでは
font-variant-*、fast startなしの mp4 `` 再生、フォームエンコーディング、DOM API追加により実サイトとの互換性を拡大 - セキュリティ面ではJSランタイムを SpiderMonkey 140.10.1 に更新し、メモリ安全性バグを修正。CVE-2026-7322・CVE-2026-7323・MFSA 2026-36 に関連
- ユーザーと開発者は servoshell の
--host-file=、--userscripts=オプションと、Firefox DevTools Debugger の「Ignore source」ブラックボックス化を活用可能 - エンベッダーは Rust 1.88.0以上 の要件と、SiteDataManager・Preferences・DiagnosticsLogging の breaking change への対応が必要で、性能改善はレイアウト走査の削減とスレッドプール統合に集中
Servo 0.3.0に含まれる5月の変更
- Servo 0.3.0 は5月にマージされた変更を収録し、合計 391件のコミット が含まれる
- 新しいWebプラットフォーム機能は、フォント、メディア、フォーム、レイアウト互換性にまたがって追加
- CSSフォント機能:
font-kerning: none,font-variant-east-asian,font-variant-ligatures,font-variant-numeric,font-variant-position - メディアとフォーム: fast startなしの mp4 ファイルの
対応、, `` - レイアウト: `` レイアウト
- CSSフォント機能:
- DOM APIも複数の標準領域で拡充
onslotchange属性が ShadowRoot に追加screenLeft,screenTopが Window に追加new Blob()で{endings: "native"}をサポートnew PerformanceMark()が追加parseHTML()が Document に追加readAsBinaryString()が FileReader に追加performance.measure()がredirectStart,redirectEnd,secureConnectionStart,responseEndmark 値をサポート
- Windows、FreeBSD、NixOS または Nix ベース環境での ビルド問題 も修正
セキュリティ: SpiderMonkey のメモリ安全性修正
- Servo のJSランタイムである SpiderMonkey 140.10.0 には複数のメモリ安全性バグがあった
- Servo 0.3.0 は SpiderMonkey 140.10.1 への更新でこれらの問題を修正
- 詳細は CVE-2026-7322、CVE-2026-7323、MFSA 2026-36 を参照
進行中のWeb機能
document.execCommand()実装は リッチテキスト編集 対応のため継続中で、--pref dom_exec_command_enabledの下で動作- 今回のリリースでは
backColor,foreColor,createLink,unlink,superscript,subscript,removeFormatコマンドをサポート insertParagraphコマンドは部分対応
- 今回のリリースでは
- Sanitizer API の作業は
--pref dom_sanitizer_enabledの下で継続- servoshell の実験モードで有効化
SanitizerのsetComments(),setDataAttributes(),allowProcessingInstruction(),removeProcessingInstruction(),removeUnsafe()を追加
- IndexedDB は
--pref dom_indexeddb_enabledの下で改善中で、IDBTransaction.abort()の標準適合性が向上 - 上記機能は servoshell の 実験モード で有効
- アクセシビリティ対応には、name from contents アルゴリズムと、アクセシビリティツリーを 段階的に構築 する変更を含む
- 段階的なアクセシビリティツリー構築は実際のWebコンテンツの性能に重要
- Worker 関連実装も開始
SharedWorkerは--pref dom_sharedworker_enabledの下でnew SharedWorker()をサポートServiceWorkerは--pref dom_serviceworker_enabledの下でAPIの一部を追加
埋め込みAPIの変更と移行ポイント
- Servo の最小サポート Rust バージョンである MSRV が 1.86.0 から 1.88.0以上 に引き上げ
- MSRV でコンパイルテストを行うが、大半のテストは Rust 1.95.0 で実施
- SiteDataManager のCookieメソッドには breaking change がある
clear_cookies,clear_session_cookies,set_cookie_for_urlは追加のcallback引数を受け取り、非同期呼び出しが可能に- 同期呼び出しを維持するには
callbackにNoneを渡す set_cookie_for_url_asyncは削除され、set_cookie_for_url(Some(Box::new(callback)))形式へ置き換える必要がある
- Preferences API ではスレッドプール設定名が整理
threadpools_image_cache_workers_max,threadpools_indexeddb_workers_max,threadpools_webstorage_workers_maxは統合されたthread_pool_workers_maxに置き換えthreadpools_fallback_worker_numはthread_pool_fallback_workersに改名threadpools_async_runtime_workers_maxはthread_pool_async_runtime_workers_maxに改名threadpools_webrender_workers_maxはthread_pool_webrender_workers_maxに改名
- DiagnosticsLogging API も再設計
toggle_optionでオプションを設定し、is_enabledで有効状態を確認- 各オプションは新しい型
DiagnosticsLoggingOptionの variant DiagnosticsLoggingのオプション別pubフィールドは削除され、フィールドの書き込みと読み取りはそれぞれtoggle_option,is_enabledに置き換える必要があるextend_from_stringはもはやhelpオプションを受け取らず、その実装は servoshell へ移動
ユーザー・開発者向け機能
- servoshell に新しいオプションが2つ追加
--host-file=は hosts file のパスを設定し、HOST_FILE環境変数の代替となる--userscripts=はすべての文書で実行する ユーザースクリプト ディレクトリを指定
- Firefox DevTools Debugger タブでスクリプトのブラックボックス化が可能に
- 「Ignore source」をクリックすると、そのスクリプト内部では breakpoint が止まらない
- デバッガーでステップ実行する際も、そのスクリプト内部で停止しないように動作するはず
- Scopes パネルの精度も改善
- Servo 自身の開発者はプロジェクト方針により 大規模言語モデル または生成AIツールの出力をコントリビューションに利用できない
- これを強制するため、AI agent を coauthor として含むコントリビューションを拒否する CI チェックが追加
--features velloのビルド問題も修正
Webプラットフォームの詳細改善
- 複数のHTML要素のデフォルト表示が改善
- 対象は
,,,,,,,,,,,, ``
- 対象は
- CryptoKey がシリアライズ可能になり、
structuredClone()とpostMessage()で利用可能に - DOM の複数箇所で JSエラーメッセージ が改善
- 標準適合性の改善は以下の領域を含む
- フォーム送信、タブナビゲーション、
javascript:URL ナビゲーション Refreshヘッダーと ``line-break: anywhere,Location.assign()crypto.subtle.deriveBits(),getComputedStyle(),performance.measure()FileReader.readAsDataURL(),Blob.stream()SubtleCryptoの ML-KEM
- フォーム送信、タブナビゲーション、
- WebGPU 側では
GPUSupportedLimits,GPUTexture,GPUDevice.createBindGroup()およびその他の WebGPU 機能が改善 - バグ修正には `` と
Content-Security-Policy,:active,:hover,align-items,border-image-outset,overflow: scrollのpadding,pointerupイベント,slotchangeイベント, 動的import(),CanvasRenderingContext2D.clip()などを含む
性能改善: レイアウト走査の削減と遅延処理
about:memory改善のため、追跡されていない 割り当て を見つけるツールが作られた- 画像キャッシュ、Webストレージ、IndexedDB の スレッドプール が統合され、CPU あたりに必要なOSスレッド数が削減
- レイアウト最適化は fragment tree の走査とキャッシュコストを減らすことに集中
- fragment tree は大部分が 不変 になり、多くのアクセスで
AtomicRefCellborrow のランタイムコストがなくなった - containing block 計算と stacking context tree 構築は、大半のケースで 単一の fragment tree 走査 に統合
- scrollable overflow 計算は lazy・incremental 方式に変わり、fragment tree 全体の走査が事実上なくなった
- reflow 間での fragment、shaping 結果、その他のレイアウト結果のキャッシュが改善
- incremental fragment layout の精度が向上
- テキスト shaping のメモリ使用量が削減
- fragment tree は大部分が 不変 になり、多くのアクセスで
- DOM attributes 処理も効率化
- スクリプトが属性値を書き込む際、再度読み取るまでシリアライズを避け、inline style の頻繁な書き込みが最大 25% 高速化
- HTML 解析または内部属性読み取り時に、スクリプトが実際に必要とするまで
Attrノード生成を避け、メモリ使用量とガベージコレクション発生可能性を低減
がツリーに追加されるたびに DOM tree 全体を走査していた動作が削除され、多数のタグを含む文書の解析で効果がある- stylesheet lock は
parking_lot::RwLockより効率的な AtomicRefCell を使用 - OpenHarmony では実際の refresh driver が追加され、アイドル時のCPU使用量が減少し、font list をディスクにキャッシュして起動速度が向上
- ビルド時間改善のため、巨大な script crate からさらに多くのコードを分離し、依存ツリーの規模も縮小
安定性修正と型システム活用
- 複数のクラッシュとハングが修正
content,MediaStream,Element.attributes.item(),CSSKeyframesRule.appendRule(),FocusEvent.initEvent(),Window.stop()document.execCommand("delete")--debug-mozjsビルド- DevTools で一時停止中のスクリプト評価
- DevTools での一部JS値プレビュー
- layout での zero-width space shaping
- servoshell の実験モードをランタイムに切り替える場合
- Rust 型システム を使って特定の動的 borrow 失敗を不可能にする長期的な作業も継続
コントリビューターと支援状況
- 9人が Servo に初パッチをマージ
- AbdAlRahman Gad, Onyeka Obi, Steve Sharon Sam, avis137, Xabier Rodríguez, June, Matt Van Horn, nicole, panxt8
- 新規コントリビューター向けの課題一覧は curated list で提供
- 継続支援は 月7,659ドル で、4月比 4.2% 増
- 支援金は CI・ベンチマークサーバー、Outreachy インターン、maintainer の作業支援に使われる
- thanks.dev では Servo に依存する 35人のGitHubユーザー が支援中で、4月より2人増加
- 支援金の使途は Technical Steering Committee の公開 funding request process を通じて決定され、進行中の提案は servo/project#187 で追跡される
1件のコメント
Lobste.rs のコメント
目についたのは、太字リンクが太字に見えないこと、フォントが少し不自然なこと(Fira Sans のように感じる)、ログインページの入力フィールドが細すぎること、このテキストフィールドをクリックするとカーソルがクリックした位置と違う場所に置かれることくらい。
コメントで JavaScript エンジンは Firefox と同じだと言っていたので、全体としては期待どおりに動いているようだ。
追記: 実験的な設定を有効にしたら 太字 の問題は解決した。
主要な目標の一つは Microsoft HoloLens だったが、結局大規模プロジェクトとしては中止され、一部のコンポーネントは Firefox に取り込まれた。
例えば、マルチスレッドという特性のため C++ で書くのが難しかった CSS エンジンがその一つ。
その後 Igalia が引き継いで新しい管理主体となり、プロジェクトを復活させて新たな競争相手にしようとしている。
JavaScript エンジンは Firefox と同じ。
目的は主要ブラウザエンジンの代替を持つことで、特に Chrome のエンジンである Blink により多くの競争をもたらすことにある。
巨大テック企業の影響から離れた別個の Web プラットフォーム実装を持つことも重要。
Google は今あまりにも大きな力を持っており、Mozilla は何年にもわたって最悪に近い姿を見せてきた。
だから少なくとも私は毎月数ドルずつ支援している。