Skip to content

San Francisco Oxidation

Nicholas Nethercote edited this page Jun 15, 2018 · 4 revisions


Basic goals of this meeting:

  • Status of ongoing work
  • Checking correctness of the wiki page
  • Light prioritization

Work in progress

  • 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)
    • 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)
  • 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
  • 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 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:
    • 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:
    • 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)
  • "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)
  • 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

Prioritization of remaining problems

(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:
  • [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:
  • 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?:
  • 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
Clone this wiki locally
You can’t perform that action at this time.