-
-
Notifications
You must be signed in to change notification settings - Fork 2.9k
San Francisco Oxidation
Nicholas Nethercote edited this page Jun 15, 2018
·
4 revisions
- Oxidation meeting, San Francisco All Hands
- 2pm, Thursday, Jun 14, 2018
- Oxidation wiki: https://wiki.mozilla.org/Oxidation
- Notes from the previous meeting: https://github.com/servo/servo/wiki/Austin-Oxidation
- Etherpad used for this meeting: https://public.etherpad-mozilla.org/p/oxi
- Chair: ted
- Minutes: njn (plus attendees)
- Status of ongoing work
- Checking correctness of the wiki page
- Light prioritization
- njn: 300 "Programming Rust" books were handed out on Tuesday
- Steve Klabnik's book is coming out in 2 weeks, talk to him for a free copy
- njn: rustc perf improvements
- Incremental now on by default for Firefox (not in automation)
- Niko: rustc doesn't use incremental for opt builds
- Need to investigate: are common developer workflows actually getting incremental compilation?
- This function determines whether we use incremental: https://searchfox.org/mozilla-central/rev/42930ab9634ebf3f62aed60f7d1c1bf25c0bf00c/build/moz.configure/toolchain.configure#1514
- ThinLTO is complete?
- makes it possible to e.g. use incremental comp without giving up too much perf in the resulting binary
- Manish: codegen-units not getting full use? worth investigating. Should file a bug, if one doesn't exist.
- make jobserver is now working
- Lots of recent improvements: 10--30% on many workloads
- Would like feedback on workloads (nmatsakis)
- Exact commands that are taking longer than you expect
- starting crate B after emitting metadata for crate A (pipelining)
- nmatsakis: parallelization (combined with "MIR only rlibs") may help here too
- Relevant cargo issue: https://github.com/rust-lang/cargo/issues/4831
- Would like feedback on workloads (nmatsakis)
- Incremental now on by default for Firefox (not in automation)
- ttromey: debugging
- rust plugin for lldb, should basically work
- unblocks further improvements
- bz: why lldb? tom: I already did the work for gdb!
- nika: XPCOM stuff
- xpcom bindings to Rust now available
- nobody using them! even though people requested them
- Nika wants to delete them if nobody will use them!
- Do people know they exist?
- bz: we kind of don't want people to use it, don't want greenfield stuff [Rust-C++ interop] to use these bindings
- nathan: mentat could use this
- manish: gandalf's project fluent work wants this too
- ted: sccache distributed compilation
- Session earlier today: https://sanfranciscoallhandsjune2018.sched.com/event/F4vq/distributed-sccache-project-update
- Contractor actively working on this, should be feature complete in a few months
- Trello board for tracking: https://trello.com/b/rsPh5YPG/sccache-dist
- LTO status?
- To allow removal of C++ functions that we manually inlined by duplicating in Rust (e.g. various nsINode methods) in Stylo.
- Niko: some progress, but doesn't know details
- mw wrote me that "it got merged in https://github.com/rust-lang/rust/pull/50000 and https://github.com/rust-lang/rust/pull/50569"
- "with the right combination of nightly Rust and Clang you can already use it"
- mw is the expert, but is on leave right now
- froydnj: it has worked in the past, but is fiddly to get the toolchains right, e.g. lockstep upgrades of compilers
- ajones: working in Nightly Rust, not currently riding the trains due to some flakiness
- Build/run Rust programs as host binaries: https://bugzilla.mozilla.org/show_bug.cgi?id=1439645
- JS needs/wants this for BinAST work
- IPDL compiler rewrite in Rust \o/
- Want to share the parser between the build step and runtime?
- Build time is an issue? Some hacks might be possible to get around that
- Build system trickiness with stages; need to generate all headers before compiling C++
- qdot: Rust system/hardware DOM API work
- Nice boundary at IPDL level; not hitting much XPCOM
- writing system level hardware code in Rust
- goal is reduce threading errors; emulating hardware never does a great job of this
- xidorn: Rust unit test for Android builds: https://bugzilla.mozilla.org/show_bug.cgi?id=1466580
- stylo has a bunch of unit tests for testing bindgen
- doesn't work for android
- xidorn: Build to wasm: devtools wants to have cssparser crate compiled to wasm so they can use it instead of some random stuff from old style system
- XPCOM access to the native-compiled copy of cssparser?
Wiki page correctness check
- "Rust Components" ("In progress" and "Proposed" subsections)
- Are some of these moribund? Are there new components worth listing?
- (section has now been updated based on comments in the meeting)
- Are some of these moribund? Are there new components worth listing?
- "Blockers and Obstacles" -- Are any of these no longer a problem?
- Esp. "Management (landing, merging, etc.) of Shared Gecko/Servo components"
- (section has now been updated based on comments in the meeting)
- Esp. "Management (landing, merging, etc.) of Shared Gecko/Servo components"
- aturon: general requests from upper management about reporting on/overseeing this
- njn, aturon, ajones discussed this afterwards; njn will write a short white paper on Rust usage within Mozilla by the end of 2018
(vote counts are from the last Oxidation meeting in Austin)
- [better; progress ongoing] 16 votes: Compile speed and memory usage
- [progress ongoing] 7 votes: Cross-language inlining (making using Rust at fine grain from C++ not hurt optimizations)
- [good enough] 4 votes: rust-bindgen shortcomings (C++ -> Rust bindings)
- [progress ongoing] 3 votes: Better debugging
- [done] 3 votes: XPCOM bindings
- [mostly done] 3 votes: Ability to edit vendored crates in Gecko: https://bugzilla.mozilla.org/show_bug.cgi?id=1323557#c30
- [done] 2 votes: Android is not Tier1 for Rust
- 2 votes: WebIDL binding generation
- [no] 2 votes: Infra: do we still have to keep Servo tree green? If so, need infra spend
- 2 votes: IDE/symbol lookup support - anything specific here? Searchfox has Rust support now, IDE support basically works - ping nrc
- 2 votes: Cargo improvements for build scripts, build system integration, separate optimization levels for dependent crates
- 2 votes: Improve documentation on how to partially port code in m-c: https://firefox-source-docs.mozilla.org/build/buildsystem/rust.html
- 2 votes: reduce Rust code size
- 1 vote: Fix things preventing SpiderMonkey from having Rust dependencies
- 1 vote: IPDL binding generation
- 1 vote: cbindgen shortcomings
- 1 vote: SIMD stabilization
- 0 votes: Too many copies of things in generated code
- 0 votes: host binaries that can be run at build time
- 0 votes: Crash reporting improvements?: https://bugzilla.mozilla.org/show_bug.cgi?id=1348896
- 0 votes: Code coverage?
- 0 votes: Profiling improvements? Especially for parallel code.
- 0 votes: Test integration?
- 0 votes: manish: Multiple bindgen invocations ?
- [done] 0 votes: Fallible allocation?
- hsivonen: stabilize
likely
/unlikely