HN 日本語サマリー

← 一覧へ戻る
Web開発

Servoにおける9月:<progress>要素、角丸、その他多数

September in Servo: <progress>, rounded rectangles, and more (servo.org)

63 pointsby iamnothere12 コメント

要約

Servoブラウザエンジンの9月の開発アップデートでは、527件のコミットにより、開発者ツールのコンソールでのJS入力の即時評価、:checked擬似クラス、user-selectプロパティ、<progress>要素、CSSの型付き算術、font-widthプロパティなどの新機能が追加されました。また、多数のDOM APIの改善や、SpiderMonkey v153.3およびmozangle v0.7へのアップグレードによるセキュリティ修正も行われました。

全文翻訳

Servoにおける9月:<progress>要素、角丸、その他多数!

Servo 0.7.0には、9月中に実施された527件のコミットによる変更がすべて含まれています!

[画像: 新しいビジュアルウェブプラットフォーム機能を披露する、ゲイリーという名前の白黒の猫]

開発者ツールのコンソールは、JS入力を即時評価するようになり、フィードバックが高速化されました(@freyacodes, #47527)。

新しいウェブプラットフォーム機能を出荷しました:

さらに多くのDOM APIが追加されました:

セキュリティ

SpiderMonkey v153.3およびmozangle v0.7にアップグレードしました。これらはどちらも、アップストリームで報告されたセキュリティバグの修正を含んでいます(@sagudev, #48176, #47655, #48259)。

実世界での互換性

egui.rsデモが--pref dom._webegpu_enabledで期待通りに動作するようになりました。

[画像: Servoでレンダリングされるhttp://egui.rs]

Candy Crushゲームがプレイ可能になりました。

[画像: ServoでレンダリングされるCandy Crushゲーム]

お気に入りのウェブサイトがServoでどの程度うまく動作するか、ぜひお聞かせください!成功事例はこのZulipスレッドまたはこのGitHubディスカッションで報告し、失敗事例はGitHubイシューで報告してください。

作業中

アクセシビリティツリー(--pref accessibility_enabled)が、インライン要素のジオメトリ境界を報告するようになり(@alice, #47905)、DOM変更への応答時に行う作業量が大幅に削減されました(@alice, @mrobinson, #47690)。さらに、display: noneを持つ要素は非表示として報告されるようになりました(@alice, #47772)。

WebGL2実装(--pref dom_webgl2_enabled)の互換性改善が多数行われました(@mxmgorin, #48423, #48441, #48470, #48479, #48495, #48473, #48536)。

WYSIWYGエディタ(contenteditableに大きく依存)のサポートが順調に進んでいます。--pref dom_exec_command_enabledが存在する場合、キーボード入力がフックアップされたため、多くのエディタが使用可能になりました(例:TinyMCEの基本例)。

ビデオ要素のクローズドキャプションが進展しています。テキストトラックはenter、exit、cuechangeイベントを発火するようになりました(@TimvdLippe, #47725)。メディア要素はテキストトラックの完全なソート済みリストを返すようになり(@TimvdLippe, #47785)、テキストトラックへのキューの追加がそのトラックを正しく設定するようになりました(@TimvdLippe, #48012)。テキストトラックオブジェクトは、関連する<track>要素の属性を反映するようになりました。テキストトラックURLは適切なタイミングでフェッチされ(@TimvdLippe, #48325)、アクティブなキューは正しく計算され(@TimvdLippe, #48305)、テキストトラックキューは期待通りに順序付けられるようになりました(@TimvdLippe, #48368)。さらに、WebVTTの解析はエラーから回復できるようになりました(@TimvdLippe, #48391)。

Sanitizer API(--pref dom_sanitizer_enabled)がjavascriptURLsプロパティを受け付けるようになりました(@skyz1, #47867)。

IndexedDBは引き続き改善されています。無関係なテーブルに重複したインデックス名が含まれていても、テーブルはエラーを発生しなくなりました(--pref dom_indexeddb_enabled)(@leowatts, #47936)。さらに、IDBIndexにopenCursor()およびopenKeyCursor()を実装し(@kuntal-devrat, #48281)、IDBCursorにadvance(), continue(), continuePrimaryKey()を実装しました(@kuntal-devrat, #48400)。

AnimationインターフェースにgetTimeline()およびsetTimeline()メソッドを実装しました(--pref dom_web_animations_enabled)(@simonwuelker, #48122)。

Embedding API

アクセシビリティツールから発生するイベントのための新しいAPIがあります:Servo::forward_accessibility_action(@alice, @mrobinson, #48512)。

セッション履歴をクリアするためのAPIもあります:WebView::clear_session_history(@Narfinger, #47483)。

WebView::set_throttled APIが削除されました(@mrobinson, #39923)。スロットリングはWebViewが非表示になると自動的に発生し、表示されると停止します。

WebViewDelegate::notify_focus_changedメソッドが削除され、Servoのfocusおよびblurメソッドも削除されました(@mrobinson, #48364)。Embedderは、WebViewがシステムフォーカスを獲得または失ったときに、常にWebView::set_focusedを呼び出す必要があります。

webglフィーチャーがdefault_web_featuresフィーチャーに追加されました(@janeoa, #47866)。埋め込みがWebGLサポートなしでリリースしたい場合、デフォルトフィーチャーを無効にする必要があります。

マルチプロセスモードは、新しいCargoフィーチャーmultprocessでビルド時に有効になります(@Narfinger, #47360)。このフィーチャーのサポートを削除したい場合(バイナリサイズを約2MB削減)、デフォルトフィーチャーを無効にしてServoをビルドしてください。

ガベージコレクタの動作を調整するための2つの新しいプリファレンスが存在します:js_mem_gc_malloc_threshold_base_mbおよびjs_mem_gc_urgent_threshold_mb(@mxmgorin, #47999)。これらはメモリ制約のあるデバイスで役立つ可能性があり、詳細についてはSpiderMonkeyのソースを参照してください(base, urgent)。

AndroidのJVM互換性ターゲットが11に引き上げられました(@veyndan, #48414)。

ユーザーと開発者向け

WindowsホストからOpenHarmonyビルドをクロスコンパイルできるようになりました(@jschwe, #48392)。

未処理のPromise拒否がJSコンソールに報告されるようになり(@TTyChud, #48486)、Servoでのウェブ互換性の問題を絞り込みやすくなりました。

OpenHarmony SDKがAPIレベル23に更新されました(@Narfinger, #48505)。

Control+A(macOSではCommand+A)を押すと、ドキュメント内のすべてのコンテンツが選択されるようになりました(@dzfrias, @mrobinson, #48025)。パスワード入力内のテキストをコピーすることはできなくなりました(@dzfrias, #48404)。

Embedderから発生するJS(例:デベロッパーツールコンソールやembedding API)は、サンドボックスやCSPでスクリプティングを無効にしているドキュメントでも常に実行されるようになります(@derdilla, #48394)。

パフォーマンスと安定性

不要なアロケーションを削除することでパフォーマンスを向上させました(@Narfinger, @TimvdLippe, @yezhizhen, #47689, #47839, #47838, #47982, #48006, #48036, #48099, #48204, #48127, #48218, #48357, #48386, #48422, #48440, #48452, #48508)、ベクター構築時により多くを事前アロケーションし(@jschwe, @Narfinger, @sagudev, @webbeef, #47455, #47613, #48026, #48398)、シングルプロセスモードでIPCを回避しました(@leowatts, @Narfinger, @Uiniel, @TTyChud, #47691, #47718, #48002, #48073, #48476, #48435)。

GCとのインタラクションを減らし(@TimvdLippe, @Narfinger, #47818, #48257, #48396)、選択範囲の変更時(@SimonSapin, #47579)、イベントディスパッチ時(@webbeef, #48078)、フォントメトリクスの計算時(@RichardTjokroutomo, #48238)、ウィンドウフレームのインデックス作成時(@mrobinson, #47832)に、より少ない作業で済むようにすることで、Servoを高速化しました。

バッファの再利用(@Narfinger, #47751)、ページ固有データのより多くのクリア(@Radeonares32, @Narfinger, @jschwe, @mrobinson, @mxmgorin, #47651, #47806, #47805, #48166, #48295, #48297, #48016)、データ構造の圧縮(@Narfinger, @webbeef, @SimonSapin, @mrobinson, #47776, #48039, #48050, #47742, #48301, #48296, #48105)、バッファの共有(@jdm, #47998)により、一般的なケースでのメモリ使用量を削減しました。また、<audio>および<video>要素に関連するメモリリークも修正しました(@TTyChud, #48371)。

Linuxでスレッドアフィニティブーストを有効にし、一部のCPUアーキテクチャでパフォーマンスが向上する可能性があります(@jschwe, #47058)。

収集不能なGCサイクルやメモリリークにつながる可能性のあるフットガンを静的に防止する作業を進めています(@Gae24, @jdm, @lumiscosity, @SilvioPilato, @sahilnyk, @TTyChud, @kuntal-devrat, @MohamedAli00949, #47941, #48013, #48021, #48035, #48033, #48051, #48072, #48171, #48209, #48248, #48246, #48264, #48285, #48311, #48408, #48053, #48156, #48186, #48223, #48315, #47872, #47698, #47682, #47735, #47816, #47817, #47794, #47909, #47934, #47935, #47954, #48022, #47955, #48058, #48228, #48247, #48261, #48280, #48302, #48316, #48328, #48346, #48355, #48262, #48377, #48304, #48378, #48388, #48432)。

WebRTC(@MunishMummadi, #4772)、DocumentのexecCommand()(@TimvdLippe, #47784)、<video>(@calvaris, #46148)、<iframe>(@jdm, #48465)、SharedWorker(@mrobinson, #47940)、DocumentのancestorOrigins(@mrobinson, #48009)、about:memory(@mxmgorin, #47686, #48001)、およびEGL 1.4構成(@mxmgorin, #47803)でのパニックを修正しました。

また、通常のページがパニックを引き起こしたときにロードされるabout:crashページによってトリガーされる、非常に皮肉なパニックも修正しました(@mrobinson, #48055)。

プリミティブ値を例外としてスローした場合、JSコンソールがハングしなくなりました(@FatCat560, #47629)。マルチプロセスモードでのシャットダウン時(@Narfinger, #48523)、特定のページがIntersectionObserverを使用している場合(@mxmgorin, #47693)、保留中のWebDriverコマンドがあるブラウジングコンテキストを閉じるとき(@yezhizhen, #48131, #48172)、またはSharedWorkerを閉じるとき(@nicoburns, #48477)に、Servoがハングしなくなりました。

about:memoryはさらに改善されました。SVGレンダリング(@Narfinger, @mrobinson, #47061)、WebAudio(@jdm, #47996)のメモリ測定が増加し、リークしたグローバル変数を特定できるようになりました(@jdm, #48237)。

ウェブプラットフォームに関するその他の情報

CSS画像はloadイベントを遅延するようになり、視覚的なレンダリングを実行するエンジンユーザーにとって、より一貫した動作をもたらします(@TimvdLippe, #48199)。

ドキュメント内のインタラクティブな選択範囲はさらに改善されました!シャドウトリーにもまたがることができ(@mrobinson, @SimonSapin, #47931, #47694, #47895)、高さと位置が一貫するようになり(@mrobinson, #47937)、さらにコピーとすべて選択のための新しいコンテキストメニューエントリが追加されました(@mrobinson, #48101)。加えて、画像ベースのコンテンツが選択範囲の一部である場合に表示されるようになりました(@mrobinson, #48149)。

Window.open()は、ポップアップを防止するサンドボックスフラグを尊重するようになりました(@mrobinson, #47653)。

LargestContentfulPaintは、画像コンテンツのloadTimeを報告し(@shubhamg13, #48286)、クロスオリジンフレームを無視し(@shubhamg13, #48094)、非表示のテキストを無視し(@shubhamg13, #48010)、ツリーから削除されたときにnull要素を報告するようになりました(@shubhamg13, #48125)。

テキスト入力フィールドのselect()は、コントロールにフォーカスを当てるようになりました(@dzfrias, @mrobinson, #48475)。

WebDriverサーバーは、権限の設定を自動化し(@xbwwj, @yezhizhen, #47623)、クリックイベントやキーボードアクションの送信は遅延が少なくなりました(@yezhizhen, #48066)。

Documentのメソッド(@eachra-bawn, #47835)およびCSS関連インターフェース(@eachra-bawn, @jdm, #47746)で、より役立つエラーメッセージが表示されるようになりました。

stylo依存関係をアップグレードし、contrast-color(), color-mix(), vertical-align, list-style, place-items, at-rule(), calc(), alpha(), attr(), content: attr(), named-feature()との互換性を向上させました(@Loirooriol, #46987, #47942)。

また、DocumentのvisibilityState(@yezhizhen, #47908)、SelectionのcontainsNode()(@mrobinson, #47938)、KeyframeEffectのsetKeyframes(@simonwuelker, #48103)、テキスト入力フォーカス時の選択範囲(@mrobinson, #48107)、AudioParamのクランプと自動化(@kevlu93, #48351, #48347)、PannerNodeの出力(@kevlu93, #48510)、HTMLMediaElementのmuted属性(@TimvdLippe, #48403)、テキスト入力のプレースホルダー(@jdm, #47761, #47797)、ドキュメントスタイルシート変更時のアニメーション(@SharanRP, #48000)、グラデーションカラー停止(@BudiArb, #48288)、スティッキーテーブル行(@TTyChud, #48380)、::first-letter(@Loirooriol, #48307)、text-wrap-mode(@mrobinson, #48469)、OTFフォント(@wood-ghost, #47904)、CSSとnosniff(@sahvx655-wq, #45481)、Sec-Fetch-ヘッダーとリダイレクト(@TimvdLippe, #48203)、NodeのmoveBefore()(@mrobinson, #47692)、WebCryptoのsupports()(@kkoyung, #47768, #47891, #47953, #47984, #48410, #47545)、クロスオリジンウィンドウ(@mrobinson, @jdm, #47632, #48411, #48038)、about:blankおよびabout:srcdocのオリジン(@mrobinson, #47630)、keypressイベント(@mrobinson, #48324)、テキストおよびメディアドキュメント(@SilvioPilato, #47823)、Responseのbody()(@TTyChud, #48409)、<details>と<summary>(@TimvdLippe, #48224)、非表示入力の編集(@dzfrias, #48165)、XPathでの属性ノード(@leowatts, @mrobinson, #47912)、絶対配置ボックス(@mxmgorin, #48081)、絶対配置ノードを持つCSS Gridコンテナ(@nicoburns, #47519)、WebDriverのホイール/ポインターアクション(@yezhizhen, #48143)、およびblob: URL(@Gae24, #47910)に関連するバグを修正しました。

新規コントリビューター

Servoに初めてパッチを適用した以下の皆さんに、特別な感謝を申し上げます:

ウェブブラウザの構築に協力することに興味がありますか?新規コントリビューターに適したイシューの厳選リストをご覧ください!

寄付

皆様の寛大なご支援に改めて感謝いたします!現在、月額8144 USD(8月から+1%)の継続的な寄付を受けています。これは、私たちの高速な CI および ベンチマークサーバー(https://ci4.servo.org/)、最新のOutreachyインターン(https://www.outreachy.org/alums/2026-05/#:~:text=Servo)の費用、そしてより多くの人々がServoに貢献するのを助けるメンテナーの活動(https://servo.org/blog/2026/09/15/one-year-of-sponsorship/)の資金をカバーするのに役立っています。

Servoはthanks.devにも掲載されており、すでにServoに依存している37人のGitHubユーザー(8月から+1人)がそこでスポンサーになっています。Servoライブラリ(url, html5ever, selectors, cssparserなど)を使用している場合、thanks.devにサインアップすることは、あなた(またはあなたの雇用主)がコミュニティに貢献するための良い方法かもしれません。

現在、個人または組織がServoプロジェクトに寄付し、そのサポートを公に認識してもらうことができるスポンサーシップティアがあります。この種のスポンサーシップに興味がある場合は、[email protected]までご連絡ください。

月額8128 USD

10000

寄付金の使途は、テクニカル・ステアリング・コミットteeの公開されている資金要求プロセスを通じて透明性を持って決定され、アクティブな提案はservo/project#187で追跡されます。詳細については、スポンサーシップページをご覧ください。