{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreiagdmdv7ax3z7j7wgbopivjpua7pl3tt5knm6r2rnuz6rq2dpmsdq",
"uri": "at://did:plc:qp37y62idugoomg4hj4hfukc/app.bsky.feed.post/3ma5ci4fjwyp2"
},
"path": "/blog/2025/12/15/november-in-servo/",
"publishedAt": "2026-05-23T05:58:43.742Z",
"site": "https://servo.org",
"tags": [
"An earlier version",
"Servo 0.0.3",
"@atbrakhi",
"@mrobinson",
"40434",
"40501",
"40306",
"@arihant2math",
"40272",
"@rayguo17",
"40578",
"@WaterWhisperer",
"40684",
"@simonwuelker",
"40829",
"40861",
"40884",
"@Taym95",
"40842",
"@Loirooriol",
"40525",
"@nicoburns",
"34846",
"@jdm",
"40378",
"40867",
"Web Engines Hackfest website",
"@kkoyung",
"SubtleCrypto API",
"modern algorithms in this WICG draft",
"40334",
"40765",
"40832",
"40936",
"40932",
"40948",
"40333",
"40298",
"40305",
"40253",
"40536",
"40553",
"40523",
"40591",
"40557",
"40497",
"40421",
"40480",
"40398",
"@lukewarlow",
"40271",
"40314",
"@excitablesnowball",
"39989",
"@mukilan",
"40794",
"40738",
"40721",
"40594",
"40923",
"40883",
"40402",
"40607",
"ContextMenu",
"EmbedderControl::ContextMenu",
"WebViewDelegate::show_embedder_control()",
"WebView",
"can_go_back()",
"can_go_forward()",
"40598",
"RefreshDriver",
"Servo",
"40799",
"ServoDelegate",
"40886",
"40715",
"40951",
"ClipboardDelegate",
"40408",
"@vimpunk",
"40639",
"40556",
"Largest Contentful Paint",
"@shubhamg13",
"@boluochoufeng",
"39714",
"39384",
"@jschwe",
"37972",
"40795",
"40797",
"@kongbai1996",
"40637",
"40158",
"@webbeef",
"40775",
"40742",
"@lumiscosity",
"40823",
"nytimes.com",
"40811",
"Speedometer 3.0",
"3.1",
"@Narfinger",
"40459",
"40821",
"40913",
"40411",
"40911",
"40729",
"40933",
"speedy",
"CI",
"and",
"benchmarking",
"servers",
"Outreachy interns",
"maintainer work",
"thanks.dev",
"url",
"html5ever",
"selectors",
"cssparser",
"sponsorship tiers",
"funding request process",
"servo/project#187",
"Sponsorship page"
],
"textContent": "**Correction (2026-01-19)**\n\nAn earlier version of this post said that Servo now has full support for ChaCha20-Poly1305, but this was incorrect. We had only landed the ‘importKey’ and ‘exportKey’ operations. The ‘encrypt’, ‘decrypt’, and ‘generateKey’ options landed in the following month.\n\nLanding in Servo 0.0.3 and our November nightly builds, we now have **context menus** for links, images, and other web content (@atbrakhi, @mrobinson, #40434, #40501), **vsync on Android** (@mrobinson, #40306), **light mode** for the **new tab page** (@arihant2math, #40272), plus several web platform features:\n\n * **< video controls>** (@rayguo17, #40578)\n * **< use>** in SVG (@WaterWhisperer, #40684)\n * ☢️ **‘font-optical-sizing’** (@simonwuelker, #40829, #40861, #40884)\n * **‘brotli’** in **CompressionStream** and **DecompressionStream** (@Taym95, #40842)\n * **‘display-p3-linear’** in CSS **color()** and **color-mix()** (@Loirooriol, #40525)\n * **calc()** now works in **grid layout** (@nicoburns, #34846)\n * **ResizeObserver** is now enabled by default (@jdm, #40378)\n\n\n\n**Font variations** are now applied in **‘font-weight’** and **‘font-stretch’** (@simonwuelker, #40867), fixing a rendering issue in the Web Engines Hackfest website.\n\n@kkoyung has landed some huge improvements in the SubtleCrypto API, including some of the more modern algorithms in this WICG draft, and a fix for constant-time base64 (@kkoyung, #40334). We now have full support for **SHA3-256** , **SHA3-384** , **SHA3-512** (@kkoyung, #40765), **cSHAKE128** , **cSHAKE256** (@kkoyung, #40832), **Argon2d** , **Argon2i** , **Argon2id** , **ChaCha20-Poly1305** , **ECDH** , **ECDSA** , and **X25519** :\n\nAlgorithm | deriveBits | exportKey | generateKey | importKey | sign | verify\n---|---|---|---|---|---|---\nArgon2d | #40936 | n/a | n/a | #40932 | n/a | n/a\nArgon2i | #40936 | n/a | n/a | #40932 | n/a | n/a\nArgon2id | #40936 | n/a | n/a | #40932 | n/a | n/a\nChaCha20-Poly1305 | n/a | #40948 | n/a | #40948 | n/a | n/a\nECDH | #40333 | #40298 | #40305 | #40253 | n/a | n/a\nECDSA | n/a | #40536 | #40553 | #40523 | #40591 | #40557\nX25519 | #40497 | #40421 | #40480 | #40398 | n/a | n/a\n\n**< details>** now fires **‘toggle’** events (@lukewarlow, #40271), and **< details name>** is now exclusive, like radio buttons (@simonwuelker, #40314). **InputEvent** , which represents **‘input’** and **‘beforeinput’** events, now has **composed** , **data** , **isComposing** , and **inputType** properties (@excitablesnowball, #39989).\n\n## Embedding API \n\n**Each webview** can now now have its **own rendering context** (@mrobinson, @mukilan, #40794, #40738, #40721, #40594, #40923). This effectively enables full support for **multiple windows** , and we’ve started incorporating that into servoshell (@mrobinson, @mukilan, #40883).\n\nOur previously unused **context menu API** has been replaced with a new, more effective API that includes actions for links, images, and other web content (@mrobinson, @atbrakhi, #40402, #40501, #40607). For more details, see the docs for **ContextMenu** , EmbedderControl::ContextMenu, and WebViewDelegate::show_embedder_control().\n\nWebView now has can_go_back() and can_go_forward() methods, and servoshell now uses those to disable the back and forward buttons (@mrobinson, #40598).\n\nHaving introduced our new RefreshDriver API in October, we’ve now **removed Servo:: animating()** (@mrobinson, #40799) and **ServoDelegate:: notify_animating_changed()** (@mrobinson, #40886), and similarly cleaned up the obsolete and inefficient “animating” state in servoshell (@mrobinson, #40715).\n\nWe’ve moved virtually all of the useful items in the Servo API to the root of the `servo` library crate (@mrobinson, #40951). This is a **breaking change** , but we expect that it will greatly simplify embedding Servo, and it means you can even write `use servo::*;` in a pinch.\n\nWhen running Servo without a custom ClipboardDelegate, we normally use the system clipboard by default. But if there’s no system clipboard, we now have a built-in **fallback clipboard** (@mrobinson, #40408), rather than having no clipboard at all. Note that the fallback clipboard is very limited, as it can only store text and does not work across processes.\n\n## Performance and stability \n\nServo now **parses CSS in parallel** with script and layout (@mrobinson, @vimpunk, #40639, #40556), and can now measure Largest Contentful Paint in PerformanceObserver as well as in our internal profiling tools (@shubhamg13, @boluochoufeng, #39714, #39384).\n\n**Just-in-time compilation** (JIT) is now **optional** (@jschwe, #37972), which can be useful in situations where generating native code is forbidden by policy or unwanted for other reasons.\n\nWe’ve improved the performance of incremental layout (@Loirooriol, @mrobinson, #40795, #40797), touch input (@kongbai1996, #40637), animated GIF rendering (@mrobinson, #40158), the prefs subsystem (@webbeef, #40775), and parseFromString() on DOMParser (@webbeef, #40742). We also use fewer IPC resources when internal profiling features are disabled (@lumiscosity, #40823).\n\nWe’ve fixed a bug causing **nytimes.com** to hang (@jdm, #40811), as well as fixing crashes in **Speedometer 3.0** and **3.1** (@Narfinger, #40459), grid layout (@nicoburns, #40821), the fonts subsystem (@simonwuelker, #40913), XPath (@simonwuelker, #40411), ReadableStream (@Taym95, #40911), AudioContext (@Taym95, #40729), and when exiting Servo (@mrobinson, #40933).\n\n## Donations \n\nThanks again for your generous support! We are now receiving **6433 USD/month** (+11.8% over October) in recurring donations. This helps us cover the cost of our **speedy CI and benchmarking servers** , one of our latest **Outreachy interns** , and funding **maintainer work** that helps more people contribute to Servo.\n\nServo is also on thanks.dev, and already **28 GitHub users** (same as October) that depend on Servo are sponsoring us there. If you use Servo libraries like url, html5ever, selectors, or cssparser, signing up for thanks.dev could be a good way for you (or your employer) to give back to the community.\n\nWe now have sponsorship tiers that allow you or your organisation to donate to the Servo project with public acknowlegement of your support. A big thanks from Servo to our newest Bronze Sponsors: **Jenny & Phil Porada**, **Josh Aas** , **LambdaTest** , and **Sandwich**! If you’re interested in this kind of sponsorship, please contact us at join@servo.org.\n\n**6433** USD/month\n\n**10000**\n\nUse of donations is decided transparently via the Technical Steering Committee’s public **funding request process** , and active proposals are tracked in servo/project#187. For more details, head to our Sponsorship page.",
"title": "November in Servo: monthly releases, context menus, parallel CSS parsing, and more!",
"updatedAt": "2025-12-15T00:00:00.000Z"
}