Subteam reports 2016-03-25


#1

Lang

Full report

We promoted some exciting RFCs to FCP this week:

  • RFC #1398: Custom allocator traits. These are traits intended to eventually be used to customize e.g. what allocator a Vec uses. (In collaboration with libs team.)
  • RFC #1513: Stabilize implementing panics as aborts. This RFC adds various options to allow the “end crate” (e.g., the application) to specify that panics ought to be compiled as aborts, rather than initiating unwinding. This is useful for applications that would prefer to crash the process, since supporting unwinding causes more code generation and can inhibit some optimizations.
    • The end-user model we are aiming towards with this RFC is that panics mean “abort and let somebody else handle it” – in the case of unwinding, that “somebody else” may be another thread, but in the case of aborting, that “somebody else” is another process.

–nmatsakis

Libs

Full report

Several RFCs enter their final comment period this week:

  • FCP PR #1398: Allocators, take III
    • Proposes a comprehensive API for describing and using allocators, with the intent that types like Vec and HashMap can ultimately support custom allocators.
  • FCP PR #1529: rfc 1291: Add libutil to scope of libc crate on Linux
  • FCP PR #1552: Add a contains method to VecDeque and LinkedList

As usual, we covered several PRs that needed team decisions:

We did some maintenance on the nursery:

  • Making progress on rustc-serialize without breakage
  • We need to consolidate the time libraries in the ecosystem, and in particular make the external time libraries compatible with the new std::time types. Ideally, this would happen by deprecating the time crate in favor of chrono, and making chrono more std-compatible. The libs team is working with the relevant authors to make progress here.
  • Dealing with libc/std::os::raw types and their interaction.
    • Not fully resolved – ongoing discussion is here.

Tools

Full report

  • Now that rustbuild can bootstrap new hosts for the compiler, there are now nightly compilers for five new platforms, with Cargo following quite soon! These artifacts are all lightly tested, however, and some broader testing would be much appreciated!

    If you’ve got a new host target you’d like to see builds of rustc and Cargo for, ping acrichto on IRC (or @alexcrichton on GitHub) and we’ll try to get it set up!

  • The built-in test runner now has a flag to have quieter output when running tests (one dot per test instead of one line)

  • A new test suite has been added to the compiler which should help detect regression on a broader range of the ecosystem when landing any change to rust-lang/rust

  • A number of instances of seemingly infinite recursion in Cargo have been solved through a more optimized traversal of the dependency space when resolving dependencies.

  • Cargo’s style for printing errors has changed to be much more readable.

  • Cargo will now read the RUSTFLAGS environment variable to pass flags to the compiler for all crates as part of a compilation.

  • Cargo should now correctly handle concurrent invocations and ensure that global state is not corrupted and builds complete.

  • The multirust-rs project has now grown the initial rustup implementation which will soon be deployed!

See the table of new builds here!