跳到正文
认知
返回认知精选
认知精选科技大约 7 小时前
单一来源当前只有一个可用来源,尚未完成多源交叉核验

Servo引擎九月更新:新增进度条与圆角矩形功能

, rounded rectangles, and more!">

September in Servo: <progress>, rounded rectangles, and more!

Plus new CSS functions and WEbGL2 improvements.

Posted 2026-11-05

Servo 0.7.0 contains all of the changes we landed in September, spanning 527 commits!

The developer tools console now eagerly evaluates JS inputs, allowing faster feedback (@freyacodes, #47527).

We’ve shipped new web platform features:

· the :checked pseudoclass (@skyz1, #47987)

· the user-select property (@SimonSapin, @mrobinson, #48137, #48242)

· the <progress> element (@rayguo17, #46974)

· CSS typed arithmetic (@Loirooriol, #48338)

· the alpha() CSS function (@Loirooriol, #48344)

· the font-width property (@Loirooriol, #47914)

Plus a bunch of new DOM APIs:

· parentRule on CSSRule and CSSStyleDeclaration (@skyz1, #47743)

· version on HTMLHtmlElement (@SilvioPilato, #47786)

· getComposedRanges() and direction on Selection (@mrobinson, #47683)

· baseURL on CSSStyleSheet (@Gae24, #47783)

· CSS modules(@Gae24, #47813) and text modules (@Gae24, #47863)

· getContextAttributes() on CanvasRenderingContext2D and OffscreenCanvasRenderingContext2D (@Taym95, #47868)

· the Content-Language header (@TimvdLippe, #47930)

· dir on Document (@yezhizhen, #48170)

· SVGAElement, SVGPatternElement, SVGTSpanElement, SVGTextContentElement, SVGTextElement, SVGTextPositioningElement (@mu-mostafa98, #48174)

· the MLKEM768-X25519 algorithm for WebCrypto (@kkoyung, #48240, #48282, #48313, #48350)

· roundRect() on CanvasRenderingContext2D (@yezhizhen, #48293)

· paintTime and presentationTime on PerformancePaintTiming (@shubhamg13, #47926)

· getCueAsHTML() on VTTCue (@TimvdLippe, #48146)

Security

We upgraded to SpiderMonkey v153.3 and mozangle v0.7, both of which included fixes for security bugs reported upstream (@sagudev, #48176, #47655, #48259).

Real world compat

The egui.rs demo now works as expected with --pref dom._webegpu_enabled.

This Candy Crush game is now playable.

We’re interested to hear how well your favourite websites run in Servo! Report successes in this Zulip thread or this Github discussion, and failures in our GitHub issues.

Work in progress

Our accessibility tree (--pref accessibility_enabled) now reports geometry bounds for inline elements (@alice, #47905) and does much less work when responding to DOM changes (@alice, @mrobinson, #47690). Additionally, elements with display: none are reported as hidden (@alice, #47772).

We had lots of conformance improvements for our WebGL2 implementation (--pref dom_webgl2_enabled) (@mxmgorin, #48423, #48441, #48470, #48479, #48495, #48473, #48536).

Support for WSIWYG editors (which rely heavily on contenteditable) is going very well: keyboard inputs are now hooked up when --pref dom_exec_command_enabled is present, so many editors are now usable (example).

Closed captioning for video elements is making progress. Text tracks now fire enter, exit, and cuechange events (@TimvdLippe, #47725). Media elements now return the full sorted list of text tracks (@TimvdLippe, #47785), and adding cues to a text track now sets that track correctly (@TimvdLippe, #48012). Text track objects now reflect the attributes of the associated <track> element. Text track URLs are fetched at the correct time (@TimvdLippe, #48325), and active cues are computed correctly (@TimvdLippe, #48305), while text track cues are ordered as expected (@TimvdLippe, #48368). Additionally, WebVTT parsing can now recover from errors (@TimvdLippe, #48391).

The Sanitizer API (--pref dom_sanitizer_enabled) now accepts the javascriptURLs property (@skyz1, #47867).

IndexedDB continues to improve: tables no longer error if unrelated tables contain duplicate index names (--pref dom_indexeddb_enabled) (@leowatts, #47936). Additionally, we implemented openCursor() and openKeyCursor() on IDBIndex (@kuntal-devrat, #48281), as well as advance(), continue(), and continuePrimaryKey() on IDBCursor (@kuntal-devrat, #48400).

We implemented the getTimeline() and setTimeline() methods for the Animation interface (--pref dom_web_animations_enabled) (@simonwuelker, #48122).

Embedding API

There’s a new API for events originating from accessibility tools: Servo::forward_accessibility_action (@alice, @mrobinson, #48512).

There is also an API to clear session history: WebView::clear_session_history (@Narfinger, #47483).

The WebView::set_throttled API has been removed (@mrobinson, #39923). Throttling automatically occurs when a WebView is hidden and is stopped when shown.

The WebViewDelegate::notify_focus_changed method was removed, along with the Servo methods focus and blur (@mrobinson, #48364). Embedders must call WebView::set_focused whenever a WebView has gained or lost system focus.

The webgl feature has been added to the default_web_features feature (@janeoa, #47866). If an embedding does not want to ship with WebGL support they will now need to disable default features.

Multiprocess mode is enabled at build time with the new Cargo feature multprocess (@Narfinger, #47360). To remove support for this feature (reducing binary size by ~2MB), build Servo with default features disabled.

Two new preferences exist to tune garbage collector behaviour: js_mem_gc_malloc_threshold_base_mb and js_mem_gc_urgent_threshold_mb (@mxmgorin, #47999). These can help on memory-constrained devices, and more information is available in the SpiderMonkey source (base, urgent).

The JVM compatibility target was raised to 11 on Android (@veyndan, #48414).

For users and developers

It is now possible to cross-compile the OpenHarmony build from Windows hosts (@jschwe, #48392).

Unhandled promise rejections are reported to the JS console (@TTyChud, #48486), making it easier to narrow down web compatibility issues in Servo.

The OpenHarmony SDK was updated to API level 23 (@Narfinger, #48505).

Pressing Control+A (or Command+A on macOS) now selects all the content in a document (@dzfrias, @mrobinson, #48025). It is no longer possible to copy text inside of password inputs (@dzfrias, #48404).

Embedder-originating JS (e.g. devtools console or embedding APIs) will always execute, even in documents that disable scripting via sandboxing or CSP (@derdilla, #48394).

Performance and stability

We improved performance by removing unnecessary allocations (@Narfinger, @TimvdLippe, @yezhizhen, #47689, #47839, #47838, #47982, #48006, #48036, #48099, #48204, #48127, #48218, #48357, #48386, #48422, #48440, #48452, #48508), preallocating more when building vectors (@jschwe, @Narfinger, @sagudev, @webbeef, #47455, #47613, #48026, #48398), and avoiding IPC in single process mode (@leowatts, @Narfinger, @Uiniel, @TTyChud, #47691, #47718, #48002, #48073, #48476, #48435).

We also sped up Servo by reducing interactions with the GC (@TimvdLippe, @Narfinger, #47818, #48257, #48396), and doing less work when modifying selections (@SimonSapin, #47579), dispatching events (@webbeef, #48078), calculating font metrics (@RichardTjokroutomo, #48238), and indexing window frames (@mrobinson, #47832).

We reduced memory usage in common cases by reusing buffers (@Narfinger, #47751), clearing more page-specific data (@Radeonares32, @Narfinger, @jschwe, @mrobinson, @mxmgorin, #47651, #47806, #47805, #48166, #48295, #48297, #48016), compacting data structures (@Narfinger, @webbeef, @SimonSapin, @mrobinson, #47776, #48039, #48050, #47742, #48301, #48296, #48105), and sharing more buffers (@jdm, #47998). We also fixed a memory leak involving <audio> and <video> elements (@TTyChud, #48371).

We turned on thread affinity boosting on Linux, which can improve performance on some CPU architectures (@jschwe, #47058).

We’re working on statically preventing a footgun that can lead to uncollectible GC cycles and leaking memory (@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,

Evidence

来源与证据

单一来源 · 1 个信源

当前仅有一个可用来源,尚未完成多源交叉核验。

发布时间
内容处理
AI 翻译 / 摘要,需结合原文核对
内容有误或来源失效?告诉我们

每天早上收到这 5 条

免注册,填邮箱即可;每封邮件都能一键退订。

提交即表示同意按隐私说明保存你的邮箱,只用于发送简报。

或用 RSS 订阅

AI 翻译、摘要和解读仅用于辅助判断;涉及重要决策时,请回到上方来源核实。