Servo 0.6、CSS Gridを標準で有効化 実験機能ThreadboostはSpeedometerスコアを50%改善
出典: servo.org

Servo 0.6.0ではCSS Gridが標準で有効になり、従来のグリッド型レイアウトを使うウェブサイトを表示しやすくなりました。実験機能Threadboostを有効にすると、Speedometerのベンチマークスコアが50%向上したとServoは報告しています。8月に取り込まれた変更は417件で、レイアウト対応のほか、操作性やセキュリティ、性能に関する更新も含まれます。

CSS Gridを標準で有効化

CSS Gridは、要素を行と列の二次元で配置するレイアウト機能です。画面の幅や向きに合わせて配置を組み替えたり、複数の要素の位置や大きさを指定したりできます。HTMLを変えずに、見た目の配置を調整できます。

Servo 0.6.0では、CSS Gridへの対応が標準で有効になりました。Gridに対応していないブラウザーでは、Gridを使ったサイトの要素配置が崩れることがあります。ServoがGridを扱えるようになり、従来のグリッドレイアウトを使うサイトや、見た目からはGridの利用が分かりにくいサイトも正しく表示される例が出ています。

CSS Grid以外では、タッチ操作の対象軸を動きの大きい方向に合わせる処理や、アニメーション合成、カラースキーム、テキスト変換の値への対応が加わりました。また、文字を選択する操作も可能になっています。

ナビゲーションやアクセシビリティも更新

8月の更新では、ナビゲーション、文書の読み込み、閲覧履歴の処理にも変更が入りました。新しいウィンドウを開く場合や、iframeを含む場合の動作を安定させるため、HTML仕様に関わる処理が改善されています。

アクセシビリティ機能では、コンテンツツリー内の項目の位置とサイズを伝えるようになり、macOSのVoiceOverでの読み上げが安定するよう調整されました。支援技術に報告する、要素に対応したARIAロールも増えています。この機能は、起動時に--pref accessibility_enabledを指定して有効にできます。

JavaScriptエンジンとの連携にはSpiderMonkey v153が取り込まれ、セキュリティとクラッシュに関する修正が含まれました。HTTPキャッシュをディスクに保存する機能も追加され、設定を有効にするとServoの起動後もキャッシュが保持されます。

Threadboostでベンチマークスコアが向上

Servoは、実験機能Threadboostを有効にすると、Speedometerのベンチマークスコアが50%向上したと報告しています。Speedometerは、ブラウザー上のウェブアプリで操作を再現し、応答性を測るベンチマークです。ToDoリストの編集、リッチテキスト編集、チャート操作、ニュースサイトの閲覧などを模した処理が含まれます。

Speedometer 3は、複数のブラウザーエンジン開発プロジェクトが関わるオープンソースのベンチマークとして開発されています。今回の50%という改善はThreadboostを使った実験結果であり、Servoのすべての利用場面で同じ割合の性能向上を示すものではありません。

Servoでは、不要なメモリー確保を減らす変更や、JavaScriptの性能向上につながるガベージコレクションとのやり取りの削減も進められました。フォントデータをメモリーに割り当てて扱う環境では、ディスクからフォントを読み込む時間を短縮する変更もあります。

開発環境と各プラットフォームの変更

Servoのビルドには、すべてのプラットフォームでClang 19以上が必要になりました。OpenHarmony向けのビルドではcargo-ohosも必要です。Linux arm64ビルドはRaspberry Pi 5で動作するよう調整されました。

サンプルブラウザーのservoshellでは、WaylandとOpenHarmonyでシステムのクリップボードを利用できるようになりました。Android版ではCompose UIへの対応が進み、実装のKotlinへの移行も行われています。OpenHarmony版はUS配列の外付けキーボードを扱えるようになり、CJK文字向けの代替フォント選択も改善されました。

組み込み向けには、ビルド時に有効化できるCargo機能にWebCryptoやWebGLなどが追加されました。Canvas描画用のワーカースレッド数は設定で調整でき、組み込む側が用途に応じて性能を調整できます。