Oxidation
Jump to navigation
Jump to search
Oxidation is a project to integrate Rust code into Gecko and Firefox.
Rust has been required on all platforms since Firefox 54, and we are actively adding new code modules written in Rust to Firefox and related programs.
Documentation
Rust components in Firefox
Completed
- MP4 metadata parser: bug 1161350 (shipped for desktop in Firefox 48)
- Replace uconv with encoding-rs: bug 1261841 (shipping in Firefox 56)
In progress
- Replace stagefright's MP4 metadata parser with mp4parse crate bug 1161350
- URL parser: bug url-oxidation
- CSS style calculation (from Servo): bug stylo
- WebM demuxer: bug 1267492
- WebRender (from Servo): bug webrender
- Audio remoting for Linux: bug 1362220
- SDP parsing in WebRTC bug 1365792
Proposed
- Replace the XML parser
- Replace the preferences module: bug 1379383
- Replace the telemetry module(?)
- Share media playback stack with Servo(?)
- Replace DOM serializers (XML, HTML for Save As.., plain text)
Rust components outside Firefox
Completed
- GeckoDriver - WebDriver implementation for Firefox integrated via marionette protocol (bug 1340637) released as a standalone binary (releases)
Blockers and obstacles
Raw Rust code (lives in m-c) blockers
- Top-level metabug bug oxidation
- [DONE] Android support bug 1220307
- Though Android still not a Tier-1 Rust platform: https://forge.rust-lang.org/platform-support.html
- Linux distro support for Rust [1]
- [DONE] Need to improve call stacks bug 1268328
Cargo / GitHub blockers
- [DONE] Tracking bug bug 1231764
- Improve working with vendored Cargo crates [2] [3]
Rust / Cargo nice-to-haves
Things blocking new components from being written in Rust
- Lack of Mozilla-wide Rust training for engineers
- Lack of IPC/IPDL integration (e.g. generated Rust bindings)
- Slow compile times