1 ポイント 投稿者 GN⁺ 3 시간 전 | 1件のコメント | WhatsAppで共有
  • 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 ファイルの 対応、, ``
    • レイアウト: `` レイアウト
  • DOM APIも複数の標準領域で拡充
    • onslotchange 属性が ShadowRoot に追加
    • screenLeft, screenTopWindow に追加
    • new Blob(){endings: "native"} をサポート
    • new PerformanceMark() が追加
    • parseHTML()Document に追加
    • readAsBinaryString()FileReader に追加
    • performance.measure()redirectStart, redirectEnd, secureConnectionStart, responseEnd mark 値をサポート
  • Windows、FreeBSD、NixOS または Nix ベース環境での ビルド問題 も修正

セキュリティ: SpiderMonkey のメモリ安全性修正

  • Servo のJSランタイムである SpiderMonkey 140.10.0 には複数のメモリ安全性バグがあった
  • Servo 0.3.0 は SpiderMonkey 140.10.1 への更新でこれらの問題を修正
  • 詳細は CVE-2026-7322CVE-2026-7323MFSA 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 の実験モードで有効化
    • SanitizersetComments(), 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 引数を受け取り、非同期呼び出しが可能に
    • 同期呼び出しを維持するには callbackNone を渡す
    • set_cookie_for_url_async は削除され、set_cookie_for_url(Some(Box::new(callback))) 形式へ置き換える必要がある
  • Preferences API ではスレッドプール設定名が整理
  • 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()
    • SubtleCryptoML-KEM
  • WebGPU 側では GPUSupportedLimits, GPUTexture, GPUDevice.createBindGroup() およびその他の WebGPU 機能が改善
  • バグ修正には `` と Content-Security-Policy, :active, :hover, align-items, border-image-outset, overflow: scrollpadding, pointerup イベント, slotchange イベント, 動的 import(), CanvasRenderingContext2D.clip() などを含む

性能改善: レイアウト走査の削減と遅延処理

  • about:memory 改善のため、追跡されていない 割り当て を見つけるツールが作られた
  • 画像キャッシュ、Webストレージ、IndexedDB の スレッドプール が統合され、CPU あたりに必要なOSスレッド数が削減
  • レイアウト最適化は fragment tree の走査とキャッシュコストを減らすことに集中
    • fragment tree は大部分が 不変 になり、多くのアクセスで AtomicRefCell borrow のランタイムコストがなくなった
    • containing block 計算と stacking context tree 構築は、大半のケースで 単一の fragment tree 走査 に統合
    • scrollable overflow 計算は lazy・incremental 方式に変わり、fragment tree 全体の走査が事実上なくなった
    • reflow 間での fragment、shaping 結果、その他のレイアウト結果のキャッシュが改善
    • incremental fragment layout の精度が向上
    • テキスト shaping のメモリ使用量が削減
  • 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件のコメント

 
GN⁺ 3 시간 전
Lobste.rs のコメント
  • lobste.rs が Servo でほぼ完璧に動いていてうれしい。
    目についたのは、太字リンクが太字に見えないこと、フォントが少し不自然なこと(Fira Sans のように感じる)、ログインページの入力フィールドが細すぎること、このテキストフィールドをクリックするとカーソルがクリックした位置と違う場所に置かれることくらい。
    コメントで JavaScript エンジンは Firefox と同じだと言っていたので、全体としては期待どおりに動いているようだ。
    追記: 実験的な設定を有効にしたら 太字 の問題は解決した。
  • Servo は開発されてから何年も経っているけれど、そもそも何の意味があるの?
    • Servo は Mozilla が Rust で新しいブラウザ を作ろうとして始めた実験的プロジェクトだった。
      主要な目標の一つは Microsoft HoloLens だったが、結局大規模プロジェクトとしては中止され、一部のコンポーネントは Firefox に取り込まれた。
      例えば、マルチスレッドという特性のため C++ で書くのが難しかった CSS エンジンがその一つ。
      その後 Igalia が引き継いで新しい管理主体となり、プロジェクトを復活させて新たな競争相手にしようとしている。
      JavaScript エンジンは Firefox と同じ。
    • プロジェクトは 2012年 に始まったが、知る限りでは数年間開発が停滞し、最近になってようやく速いペースで再開された。
      目的は主要ブラウザエンジンの代替を持つことで、特に Chrome のエンジンである Blink により多くの競争をもたらすことにある。
    • 現在のハードウェアがサポートする並列性と並行性をより簡単に活用できる メモリ安全な言語 でブラウザエンジンを実装することは、プロジェクトが始まった当初と同じく今でも大きな利点だ。
      巨大テック企業の影響から離れた別個の Web プラットフォーム実装を持つことも重要。
      Google は今あまりにも大きな力を持っており、Mozilla は何年にもわたって最悪に近い姿を見せてきた。
      だから少なくとも私は毎月数ドルずつ支援している。