
2026/11/05 23:34
Servo の 9 月:<progress>要素、丸角四角形など、そして他にも
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Improved Summary:
Servo ブラウザエンジン 0.7.0(9 月の作業を網羅し、527 のコミットを含むリリース)は、ウェブ開発者とユーザーにとっての大きな前進であり、多数の新しい DOM API や「alpha()」や「」といった CSS 機能、SpiderMonkey v153.3 への重要なセキュリティアップグレードを導入しています。実際の運用環境でのテストにより堅牢な互換性が確認され、Candy Crush のようなデモやゲームもエンジン内で円滑に動作することが可能になりました。
開発者向けには、このリリースにより新しいフォーカス管理 API(「clear_session_history」を含む)が加わり、WYSIWYG エディタのサポートが簡素化され、IndexedDB カーソルメソッドや Animation インターフェースの更新といった重要な機能も追加されています。また、高度な WebCrypto アルゴリズムが導入されるとともに、ジオメトリ境界を正確に検出したり非表示要素を適切に処理したりすることでアクセシビリティツールの改善も行われています。
エンドユーザー向けには、WebRTC およびビデオ要素におけるパニックの修正、メモリリークの削減などにより安定した体験が提供され、「Control+A」で全コンテンツを選択させたりパスワードフィールドでのテキストコピーを防いだりするなど、特定の UX 向上も実現されています。パフォーマンス面の向上は、メモリの効率的な利用(リサイクル可能なバッファの使用、GC との相互作用の削減)によるものであり、このリリースでは Android クロスコンパイルへの対応と JVM ターゲットの更新が行われることで、将来の技術のための堅固な基盤が築かれています。
本文
Servo 0.7.0 リリースノート:大きなアップデートと新機能
Servo 0.7.0 は、9 月にマージされたすべての変更点を反映し、総計 527 コミット を含む大幅なアップデートです。
🔧 開発者向けツールと Web プラットフォームの強化
JS インプットの高速化
- コンソールで JS をより積極的(eagerly)に評価する機能を追加し、フィードバックが飛躍的に高速化されました。
新実装された Web プラットフォーム機能
パseudo クラスの実装:checked
プロパティの実装user-select
要素のサポート追加<progress>- **CSS 型演算子(CSS typed arithmetic)**の導入
CSS 関数の追加alpha()
プロパティの実装font-width
新実装された DOM API
およびCSSRule
へのCSSStyleDeclaration
メソッドparentRule
へのHTMLHtmlElement
プロパティversion
のSelection
メソッドとgetComposedRanges()
プロパティdirection
へのCSSStyleSheet
プロパティbaseURL- CSS モジュールおよびテキストモジュールの追加
およびCanvasRenderingContext2D
へのOffscreenCanvasRenderingContext2D
メソッドgetContextAttributes()
ヘッダーのサポートContent-Language
へのDocument
プロパティdir- SVG 要素:
,SVGAElement
,SVGPatternElement
,SVGTSpanElement
,SVGTextContentElement
,SVGTextElementSVGTextPositioningElement - WebCrypto用の MLKEM768-X25519 アルゴリズムの導入
へのCanvasRenderingContext2D
メソッドroundRect()
のPerformancePaintTiming
およびpaintTime
プロパティpresentationTime
へのVTTCue
メソッドgetCueAsHTML()
🛡️ セキュリティと安定性
ライブラリ_upgrade_
- SpiderMonkey v153.3および mozangle v0.7へアップグレードし、セキュリティバグを修正しました。
パフォーマンス向上と最適化
- 不要なアロケーションを除去し、パフォーマンスを向上させました。
- ベクター構築時の事前割り当てを増やし、シングルプロセスモードでの IPC を回避して速度を上げました。
- GC(ガベージコレクション)との相互作用を削減し、選択処理やイベントディスパッチの負荷軽減を行いました。
- バッファのリサイクルとデータ構造の緊密化により、共通ケースにおけるメモリ使用量を削減しました。
- Linux 向けにスレッドアフィニティブースト機能を有効化し、CPU アーキテクチャごとのパフォーマンス向上を図りました。
🎮 リアルワールド互換性とテスト結果
デモは、egui.rs
オプションの有効化により予期した通りに動作します。--pref dom._webegpu_enabled- 「Candy Crush」のようなゲームも今では遊ぶことができます。
- **ご要望:**お気に入りのウェブサイトが Servo でどの程度動作するかのご報告をお待ちしています。
- 成功事例は Zulip スレッド または GitHub ディスカッション に、失敗事例は GitHub Issues にご報告ください。
🚧 進行中の作業(Work in Progress)
- アクセシビリティツリー(
)--pref accessibility_enabled- インライン要素へのジオメトリのバウンディングボックス報告を追加しました。
- DOM 変化への対応処理を大幅に削減しました。
を持つ要素は「非表示」として適切に報告されます。display: none
- WebGL2 実装(
)--pref dom_webgl2_enabled- コンformance(準拠度)に関する大幅な改善を行いました。
- WYSIWYG エディタ
に強く依存するエディタへのサポートが進んでいます。contenteditable
を設定するとキーボード入力が正しく動作します(例:多くのエディタが利用可能)。--pref dom_exec_command_enabled
- 動画とキャプション
- 動画要素のキャプション機能へ進展。
- テキストトラックは
,enter
,exit
イベントを発火します。cuechange - メディア要素はテキストトラックの完全なソート済みリストを返し、クエ(cue)が正しく設定されます。
- WebVTT パーサーがエラーから回復可能になりました。
- サンタイザー API(
)--pref dom_sanitizer_enabled
プロパティの許可に対応しました。javascriptURLs
- IndexedDB(
)--pref dom_indexeddb_enabled- 無関係なテーブルに重複インデックス名が存在してもエラーが発生しなくなりました。
に対してIDBCursor
,advance()
,continue()
メソッドを実装しました。continuePrimaryKey()
- アニメーション(
)--pref dom_web_animations_enabled- インターフェースの
およびgetTimeline()
メソッドを実装しました。setTimeline()
- インターフェースの
🔌 エンベッディング API の変更と追加
- 新 API **
**を追加(アクセシビリティツールからのイベント処理用)。Servo::forward_accessibility_action - 新 API **
**を提供(セッション履歴のクリア用)。WebView::clear_session_history
API は廃止されました。非表示時に自動的にスロットリングが適用され、表示時に取り消される仕組みに変わりました。WebView::set_throttled
および Servo のWebViewDelegate::notify_focus_changed
,focus
メソッドは廃止されました。Embedder からblur
を明示的に呼び出す必要があります。WebView::set_focused- 新 Cargo feature **
**により、ビルド時にマルチプロセスモードが有効になります。バイナリサイズを約 2MB 削減するにはデフォルト機能を無効にしてください。multprocess - Android の JVM 互換性ターゲットをバージョン 11に引き上げました。
👥 ユーザーおよび開発者向けの変更点
- Windows ホストから OpenHarmony ビルドのクロスコンパイルが可能になりました。
- ハンドルされていない Promise の拒否(rejection)が JS コンソールに報告され、互換性問題の特定が容易になりました。
- OpenHarmony SDKを API レベル 23 に更新しました。
- Control+A(macOS は Command+A)でドキュメント内の全コンテンツを選択できるようになりました。
- セキュリティ強化: パスワード入力フィールド内のテキストのコピー機能が廃止されました。
- サandbox化または CSP でスクリプトが無効化されたドキュメント内でも、Embedder 起源の JS(開発者ツールなど)は常に実行されます。
📊 パフォーマンスと安定性の詳細
- メモリリーク修正:
および<audio>
要素に関連する問題を解消しました。<video> - パニック修正: WebRTC、
、execCommand()
、<video>
、SharedWorker 関連など多数のパニックを修正しました。<iframe>
ページが自身でパニックを引き起こすというバグも解消。about:crash- 原始値の例外スローによる JS コンソールのフリーズを防ぎました。
- マルチプロセス問題: シャットダウン時や IntersectionObserver、Pending WebDriver コマンド、SharedWorker 閉じ時のフリーズを修正しました。
- 診断強化:
で SVG レンダリング、WebAudio、リークしたグローバル変数の特定に関する計測が強化されました。about:memory
🌐 Web プラットフォームの機能改善
- CSS イメージのロードイベント遅延の問題を解決し、エンジンユーザーに対する動作を統一しました。
- インタラクティブな選択機能: シャドウツリー跨ぎや高位置整合性の改善、画像ベースコンテンツの選択表示などを行いました。
はポップアップ防止フラグを尊重するようになりました。Window.open()
指標において、イメージコンテンツのLargestContentfulPaint
が報告され、クロスオリジンフレームは無視されるようになりました。loadTime- テキスト入力に対する
メソッドがコントロールをフォーカスするようになりました。select() - WebDriver サーバーの設定権限自動設定により、クリックやキー操作の遅延が減りました。
- Stylo 依存ライブラリ更新:
,contrast-color()
,color-mix()
など多くの CSS 機能の互換性を向上させました。vertical-align
🐛 多数のバグ修正(リスト)
以下を含む多数のバグが修正されました:
のDocumentvisibilityState
のSelectioncontainsNode()
のKeyframeEffectsetKeyframes- テキスト入力へのフォーカス時選択機能
とAudioParam
の動作修正PannerNode
のHTMLMediaElement
属性muted- テキストラップモード、OTF フォント、CSS グリッドコンテナなど多数のレイアウト・レンダリング問題。
👏 新しいコントリビューターへのご祝意
Servo に初めてパッチをマージされた方々へ感謝を表します:
- Arnau Camprubí (@Arnau478)
- Silvio Pilato (@SilvioPilato)
- Radeonares32 (@Radeonares32)
- derdilla (@derdilla)
- pr3pony (@pr3pony)
- Mario (@Fatcat560)
- TtyChud (@TTyChud)
- Devrate Kuntal (@kuntal-devrat)
- Diego Frias (@dzfrias)
- LiamillionSS (@LiamillionSS)
Web ブラウザの構築に興味がある方は、新コントリビューター向けの厳選されたイシューリストをご覧ください。
💰 寄付とコミュニティサポートについて
Servo プロジェクトへの多大なるご支援に心からの感謝を申し上げます!
- 寄付実績: 今月は 8,144 USD(前年同期比 +1%)を受領しました。
- 高速な CI とベンチマークサーバーの運営費用
- Outreachy インターンシップ生のサポート
- コントリビューター拡大への資金提供
- thanks.dev: すでに 37 人の GitHub ユーザーが依存しており、
,url
など Servo ライブラリの利用者を支援しています。組織としての寄付(スポンサーシップ)も可能です。html5ever- ご興味のある方は email@example.com までお問い合わせください。
寄付の使い道は技術ステアリングコミッティによって透明性を持って決定されます。詳細は Sponsorship ページ および servo/project#187 をご覧ください。