
Servo 0.7.0では、HTMLやCSSの新機能に対応し、WebGL 2の仕様適合性や実際のウェブサイトとの互換性を改善しました。9月に取り込まれた変更をまとめたリリースで、開発者向け機能や性能改善も含まれています。
Candy Crushがプレイ可能に、ウェブ互換性を拡大
Servoでは、デモサイトのegui.rsが期待どおり動作するようになり、ゲーム「Candy Crush」もプレイ可能になりました。
今回の変更には、HTMLの<progress>要素やCSSの:checked疑似クラス、user-selectプロパティへの対応が含まれます。いずれもウェブサイトの表示や操作に使われます。
開発チームはWebGL 2の実装で適合性を改善しました。WebGL 2はブラウザー上で3D描画などに使われるウェブ標準です。
CSSとJavaScript周辺に新機能
CSSでは、型付き算術、alpha()関数、font-widthプロパティに対応しました。型付き算術はCSSの値を型に応じて計算する機能で、alpha()は色のアルファ値を扱います。
JavaScript開発者向けには、開発者ツールのコンソールが入力内容を即時評価するようになり、フィードバックを得るまでの時間を短縮しました。また、未処理のPromise拒否をJavaScriptコンソールに表示する変更も入りました。
DOM APIでは、選択範囲を取得するgetComposedRanges()や、Canvasのコンテキスト属性を取得するgetContextAttributes()などが追加されました。CSSモジュールとテキストモジュールにも対応しています。
Rustを使うブラウザーエンジン
Servoは、ウェブコンテンツを解析して表示するブラウザーエンジンです。実装言語にはRustを採用しており、言語の型システムがメモリー安全性とデータ競合の防止を支えています。
エンジン内部では、JavaScriptの実行やDOMの管理、レイアウト、描画などを複数の部分に分けています。レイアウトは必要に応じてワーカースレッドを使い、並列処理できる設計です。
描画はレイアウトから切り離されたスレッドで行い、最終的な画像はGPUを使うWebRenderが生成します。
セキュリティ更新と埋め込み機能
JavaScriptエンジンのSpiderMonkeyを153.3に、Mozangleを0.7に更新しました。どちらの更新にも、上流で報告されたセキュリティ問題への修正が含まれています。
Servoをアプリケーションに組み込むためのAPIでは、アクセシビリティ機能からの操作を渡すAPIと、WebViewのセッション履歴を消去するAPIが追加されました。WebViewを非表示にすると自動でスロットリングされ、再表示すると解除される動作にも変更されています。
性能面では、不要なメモリー確保を減らし、バッファーの再利用やガベージコレクターとのやり取りの削減などが進みました。LinuxではスレッドのCPUコアへの割り当てを調整する機能も有効になっています。











