Oxidation2: Difference between revisions

142 bytes added ,  5 December 2017
no edit summary
No edit summary
Line 100: Line 100:
** Mozilla-central can use Rust 1.25.0 features 2018 April 12.
** Mozilla-central can use Rust 1.25.0 features 2018 April 12.


= Rust components in Firefox =
= Rust Components =


XXX: include rationales where appropriate
== Within Firefox ==


== Completed ==
=== Completed ===


* MP4 metadata parser: {{bug|1161350}} (shipped for desktop in Firefox 48)
* MP4 metadata parser: {{bug|1161350}} (shipped for desktop in Firefox 48)
** Parses untrusted input, replaces libstagefright, a 3rd-party library with a history of security vulnerabilities
** '''Why Rust?''' Parses untrusted input, replaces libstagefright, a 3rd-party library with a history of security vulnerabilities.
* Replace uconv with encoding-rs: {{bug|1261841}} (shipped in Firefox 56)
* Replace uconv with encoding-rs: {{bug|1261841}} (shipped in Firefox 56)
* CSS style calculation (from Servo): {{bug|stylo}} (shipped in Firefox 57)
* CSS style calculation (from Servo): {{bug|stylo}} (shipped for desktop in Firefox 57)
** Code taken from Servo, uses parallel algorithms
** '''Why Rust?''' Code taken from Servo, uses parallel algorithms.
* U2F HID backend: {{bug|1388843}} (shipped in Firefox 57)
* U2F HID backend: {{bug|1388843}} (shipped in Firefox 57)


== In progress ==
=== In progress ===


* URL parser: {{bug|url-oxidation}}
* URL parser: {{bug|url-oxidation}}
* WebM demuxer: {{bug|1267492}}
* WebM demuxer: {{bug|1267492}}
* WebRender: {{bug|webrender}}
* WebRender: {{bug|webrender}}
** Code taken from Servo, has high performance; Rust's memory and thread safety provides protection against complexity
** '''Why Rust?''' Code taken from Servo, has high performance; Rust's memory and thread safety provides protection against complexity.
* Audio remoting for Linux: {{bug|1362220}}
* Audio remoting for Linux: {{bug|1362220}}
* SDP parsing in WebRTC: {{bug|1365792}} (aiming for Firefox 59)
* SDP parsing in WebRTC: {{bug|1365792}} (aiming for Firefox 59)
* Linebreaking with xi-unicode: {{bug|1290022}}
* Linebreaking with xi-unicode: {{bug|1290022}}
* Optimizing WebVM compiler backend: [https://github.com/stoklund/cretonne/ cretonne]
* Optimizing WebVM compiler backend: [https://github.com/stoklund/cretonne/ cretonne]
** Well-separated component with a clear interface
** '''Why Rust?''' Well-separated component with a clear interface.


== Proposed ==
=== Proposed ===


* Parallel layout
* Parallel layout
** Code from Servo
** Code from Servo.
* Replace the XML parser
* Replace the XML parser
** Parses untrusted input, replaces expat, a 3rd-party library with a history of security vulnerabilities
** '''Why Rust?''' Parses untrusted input, replaces expat, a 3rd-party library with a history of security vulnerabilities.
* WebMIDI: {{bug|1201593}}, {{bug|1201596}}, {{bug|1201598}}
* WebMIDI: {{bug|1201593}}, {{bug|1201596}}, {{bug|1201598}}
* Gamepad code: {{bug|1286699}}
* Gamepad code: {{bug|1286699}}
* Replace the telemetry module(?)
* Replace the telemetry module(?)
** The existing C++ code has a history of threading problems
** '''Why Rust?''' The existing C++ code has a history of threading problems.
* Share media playback stack with Servo(?)
* Share media playback stack with Servo(?)
* Replace DOM serializers (XML, HTML for Save As.., plain text)
* Replace DOM serializers (XML, HTML for Save As.., plain text)
* Image decoders?
* Image decoders?
** '''Why Rust?''' Parsing untrusted input, some history of security vulnerabilities.


= Rust components outside Firefox =
== Outside Firefox ==


== 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, a WebDriver implementation for Firefox integrated via marionette protocol: {{bug|1340637}} ([https://github.com/mozilla/geckodriver/releases standalone releases])


= Blockers and obstacles =
= Blockers and obstacles =
Confirmed users
1,345

edits