Confirmed users
1,345
edits
Nnethercote (talk | contribs) (Created page with "'''Oxidation''' is a project to integrate [https://www.rust-lang.org/ Rust] code in and around Firefox. Rust support has been required on all platforms since Firefox 54, and...") |
Nnethercote (talk | contribs) No edit summary |
||
| Line 12: | Line 12: | ||
Rust has the following strengths. | Rust has the following strengths. | ||
* Memory safety. | * Memory safety, which prevents crashes and security vulnerabilities. | ||
* Thread safety, which enables parallel performance. | * Thread safety, which enables parallel performance. | ||
* Highly expressive. | * Highly expressive. | ||
* A great community. | |||
Rust has the following challenges. | Rust has the following challenges. | ||
| Line 25: | Line 26: | ||
** Android is currently not a Tier 1 platform | ** Android is currently not a Tier 1 platform | ||
*** https://forge.rust-lang.org/platform-support.html | *** https://forge.rust-lang.org/platform-support.html | ||
** | *** rillian: "As I understand it, the problem is no one has set up tests on a cloud service, so there's no way for upstream to gate work on Android regressions. Qemu emulation is too slow. There aren't many services with arm support, but there are a couple of new options. If someone does the work of setting something up we should be able to get the Rust team to adopt it." | ||
** Often requires adding wrapper/glue code | |||
*** But this is typically valuable/reusable | |||
** Sharing components between Gecko and Servo is difficult | |||
*** The workflow is annoying | |||
*** There are continuous integration mismatches | |||
*** Phabricator/Lando should fix this? | |||
*** This is not relevant for Gecko-only Rust components, however. | *** This is not relevant for Gecko-only Rust components, however. | ||
| Line 38: | Line 45: | ||
* For components where parallelism can provide big performance wins. | * For components where parallelism can provide big performance wins. | ||
* For components where Servo has demonstrated success. | * For components where Servo has demonstrated success. | ||
When should a code component be made into an external crate? | |||
* XXX: suggest being conservative | |||
** heapsize is a cautionary tale | |||
= Documentation and Education = | = Documentation and Education = | ||
| Line 51: | Line 62: | ||
- basics on learning Rust, e.g. links to Rust stuff | - basics on learning Rust, e.g. links to Rust stuff | ||
- Gecko-specific stuff, e.g. how to deal with crates | - Gecko-specific stuff, e.g. how to deal with crates | ||
- #rust, #servo, #rust-internals, #rustc | |||
[https://public.etherpad-mozilla.org/p/stylo Stylo workflow] (applies to any changes that straddle Gecko and Servo) | [https://public.etherpad-mozilla.org/p/stylo Stylo workflow] (applies to any changes that straddle Gecko and Servo) | ||
| Line 135: | Line 147: | ||
* Shared Gecko/Servo components are painful | * Shared Gecko/Servo components are painful | ||
** Landing/merging process | ** Landing/merging process | ||
* Debugging? | |||
* IDE/symbol lookup support? | |||
* Code coverage? | |||
* Profiling? | |||
* Test integration? | |||
== Things blocking new components from being written in Rust == | == Things blocking new components from being written in Rust == | ||
| Line 141: | Line 159: | ||
** No IPDL binding generator | ** No IPDL binding generator | ||
** No WebIDL binding generator for dom components (Servo must have something here?) | ** No WebIDL binding generator for dom components (Servo must have something here?) | ||
** No XPIDL binding generator | ** No XPIDL binding generator ({{bug|1293362}} | ||
** Immature rust-bindgen and cheddar/cbindgen tools for general cross-language support. | ** Immature rust-bindgen and cheddar/cbindgen tools for general cross-language support. | ||
* Slow compile times | * Slow compile times | ||
| Line 163: | Line 181: | ||
* mystor?: bindings | * mystor?: bindings | ||
* qdot?: webauthn integration | * qdot?: webauthn integration | ||
* rust compiler folks? | * rust compiler folks? acrichto, mwoerister | ||
= Meetings = | = Meetings = | ||