{
  "@context": "https://schema.org",
  "@id": "https://aggr.aymericbeaumet.com/items/hnrss-org/2026-11-05-september-in-servo-rounded-rectangles-and-more/#webpage",
  "@type": [
    "WebPage",
    "ArchiveComponent"
  ],
  "articleBody": "Plus new CSS functions and WEbGL2 improvements.\n\n[**Servo 0.7.0**](https://github.com/servo/servo/releases/tag/v0.7.0) contains all of the changes we landed in September, spanning 527 commits!\n\n[![a black and white cat named Gary showing off new visual web platform features](https://servo.org/img/blog/2026-10-gary-banner.png)](https://servo.org/img/blog/2026-10-gary-banner.png)\n\nThe developer tools console now **eagerly evaluates** JS inputs, allowing faster feedback ([@freyacodes](https://github.com/freyacodes), [#47527](https://github.com/servo/servo/pull/47527)).\n\nWe’ve shipped new web platform features:\n\n- the **:checked** pseudoclass ([@skyz1](https://github.com/skyz1), [#47987](https://github.com/servo/servo/pull/47987))\n- the **user-select** property ([@SimonSapin](https://github.com/SimonSapin), [@mrobinson](https://github.com/mrobinson), [#48137](https://github.com/servo/servo/pull/48137), [#48242](https://github.com/servo/servo/pull/48242))\n- the **\\<progress>** element ([@rayguo17](https://github.com/rayguo17), [#46974](https://github.com/servo/servo/pull/46974))\n- CSS [typed arithmetic](https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Values_and_units/Using_typed_arithmetic) ([@Loirooriol](https://github.com/Loirooriol), [#48338](https://github.com/servo/servo/pull/48338))\n- the **alpha()** CSS function ([@Loirooriol](https://github.com/Loirooriol), [#48344](https://github.com/servo/servo/pull/48344))\n- the **font-width** property ([@Loirooriol](https://github.com/Loirooriol), [#47914](https://github.com/servo/servo/pull/47914))\n\nPlus a bunch of new DOM APIs:\n\n- **parentRule** on **CSSRule** and **CSSStyleDeclaration** ([@skyz1](https://github.com/skyz1), [#47743](https://github.com/servo/servo/pull/47743))\n- **version** on **HTMLHtmlElement** ([@SilvioPilato](https://github.com/SilvioPilato), [#47786](https://github.com/servo/servo/pull/47786))\n- **getComposedRanges()** and **direction** on **Selection** ([@mrobinson](https://github.com/mrobinson), [#47683](https://github.com/servo/servo/pull/47683))\n- **baseURL** on **CSSStyleSheet** ([@Gae24](https://github.com/Gae24), [#47783](https://github.com/servo/servo/pull/47783))\n- [**CSS modules**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules#loading_non-javascript_resources)([@Gae24](https://github.com/Gae24), [#47813](https://github.com/servo/servo/pull/47813)) and **text modules** ([@Gae24](https://github.com/Gae24), [#47863](https://github.com/servo/servo/pull/47863))\n- **getContextAttributes()** on **CanvasRenderingContext2D** and **OffscreenCanvasRenderingContext2D** ([@Taym95](https://github.com/Taym95), [#47868](https://github.com/servo/servo/pull/47868))\n- the **Content-Language** header ([@TimvdLippe](https://github.com/TimvdLippe), [#47930](https://github.com/servo/servo/pull/47930))\n- **dir** on **Document** ([@yezhizhen](https://github.com/yezhizhen), [#48170](https://github.com/servo/servo/pull/48170))\n- **SVGAElement**, **SVGPatternElement**, **SVGTSpanElement**, **SVGTextContentElement**, **SVGTextElement**, **SVGTextPositioningElement** ([@mu-mostafa98](https://github.com/mu-mostafa98), [#48174](https://github.com/servo/servo/pull/48174))\n- the **MLKEM768-X25519** algorithm for **WebCrypto** ([@kkoyung](https://github.com/kkoyung), [#48240](https://github.com/servo/servo/pull/48240), [#48282](https://github.com/servo/servo/pull/48282), [#48313](https://github.com/servo/servo/pull/48313), [#48350](https://github.com/servo/servo/pull/48350))\n- **roundRect()** on **CanvasRenderingContext2D** ([@yezhizhen](https://github.com/yezhizhen), [#48293](https://github.com/servo/servo/pull/48293))\n- **paintTime** and **presentationTime** on **PerformancePaintTiming** ([@shubhamg13](https://github.com/shubhamg13), [#47926](https://github.com/servo/servo/pull/47926))\n- **getCueAsHTML()** on **VTTCue** ([@TimvdLippe](https://github.com/TimvdLippe), [#48146](https://github.com/servo/servo/pull/48146))\n\n## Security\n\nWe upgraded to **SpiderMonkey v153.3** and **mozangle v0.7**, both of which included fixes for security bugs reported upstream ([@sagudev](https://github.com/sagudev), [#48176](https://github.com/servo/servo/pull/48176), [#47655](https://github.com/servo/servo/pull/47655), [#48259](https://github.com/servo/servo/pull/48259)).\n\n## Real world compat\n\nThe [egui.rs](https://www.egui.rs/) demo now works as expected with `--pref dom._webegpu_enabled`.\n\n[![http://egui.rs rendering in Servo](https://servo.org/img/blog/2026-10-egui.png)](https://servo.org/img/blog/2026-10-egui.png)\n\nThis [Candy Crush](https://jooyouss.github.io/candy-crush/) game is now playable.\n\n[![A Candy Crush game rendering in Servo](https://servo.org/img/blog/2026-10-candycrush.png)](https://servo.org/img/blog/2026-10-candycrush.png)\n\nWe’re interested to hear how well your favourite websites run in Servo! Report successes in [this Zulip thread](https://servo.zulipchat.com/#narrow/channel/263398-general/topic/Servo.20web.20compat.20success.20stories/with/612898341) or [this Github discussion](https://github.com/servo/servo/discussions/49037), and failures [in our GitHub issues](https://github.com/servo/servo/issues).\n\n## Work in progress\n\nOur accessibility tree (`--pref accessibility_enabled`) now **reports geometry bounds** for inline elements ([@alice](https://github.com/alice), [#47905](https://github.com/servo/servo/pull/47905)) and does much less work when responding to DOM changes ([@alice](https://github.com/alice), [@mrobinson](https://github.com/mrobinson), [#47690](https://github.com/servo/servo/pull/47690)). Additionally, elements with `display: none` are reported as hidden ([@alice](https://github.com/alice), [#47772](https://github.com/servo/servo/pull/47772)).\n\nWe had lots of conformance improvements for our **WebGL2 implementation** (`--pref dom_webgl2_enabled`) ([@mxmgorin](https://github.com/mxmgorin), [#48423](https://github.com/servo/servo/pull/48423), [#48441](https://github.com/servo/servo/pull/48441), [#48470](https://github.com/servo/servo/pull/48470), [#48479](https://github.com/servo/servo/pull/48479), [#48495](https://github.com/servo/servo/pull/48495), [#48473](https://github.com/servo/servo/pull/48473), [#48536](https://github.com/servo/servo/pull/48536)).\n\nSupport 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](https://www.tiny.cloud/docs/tinymce/latest/basic-example/)).\n\n**Closed captioning** for video elements is making progress. Text tracks now fire `enter`, `exit`, and `cuechange` events ([@TimvdLippe](https://github.com/TimvdLippe), [#47725](https://github.com/servo/servo/pull/47725)). Media elements now return the full sorted list of text tracks ([@TimvdLippe](https://github.com/TimvdLippe), [#47785](https://github.com/servo/servo/pull/47785)), and adding cues to a text track now sets that track correctly ([@TimvdLippe](https://github.com/TimvdLippe), [#48012](https://github.com/servo/servo/pull/48012)). Text track objects now reflect the attributes of the associated `<track>` element. Text track URLs are fetched at the correct time ([@TimvdLippe](https://github.com/TimvdLippe), [#48325](https://github.com/servo/servo/pull/48325)), and active cues are computed correctly ([@TimvdLippe](https://github.com/TimvdLippe), [#48305](https://github.com/servo/servo/pull/48305)), while text track cues are ordered as expected ([@TimvdLippe](https://github.com/TimvdLippe), [#48368](https://github.com/servo/servo/pull/48368)). Additionally, WebVTT parsing can now recover from errors ([@TimvdLippe](https://github.com/TimvdLippe), [#48391](https://github.com/servo/servo/pull/48391)).\n\nThe **Sanitizer API** (`--pref dom_sanitizer_enabled`) now accepts the `javascriptURLs` property ([@skyz1](https://github.com/skyz1), [#47867](https://github.com/servo/servo/pull/47867)).\n\n**IndexedDB** continues to improve: tables no longer error if unrelated tables contain duplicate index names (`--pref dom_indexeddb_enabled`) ([@leowatts](https://github.com/leowatts), [#47936](https://github.com/servo/servo/pull/47936)). Additionally, we implemented **openCursor()** and **openKeyCursor()** on **IDBIndex** ([@kuntal-devrat](https://github.com/kuntal-devrat), [#48281](https://github.com/servo/servo/pull/48281)), as well as **advance()**, **continue()**, and **continuePrimaryKey()** on **IDBCursor** ([@kuntal-devrat](https://github.com/kuntal-devrat), [#48400](https://github.com/servo/servo/pull/48400)).\n\nWe implemented the **getTimeline()** and **setTimeline()** methods for the **Animation** interface (`--pref dom_web_animations_enabled`) ([@simonwuelker](https://github.com/simonwuelker), [#48122](https://github.com/servo/servo/pull/48122)).\n\n## Embedding API\n\nThere’s a new API for events originating from accessibility tools: [`Servo`](https://doc.servo.org/servo/struct.Servo.html)::[`forward_accessibility_action`](https://doc.servo.org/servo/struct.Servo.html#method.forward_accessibility_action) ([@alice](https://github.com/alice), [@mrobinson](https://github.com/mrobinson), [#48512](https://github.com/servo/servo/pull/48512)).\n\nThere is also an API to clear session history: [`WebView`](https://doc.servo.org/servo/struct.WebView.html)::[`clear_session_history`](https://doc.servo.org/servo/struct.WebView.html#method.clear_session_history) ([@Narfinger](https://github.com/Narfinger), [#47483](https://github.com/servo/servo/pull/47483)).\n\nThe [`WebView`](https://doc.servo.org/servo/struct.WebView.html)::`set_throttled` API has been removed ([@mrobinson](https://github.com/mrobinson), [#39923](https://github.com/servo/servo/pull/39923)). Throttling automatically occurs when a WebView is [hidden](https://doc.servo.org/servo/struct.WebView.html#method.hide) and is stopped when [shown](https://doc.servo.org/servo/struct.WebView.html#method.show).\n\nThe [`WebViewDelegate`](https://doc.servo.org/servo/trait.WebViewDelegate.html)::`notify_focus_changed` method was removed, along with the [`Servo`](https://doc.servo.org/servo/struct.Servo.html) methods `focus` and `blur` ([@mrobinson](https://github.com/mrobinson), [#48364](https://github.com/servo/servo/pull/48364)). Embedders must call [`WebView`](https://doc.servo.org/servo/struct.WebView.html)::[`set_focused`](https://doc.servo.org/servo/struct.WebView.html#method.set_focused) whenever a WebView has gained or lost system focus.\n\nThe `webgl` feature has been added to the `default_web_features` feature ([@janeoa](https://github.com/janeoa), [#47866](https://github.com/servo/servo/pull/47866)). If an embedding does not want to ship with WebGL support they will now need to disable default features.\n\nMultiprocess mode is enabled at build time with the new Cargo feature `multprocess` ([@Narfinger](https://github.com/Narfinger), [#47360](https://github.com/servo/servo/pull/47360)). To remove support for this feature (reducing binary size by ~2MB), build Servo with default features disabled.\n\nTwo new preferences exist to tune garbage collector behaviour: `js_mem_gc_malloc_threshold_base_mb` and `js_mem_gc_urgent_threshold_mb` ([@mxmgorin](https://github.com/mxmgorin), [#47999](https://github.com/servo/servo/pull/47999)). These can help on memory-constrained devices, and more information is available in the SpiderMonkey source ([base](https://searchfox.org/firefox-main/rev/28b7a7bffb5f82828143d9ad63839ad263b598be/js/src/gc/Scheduling.h#425-429), [urgent](https://searchfox.org/firefox-main/rev/28b7a7bffb5f82828143d9ad63839ad263b598be/js/src/gc/Scheduling.h#440-445)).\n\nThe JVM compatibility target was raised to 11 on Android ([@veyndan](https://github.com/veyndan), [#48414](https://github.com/servo/servo/pull/48414)).\n\n## For users and developers\n\nIt is now possible to cross-compile the OpenHarmony build from Windows hosts ([@jschwe](https://github.com/jschwe), [#48392](https://github.com/servo/servo/pull/48392)).\n\nUnhandled promise rejections are reported to the JS console ([@TTyChud](https://github.com/TTyChud), [#48486](https://github.com/servo/servo/pull/48486)), making it easier to narrow down web compatibility issues in Servo.\n\nThe OpenHarmony SDK was updated to API level 23 ([@Narfinger](https://github.com/Narfinger), [#48505](https://github.com/servo/servo/pull/48505)).\n\nPressing Control+A (or Command+A on macOS) now selects all the content in a document ([@dzfrias](https://github.com/dzfrias), [@mrobinson](https://github.com/mrobinson), [#48025](https://github.com/servo/servo/pull/48025)). It is no longer possible to copy text inside of password inputs ([@dzfrias](https://github.com/dzfrias), [#48404](https://github.com/servo/servo/pull/48404)).\n\nEmbedder-originating JS (e.g. devtools console or embedding APIs) will always execute, even in documents that disable scripting via sandboxing or CSP ([@derdilla](https://github.com/derdilla), [#48394](https://github.com/servo/servo/pull/48394)).\n\n## Performance and stability\n\nWe improved performance by removing **unnecessary allocations** ([@Narfinger](https://github.com/Narfinger), [@TimvdLippe](https://github.com/TimvdLippe), [@yezhizhen](https://github.com/yezhizhen), [#47689](https://github.com/servo/servo/pull/47689), [#47839](https://github.com/servo/servo/pull/47839), [#47838](https://github.com/servo/servo/pull/47838), [#47982](https://github.com/servo/servo/pull/47982), [#48006](https://github.com/servo/servo/pull/48006), [#48036](https://github.com/servo/servo/pull/48036), [#48099](https://github.com/servo/servo/pull/48099), [#48204](https://github.com/servo/servo/pull/48204), [#48127](https://github.com/servo/servo/pull/48127), [#48218](https://github.com/servo/servo/pull/48218), [#48357](https://github.com/servo/servo/pull/48357), [#48386](https://github.com/servo/servo/pull/48386), [#48422](https://github.com/servo/servo/pull/48422), [#48440](https://github.com/servo/servo/pull/48440), [#48452](https://github.com/servo/servo/pull/48452), [#48508](https://github.com/servo/servo/pull/48508)), **preallocating more** when building vectors ([@jschwe](https://github.com/jschwe), [@Narfinger](https://github.com/Narfinger), [@sagudev](https://github.com/sagudev), [@webbeef](https://github.com/webbeef), [#47455](https://github.com/servo/servo/pull/47455), [#47613](https://github.com/servo/servo/pull/47613), [#48026](https://github.com/servo/servo/pull/48026), [#48398](https://github.com/servo/servo/pull/48398)), and **avoiding IPC** in single process mode ([@leowatts](https://github.com/leowatts), [@Narfinger](https://github.com/Narfinger), [@Uiniel](https://github.com/Uiniel), [@TTyChud](https://github.com/TTyChud), [#47691](https://github.com/servo/servo/pull/47691), [#47718](https://github.com/servo/servo/pull/47718), [#48002](https://github.com/servo/servo/pull/48002), [#48073](https://github.com/servo/servo/pull/48073), [#48476](https://github.com/servo/servo/pull/48476), [#48435](https://github.com/servo/servo/pull/48435)).\n\nWe also sped up Servo by reducing interactions with the GC ([@TimvdLippe](https://github.com/TimvdLippe), [@Narfinger](https://github.com/Narfinger), [#47818](https://github.com/servo/servo/pull/47818), [#48257](https://github.com/servo/servo/pull/48257), [#48396](https://github.com/servo/servo/pull/48396)), and doing less work when modifying selections ([@SimonSapin](https://github.com/SimonSapin), [#47579](https://github.com/servo/servo/pull/47579)), dispatching events ([@webbeef](https://github.com/webbeef), [#48078](https://github.com/servo/servo/pull/48078)), calculating font metrics ([@RichardTjokroutomo](https://github.com/RichardTjokroutomo), [#48238](https://github.com/servo/servo/pull/48238)), and indexing window frames ([@mrobinson](https://github.com/mrobinson), [#47832](https://github.com/servo/servo/pull/47832)).\n\nWe **reduced memory usage** in common cases by reusing buffers ([@Narfinger](https://github.com/Narfinger), [#47751](https://github.com/servo/servo/pull/47751)), clearing more page-specific data ([@Radeonares32](https://github.com/Radeonares32), [@Narfinger](https://github.com/Narfinger), [@jschwe](https://github.com/jschwe), [@mrobinson](https://github.com/mrobinson), [@mxmgorin](https://github.com/mxmgorin), [#47651](https://github.com/servo/servo/pull/47651), [#47806](https://github.com/servo/servo/pull/47806), [#47805](https://github.com/servo/servo/pull/47805), [#48166](https://github.com/servo/servo/pull/48166), [#48295](https://github.com/servo/servo/pull/48295), [#48297](https://github.com/servo/servo/pull/48297), [#48016](https://github.com/servo/servo/pull/48016)), compacting data structures ([@Narfinger](https://github.com/Narfinger), [@webbeef](https://github.com/webbeef), [@SimonSapin](https://github.com/SimonSapin), [@mrobinson](https://github.com/mrobinson), [#47776](https://github.com/servo/servo/pull/47776), [#48039](https://github.com/servo/servo/pull/48039), [#48050](https://github.com/servo/servo/pull/48050), [#47742](https://github.com/servo/servo/pull/47742), [#48301](https://github.com/servo/servo/pull/48301), [#48296](https://github.com/servo/servo/pull/48296), [#48105](https://github.com/servo/servo/pull/48105)), and sharing more buffers ([@jdm](https://github.com/jdm), [#47998](https://github.com/servo/servo/pull/47998)). We also fixed a memory leak involving `<audio>` and `<video>` elements ([@TTyChud](https://github.com/TTyChud), [#48371](https://github.com/servo/servo/pull/48371)).\n\nWe turned on **thread affinity boosting** on Linux, which can improve performance on some CPU architectures ([@jschwe](https://github.com/jschwe), [#47058](https://github.com/servo/servo/pull/47058)).\n\nWe’re working on statically preventing [a footgun](https://github.com/servo/servo/issues/39139) that can lead to uncollectible GC cycles and leaking memory ([@Gae24](https://github.com/Gae24), [@jdm](https://github.com/jdm), [@lumiscosity](https://github.com/lumiscosity), [@SilvioPilato](https://github.com/SilvioPilato), [@sahilnyk](https://github.com/sahilnyk), [@TTyChud](https://github.com/TTyChud), [@kuntal-devrat](https://github.com/kuntal-devrat), [@MohamedAli00949](https://github.com/MohamedAli00949), [#47941](https://github.com/servo/servo/pull/47941), [#48013](https://github.com/servo/servo/pull/48013), [#48021](https://github.com/servo/servo/pull/48021), [#48035](https://github.com/servo/servo/pull/48035), [#48033](https://github.com/servo/servo/pull/48033), [#48051](https://github.com/servo/servo/pull/48051), [#48072](https://github.com/servo/servo/pull/48072), [#48171](https://github.com/servo/servo/pull/48171), [#48209](https://github.com/servo/servo/pull/48209), [#48248](https://github.com/servo/servo/pull/48248), [#48246](https://github.com/servo/servo/pull/48246), [#48264](https://github.com/servo/servo/pull/48264), [#48285](https://github.com/servo/servo/pull/48285), [#48311](https://github.com/servo/servo/pull/48311), [#48408](https://github.com/servo/servo/pull/48408), [#48053](https://github.com/servo/servo/pull/48053), [#48156](https://github.com/servo/servo/pull/48156), [#48186](https://github.com/servo/servo/pull/48186), [#48223](https://github.com/servo/servo/pull/48223), [#48315](https://github.com/servo/servo/pull/48315), [#47872](https://github.com/servo/servo/pull/47872), [#47698](https://github.com/servo/servo/pull/47698), [#47682](https://github.com/servo/servo/pull/47682), [#47735](https://github.com/servo/servo/pull/47735), [#47816](https://github.com/servo/servo/pull/47816), [#47817](https://github.com/servo/servo/pull/47817), [#47794](https://github.com/servo/servo/pull/47794), [#47909](https://github.com/servo/servo/pull/47909), [#47934](https://github.com/servo/servo/pull/47934), [#47935](https://github.com/servo/servo/pull/47935), [#47954](https://github.com/servo/servo/pull/47954), [#48022](https://github.com/servo/servo/pull/48022), [#47955](https://github.com/servo/servo/pull/47955), [#48058](https://github.com/servo/servo/pull/48058), [#48228](https://github.com/servo/servo/pull/48228), [#48247](https://github.com/servo/servo/pull/48247), [#48261](https://github.com/servo/servo/pull/48261), [#48280](https://github.com/servo/servo/pull/48280), [#48302](https://github.com/servo/servo/pull/48302), [#48316](https://github.com/servo/servo/pull/48316), [#48328](https://github.com/servo/servo/pull/48328), [#48346](https://github.com/servo/servo/pull/48346), [#48355](https://github.com/servo/servo/pull/48355), [#48262](https://github.com/servo/servo/pull/48262), [#48377](https://github.com/servo/servo/pull/48377), [#48304](https://github.com/servo/servo/pull/48304), [#48378](https://github.com/servo/servo/pull/48378), [#48388](https://github.com/servo/servo/pull/48388), [#48432](https://github.com/servo/servo/pull/48432)).\n\nWe fixed panics in **WebRTC** ([@MunishMummadi](https://github.com/MunishMummadi), [#4772](https://github.com/servo/servo/pull/4772)), **execCommand()** on **Document** ([@TimvdLippe](https://github.com/TimvdLippe), [#47784](https://github.com/servo/servo/pull/47784)), `<video>` ([@calvaris](https://github.com/calvaris), [#46148](https://github.com/servo/servo/pull/46148)), `<iframe>` ([@jdm](https://github.com/jdm), [#48465](https://github.com/servo/servo/pull/48465)), **SharedWorker** ([@mrobinson](https://github.com/mrobinson), [#47940](https://github.com/servo/servo/pull/47940)), **ancestorOrigins** on **Document** ([@mrobinson](https://github.com/mrobinson), [#48009](https://github.com/servo/servo/pull/48009)), `about:memory` ([@mxmgorin](https://github.com/mxmgorin), [#47686](https://github.com/servo/servo/pull/47686), [#48001](https://github.com/servo/servo/pull/48001)), and EGL 1.4 configurations ([@mxmgorin](https://github.com/mxmgorin), [#47803](https://github.com/servo/servo/pull/47803)).\n\nWe also fixed a very ironic panic triggered by the `about:crash` page that loads when a normal page triggers a panic ([@mrobinson](https://github.com/mrobinson), [#48055](https://github.com/servo/servo/pull/48055))\n\nThe JS console no longer hangs when primitive values as thrown as exceptions ([@FatCat560](https://github.com/FatCat560), [#47629](https://github.com/servo/servo/pull/47629)). Servo no longer hangs on shutdown in multiprocess mode ([@Narfinger](https://github.com/Narfinger), [#48523](https://github.com/servo/servo/pull/48523)), when certain pages use **IntersectionObserver** ([@mxmgorin](https://github.com/mxmgorin), [#47693](https://github.com/servo/servo/pull/47693)), when closing a browsing context with pending WebDriver commands ([@yezhizhen](https://github.com/yezhizhen), [#48131](https://github.com/servo/servo/pull/48131), [#48172](https://github.com/servo/servo/pull/48172)), or when closing **SharedWorker**s ([@nicoburns](https://github.com/nicoburns), [#48477](https://github.com/servo/servo/pull/48477)).\n\n`about:memory` got more improvements: we measure more memory for SVG rendering ([@Narfinger](https://github.com/Narfinger), [@mrobinson](https://github.com/mrobinson), [#47061](https://github.com/servo/servo/pull/47061)), WebAudio ([@jdm](https://github.com/jdm), [#47996](https://github.com/servo/servo/pull/47996)), and identify globals that have been leaked ([@jdm](https://github.com/jdm), [#48237](https://github.com/servo/servo/pull/48237)).\n\n## More on the web platform\n\nCSS images now **delay the `load` event**, leading to more consistent behaviour for engine users performing visual rendering ([@TimvdLippe](https://github.com/TimvdLippe), [#48199](https://github.com/servo/servo/pull/48199)).\n\nInteractive selections in documents continued to improve! They now can span shadow trees ([@mrobinson](https://github.com/mrobinson), [@SimonSapin](https://github.com/SimonSapin), [#47931](https://github.com/servo/servo/pull/47931), [#47694](https://github.com/servo/servo/pull/47694), [#47895](https://github.com/servo/servo/pull/47895)), and have consistent heights and positions ([@mrobinson](https://github.com/mrobinson), [#47937](https://github.com/servo/servo/pull/47937)), plus there are new context menu entries to copy and select all ([@mrobinson](https://github.com/mrobinson), [#48101](https://github.com/servo/servo/pull/48101)). Additionally, image-based content shows when it is part of a selection ([@mrobinson](https://github.com/mrobinson), [#48149](https://github.com/servo/servo/pull/48149)).\n\n`Window.open()` respects sandbox flags that prevent popups ([@mrobinson](https://github.com/mrobinson), [#47653](https://github.com/servo/servo/pull/47653)).\n\n**LargestContentfulPaint** now reports the **loadTime** for image content ([@shubhamg13](https://github.com/shubhamg13), [#48286](https://github.com/servo/servo/pull/48286)), ignores cross-origin frames ([@shubhamg13](https://github.com/shubhamg13), [#48094](https://github.com/servo/servo/pull/48094)), ignores invisible text ([@shubhamg13](https://github.com/shubhamg13), [#48010](https://github.com/servo/servo/pull/48010)), and reports null elements when they are removed from the tree ([@shubhamg13](https://github.com/shubhamg13), [#48125](https://github.com/servo/servo/pull/48125)).\n\n**select()** on a text input now focuses the control ([@dzfrias](https://github.com/dzfrias), [@mrobinson](https://github.com/mrobinson), [#48475](https://github.com/servo/servo/pull/48475)).\n\nOur WebDriver server now automates setting permissions ([@xbwwj](https://github.com/xbwwj), [@yezhizhen](https://github.com/yezhizhen), [#47623](https://github.com/servo/servo/pull/47623)), while sending click events and keyboard actions uses fewer delays ([@yezhizhen](https://github.com/yezhizhen), [#48066](https://github.com/servo/servo/pull/48066)).\n\nThere are more useful error messages for methods on **Document** ([@eachra-bawn](https://github.com/eachra-bawn), [#47835](https://github.com/servo/servo/pull/47835)) and **CSS**-related interfaces ([@eachra-bawn](https://github.com/eachra-bawn), [@jdm](https://github.com/jdm), [#47746](https://github.com/servo/servo/pull/47746)).\n\nWe upgraded our [stylo](https://crates.io/crates/stylo) dependency, which improves compatibility with **contrast-color()**, **color-mix()**, **vertical-align**, **list-style**, **place-items**, **at-rule()**, **calc()**, **alpha()**, **attr()**, **content: attr()**, and **named-feature()** ([@Loirooriol](https://github.com/Loirooriol), [#46987](https://github.com/servo/servo/pull/46987), [#47942](https://github.com/servo/servo/pull/47942)).\n\nWe also fixed bugs related to **visibilityState** on **Document** ([@yezhizhen](https://github.com/yezhizhen), [#47908](https://github.com/servo/servo/pull/47908)), **containsNode()** on **Selection** ([@mrobinson](https://github.com/mrobinson), [#47938](https://github.com/servo/servo/pull/47938)), **setKeyframes** on **KeyframeEffect** ([@simonwuelker](https://github.com/simonwuelker), [#48103](https://github.com/servo/servo/pull/48103)), selections when focusing a text input ([@mrobinson](https://github.com/mrobinson), [#48107](https://github.com/servo/servo/pull/48107)), **AudioParam** clamping and automation ([@kevlu93](https://github.com/kevlu93), [#48351](https://github.com/servo/servo/pull/48351), [#48347](https://github.com/servo/servo/pull/48347)), **PannerNode** outputs ([@kevlu93](https://github.com/kevlu93), [#48510](https://github.com/servo/servo/pull/48510)), the **muted** attribute on **HTMLMediaElement** ([@TimvdLippe](https://github.com/TimvdLippe), [#48403](https://github.com/servo/servo/pull/48403)), placeholders in text inputs ([@jdm](https://github.com/jdm), [#47761](https://github.com/servo/servo/pull/47761), [#47797](https://github.com/servo/servo/pull/47797)), animations when modifying document stylesheets ([@SharanRP](https://github.com/SharanRP), [#48000](https://github.com/servo/servo/pull/48000)), gradient color stops ([@BudiArb](https://github.com/BudiArb), [#48288](https://github.com/servo/servo/pull/48288)), sticky table rows ([@TTyChud](https://github.com/TTyChud), [#48380](https://github.com/servo/servo/pull/48380)), **::first-letter** ([@Loirooriol](https://github.com/Loirooriol), [#48307](https://github.com/servo/servo/pull/48307)), **text-wrap-mode** ([@mrobinson](https://github.com/mrobinson), [#48469](https://github.com/servo/servo/pull/48469)), OTF fonts ([@wood-ghost](https://github.com/wood-ghost), [#47904](https://github.com/servo/servo/pull/47904)), CSS and nosniff ([@sahvx655-wq](https://github.com/sahvx655-wq), [#45481](https://github.com/servo/servo/pull/45481)), **Sec-Fetch-** headers and redirects ([@TimvdLippe](https://github.com/TimvdLippe), [#48203](https://github.com/servo/servo/pull/48203)), **moveBefore()** on **Node** ([@mrobinson](https://github.com/mrobinson), [#47692](https://github.com/servo/servo/pull/47692)), **supports()** on **WebCrypto** ([@kkoyung](https://github.com/kkoyung), [#47768](https://github.com/servo/servo/pull/47768), [#47891](https://github.com/servo/servo/pull/47891), [#47953](https://github.com/servo/servo/pull/47953), [#47984](https://github.com/servo/servo/pull/47984), [#48410](https://github.com/servo/servo/pull/48410), [#47545](https://github.com/servo/servo/pull/47545)), cross-origin windows ([@mrobinson](https://github.com/mrobinson), [@jdm](https://github.com/jdm), [#47632](https://github.com/servo/servo/pull/47632), [#48411](https://github.com/servo/servo/pull/48411), [#48038](https://github.com/servo/servo/pull/48038)), origins of `about:blank` and `about:srcdoc` ([@mrobinson](https://github.com/mrobinson), [#47630](https://github.com/servo/servo/pull/47630)), `keypress` events ([@mrobinson](https://github.com/mrobinson), [#48324](https://github.com/servo/servo/pull/48324)), text and media documents ([@SilvioPilato](https://github.com/SilvioPilato), [#47823](https://github.com/servo/servo/pull/47823)), **body()** on **Response** ([@TTyChud](https://github.com/TTyChud), [#48409](https://github.com/servo/servo/pull/48409)), `<details>` with `<summary>` ([@TimvdLippe](https://github.com/TimvdLippe), [#48224](https://github.com/servo/servo/pull/48224)), editing hidden inputs ([@dzfrias](https://github.com/dzfrias), [#48165](https://github.com/servo/servo/pull/48165)), attribute nodes in XPath ([@leowatts](https://github.com/leowatts), [@mrobinson](https://github.com/mrobinson), [#47912](https://github.com/servo/servo/pull/47912)), absolutely positioned boxes ([@mxmgorin](https://github.com/mxmgorin), [#48081](https://github.com/servo/servo/pull/48081)), CSS Grid containers with absolutely positioned nodes ([@nicoburns](https://github.com/nicoburns), [#47519](https://github.com/servo/servo/pull/47519)), **WebDriver** wheel/pointer actions ([@yezhizhen](https://github.com/yezhizhen), [#48143](https://github.com/servo/servo/pull/48143)), and **blob:** URLs ([@Gae24](https://github.com/Gae24), [#47910](https://github.com/servo/servo/pull/47910)).\n\n## New contributors\n\nA special thanks to the following people for landing their first patch in Servo:\n\n- Arnau Camprubí ([@Arnau478](https://github.com/Arnau478), [#47726](https://github.com/servo/servo/pull/47726))\n- Silvio Pilato ([@SilvioPilato](https://github.com/SilvioPilato), [#47786](https://github.com/servo/servo/pull/47786))\n- Radeonares32 ([@Radeonares32](https://github.com/Radeonares32), [#47651](https://github.com/servo/servo/pull/47651))\n- derdilla ([@derdilla](https://github.com/derdilla), [#47828](https://github.com/servo/servo/pull/47828))\n- pr3pony ([@pr3pony](https://github.com/pr3pony), [#48030](https://github.com/servo/servo/pull/48030))\n- Mario ([@Fatcat560](https://github.com/Fatcat560), [#47629](https://github.com/servo/servo/pull/47629))\n- TtyChud ([@TTyChud](https://github.com/TTyChud), [#48228](https://github.com/servo/servo/pull/48228))\n- Devrate Kuntal ([@kuntal-devrat](https://github.com/kuntal-devrat), [#48247](https://github.com/servo/servo/pull/48247))\n- Diego Frias ([@dzfrias](https://github.com/dzfrias), [#48025](https://github.com/servo/servo/pull/48025))\n- LiamillionSS ([@LiamillionSS](https://github.com/LiamillionSS), [#48424](https://github.com/servo/servo/pull/48424))\n\nInterested in helping build a web browser? Take a look at our [curated list](https://starters.servo.org) of issues that are good for new contributors!\n\n## Donations\n\nThanks again for your generous support! We are now receiving **8144 USD/month** (+1% from August) in recurring donations. This helps us cover the cost of our **[speedy](https://ci0.servo.org) [CI](https://ci1.servo.org) [and](https://ci2.servo.org) [benchmarking](https://ci3.servo.org) [servers](https://ci4.servo.org)**, one of our latest **[Outreachy interns](https://www.outreachy.org/alums/2026-05/#:~:text=Servo)**, and funding **[maintainer work](https://servo.org/blog/2026/09/15/one-year-of-sponsorship/)** that helps more people contribute to Servo.\n\nServo is also on [thanks.dev](https://thanks.dev), and already **37 GitHub users** (+1 from August) that depend on Servo are sponsoring us there. If you use Servo libraries like [url](https://crates.io/crates/url/reverse_dependencies), [html5ever](https://crates.io/crates/html5ever/reverse_dependencies), [selectors](https://crates.io/crates/selectors/reverse_dependencies), or [cssparser](https://crates.io/crates/cssparser/reverse_dependencies), signing up for [thanks.dev](https://thanks.dev) could be a good way for you (or your employer) to give back to the community.\n\nWe now have [**sponsorship tiers**](https://servo.org/blog/2025/11/21/sponsorship-tiers/) that allow you or your organisation to donate to the Servo project with public acknowlegement of your support. If you’re interested in this kind of sponsorship, please contact us at join@servo.org.\n\n**8128** USD/month\n\n**10000**\n\nUse of donations is decided transparently via the Technical Steering Committee’s public **[funding request process](https://github.com/servo/project/blob/main/FUNDING_REQUEST.md)**, and active proposals are tracked in [servo/project#187](https://github.com/servo/project/issues/187). For more details, head to our [Sponsorship page](https://servo.org/sponsorship/).\n",
  "authors": [
    "iamnothere"
  ],
  "captured_at": "2026-11-05T23:32:43.152740887+00:00",
  "category": "news",
  "content_html": "<p>Plus new CSS functions and WEbGL2 improvements.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/releases/tag/v0.7.0\"><strong>Servo 0.7.0</strong></a> contains all of the changes we landed in September, spanning 527 commits!</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://servo.org/img/blog/2026-10-gary-banner.png\"><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://servo.org/img/blog/2026-10-gary-banner.png\" alt=\"a black and white cat named Gary showing off new visual web platform features\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></a></p>\n<p>The developer tools console now <strong>eagerly evaluates</strong> JS inputs, allowing faster feedback (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/freyacodes\">@freyacodes</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47527\">#47527</a>).</p>\n<p>We’ve shipped new web platform features:</p>\n<ul>\n<li>the <strong>:checked</strong> pseudoclass (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/skyz1\">@skyz1</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47987\">#47987</a>)</li>\n<li>the <strong>user-select</strong> property (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/SimonSapin\">@SimonSapin</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mrobinson\">@mrobinson</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48137\">#48137</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48242\">#48242</a>)</li>\n<li>the <strong>&lt;progress&gt;</strong> element (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/rayguo17\">@rayguo17</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/46974\">#46974</a>)</li>\n<li>CSS <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Values_and_units/Using_typed_arithmetic\">typed arithmetic</a> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/Loirooriol\">@Loirooriol</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48338\">#48338</a>)</li>\n<li>the <strong>alpha()</strong> CSS function (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/Loirooriol\">@Loirooriol</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48344\">#48344</a>)</li>\n<li>the <strong>font-width</strong> property (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/Loirooriol\">@Loirooriol</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47914\">#47914</a>)</li>\n</ul>\n<p>Plus a bunch of new DOM APIs:</p>\n<ul>\n<li><strong>parentRule</strong> on <strong>CSSRule</strong> and <strong>CSSStyleDeclaration</strong> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/skyz1\">@skyz1</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47743\">#47743</a>)</li>\n<li><strong>version</strong> on <strong>HTMLHtmlElement</strong> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/SilvioPilato\">@SilvioPilato</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47786\">#47786</a>)</li>\n<li><strong>getComposedRanges()</strong> and <strong>direction</strong> on <strong>Selection</strong> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mrobinson\">@mrobinson</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47683\">#47683</a>)</li>\n<li><strong>baseURL</strong> on <strong>CSSStyleSheet</strong> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/Gae24\">@Gae24</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47783\">#47783</a>)</li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules#loading_non-javascript_resources\"><strong>CSS modules</strong></a>(<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/Gae24\">@Gae24</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47813\">#47813</a>) and <strong>text modules</strong> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/Gae24\">@Gae24</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47863\">#47863</a>)</li>\n<li><strong>getContextAttributes()</strong> on <strong>CanvasRenderingContext2D</strong> and <strong>OffscreenCanvasRenderingContext2D</strong> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/Taym95\">@Taym95</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47868\">#47868</a>)</li>\n<li>the <strong>Content-Language</strong> header (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/TimvdLippe\">@TimvdLippe</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47930\">#47930</a>)</li>\n<li><strong>dir</strong> on <strong>Document</strong> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/yezhizhen\">@yezhizhen</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48170\">#48170</a>)</li>\n<li><strong>SVGAElement</strong>, <strong>SVGPatternElement</strong>, <strong>SVGTSpanElement</strong>, <strong>SVGTextContentElement</strong>, <strong>SVGTextElement</strong>, <strong>SVGTextPositioningElement</strong> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mu-mostafa98\">@mu-mostafa98</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48174\">#48174</a>)</li>\n<li>the <strong>MLKEM768-X25519</strong> algorithm for <strong>WebCrypto</strong> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/kkoyung\">@kkoyung</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48240\">#48240</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48282\">#48282</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48313\">#48313</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48350\">#48350</a>)</li>\n<li><strong>roundRect()</strong> on <strong>CanvasRenderingContext2D</strong> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/yezhizhen\">@yezhizhen</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48293\">#48293</a>)</li>\n<li><strong>paintTime</strong> and <strong>presentationTime</strong> on <strong>PerformancePaintTiming</strong> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/shubhamg13\">@shubhamg13</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47926\">#47926</a>)</li>\n<li><strong>getCueAsHTML()</strong> on <strong>VTTCue</strong> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/TimvdLippe\">@TimvdLippe</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48146\">#48146</a>)</li>\n</ul>\n<h2>Security</h2>\n<p>We upgraded to <strong>SpiderMonkey v153.3</strong> and <strong>mozangle v0.7</strong>, both of which included fixes for security bugs reported upstream (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/sagudev\">@sagudev</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48176\">#48176</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47655\">#47655</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48259\">#48259</a>).</p>\n<h2>Real world compat</h2>\n<p>The <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.egui.rs/\">egui.rs</a> demo now works as expected with <code>--pref dom._webegpu_enabled</code>.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://servo.org/img/blog/2026-10-egui.png\"><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://servo.org/img/blog/2026-10-egui.png\" alt=\"http://egui.rs rendering in Servo\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></a></p>\n<p>This <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://jooyouss.github.io/candy-crush/\">Candy Crush</a> game is now playable.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://servo.org/img/blog/2026-10-candycrush.png\"><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://servo.org/img/blog/2026-10-candycrush.png\" alt=\"A Candy Crush game rendering in Servo\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></a></p>\n<p>We’re interested to hear how well your favourite websites run in Servo! Report successes in <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://servo.zulipchat.com/#narrow/channel/263398-general/topic/Servo.20web.20compat.20success.20stories/with/612898341\">this Zulip thread</a> or <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/discussions/49037\">this Github discussion</a>, and failures <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/issues\">in our GitHub issues</a>.</p>\n<h2>Work in progress</h2>\n<p>Our accessibility tree (<code>--pref accessibility_enabled</code>) now <strong>reports geometry bounds</strong> for inline elements (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/alice\">@alice</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47905\">#47905</a>) and does much less work when responding to DOM changes (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/alice\">@alice</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mrobinson\">@mrobinson</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47690\">#47690</a>). Additionally, elements with <code>display: none</code> are reported as hidden (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/alice\">@alice</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47772\">#47772</a>).</p>\n<p>We had lots of conformance improvements for our <strong>WebGL2 implementation</strong> (<code>--pref dom_webgl2_enabled</code>) (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mxmgorin\">@mxmgorin</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48423\">#48423</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48441\">#48441</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48470\">#48470</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48479\">#48479</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48495\">#48495</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48473\">#48473</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48536\">#48536</a>).</p>\n<p>Support for WSIWYG editors (which rely heavily on <strong><code>contenteditable</code></strong>) is going very well: keyboard inputs are now hooked up when <code>--pref dom_exec_command_enabled</code> is present, so many editors are now usable (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.tiny.cloud/docs/tinymce/latest/basic-example/\">example</a>).</p>\n<p><strong>Closed captioning</strong> for video elements is making progress. Text tracks now fire <code>enter</code>, <code>exit</code>, and <code>cuechange</code> events (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/TimvdLippe\">@TimvdLippe</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47725\">#47725</a>). Media elements now return the full sorted list of text tracks (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/TimvdLippe\">@TimvdLippe</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47785\">#47785</a>), and adding cues to a text track now sets that track correctly (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/TimvdLippe\">@TimvdLippe</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48012\">#48012</a>). Text track objects now reflect the attributes of the associated <code>&lt;track&gt;</code> element. Text track URLs are fetched at the correct time (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/TimvdLippe\">@TimvdLippe</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48325\">#48325</a>), and active cues are computed correctly (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/TimvdLippe\">@TimvdLippe</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48305\">#48305</a>), while text track cues are ordered as expected (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/TimvdLippe\">@TimvdLippe</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48368\">#48368</a>). Additionally, WebVTT parsing can now recover from errors (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/TimvdLippe\">@TimvdLippe</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48391\">#48391</a>).</p>\n<p>The <strong>Sanitizer API</strong> (<code>--pref dom_sanitizer_enabled</code>) now accepts the <code>javascriptURLs</code> property (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/skyz1\">@skyz1</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47867\">#47867</a>).</p>\n<p><strong>IndexedDB</strong> continues to improve: tables no longer error if unrelated tables contain duplicate index names (<code>--pref dom_indexeddb_enabled</code>) (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/leowatts\">@leowatts</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47936\">#47936</a>). Additionally, we implemented <strong>openCursor()</strong> and <strong>openKeyCursor()</strong> on <strong>IDBIndex</strong> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/kuntal-devrat\">@kuntal-devrat</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48281\">#48281</a>), as well as <strong>advance()</strong>, <strong>continue()</strong>, and <strong>continuePrimaryKey()</strong> on <strong>IDBCursor</strong> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/kuntal-devrat\">@kuntal-devrat</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48400\">#48400</a>).</p>\n<p>We implemented the <strong>getTimeline()</strong> and <strong>setTimeline()</strong> methods for the <strong>Animation</strong> interface (<code>--pref dom_web_animations_enabled</code>) (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/simonwuelker\">@simonwuelker</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48122\">#48122</a>).</p>\n<h2>Embedding API</h2>\n<p>There’s a new API for events originating from accessibility tools: <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://doc.servo.org/servo/struct.Servo.html\"><code>Servo</code></a>::<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://doc.servo.org/servo/struct.Servo.html#method.forward_accessibility_action\"><code>forward_accessibility_action</code></a> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/alice\">@alice</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mrobinson\">@mrobinson</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48512\">#48512</a>).</p>\n<p>There is also an API to clear session history: <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://doc.servo.org/servo/struct.WebView.html\"><code>WebView</code></a>::<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://doc.servo.org/servo/struct.WebView.html#method.clear_session_history\"><code>clear_session_history</code></a> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/Narfinger\">@Narfinger</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47483\">#47483</a>).</p>\n<p>The <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://doc.servo.org/servo/struct.WebView.html\"><code>WebView</code></a>::<code>set_throttled</code> API has been removed (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mrobinson\">@mrobinson</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/39923\">#39923</a>). Throttling automatically occurs when a WebView is <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://doc.servo.org/servo/struct.WebView.html#method.hide\">hidden</a> and is stopped when <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://doc.servo.org/servo/struct.WebView.html#method.show\">shown</a>.</p>\n<p>The <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://doc.servo.org/servo/trait.WebViewDelegate.html\"><code>WebViewDelegate</code></a>::<code>notify_focus_changed</code> method was removed, along with the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://doc.servo.org/servo/struct.Servo.html\"><code>Servo</code></a> methods <code>focus</code> and <code>blur</code> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mrobinson\">@mrobinson</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48364\">#48364</a>). Embedders must call <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://doc.servo.org/servo/struct.WebView.html\"><code>WebView</code></a>::<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://doc.servo.org/servo/struct.WebView.html#method.set_focused\"><code>set_focused</code></a> whenever a WebView has gained or lost system focus.</p>\n<p>The <code>webgl</code> feature has been added to the <code>default_web_features</code> feature (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/janeoa\">@janeoa</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47866\">#47866</a>). If an embedding does not want to ship with WebGL support they will now need to disable default features.</p>\n<p>Multiprocess mode is enabled at build time with the new Cargo feature <code>multprocess</code> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/Narfinger\">@Narfinger</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47360\">#47360</a>). To remove support for this feature (reducing binary size by ~2MB), build Servo with default features disabled.</p>\n<p>Two new preferences exist to tune garbage collector behaviour: <code>js_mem_gc_malloc_threshold_base_mb</code> and <code>js_mem_gc_urgent_threshold_mb</code> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mxmgorin\">@mxmgorin</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47999\">#47999</a>). These can help on memory-constrained devices, and more information is available in the SpiderMonkey source (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://searchfox.org/firefox-main/rev/28b7a7bffb5f82828143d9ad63839ad263b598be/js/src/gc/Scheduling.h#425-429\">base</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://searchfox.org/firefox-main/rev/28b7a7bffb5f82828143d9ad63839ad263b598be/js/src/gc/Scheduling.h#440-445\">urgent</a>).</p>\n<p>The JVM compatibility target was raised to 11 on Android (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/veyndan\">@veyndan</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48414\">#48414</a>).</p>\n<h2>For users and developers</h2>\n<p>It is now possible to cross-compile the OpenHarmony build from Windows hosts (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/jschwe\">@jschwe</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48392\">#48392</a>).</p>\n<p>Unhandled promise rejections are reported to the JS console (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/TTyChud\">@TTyChud</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48486\">#48486</a>), making it easier to narrow down web compatibility issues in Servo.</p>\n<p>The OpenHarmony SDK was updated to API level 23 (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/Narfinger\">@Narfinger</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48505\">#48505</a>).</p>\n<p>Pressing Control+A (or Command+A on macOS) now selects all the content in a document (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/dzfrias\">@dzfrias</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mrobinson\">@mrobinson</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48025\">#48025</a>). It is no longer possible to copy text inside of password inputs (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/dzfrias\">@dzfrias</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48404\">#48404</a>).</p>\n<p>Embedder-originating JS (e.g. devtools console or embedding APIs) will always execute, even in documents that disable scripting via sandboxing or CSP (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/derdilla\">@derdilla</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48394\">#48394</a>).</p>\n<h2>Performance and stability</h2>\n<p>We improved performance by removing <strong>unnecessary allocations</strong> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/Narfinger\">@Narfinger</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/TimvdLippe\">@TimvdLippe</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/yezhizhen\">@yezhizhen</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47689\">#47689</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47839\">#47839</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47838\">#47838</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47982\">#47982</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48006\">#48006</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48036\">#48036</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48099\">#48099</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48204\">#48204</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48127\">#48127</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48218\">#48218</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48357\">#48357</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48386\">#48386</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48422\">#48422</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48440\">#48440</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48452\">#48452</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48508\">#48508</a>), <strong>preallocating more</strong> when building vectors (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/jschwe\">@jschwe</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/Narfinger\">@Narfinger</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/sagudev\">@sagudev</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/webbeef\">@webbeef</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47455\">#47455</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47613\">#47613</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48026\">#48026</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48398\">#48398</a>), and <strong>avoiding IPC</strong> in single process mode (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/leowatts\">@leowatts</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/Narfinger\">@Narfinger</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/Uiniel\">@Uiniel</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/TTyChud\">@TTyChud</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47691\">#47691</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47718\">#47718</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48002\">#48002</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48073\">#48073</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48476\">#48476</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48435\">#48435</a>).</p>\n<p>We also sped up Servo by reducing interactions with the GC (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/TimvdLippe\">@TimvdLippe</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/Narfinger\">@Narfinger</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47818\">#47818</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48257\">#48257</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48396\">#48396</a>), and doing less work when modifying selections (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/SimonSapin\">@SimonSapin</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47579\">#47579</a>), dispatching events (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/webbeef\">@webbeef</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48078\">#48078</a>), calculating font metrics (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/RichardTjokroutomo\">@RichardTjokroutomo</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48238\">#48238</a>), and indexing window frames (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mrobinson\">@mrobinson</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47832\">#47832</a>).</p>\n<p>We <strong>reduced memory usage</strong> in common cases by reusing buffers (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/Narfinger\">@Narfinger</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47751\">#47751</a>), clearing more page-specific data (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/Radeonares32\">@Radeonares32</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/Narfinger\">@Narfinger</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/jschwe\">@jschwe</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mrobinson\">@mrobinson</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mxmgorin\">@mxmgorin</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47651\">#47651</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47806\">#47806</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47805\">#47805</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48166\">#48166</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48295\">#48295</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48297\">#48297</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48016\">#48016</a>), compacting data structures (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/Narfinger\">@Narfinger</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/webbeef\">@webbeef</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/SimonSapin\">@SimonSapin</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mrobinson\">@mrobinson</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47776\">#47776</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48039\">#48039</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48050\">#48050</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47742\">#47742</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48301\">#48301</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48296\">#48296</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48105\">#48105</a>), and sharing more buffers (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/jdm\">@jdm</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47998\">#47998</a>). We also fixed a memory leak involving <code>&lt;audio&gt;</code> and <code>&lt;video&gt;</code> elements (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/TTyChud\">@TTyChud</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48371\">#48371</a>).</p>\n<p>We turned on <strong>thread affinity boosting</strong> on Linux, which can improve performance on some CPU architectures (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/jschwe\">@jschwe</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47058\">#47058</a>).</p>\n<p>We’re working on statically preventing <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/issues/39139\">a footgun</a> that can lead to uncollectible GC cycles and leaking memory (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/Gae24\">@Gae24</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/jdm\">@jdm</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/lumiscosity\">@lumiscosity</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/SilvioPilato\">@SilvioPilato</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/sahilnyk\">@sahilnyk</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/TTyChud\">@TTyChud</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/kuntal-devrat\">@kuntal-devrat</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/MohamedAli00949\">@MohamedAli00949</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47941\">#47941</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48013\">#48013</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48021\">#48021</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48035\">#48035</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48033\">#48033</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48051\">#48051</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48072\">#48072</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48171\">#48171</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48209\">#48209</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48248\">#48248</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48246\">#48246</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48264\">#48264</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48285\">#48285</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48311\">#48311</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48408\">#48408</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48053\">#48053</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48156\">#48156</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48186\">#48186</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48223\">#48223</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48315\">#48315</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47872\">#47872</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47698\">#47698</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47682\">#47682</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47735\">#47735</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47816\">#47816</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47817\">#47817</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47794\">#47794</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47909\">#47909</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47934\">#47934</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47935\">#47935</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47954\">#47954</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48022\">#48022</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47955\">#47955</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48058\">#48058</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48228\">#48228</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48247\">#48247</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48261\">#48261</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48280\">#48280</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48302\">#48302</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48316\">#48316</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48328\">#48328</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48346\">#48346</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48355\">#48355</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48262\">#48262</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48377\">#48377</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48304\">#48304</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48378\">#48378</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48388\">#48388</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48432\">#48432</a>).</p>\n<p>We fixed panics in <strong>WebRTC</strong> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/MunishMummadi\">@MunishMummadi</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/4772\">#4772</a>), <strong>execCommand()</strong> on <strong>Document</strong> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/TimvdLippe\">@TimvdLippe</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47784\">#47784</a>), <code>&lt;video&gt;</code> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/calvaris\">@calvaris</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/46148\">#46148</a>), <code>&lt;iframe&gt;</code> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/jdm\">@jdm</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48465\">#48465</a>), <strong>SharedWorker</strong> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mrobinson\">@mrobinson</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47940\">#47940</a>), <strong>ancestorOrigins</strong> on <strong>Document</strong> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mrobinson\">@mrobinson</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48009\">#48009</a>), <code>about:memory</code> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mxmgorin\">@mxmgorin</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47686\">#47686</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48001\">#48001</a>), and EGL 1.4 configurations (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mxmgorin\">@mxmgorin</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47803\">#47803</a>).</p>\n<p>We also fixed a very ironic panic triggered by the <code>about:crash</code> page that loads when a normal page triggers a panic (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mrobinson\">@mrobinson</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48055\">#48055</a>)</p>\n<p>The JS console no longer hangs when primitive values as thrown as exceptions (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/FatCat560\">@FatCat560</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47629\">#47629</a>). Servo no longer hangs on shutdown in multiprocess mode (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/Narfinger\">@Narfinger</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48523\">#48523</a>), when certain pages use <strong>IntersectionObserver</strong> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mxmgorin\">@mxmgorin</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47693\">#47693</a>), when closing a browsing context with pending WebDriver commands (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/yezhizhen\">@yezhizhen</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48131\">#48131</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48172\">#48172</a>), or when closing <strong>SharedWorker</strong>s (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/nicoburns\">@nicoburns</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48477\">#48477</a>).</p>\n<p><code>about:memory</code> got more improvements: we measure more memory for SVG rendering (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/Narfinger\">@Narfinger</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mrobinson\">@mrobinson</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47061\">#47061</a>), WebAudio (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/jdm\">@jdm</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47996\">#47996</a>), and identify globals that have been leaked (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/jdm\">@jdm</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48237\">#48237</a>).</p>\n<h2>More on the web platform</h2>\n<p>CSS images now <strong>delay the <code>load</code> event</strong>, leading to more consistent behaviour for engine users performing visual rendering (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/TimvdLippe\">@TimvdLippe</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48199\">#48199</a>).</p>\n<p>Interactive selections in documents continued to improve! They now can span shadow trees (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mrobinson\">@mrobinson</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/SimonSapin\">@SimonSapin</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47931\">#47931</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47694\">#47694</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47895\">#47895</a>), and have consistent heights and positions (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mrobinson\">@mrobinson</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47937\">#47937</a>), plus there are new context menu entries to copy and select all (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mrobinson\">@mrobinson</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48101\">#48101</a>). Additionally, image-based content shows when it is part of a selection (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mrobinson\">@mrobinson</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48149\">#48149</a>).</p>\n<p><code>Window.open()</code> respects sandbox flags that prevent popups (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mrobinson\">@mrobinson</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47653\">#47653</a>).</p>\n<p><strong>LargestContentfulPaint</strong> now reports the <strong>loadTime</strong> for image content (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/shubhamg13\">@shubhamg13</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48286\">#48286</a>), ignores cross-origin frames (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/shubhamg13\">@shubhamg13</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48094\">#48094</a>), ignores invisible text (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/shubhamg13\">@shubhamg13</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48010\">#48010</a>), and reports null elements when they are removed from the tree (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/shubhamg13\">@shubhamg13</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48125\">#48125</a>).</p>\n<p><strong>select()</strong> on a text input now focuses the control (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/dzfrias\">@dzfrias</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mrobinson\">@mrobinson</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48475\">#48475</a>).</p>\n<p>Our WebDriver server now automates setting permissions (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/xbwwj\">@xbwwj</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/yezhizhen\">@yezhizhen</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47623\">#47623</a>), while sending click events and keyboard actions uses fewer delays (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/yezhizhen\">@yezhizhen</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48066\">#48066</a>).</p>\n<p>There are more useful error messages for methods on <strong>Document</strong> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/eachra-bawn\">@eachra-bawn</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47835\">#47835</a>) and <strong>CSS</strong>-related interfaces (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/eachra-bawn\">@eachra-bawn</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/jdm\">@jdm</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47746\">#47746</a>).</p>\n<p>We upgraded our <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://crates.io/crates/stylo\">stylo</a> dependency, which improves compatibility with <strong>contrast-color()</strong>, <strong>color-mix()</strong>, <strong>vertical-align</strong>, <strong>list-style</strong>, <strong>place-items</strong>, <strong>at-rule()</strong>, <strong>calc()</strong>, <strong>alpha()</strong>, <strong>attr()</strong>, <strong>content: attr()</strong>, and <strong>named-feature()</strong> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/Loirooriol\">@Loirooriol</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/46987\">#46987</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47942\">#47942</a>).</p>\n<p>We also fixed bugs related to <strong>visibilityState</strong> on <strong>Document</strong> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/yezhizhen\">@yezhizhen</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47908\">#47908</a>), <strong>containsNode()</strong> on <strong>Selection</strong> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mrobinson\">@mrobinson</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47938\">#47938</a>), <strong>setKeyframes</strong> on <strong>KeyframeEffect</strong> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/simonwuelker\">@simonwuelker</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48103\">#48103</a>), selections when focusing a text input (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mrobinson\">@mrobinson</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48107\">#48107</a>), <strong>AudioParam</strong> clamping and automation (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/kevlu93\">@kevlu93</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48351\">#48351</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48347\">#48347</a>), <strong>PannerNode</strong> outputs (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/kevlu93\">@kevlu93</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48510\">#48510</a>), the <strong>muted</strong> attribute on <strong>HTMLMediaElement</strong> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/TimvdLippe\">@TimvdLippe</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48403\">#48403</a>), placeholders in text inputs (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/jdm\">@jdm</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47761\">#47761</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47797\">#47797</a>), animations when modifying document stylesheets (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/SharanRP\">@SharanRP</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48000\">#48000</a>), gradient color stops (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/BudiArb\">@BudiArb</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48288\">#48288</a>), sticky table rows (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/TTyChud\">@TTyChud</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48380\">#48380</a>), <strong>::first-letter</strong> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/Loirooriol\">@Loirooriol</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48307\">#48307</a>), <strong>text-wrap-mode</strong> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mrobinson\">@mrobinson</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48469\">#48469</a>), OTF fonts (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/wood-ghost\">@wood-ghost</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47904\">#47904</a>), CSS and nosniff (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/sahvx655-wq\">@sahvx655-wq</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/45481\">#45481</a>), <strong>Sec-Fetch-</strong> headers and redirects (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/TimvdLippe\">@TimvdLippe</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48203\">#48203</a>), <strong>moveBefore()</strong> on <strong>Node</strong> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mrobinson\">@mrobinson</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47692\">#47692</a>), <strong>supports()</strong> on <strong>WebCrypto</strong> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/kkoyung\">@kkoyung</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47768\">#47768</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47891\">#47891</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47953\">#47953</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47984\">#47984</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48410\">#48410</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47545\">#47545</a>), cross-origin windows (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mrobinson\">@mrobinson</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/jdm\">@jdm</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47632\">#47632</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48411\">#48411</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48038\">#48038</a>), origins of <code>about:blank</code> and <code>about:srcdoc</code> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mrobinson\">@mrobinson</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47630\">#47630</a>), <code>keypress</code> events (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mrobinson\">@mrobinson</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48324\">#48324</a>), text and media documents (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/SilvioPilato\">@SilvioPilato</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47823\">#47823</a>), <strong>body()</strong> on <strong>Response</strong> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/TTyChud\">@TTyChud</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48409\">#48409</a>), <code>&lt;details&gt;</code> with <code>&lt;summary&gt;</code> (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/TimvdLippe\">@TimvdLippe</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48224\">#48224</a>), editing hidden inputs (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/dzfrias\">@dzfrias</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48165\">#48165</a>), attribute nodes in XPath (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/leowatts\">@leowatts</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mrobinson\">@mrobinson</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47912\">#47912</a>), absolutely positioned boxes (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mxmgorin\">@mxmgorin</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48081\">#48081</a>), CSS Grid containers with absolutely positioned nodes (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/nicoburns\">@nicoburns</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47519\">#47519</a>), <strong>WebDriver</strong> wheel/pointer actions (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/yezhizhen\">@yezhizhen</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48143\">#48143</a>), and <strong>blob:</strong> URLs (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/Gae24\">@Gae24</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47910\">#47910</a>).</p>\n<h2>New contributors</h2>\n<p>A special thanks to the following people for landing their first patch in Servo:</p>\n<ul>\n<li>Arnau Camprubí (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/Arnau478\">@Arnau478</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47726\">#47726</a>)</li>\n<li>Silvio Pilato (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/SilvioPilato\">@SilvioPilato</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47786\">#47786</a>)</li>\n<li>Radeonares32 (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/Radeonares32\">@Radeonares32</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47651\">#47651</a>)</li>\n<li>derdilla (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/derdilla\">@derdilla</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47828\">#47828</a>)</li>\n<li>pr3pony (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/pr3pony\">@pr3pony</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48030\">#48030</a>)</li>\n<li>Mario (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/Fatcat560\">@Fatcat560</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/47629\">#47629</a>)</li>\n<li>TtyChud (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/TTyChud\">@TTyChud</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48228\">#48228</a>)</li>\n<li>Devrate Kuntal (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/kuntal-devrat\">@kuntal-devrat</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48247\">#48247</a>)</li>\n<li>Diego Frias (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/dzfrias\">@dzfrias</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48025\">#48025</a>)</li>\n<li>LiamillionSS (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/LiamillionSS\">@LiamillionSS</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/servo/pull/48424\">#48424</a>)</li>\n</ul>\n<p>Interested in helping build a web browser? Take a look at our <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://starters.servo.org\">curated list</a> of issues that are good for new contributors!</p>\n<h2>Donations</h2>\n<p>Thanks again for your generous support! We are now receiving <strong>8144 USD/month</strong> (+1% from August) in recurring donations. This helps us cover the cost of our <strong><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://ci0.servo.org\">speedy</a> <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://ci1.servo.org\">CI</a> <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://ci2.servo.org\">and</a> <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://ci3.servo.org\">benchmarking</a> <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://ci4.servo.org\">servers</a></strong>, one of our latest <strong><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.outreachy.org/alums/2026-05/#:~:text=Servo\">Outreachy interns</a></strong>, and funding <strong><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://servo.org/blog/2026/09/15/one-year-of-sponsorship/\">maintainer work</a></strong> that helps more people contribute to Servo.</p>\n<p>Servo is also on <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://thanks.dev\">thanks.dev</a>, and already <strong>37 GitHub users</strong> (+1 from August) that depend on Servo are sponsoring us there. If you use Servo libraries like <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://crates.io/crates/url/reverse_dependencies\">url</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://crates.io/crates/html5ever/reverse_dependencies\">html5ever</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://crates.io/crates/selectors/reverse_dependencies\">selectors</a>, or <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://crates.io/crates/cssparser/reverse_dependencies\">cssparser</a>, signing up for <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://thanks.dev\">thanks.dev</a> could be a good way for you (or your employer) to give back to the community.</p>\n<p>We now have <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://servo.org/blog/2025/11/21/sponsorship-tiers/\"><strong>sponsorship tiers</strong></a> that allow you or your organisation to donate to the Servo project with public acknowlegement of your support. If you’re interested in this kind of sponsorship, please contact us at <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"mailto:join@servo.org\">join@servo.org</a>.</p>\n<p><strong>8128</strong> USD/month</p>\n<p><strong>10000</strong></p>\n<p>Use of donations is decided transparently via the Technical Steering Committee’s public <strong><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/project/blob/main/FUNDING_REQUEST.md\">funding request process</a></strong>, and active proposals are tracked in <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/servo/project/issues/187\">servo/project#187</a>. For more details, head to our <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://servo.org/sponsorship/\">Sponsorship page</a>.</p>\n",
  "content_markdown": "Plus new CSS functions and WEbGL2 improvements.\n\n[**Servo 0.7.0**](https://github.com/servo/servo/releases/tag/v0.7.0) contains all of the changes we landed in September, spanning 527 commits!\n\n[![a black and white cat named Gary showing off new visual web platform features](https://servo.org/img/blog/2026-10-gary-banner.png)](https://servo.org/img/blog/2026-10-gary-banner.png)\n\nThe developer tools console now **eagerly evaluates** JS inputs, allowing faster feedback ([@freyacodes](https://github.com/freyacodes), [#47527](https://github.com/servo/servo/pull/47527)).\n\nWe’ve shipped new web platform features:\n\n- the **:checked** pseudoclass ([@skyz1](https://github.com/skyz1), [#47987](https://github.com/servo/servo/pull/47987))\n- the **user-select** property ([@SimonSapin](https://github.com/SimonSapin), [@mrobinson](https://github.com/mrobinson), [#48137](https://github.com/servo/servo/pull/48137), [#48242](https://github.com/servo/servo/pull/48242))\n- the **\\<progress>** element ([@rayguo17](https://github.com/rayguo17), [#46974](https://github.com/servo/servo/pull/46974))\n- CSS [typed arithmetic](https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Values_and_units/Using_typed_arithmetic) ([@Loirooriol](https://github.com/Loirooriol), [#48338](https://github.com/servo/servo/pull/48338))\n- the **alpha()** CSS function ([@Loirooriol](https://github.com/Loirooriol), [#48344](https://github.com/servo/servo/pull/48344))\n- the **font-width** property ([@Loirooriol](https://github.com/Loirooriol), [#47914](https://github.com/servo/servo/pull/47914))\n\nPlus a bunch of new DOM APIs:\n\n- **parentRule** on **CSSRule** and **CSSStyleDeclaration** ([@skyz1](https://github.com/skyz1), [#47743](https://github.com/servo/servo/pull/47743))\n- **version** on **HTMLHtmlElement** ([@SilvioPilato](https://github.com/SilvioPilato), [#47786](https://github.com/servo/servo/pull/47786))\n- **getComposedRanges()** and **direction** on **Selection** ([@mrobinson](https://github.com/mrobinson), [#47683](https://github.com/servo/servo/pull/47683))\n- **baseURL** on **CSSStyleSheet** ([@Gae24](https://github.com/Gae24), [#47783](https://github.com/servo/servo/pull/47783))\n- [**CSS modules**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules#loading_non-javascript_resources)([@Gae24](https://github.com/Gae24), [#47813](https://github.com/servo/servo/pull/47813)) and **text modules** ([@Gae24](https://github.com/Gae24), [#47863](https://github.com/servo/servo/pull/47863))\n- **getContextAttributes()** on **CanvasRenderingContext2D** and **OffscreenCanvasRenderingContext2D** ([@Taym95](https://github.com/Taym95), [#47868](https://github.com/servo/servo/pull/47868))\n- the **Content-Language** header ([@TimvdLippe](https://github.com/TimvdLippe), [#47930](https://github.com/servo/servo/pull/47930))\n- **dir** on **Document** ([@yezhizhen](https://github.com/yezhizhen), [#48170](https://github.com/servo/servo/pull/48170))\n- **SVGAElement**, **SVGPatternElement**, **SVGTSpanElement**, **SVGTextContentElement**, **SVGTextElement**, **SVGTextPositioningElement** ([@mu-mostafa98](https://github.com/mu-mostafa98), [#48174](https://github.com/servo/servo/pull/48174))\n- the **MLKEM768-X25519** algorithm for **WebCrypto** ([@kkoyung](https://github.com/kkoyung), [#48240](https://github.com/servo/servo/pull/48240), [#48282](https://github.com/servo/servo/pull/48282), [#48313](https://github.com/servo/servo/pull/48313), [#48350](https://github.com/servo/servo/pull/48350))\n- **roundRect()** on **CanvasRenderingContext2D** ([@yezhizhen](https://github.com/yezhizhen), [#48293](https://github.com/servo/servo/pull/48293))\n- **paintTime** and **presentationTime** on **PerformancePaintTiming** ([@shubhamg13](https://github.com/shubhamg13), [#47926](https://github.com/servo/servo/pull/47926))\n- **getCueAsHTML()** on **VTTCue** ([@TimvdLippe](https://github.com/TimvdLippe), [#48146](https://github.com/servo/servo/pull/48146))\n\n## Security\n\nWe upgraded to **SpiderMonkey v153.3** and **mozangle v0.7**, both of which included fixes for security bugs reported upstream ([@sagudev](https://github.com/sagudev), [#48176](https://github.com/servo/servo/pull/48176), [#47655](https://github.com/servo/servo/pull/47655), [#48259](https://github.com/servo/servo/pull/48259)).\n\n## Real world compat\n\nThe [egui.rs](https://www.egui.rs/) demo now works as expected with `--pref dom._webegpu_enabled`.\n\n[![http://egui.rs rendering in Servo](https://servo.org/img/blog/2026-10-egui.png)](https://servo.org/img/blog/2026-10-egui.png)\n\nThis [Candy Crush](https://jooyouss.github.io/candy-crush/) game is now playable.\n\n[![A Candy Crush game rendering in Servo](https://servo.org/img/blog/2026-10-candycrush.png)](https://servo.org/img/blog/2026-10-candycrush.png)\n\nWe’re interested to hear how well your favourite websites run in Servo! Report successes in [this Zulip thread](https://servo.zulipchat.com/#narrow/channel/263398-general/topic/Servo.20web.20compat.20success.20stories/with/612898341) or [this Github discussion](https://github.com/servo/servo/discussions/49037), and failures [in our GitHub issues](https://github.com/servo/servo/issues).\n\n## Work in progress\n\nOur accessibility tree (`--pref accessibility_enabled`) now **reports geometry bounds** for inline elements ([@alice](https://github.com/alice), [#47905](https://github.com/servo/servo/pull/47905)) and does much less work when responding to DOM changes ([@alice](https://github.com/alice), [@mrobinson](https://github.com/mrobinson), [#47690](https://github.com/servo/servo/pull/47690)). Additionally, elements with `display: none` are reported as hidden ([@alice](https://github.com/alice), [#47772](https://github.com/servo/servo/pull/47772)).\n\nWe had lots of conformance improvements for our **WebGL2 implementation** (`--pref dom_webgl2_enabled`) ([@mxmgorin](https://github.com/mxmgorin), [#48423](https://github.com/servo/servo/pull/48423), [#48441](https://github.com/servo/servo/pull/48441), [#48470](https://github.com/servo/servo/pull/48470), [#48479](https://github.com/servo/servo/pull/48479), [#48495](https://github.com/servo/servo/pull/48495), [#48473](https://github.com/servo/servo/pull/48473), [#48536](https://github.com/servo/servo/pull/48536)).\n\nSupport 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](https://www.tiny.cloud/docs/tinymce/latest/basic-example/)).\n\n**Closed captioning** for video elements is making progress. Text tracks now fire `enter`, `exit`, and `cuechange` events ([@TimvdLippe](https://github.com/TimvdLippe), [#47725](https://github.com/servo/servo/pull/47725)). Media elements now return the full sorted list of text tracks ([@TimvdLippe](https://github.com/TimvdLippe), [#47785](https://github.com/servo/servo/pull/47785)), and adding cues to a text track now sets that track correctly ([@TimvdLippe](https://github.com/TimvdLippe), [#48012](https://github.com/servo/servo/pull/48012)). Text track objects now reflect the attributes of the associated `<track>` element. Text track URLs are fetched at the correct time ([@TimvdLippe](https://github.com/TimvdLippe), [#48325](https://github.com/servo/servo/pull/48325)), and active cues are computed correctly ([@TimvdLippe](https://github.com/TimvdLippe), [#48305](https://github.com/servo/servo/pull/48305)), while text track cues are ordered as expected ([@TimvdLippe](https://github.com/TimvdLippe), [#48368](https://github.com/servo/servo/pull/48368)). Additionally, WebVTT parsing can now recover from errors ([@TimvdLippe](https://github.com/TimvdLippe), [#48391](https://github.com/servo/servo/pull/48391)).\n\nThe **Sanitizer API** (`--pref dom_sanitizer_enabled`) now accepts the `javascriptURLs` property ([@skyz1](https://github.com/skyz1), [#47867](https://github.com/servo/servo/pull/47867)).\n\n**IndexedDB** continues to improve: tables no longer error if unrelated tables contain duplicate index names (`--pref dom_indexeddb_enabled`) ([@leowatts](https://github.com/leowatts), [#47936](https://github.com/servo/servo/pull/47936)). Additionally, we implemented **openCursor()** and **openKeyCursor()** on **IDBIndex** ([@kuntal-devrat](https://github.com/kuntal-devrat), [#48281](https://github.com/servo/servo/pull/48281)), as well as **advance()**, **continue()**, and **continuePrimaryKey()** on **IDBCursor** ([@kuntal-devrat](https://github.com/kuntal-devrat), [#48400](https://github.com/servo/servo/pull/48400)).\n\nWe implemented the **getTimeline()** and **setTimeline()** methods for the **Animation** interface (`--pref dom_web_animations_enabled`) ([@simonwuelker](https://github.com/simonwuelker), [#48122](https://github.com/servo/servo/pull/48122)).\n\n## Embedding API\n\nThere’s a new API for events originating from accessibility tools: [`Servo`](https://doc.servo.org/servo/struct.Servo.html)::[`forward_accessibility_action`](https://doc.servo.org/servo/struct.Servo.html#method.forward_accessibility_action) ([@alice](https://github.com/alice), [@mrobinson](https://github.com/mrobinson), [#48512](https://github.com/servo/servo/pull/48512)).\n\nThere is also an API to clear session history: [`WebView`](https://doc.servo.org/servo/struct.WebView.html)::[`clear_session_history`](https://doc.servo.org/servo/struct.WebView.html#method.clear_session_history) ([@Narfinger](https://github.com/Narfinger), [#47483](https://github.com/servo/servo/pull/47483)).\n\nThe [`WebView`](https://doc.servo.org/servo/struct.WebView.html)::`set_throttled` API has been removed ([@mrobinson](https://github.com/mrobinson), [#39923](https://github.com/servo/servo/pull/39923)). Throttling automatically occurs when a WebView is [hidden](https://doc.servo.org/servo/struct.WebView.html#method.hide) and is stopped when [shown](https://doc.servo.org/servo/struct.WebView.html#method.show).\n\nThe [`WebViewDelegate`](https://doc.servo.org/servo/trait.WebViewDelegate.html)::`notify_focus_changed` method was removed, along with the [`Servo`](https://doc.servo.org/servo/struct.Servo.html) methods `focus` and `blur` ([@mrobinson](https://github.com/mrobinson), [#48364](https://github.com/servo/servo/pull/48364)). Embedders must call [`WebView`](https://doc.servo.org/servo/struct.WebView.html)::[`set_focused`](https://doc.servo.org/servo/struct.WebView.html#method.set_focused) whenever a WebView has gained or lost system focus.\n\nThe `webgl` feature has been added to the `default_web_features` feature ([@janeoa](https://github.com/janeoa), [#47866](https://github.com/servo/servo/pull/47866)). If an embedding does not want to ship with WebGL support they will now need to disable default features.\n\nMultiprocess mode is enabled at build time with the new Cargo feature `multprocess` ([@Narfinger](https://github.com/Narfinger), [#47360](https://github.com/servo/servo/pull/47360)). To remove support for this feature (reducing binary size by ~2MB), build Servo with default features disabled.\n\nTwo new preferences exist to tune garbage collector behaviour: `js_mem_gc_malloc_threshold_base_mb` and `js_mem_gc_urgent_threshold_mb` ([@mxmgorin](https://github.com/mxmgorin), [#47999](https://github.com/servo/servo/pull/47999)). These can help on memory-constrained devices, and more information is available in the SpiderMonkey source ([base](https://searchfox.org/firefox-main/rev/28b7a7bffb5f82828143d9ad63839ad263b598be/js/src/gc/Scheduling.h#425-429), [urgent](https://searchfox.org/firefox-main/rev/28b7a7bffb5f82828143d9ad63839ad263b598be/js/src/gc/Scheduling.h#440-445)).\n\nThe JVM compatibility target was raised to 11 on Android ([@veyndan](https://github.com/veyndan), [#48414](https://github.com/servo/servo/pull/48414)).\n\n## For users and developers\n\nIt is now possible to cross-compile the OpenHarmony build from Windows hosts ([@jschwe](https://github.com/jschwe), [#48392](https://github.com/servo/servo/pull/48392)).\n\nUnhandled promise rejections are reported to the JS console ([@TTyChud](https://github.com/TTyChud), [#48486](https://github.com/servo/servo/pull/48486)), making it easier to narrow down web compatibility issues in Servo.\n\nThe OpenHarmony SDK was updated to API level 23 ([@Narfinger](https://github.com/Narfinger), [#48505](https://github.com/servo/servo/pull/48505)).\n\nPressing Control+A (or Command+A on macOS) now selects all the content in a document ([@dzfrias](https://github.com/dzfrias), [@mrobinson](https://github.com/mrobinson), [#48025](https://github.com/servo/servo/pull/48025)). It is no longer possible to copy text inside of password inputs ([@dzfrias](https://github.com/dzfrias), [#48404](https://github.com/servo/servo/pull/48404)).\n\nEmbedder-originating JS (e.g. devtools console or embedding APIs) will always execute, even in documents that disable scripting via sandboxing or CSP ([@derdilla](https://github.com/derdilla), [#48394](https://github.com/servo/servo/pull/48394)).\n\n## Performance and stability\n\nWe improved performance by removing **unnecessary allocations** ([@Narfinger](https://github.com/Narfinger), [@TimvdLippe](https://github.com/TimvdLippe), [@yezhizhen](https://github.com/yezhizhen), [#47689](https://github.com/servo/servo/pull/47689), [#47839](https://github.com/servo/servo/pull/47839), [#47838](https://github.com/servo/servo/pull/47838), [#47982](https://github.com/servo/servo/pull/47982), [#48006](https://github.com/servo/servo/pull/48006), [#48036](https://github.com/servo/servo/pull/48036), [#48099](https://github.com/servo/servo/pull/48099), [#48204](https://github.com/servo/servo/pull/48204), [#48127](https://github.com/servo/servo/pull/48127), [#48218](https://github.com/servo/servo/pull/48218), [#48357](https://github.com/servo/servo/pull/48357), [#48386](https://github.com/servo/servo/pull/48386), [#48422](https://github.com/servo/servo/pull/48422), [#48440](https://github.com/servo/servo/pull/48440), [#48452](https://github.com/servo/servo/pull/48452), [#48508](https://github.com/servo/servo/pull/48508)), **preallocating more** when building vectors ([@jschwe](https://github.com/jschwe), [@Narfinger](https://github.com/Narfinger), [@sagudev](https://github.com/sagudev), [@webbeef](https://github.com/webbeef), [#47455](https://github.com/servo/servo/pull/47455), [#47613](https://github.com/servo/servo/pull/47613), [#48026](https://github.com/servo/servo/pull/48026), [#48398](https://github.com/servo/servo/pull/48398)), and **avoiding IPC** in single process mode ([@leowatts](https://github.com/leowatts), [@Narfinger](https://github.com/Narfinger), [@Uiniel](https://github.com/Uiniel), [@TTyChud](https://github.com/TTyChud), [#47691](https://github.com/servo/servo/pull/47691), [#47718](https://github.com/servo/servo/pull/47718), [#48002](https://github.com/servo/servo/pull/48002), [#48073](https://github.com/servo/servo/pull/48073), [#48476](https://github.com/servo/servo/pull/48476), [#48435](https://github.com/servo/servo/pull/48435)).\n\nWe also sped up Servo by reducing interactions with the GC ([@TimvdLippe](https://github.com/TimvdLippe), [@Narfinger](https://github.com/Narfinger), [#47818](https://github.com/servo/servo/pull/47818), [#48257](https://github.com/servo/servo/pull/48257), [#48396](https://github.com/servo/servo/pull/48396)), and doing less work when modifying selections ([@SimonSapin](https://github.com/SimonSapin), [#47579](https://github.com/servo/servo/pull/47579)), dispatching events ([@webbeef](https://github.com/webbeef), [#48078](https://github.com/servo/servo/pull/48078)), calculating font metrics ([@RichardTjokroutomo](https://github.com/RichardTjokroutomo), [#48238](https://github.com/servo/servo/pull/48238)), and indexing window frames ([@mrobinson](https://github.com/mrobinson), [#47832](https://github.com/servo/servo/pull/47832)).\n\nWe **reduced memory usage** in common cases by reusing buffers ([@Narfinger](https://github.com/Narfinger), [#47751](https://github.com/servo/servo/pull/47751)), clearing more page-specific data ([@Radeonares32](https://github.com/Radeonares32), [@Narfinger](https://github.com/Narfinger), [@jschwe](https://github.com/jschwe), [@mrobinson](https://github.com/mrobinson), [@mxmgorin](https://github.com/mxmgorin), [#47651](https://github.com/servo/servo/pull/47651), [#47806](https://github.com/servo/servo/pull/47806), [#47805](https://github.com/servo/servo/pull/47805), [#48166](https://github.com/servo/servo/pull/48166), [#48295](https://github.com/servo/servo/pull/48295), [#48297](https://github.com/servo/servo/pull/48297), [#48016](https://github.com/servo/servo/pull/48016)), compacting data structures ([@Narfinger](https://github.com/Narfinger), [@webbeef](https://github.com/webbeef), [@SimonSapin](https://github.com/SimonSapin), [@mrobinson](https://github.com/mrobinson), [#47776](https://github.com/servo/servo/pull/47776), [#48039](https://github.com/servo/servo/pull/48039), [#48050](https://github.com/servo/servo/pull/48050), [#47742](https://github.com/servo/servo/pull/47742), [#48301](https://github.com/servo/servo/pull/48301), [#48296](https://github.com/servo/servo/pull/48296), [#48105](https://github.com/servo/servo/pull/48105)), and sharing more buffers ([@jdm](https://github.com/jdm), [#47998](https://github.com/servo/servo/pull/47998)). We also fixed a memory leak involving `<audio>` and `<video>` elements ([@TTyChud](https://github.com/TTyChud), [#48371](https://github.com/servo/servo/pull/48371)).\n\nWe turned on **thread affinity boosting** on Linux, which can improve performance on some CPU architectures ([@jschwe](https://github.com/jschwe), [#47058](https://github.com/servo/servo/pull/47058)).\n\nWe’re working on statically preventing [a footgun](https://github.com/servo/servo/issues/39139) that can lead to uncollectible GC cycles and leaking memory ([@Gae24](https://github.com/Gae24), [@jdm](https://github.com/jdm), [@lumiscosity](https://github.com/lumiscosity), [@SilvioPilato](https://github.com/SilvioPilato), [@sahilnyk](https://github.com/sahilnyk), [@TTyChud](https://github.com/TTyChud), [@kuntal-devrat](https://github.com/kuntal-devrat), [@MohamedAli00949](https://github.com/MohamedAli00949), [#47941](https://github.com/servo/servo/pull/47941), [#48013](https://github.com/servo/servo/pull/48013), [#48021](https://github.com/servo/servo/pull/48021), [#48035](https://github.com/servo/servo/pull/48035), [#48033](https://github.com/servo/servo/pull/48033), [#48051](https://github.com/servo/servo/pull/48051), [#48072](https://github.com/servo/servo/pull/48072), [#48171](https://github.com/servo/servo/pull/48171), [#48209](https://github.com/servo/servo/pull/48209), [#48248](https://github.com/servo/servo/pull/48248), [#48246](https://github.com/servo/servo/pull/48246), [#48264](https://github.com/servo/servo/pull/48264), [#48285](https://github.com/servo/servo/pull/48285), [#48311](https://github.com/servo/servo/pull/48311), [#48408](https://github.com/servo/servo/pull/48408), [#48053](https://github.com/servo/servo/pull/48053), [#48156](https://github.com/servo/servo/pull/48156), [#48186](https://github.com/servo/servo/pull/48186), [#48223](https://github.com/servo/servo/pull/48223), [#48315](https://github.com/servo/servo/pull/48315), [#47872](https://github.com/servo/servo/pull/47872), [#47698](https://github.com/servo/servo/pull/47698), [#47682](https://github.com/servo/servo/pull/47682), [#47735](https://github.com/servo/servo/pull/47735), [#47816](https://github.com/servo/servo/pull/47816), [#47817](https://github.com/servo/servo/pull/47817), [#47794](https://github.com/servo/servo/pull/47794), [#47909](https://github.com/servo/servo/pull/47909), [#47934](https://github.com/servo/servo/pull/47934), [#47935](https://github.com/servo/servo/pull/47935), [#47954](https://github.com/servo/servo/pull/47954), [#48022](https://github.com/servo/servo/pull/48022), [#47955](https://github.com/servo/servo/pull/47955), [#48058](https://github.com/servo/servo/pull/48058), [#48228](https://github.com/servo/servo/pull/48228), [#48247](https://github.com/servo/servo/pull/48247), [#48261](https://github.com/servo/servo/pull/48261), [#48280](https://github.com/servo/servo/pull/48280), [#48302](https://github.com/servo/servo/pull/48302), [#48316](https://github.com/servo/servo/pull/48316), [#48328](https://github.com/servo/servo/pull/48328), [#48346](https://github.com/servo/servo/pull/48346), [#48355](https://github.com/servo/servo/pull/48355), [#48262](https://github.com/servo/servo/pull/48262), [#48377](https://github.com/servo/servo/pull/48377), [#48304](https://github.com/servo/servo/pull/48304), [#48378](https://github.com/servo/servo/pull/48378), [#48388](https://github.com/servo/servo/pull/48388), [#48432](https://github.com/servo/servo/pull/48432)).\n\nWe fixed panics in **WebRTC** ([@MunishMummadi](https://github.com/MunishMummadi), [#4772](https://github.com/servo/servo/pull/4772)), **execCommand()** on **Document** ([@TimvdLippe](https://github.com/TimvdLippe), [#47784](https://github.com/servo/servo/pull/47784)), `<video>` ([@calvaris](https://github.com/calvaris), [#46148](https://github.com/servo/servo/pull/46148)), `<iframe>` ([@jdm](https://github.com/jdm), [#48465](https://github.com/servo/servo/pull/48465)), **SharedWorker** ([@mrobinson](https://github.com/mrobinson), [#47940](https://github.com/servo/servo/pull/47940)), **ancestorOrigins** on **Document** ([@mrobinson](https://github.com/mrobinson), [#48009](https://github.com/servo/servo/pull/48009)), `about:memory` ([@mxmgorin](https://github.com/mxmgorin), [#47686](https://github.com/servo/servo/pull/47686), [#48001](https://github.com/servo/servo/pull/48001)), and EGL 1.4 configurations ([@mxmgorin](https://github.com/mxmgorin), [#47803](https://github.com/servo/servo/pull/47803)).\n\nWe also fixed a very ironic panic triggered by the `about:crash` page that loads when a normal page triggers a panic ([@mrobinson](https://github.com/mrobinson), [#48055](https://github.com/servo/servo/pull/48055))\n\nThe JS console no longer hangs when primitive values as thrown as exceptions ([@FatCat560](https://github.com/FatCat560), [#47629](https://github.com/servo/servo/pull/47629)). Servo no longer hangs on shutdown in multiprocess mode ([@Narfinger](https://github.com/Narfinger), [#48523](https://github.com/servo/servo/pull/48523)), when certain pages use **IntersectionObserver** ([@mxmgorin](https://github.com/mxmgorin), [#47693](https://github.com/servo/servo/pull/47693)), when closing a browsing context with pending WebDriver commands ([@yezhizhen](https://github.com/yezhizhen), [#48131](https://github.com/servo/servo/pull/48131), [#48172](https://github.com/servo/servo/pull/48172)), or when closing **SharedWorker**s ([@nicoburns](https://github.com/nicoburns), [#48477](https://github.com/servo/servo/pull/48477)).\n\n`about:memory` got more improvements: we measure more memory for SVG rendering ([@Narfinger](https://github.com/Narfinger), [@mrobinson](https://github.com/mrobinson), [#47061](https://github.com/servo/servo/pull/47061)), WebAudio ([@jdm](https://github.com/jdm), [#47996](https://github.com/servo/servo/pull/47996)), and identify globals that have been leaked ([@jdm](https://github.com/jdm), [#48237](https://github.com/servo/servo/pull/48237)).\n\n## More on the web platform\n\nCSS images now **delay the `load` event**, leading to more consistent behaviour for engine users performing visual rendering ([@TimvdLippe](https://github.com/TimvdLippe), [#48199](https://github.com/servo/servo/pull/48199)).\n\nInteractive selections in documents continued to improve! They now can span shadow trees ([@mrobinson](https://github.com/mrobinson), [@SimonSapin](https://github.com/SimonSapin), [#47931](https://github.com/servo/servo/pull/47931), [#47694](https://github.com/servo/servo/pull/47694), [#47895](https://github.com/servo/servo/pull/47895)), and have consistent heights and positions ([@mrobinson](https://github.com/mrobinson), [#47937](https://github.com/servo/servo/pull/47937)), plus there are new context menu entries to copy and select all ([@mrobinson](https://github.com/mrobinson), [#48101](https://github.com/servo/servo/pull/48101)). Additionally, image-based content shows when it is part of a selection ([@mrobinson](https://github.com/mrobinson), [#48149](https://github.com/servo/servo/pull/48149)).\n\n`Window.open()` respects sandbox flags that prevent popups ([@mrobinson](https://github.com/mrobinson), [#47653](https://github.com/servo/servo/pull/47653)).\n\n**LargestContentfulPaint** now reports the **loadTime** for image content ([@shubhamg13](https://github.com/shubhamg13), [#48286](https://github.com/servo/servo/pull/48286)), ignores cross-origin frames ([@shubhamg13](https://github.com/shubhamg13), [#48094](https://github.com/servo/servo/pull/48094)), ignores invisible text ([@shubhamg13](https://github.com/shubhamg13), [#48010](https://github.com/servo/servo/pull/48010)), and reports null elements when they are removed from the tree ([@shubhamg13](https://github.com/shubhamg13), [#48125](https://github.com/servo/servo/pull/48125)).\n\n**select()** on a text input now focuses the control ([@dzfrias](https://github.com/dzfrias), [@mrobinson](https://github.com/mrobinson), [#48475](https://github.com/servo/servo/pull/48475)).\n\nOur WebDriver server now automates setting permissions ([@xbwwj](https://github.com/xbwwj), [@yezhizhen](https://github.com/yezhizhen), [#47623](https://github.com/servo/servo/pull/47623)), while sending click events and keyboard actions uses fewer delays ([@yezhizhen](https://github.com/yezhizhen), [#48066](https://github.com/servo/servo/pull/48066)).\n\nThere are more useful error messages for methods on **Document** ([@eachra-bawn](https://github.com/eachra-bawn), [#47835](https://github.com/servo/servo/pull/47835)) and **CSS**-related interfaces ([@eachra-bawn](https://github.com/eachra-bawn), [@jdm](https://github.com/jdm), [#47746](https://github.com/servo/servo/pull/47746)).\n\nWe upgraded our [stylo](https://crates.io/crates/stylo) dependency, which improves compatibility with **contrast-color()**, **color-mix()**, **vertical-align**, **list-style**, **place-items**, **at-rule()**, **calc()**, **alpha()**, **attr()**, **content: attr()**, and **named-feature()** ([@Loirooriol](https://github.com/Loirooriol), [#46987](https://github.com/servo/servo/pull/46987), [#47942](https://github.com/servo/servo/pull/47942)).\n\nWe also fixed bugs related to **visibilityState** on **Document** ([@yezhizhen](https://github.com/yezhizhen), [#47908](https://github.com/servo/servo/pull/47908)), **containsNode()** on **Selection** ([@mrobinson](https://github.com/mrobinson), [#47938](https://github.com/servo/servo/pull/47938)), **setKeyframes** on **KeyframeEffect** ([@simonwuelker](https://github.com/simonwuelker), [#48103](https://github.com/servo/servo/pull/48103)), selections when focusing a text input ([@mrobinson](https://github.com/mrobinson), [#48107](https://github.com/servo/servo/pull/48107)), **AudioParam** clamping and automation ([@kevlu93](https://github.com/kevlu93), [#48351](https://github.com/servo/servo/pull/48351), [#48347](https://github.com/servo/servo/pull/48347)), **PannerNode** outputs ([@kevlu93](https://github.com/kevlu93), [#48510](https://github.com/servo/servo/pull/48510)), the **muted** attribute on **HTMLMediaElement** ([@TimvdLippe](https://github.com/TimvdLippe), [#48403](https://github.com/servo/servo/pull/48403)), placeholders in text inputs ([@jdm](https://github.com/jdm), [#47761](https://github.com/servo/servo/pull/47761), [#47797](https://github.com/servo/servo/pull/47797)), animations when modifying document stylesheets ([@SharanRP](https://github.com/SharanRP), [#48000](https://github.com/servo/servo/pull/48000)), gradient color stops ([@BudiArb](https://github.com/BudiArb), [#48288](https://github.com/servo/servo/pull/48288)), sticky table rows ([@TTyChud](https://github.com/TTyChud), [#48380](https://github.com/servo/servo/pull/48380)), **::first-letter** ([@Loirooriol](https://github.com/Loirooriol), [#48307](https://github.com/servo/servo/pull/48307)), **text-wrap-mode** ([@mrobinson](https://github.com/mrobinson), [#48469](https://github.com/servo/servo/pull/48469)), OTF fonts ([@wood-ghost](https://github.com/wood-ghost), [#47904](https://github.com/servo/servo/pull/47904)), CSS and nosniff ([@sahvx655-wq](https://github.com/sahvx655-wq), [#45481](https://github.com/servo/servo/pull/45481)), **Sec-Fetch-** headers and redirects ([@TimvdLippe](https://github.com/TimvdLippe), [#48203](https://github.com/servo/servo/pull/48203)), **moveBefore()** on **Node** ([@mrobinson](https://github.com/mrobinson), [#47692](https://github.com/servo/servo/pull/47692)), **supports()** on **WebCrypto** ([@kkoyung](https://github.com/kkoyung), [#47768](https://github.com/servo/servo/pull/47768), [#47891](https://github.com/servo/servo/pull/47891), [#47953](https://github.com/servo/servo/pull/47953), [#47984](https://github.com/servo/servo/pull/47984), [#48410](https://github.com/servo/servo/pull/48410), [#47545](https://github.com/servo/servo/pull/47545)), cross-origin windows ([@mrobinson](https://github.com/mrobinson), [@jdm](https://github.com/jdm), [#47632](https://github.com/servo/servo/pull/47632), [#48411](https://github.com/servo/servo/pull/48411), [#48038](https://github.com/servo/servo/pull/48038)), origins of `about:blank` and `about:srcdoc` ([@mrobinson](https://github.com/mrobinson), [#47630](https://github.com/servo/servo/pull/47630)), `keypress` events ([@mrobinson](https://github.com/mrobinson), [#48324](https://github.com/servo/servo/pull/48324)), text and media documents ([@SilvioPilato](https://github.com/SilvioPilato), [#47823](https://github.com/servo/servo/pull/47823)), **body()** on **Response** ([@TTyChud](https://github.com/TTyChud), [#48409](https://github.com/servo/servo/pull/48409)), `<details>` with `<summary>` ([@TimvdLippe](https://github.com/TimvdLippe), [#48224](https://github.com/servo/servo/pull/48224)), editing hidden inputs ([@dzfrias](https://github.com/dzfrias), [#48165](https://github.com/servo/servo/pull/48165)), attribute nodes in XPath ([@leowatts](https://github.com/leowatts), [@mrobinson](https://github.com/mrobinson), [#47912](https://github.com/servo/servo/pull/47912)), absolutely positioned boxes ([@mxmgorin](https://github.com/mxmgorin), [#48081](https://github.com/servo/servo/pull/48081)), CSS Grid containers with absolutely positioned nodes ([@nicoburns](https://github.com/nicoburns), [#47519](https://github.com/servo/servo/pull/47519)), **WebDriver** wheel/pointer actions ([@yezhizhen](https://github.com/yezhizhen), [#48143](https://github.com/servo/servo/pull/48143)), and **blob:** URLs ([@Gae24](https://github.com/Gae24), [#47910](https://github.com/servo/servo/pull/47910)).\n\n## New contributors\n\nA special thanks to the following people for landing their first patch in Servo:\n\n- Arnau Camprubí ([@Arnau478](https://github.com/Arnau478), [#47726](https://github.com/servo/servo/pull/47726))\n- Silvio Pilato ([@SilvioPilato](https://github.com/SilvioPilato), [#47786](https://github.com/servo/servo/pull/47786))\n- Radeonares32 ([@Radeonares32](https://github.com/Radeonares32), [#47651](https://github.com/servo/servo/pull/47651))\n- derdilla ([@derdilla](https://github.com/derdilla), [#47828](https://github.com/servo/servo/pull/47828))\n- pr3pony ([@pr3pony](https://github.com/pr3pony), [#48030](https://github.com/servo/servo/pull/48030))\n- Mario ([@Fatcat560](https://github.com/Fatcat560), [#47629](https://github.com/servo/servo/pull/47629))\n- TtyChud ([@TTyChud](https://github.com/TTyChud), [#48228](https://github.com/servo/servo/pull/48228))\n- Devrate Kuntal ([@kuntal-devrat](https://github.com/kuntal-devrat), [#48247](https://github.com/servo/servo/pull/48247))\n- Diego Frias ([@dzfrias](https://github.com/dzfrias), [#48025](https://github.com/servo/servo/pull/48025))\n- LiamillionSS ([@LiamillionSS](https://github.com/LiamillionSS), [#48424](https://github.com/servo/servo/pull/48424))\n\nInterested in helping build a web browser? Take a look at our [curated list](https://starters.servo.org) of issues that are good for new contributors!\n\n## Donations\n\nThanks again for your generous support! We are now receiving **8144 USD/month** (+1% from August) in recurring donations. This helps us cover the cost of our **[speedy](https://ci0.servo.org) [CI](https://ci1.servo.org) [and](https://ci2.servo.org) [benchmarking](https://ci3.servo.org) [servers](https://ci4.servo.org)**, one of our latest **[Outreachy interns](https://www.outreachy.org/alums/2026-05/#:~:text=Servo)**, and funding **[maintainer work](https://servo.org/blog/2026/09/15/one-year-of-sponsorship/)** that helps more people contribute to Servo.\n\nServo is also on [thanks.dev](https://thanks.dev), and already **37 GitHub users** (+1 from August) that depend on Servo are sponsoring us there. If you use Servo libraries like [url](https://crates.io/crates/url/reverse_dependencies), [html5ever](https://crates.io/crates/html5ever/reverse_dependencies), [selectors](https://crates.io/crates/selectors/reverse_dependencies), or [cssparser](https://crates.io/crates/cssparser/reverse_dependencies), signing up for [thanks.dev](https://thanks.dev) could be a good way for you (or your employer) to give back to the community.\n\nWe now have [**sponsorship tiers**](https://servo.org/blog/2025/11/21/sponsorship-tiers/) that allow you or your organisation to donate to the Servo project with public acknowlegement of your support. If you’re interested in this kind of sponsorship, please contact us at join@servo.org.\n\n**8128** USD/month\n\n**10000**\n\nUse of donations is decided transparently via the Technical Steering Committee’s public **[funding request process](https://github.com/servo/project/blob/main/FUNDING_REQUEST.md)**, and active proposals are tracked in [servo/project#187](https://github.com/servo/project/issues/187). For more details, head to our [Sponsorship page](https://servo.org/sponsorship/).\n",
  "dateCreated": "2026-11-05T23:32:43.152740887+00:00",
  "date_created": "2026-11-05T14:34:18+00:00",
  "date_modified": "2026-11-05T14:34:18+00:00",
  "date_published": "2026-11-05T14:34:18+00:00",
  "description": "Plus new CSS functions and WEbGL2 improvements. 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,…",
  "external_url": "https://servo.org/blog/2026/11/05/september-in-servo/",
  "git": {
    "commit": "20068632b65d2830a2d54f25ca1d90d697bea2c0",
    "path": "items/hnrss-org/2026/11/2026-11-05-september-in-servo-rounded-rectangles-and-more.md",
    "permalink": "https://github.com/aymericbeaumet/aggr-instance/blob/20068632b65d2830a2d54f25ca1d90d697bea2c0/items/hnrss-org/2026/11/2026-11-05-september-in-servo-rounded-rectangles-and-more.md"
  },
  "id": "urn:aggr:item:0e53897789201b0d6b0973fabd722e817be8b295",
  "isBasedOn": {
    "@id": "https://servo.org/blog/2026/11/05/september-in-servo/"
  },
  "mainEntity": {
    "@id": "https://servo.org/blog/2026/11/05/september-in-servo/",
    "@type": "CreativeWork",
    "archivedAt": {
      "@id": "https://aggr.aymericbeaumet.com/items/hnrss-org/2026-11-05-september-in-servo-rounded-rectangles-and-more/#webpage"
    },
    "author": [
      {
        "@type": "Person",
        "name": "iamnothere"
      }
    ],
    "dateModified": "2026-11-05T14:34:18+00:00",
    "datePublished": "2026-11-05T14:34:18+00:00",
    "headline": "September in Servo: , rounded rectangles, and more",
    "image": {
      "@type": "ImageObject",
      "caption": "Servo logo",
      "height": 90,
      "url": "https://servo.org/svg/servo-color-positive.svg",
      "width": 160
    },
    "timeRequired": "PT9M",
    "url": "https://servo.org/blog/2026/11/05/september-in-servo/",
    "wordCount": 1831
  },
  "name": "Archived snapshot: September in Servo: , rounded rectangles, and more",
  "preview": {
    "alt": "Servo logo",
    "color": null,
    "height": 90,
    "placeholder": {
      "data_url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII=",
      "hash": ""
    },
    "url": "https://servo.org/svg/servo-color-positive.svg",
    "width": 160
  },
  "reading_minutes": 9,
  "replicated_at": null,
  "source": "hnrss-org",
  "source_name": "Hacker News: Front Page",
  "summary": null,
  "tags": [],
  "temporalCoverage": "2026-11-05T23:32:43.152740887+00:00",
  "title": "September in Servo: , rounded rectangles, and more",
  "url": "https://aggr.aymericbeaumet.com/items/hnrss-org/2026-11-05-september-in-servo-rounded-rectangles-and-more/",
  "word_count": 1831
}