-
-
Notifications
You must be signed in to change notification settings - Fork 2.9k
Whistler Oxidation 2019
Nicholas Nethercote edited this page Jun 20, 2019
·
3 revisions
- Oxidation meeting, Whistler 2019 All Hands
- 10am, June 19, 2019
- Oxidation wiki: https://wiki.mozilla.org/Oxidation
- Keep this up-to-date, plz!
- Notes from the previous meeting: https://github.com/servo/servo/wiki/Orlando-Oxidation-2018
- Chair: erahm
- Notes: lina, plus other attendees
- njn: Cargo pipelining works in Nightly, use CARGO_PIPELINING=true
- Sample speedups for opt builds: Webrender 1.27x, Cranelift 1.20x, Firefox 1.07x
- On the path to stabilization
- niko: any reason not to turn on?
- njn: not really; doesn't slow things down because it just changes the order in which work is done
- requires Nightly, some people don't want to use that because it sometimes breaks Firefox compilation
- erahm: Cross-language LTO
- Firefox: enabled on windows
- clang8 + rust 1.34
- export RUSTFLAGS=-Clinker-plugin-lto
- Still issues w/macOS: https://bugzilla.mozilla.org/show_bug.cgi?id=1486042#c63
- erahm: PGO
- Should be stabilized in 1.37: https://github.com/rust-lang/rust/pull/61268
- Firefox: work has been done to enable, we need to verify that things are working: https://bugzilla.mozilla.org/show_bug.cgi?id=1437452
- lina: we have a few now!
- documentation:
- Build a component in 5 minutes: https://docs.google.com/presentation/d/1qkPwISU1BvsTVyqLuVhisSMuIS_DiXb8X09-boszcu0/edit?usp=sharing
- dev-platform thread with helper crates to make working with XPCOM interfaces nicer: https://groups.google.com/forum/#!topic/mozilla.dev.platform/u8scZop3FkM
- kvstore: https://searchfox.org/mozilla-central/source/toolkit/components/kvstore
- Wraps rkv (LMDB binding) for key-value storage
- New XUL store: https://searchfox.org/mozilla-central/source/toolkit/components/xulstore
- Certificate store: https://searchfox.org/mozilla-central/source/security/manager/ssl/cert_storage
- Bookmark sync: https://searchfox.org/mozilla-central/source/toolkit/components/places/bookmark_sync
- Shared between Desktop, Fenix, and FxiOS
- niko: rustc:
- Parallelized rustc "coming soon"
- not yet enabled or available, but we're in "data measure and document"
- if you're editing Rust code (or just running
mach cargo check
), potentially a win
- dragana: neqo - QUIC implentation in rust
- Now integrated with platform code! (Not in m-c yet, but getting close)
- erahm: Rewriting crash reporting in Rust
- Can use ecosystem for parsing object files, which should make things much easier for us. (Leveraging Sentry's crates)
- ashley: considering rewriting Spidermonkey frontend in Rust (parser, etc.)
- Currently 60k lines of C++
- njn: Please update https://wiki.mozilla.org/Oxidation#Rust_Components with new Rust projects, or tell me and I'll do it
- erahm: Compilation is sloooowww. File bugs if you find specific scenarios!
- gandalf: Using WebIDL maplikes in Rust is hard...and, in general, WebIDL needs better Rust bindings!
- We basically need a structure with the same layout as an
nsTHashtable
in Rust! (Like ThinVec and nsTArray)- froydnj: I might be able to do that, though hashtable are obviously more complex than vectors
- We basically need a structure with the same layout as an
- lina: Using jsvals in Rust!
- We have Rust bindings for SpiderMonkey in the tree...in theory!
- It'd be nice to use promises, access JS object properties...
- bryce: Valgrind false positives due to optimized Rust code branching on an uninitialized value in the MP4 parser tripped fuzzing
- Hard to verify if it's actually safe!
- njn: LLVM generates code violating valgrind's assumptions
- I will talk to jseward to see if anything has improved, might be no good answers
- Update: jseward has a plan, but it's a non-trivial amount of work and may take some time
- I will talk to jseward to see if anything has improved, might be no good answers
- lina: Do we have a policy for vendoring non-Mozilla crates?
- froydnj: mostly a licensing question
- Whoever does main review should also take a look at the crate, especially if it involves unsafe code.
- No formal signoff, :glob is working on requirements for this.
- froydnj: mostly a licensing question
- lina: Do we support building standalone Rust code (not linked into libxul)?
- glandium: Yes...in theory. GeckoDriver is a binary, for example.
- froydnj: We have examples of host and target programs.
- Search for RUST_PROGRAMS
- lina: How do we test in-tree Rust crates?
- rust-test job runs on Treeherder (mostly Stylo tests, maybe something else now?)
- Runs
cargo test
- Search for RUST_TESTS in moz.build
- Runs
- froydnj: GTest + FFI is probably best.
- We don't run third-party tests.
- Side note: for vendored crates, exclude large test fixtures from Cargo packages! We don't want 5 different copies of Sherlock Holmes in m-c.
- rust-test job runs on Treeherder (mostly Stylo tests, maybe something else now?)
- yury: question about wasm
- devtools uses two crates, would be nice to vendor them?
- froydnj: should be doable, file a bug
- jld: any Rust-related issues with IPC? IPC is currently only C++-to-C++, pretty much
- gsvelto: I would use it!