Oxidation: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(→‎Rust components in Firefox: Mark mp4 parser as completed)
(Move documentation links to the top of the page)
Line 2: Line 2:


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.
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 =
* [https://developer.mozilla.org/en-US/Firefox/Building_Firefox_with_Rust_code Developer Documentation]
* [https://gecko.readthedocs.io/en/latest/build/buildsystem/rust.html Build System Documentation]


= Rust components in Firefox =
= Rust components in Firefox =
Line 27: Line 32:
Completed
Completed
* GeckoDriver - WebDriver implementation for Firefox integrated via marionette protocol ({{bug|1340637}}) released as a standalone binary ([https://github.com/mozilla/geckodriver/releases releases])
* GeckoDriver - WebDriver implementation for Firefox integrated via marionette protocol ({{bug|1340637}}) released as a standalone binary ([https://github.com/mozilla/geckodriver/releases releases])
= Documentation =
* [https://developer.mozilla.org/en-US/Firefox/Building_Firefox_with_Rust_code Developer Documentation]
* [https://gecko.readthedocs.io/en/latest/build/buildsystem/rust.html Build System Documentation]


= Blockers and obstacles =
= Blockers and obstacles =

Revision as of 18:20, 12 July 2017

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

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

Cargo / GitHub blockers

Rust / Cargo nice-to-haves

  • [DONE] Per-crate integer overflow checking [4]
  • Artifact caching [5]

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

Meetings

  • Mozlando [6]
  • Oxidation Nov. 2015 [7]
  • Mozlandia [8]
  • Whistler [9]