ブラウザーエンジンを幅広く更新
Servoは、9月に行われた527件のコミットを含むバージョン0.7.0を公開した。開発者ツール、アクセシビリティ、グラフィックス、メディア、ストレージ、組み込み用インターフェースにわたる変更が盛り込まれている。同プロジェクトは、ウェブコンテンツの組み込みを必要とするアプリケーション向けの軽量ブラウザーエンジンとしてServoを位置付けている。
今回のリリースでは、JavaScriptエンジンをSpiderMonkey 153.3に、グラフィックス変換レイヤーをmozangle 0.7に更新した。Servoによると、いずれの依存ソフトウェアにも、それぞれの上流プロジェクトに報告されたセキュリティ問題への修正が含まれる。開発者ツールのコンソールはJavaScriptの入力を即時評価するようになり、コマンドを送信する前に開発者へフィードバックを返す。
アクセシビリティに関する変更には、インライン要素の幾何学的な境界の扱い、文書変更時の処理の削減、`display: none`が指定された要素の非表示状態を正しく伝える対応が含まれる。また、アクセシビリティ支援ツールからの操作を、Servoを組み込むアプリケーション側が転送できるインターフェースも追加された。
グラフィックス、編集、字幕
エンジンのWebGL2実装には、標準への適合性を高める多数の改善が加えられた。WebGLはServoの既定のウェブ機能に含まれるようになったため、これを同梱したくないアプリケーションは、既定の機能を明示的に無効化する必要がある。Linuxではスレッドアフィニティのブーストが有効化され、一部のプロセッサーアーキテクチャーでは性能向上が見込めるとプロジェクトは説明している。
編集可能なウェブコンテンツへの対応も進んだ。関連する設定を有効にすると、キーボード入力が`execCommand`に接続され、利用できるリッチテキストエディターが増える。標準の「すべて選択」ショートカットで文書の内容全体を選択できるようになった一方、パスワード欄の文字列はコピーできなくなった。
Servoは動画の字幕処理も拡充した。テキストトラックがenter、exit、cue-changeイベントを発行するようになり、メディア要素は並べ替え済みの完全なトラック一覧を返すようになった。キューの順序、有効化、URL取得のタイミングも修正された。WebVTTパーサーはエラーから回復できるようになった。
IndexedDBにはインデックスやカーソル向けのカーソルメソッドが追加され、ウェブアニメーションにはタイムラインのゲッターとセッターのメソッドが加わった。また、未処理のPromise拒否がJavaScriptコンソールに報告されるようになった。互換性に関する不具合を診断しやすくするための変更である。
組み込み側に関わる変更
Servoは、ウェブビューのセッション履歴を消去するAPIと、アクセシビリティ操作を転送するAPIを追加した。手動のスロットリングと複数のフォーカス関連メソッドは削除された。非表示のウェブビューは自動的に処理が抑制されるようになり、組み込み側はフォーカスが変わる際に`WebView::set_focused`を呼び出す必要がある。マルチプロセス対応はビルド時に選択でき、無効にするとバイナリーサイズを約2MB削減できる。
同プロジェクトは、メモリ割り当て、ガベージコレクション、プロセス間通信のさまざまな最適化に加え、バッファーの再利用拡大やデータ構造の小型化を報告した。音声・動画要素に関するメモリリークも修正し、WebRTC、動画、iframe、共有ワーカーなどでパニックが発生する複数の条件にも対処した。AndroidのJava互換性ターゲットはバージョン11となり、OpenHarmony向けビルドはWindowsホストからクロスコンパイルできるようになった。幅広い変更内容は、Servoがウェブプラットフォームへの対応の不足を埋めつつ、組み込み可能なエンジンとしての役割を磨き続けていることを示している。



