Servo Browser Engine September Update: 527 Commits and Performance Gains
The latest Servo release enhances web compatibility, accessibility features, and engine performance metrics.
1September Development Milestone
The Servo browser engine released version 0.7.0, incorporating 527 distinct commits throughout September. This update focuses on stabilizing core components and improving developer tooling. The developer console now features eager evaluation for JavaScript inputs, providing faster feedback loops for engineers working within the browser environment during their daily development cycles.
2Security and Core Upgrades
Servo upgraded its core dependencies to SpiderMonkey v153.3 and mozangle v0.7. These updates were critical for addressing multiple security vulnerabilities reported upstream. By maintaining parity with these foundational libraries, the project ensures that the browser engine remains resilient against common web-based threats while supporting modern JavaScript execution and rendering requirements.
3Accessibility Tree Enhancements
The accessibility tree now accurately reports geometry bounds for inline elements and correctly identifies elements with display: none as hidden. These changes, implemented by the development team, significantly reduce computational overhead when responding to DOM modifications. This ensures that assistive technologies receive more precise and efficient data from the browser engine.
4Media and WebGL Progress
WebGL2 implementation saw extensive conformance improvements across numerous pull requests. Simultaneously, media elements received significant updates, including functional text track events and improved WebVTT parsing. These advancements allow for better support of closed captioning and complex media interactions, bringing the engine closer to full parity with modern web standards.
5IndexedDB and Animation APIs
The IndexedDB implementation now supports openCursor() and openKeyCursor() methods, alongside essential cursor navigation functions like advance() and continue(). Additionally, the Animation interface was updated with getTimeline() and setTimeline() methods. These API additions provide developers with more granular control over local data storage and complex web animations within Servo.
6Refining WebView Functionality
The project removed the WebView::set_throttled API, shifting to an automatic throttling mechanism that activates when a WebView is hidden. Furthermore, the focus management system was simplified; embedders must now explicitly call WebView::set_focused. These architectural changes streamline the embedding process and reduce the likelihood of state-related bugs in custom browser applications.
7Performance and Memory Optimization
Engineers achieved significant performance gains by removing unnecessary allocations and preallocating vectors. Memory usage was reduced through buffer sharing and data structure compaction. Additionally, the team implemented thread affinity boosting on Linux, which optimizes CPU usage. These combined efforts ensure that Servo remains responsive even when handling complex web pages.
8Platform and Build Improvements
The Android JVM compatibility target was raised to 11, and OpenHarmony support was updated to API level 23. Cross-compilation for OpenHarmony is now supported from Windows hosts. Furthermore, the multiprocess mode is now configurable at build time, allowing developers to optimize binary sizes by disabling specific features like WebGL if not required.
9Debugging and Error Handling
Unhandled promise rejections are now reported directly to the JavaScript console, simplifying the identification of web compatibility issues. The team also fixed various panics related to WebRTC, iframes, and SharedWorkers. These stability improvements, combined with better error messages for CSS interfaces, create a more robust environment for both web developers and engine contributors.
10CSS and Layout Compatibility
The stylo dependency upgrade improved compatibility with modern CSS features, including contrast-color(), color-mix(), and various grid layout properties. Selections now span shadow trees, and LargestContentfulPaint reporting was refined to ignore invisible text and cross-origin frames. These updates ensure that Servo renders modern web layouts with higher accuracy and visual consistency.
11Project Sustainability and Funding
Servo currently receives 8,144 USD per month in recurring donations, marking a 1% increase since August. These funds support critical infrastructure like benchmarking servers and maintainer work. The project continues to encourage community contributions through curated issues and public sponsorship tiers, ensuring the long-term viability of this open-source browser engine project.