プログラミング
Servoにおける6月:実世界互換性、メディアクエリ、SharedWorkerなど
June in Servo: real world compat, media queries, SharedWorker, and more (servo.org)
要約
Servoプロジェクトの2026年6月の活動報告です。この月は558件のコミットがあり、実験モードでの`attr()`、`image()`、`calc()`の改善、`@media`クエリのサポート拡充、SharedWorkerやconsole.dir()などのDOM API追加が含まれます。また、SpiderMonkeyのセキュリティアップデートや、lichess.orgなどの実世界サイトでの互換性向上が報告されています。
全文翻訳
Servoにおける6月:実世界互換性、メディアクエリ、SharedWorkerなど!
私たちが毎月のアップデートを作成するのを手助けする新しい方法ができました :) 2026年7月31日投稿
Servo 0.4.0には、6月に完了したすべての変更が含まれており、これは記録的な558件のコミット(4月: 534件、5月: 391件)に達しました。セキュリティ修正については、§ Security を参照してください。
私たちはいくつかの新しいウェブプラットフォーム機能を出荷しました:
実験モードでの `attr()` (@Loirooriol, #45041)
`image(<color>)`、`ellipse()` および `circle()` における `closest-corner` と `farthest-corner` (@Loirooriol, #45421)
`calc()` およびその他の数学的式が、パース時よりも後に解決できるようになりました。例: `sign(1em - 32px)` (@Loirooriol, #45421)
`@font-face` における `font-feature-settings` (@simonwuelker, #45393)
`@media (device-width)`、`@media (device-height)`、`@media (height)`、`@media (aspect-ratio)`、およびそれらの `min-` および `max-` バリアント (@jdm, @mrobinson, @nicoburns, @jschwe, #44978, #45707, #45490)
`@media (orientation)` (@nicoburns, #45707)
`@media (pointer)` および `@media (any-pointer)` (@nicoburns, #45681)
`@media (hover)` および `@media (any-hover)` (@nicoburns, #45681)
さらに、多くの新しいDOM APIが追加されました:
SharedWorker (@Taym95, #45786)
`console.dir()` (@Taym95, #45109)
`Document` および `ShadowRoot` における `customElementRegistry` (@shubhamg13, #45872)
`CustomElementRegistry` における `initialize()` (@shubhamg13, @yezhizhen, #45903)
`new CustomElementRegistry()` (@shubhamg13, #45791, #45550)
`Request`、`Response`、および `Blob` における `textStream()` (@yezhizhen, #45864, #45861)
`Element` における `setPointerCapture()`、`releasePointerCapture()`、`hasPointerCapture()` (@webbeef, #45048)
`Element` における `ontouchstart`、`ontouchend`、`ontouchmove`、`ontouchcancel` (@stevennovaryo, #45049)
KT128 および KT256 用の `crypto.subtle.digest()` (@kkoyung, #45699)
ML-KEM および ML-DSA 用の `crypto.subtle.getPublicKey()` (@kkoyung, #45252)
これもまた大きなアップデートです。以下に概要を示します:
手助けしてください!
セキュリティ
実世界互換性
開発中の機能
埋め込みAPI
ユーザーと開発者のために
ウェブプラットフォームについてさらに詳しく
ガベージコレクションの安全性
パフォーマンスと安定性
新しい貢献者
手助けしてください!
Servoは毎月着実に大きく、忙しいプロジェクトになってきており、2026年6月までに、2023年9月に開始した頃の4倍以上のコミットを読み込んでいます。これは特に、変更を読むだけでは答えにくい、知っておくべきことがあるため、大変な作業です:
その変更は誰に影響しますか?ユーザー、Servo開発者、埋め込み側、それとも他のグループですか?
その変更は、観察可能などのような違いをもたらしますか?
その機能は、有効にするために何らかの設定が必要ですか、それともデフォルトで全員に有効になりますか?
実世界のウェブサイトで、その変更の影響を受けるものはありますか?
その変更は、どの問題やより広範なプロジェクトに関連していますか?
この質問は、PRの説明にある「Fixes: #xxxxx」または「Part of: #xxxxx」によって答えられます。
@jdm氏のイニシアチブのおかげで、Servo Highfiveボットを使用して、これらの質問に答えるのがこれまで以上に簡単になりました!
次の月次アップデートで興味深いと思われるプルリクエストに取り組んでいる場合、たとえ100%確信がなくても、以下の手順に従って私たちに教えてください:
プルリクエストに `monthly update` ラベルを追加するか、`@servo-highfive monthly update` とコメントします。
Highfiveはいくつかの質問をするコメントを投稿します。
`@servo-highfive monthly update answer` を含むコメントで質問に答えます。
セキュリティ
ServoのJSランタイムであるSpiderMonkey 140.10.1には、いくつかのセキュリティバグがありましたが、Servo 0.4.0でSpiderMonkey 140.11.0にアップデートされた際に修正されました (@jschwe, #45584)。詳細については、CVE-2026-8388、CVE-2026-8391、CVE-2026-8974、CVE-2026-8975、およびMFSA 2026-48を参照してください。
ServoのJSランタイムにおけるさらにいくつかのセキュリティバグが、Servo 0.4.0でSpiderMonkey 140.12.0にアップデートされた際に修正されました (@jschwe, #45766)。適用される正確なCVEはまだ不明ですが、詳細についてはMFSA 2026-58を参照してください。
SubtleCryptoにおけるRSA操作は、現在、モジュラ指数計算を定数時間で行います (@kkoyung, #45631)。ただし、現在のRSA実装はMarvin Attackに対して脆弱であることに注意してください。詳細についてはRUSTSEC-2023-0071を参照してください。
SubtleCryptoにおけるML-DSA操作は、Decomposeステップを定数時間で行い、RUSTSEC-2025-0144を修正しました (@kkoyung, #45294)。
ファイル:///ディレクトリリストにおけるHTMLインジェクションバグ(XSS)を修正しました。これは`</script>`を含むファイル名に影響していました (@sahvx655-wq, #45510)。
実世界互換性
variable fontsの処理改善により、lichess.orgでのレイアウトの正確性が大幅に向上し、多くのウェブサイトがより読みやすくなりました (@simonwuelker, #45768)。これにはZulip (servo.zulipchat.com) やSpeedtest (speedtest.net) も含まれます。
v0.3.0 v0.4.0 lichess.org
v0.3.0 v0.4.0 Zulip (servo.zulipchat.com)
v0.3.0 v0.4.0 Speedtest (speedtest.net)
多くのウェブサイトはバージョン0.4.0以前でもServoで動作しており、Google Photos (photos.google.com) やCash Converters (cashconverters.com.au) が含まれ、バージョン0.4.0でも引き続き動作します。Google Maps (maps.google.com) やOpenStreetMap (www.openstreetmap.org) のような他のウェブサイトは、うまくレンダリングされますが、インタラクティビティにいくつかの問題があります。
Google Photos (photos.google.com)
Cash Converters (cashconverters.com.au)
Google Maps (maps.google.com)
OpenStreetMap (www.openstreetmap.org)
お気に入りのウェブサイトがServoでどの程度うまく動作するか、ぜひお聞かせください!成功した場合はこのZulipスレッドで、失敗した場合はGitHubのissueで報告してください。
開発中の機能
`content`内だけでなく、どこでも使用できる、より強力なバージョンの`attr()`を、`--pref layout_css_attr_enabled`の下で実装しています (@Loirooriol, #45041, #45421, #45495, #45752)。
WebGPUサポートが改善されました。`--pref dom_webgpu_enabled`の下で:
`GPUQueue`における`copyExternalImageToTexture()`を実装しました (@sagudev, #45646)
`GPUDevice`における`createQuerySet()`、および`GPUCommandEncoder`における`resolveQuerySet()`を実装しました (@sagudev, #45644)
`GPUCommandEncoder`、`GPUComputePassEncoder`、および`GPURenderPassEncoder`における`pushDebugGroup()`、`popDebugGroup()`、`insertDebugMarker()`を実装しました (@jschwe, #45489)
より準拠した`GPUTexture` (@sagudev, #45300)
`GPU`におけるより準拠した`requestAdapter()` (@sagudev, #45424)
より準拠したセキュアコンテキスト強制 (@sagudev, #45279)
上記の機能はすべて、servoshellの実験モードで有効になっています。
アクセシビリティサポートに向けた進捗がありました。`--pref accessibility_enabled`の下です (@alice, @delan, #45555, #45554, #44949)。
表示可能でインタラクティブなテキスト選択の実装を開始しました (@mrobinson, @SimonSapin, #46107)。これは、どのウェブブラウザでも最も待ち望まれていた機能の1つです。続報にご期待ください!
また、`--pref dom_web_animations_enabled`の下でWeb Animations (@simonwuelker, #45522, #45983) の作業を開始しました。さらに、`--pref dom_entries_api_enabled`の下で`File`における`webkitRelativePath` (@yezhizhen, #45666) の作業も開始しました。
Rustには安定したABIがないため、通常、Servoをソースからビルドせずに別のアプリケーションに埋め込むことはできませんでした。これを可能にするために、安定した普遍的なC ABIを使用して、プリビルドされた共有ライブラリとしてServoを利用できるラッパーC APIの設計を開始しました (@mukilan, #44984)。最終的には、そのラッパーC APIの周りにラッパーRust APIを作成し、RustのエルゴノミクスとCのビルドのシンプルさの両方を提供することを目指しています。
埋め込みAPI
Servo APIの新機能: `WebView::rendering_context` (@mrobinson, #46047)
破壊的変更: `WebView::send_error` が削除されました (@mukilan, #45502) – このメソッドは常に内部用であり、新しい `WebView-` および `WebViewDelegate-` ベースのAPIを導入した後に使用されなくなりました。
`WebView`、`WebViewDelegate`、`JSValue`、`AlertDialog`、`AllowOrDenyRequest`、`AuthenticationResponse`、`BluetoothDeviceDescription`、`ConfirmDialog`、`ConsoleLogLevel`、`CreateNewWebViewRequest`、`EmbedderControl`、`EmbedderControlResponse`、`FilePicker`、`Image`、`JavaScriptErrorInfo`、`NavigationRequest`、`PermissionRequest`、`PixelFormat`、`PromptDialog`、`ProtocolHandlerRegistrat` のドキュメントを改善しました。