Subteam reports 2016-02-12


#1

Community

Full report

This week’s friend of the tree is Jeffrey Seyfried (@jseyfried)!

Jeffrey Seyfried (@jseyfried) has made some awesome contributions to name resolution. He has fixed a ton of bugs, reported previously unknown edge cases, and done some big refactorings, all of which have helped improve a complex and somewhat neglected part of the compiler.

Rust OSCON activity

There are 4 Rust-related talks accepted for OSCON this May, in Austin:

Compiler

Full report

No firm decisions were reached, but we discussed two topics of general interest:

  • RFCs #1477 and #1478, which discuss the intrinsics for doing atomic operations. At issue is what the behavior ought to be in the case of attempting to use the intrinsics with unsupported types – the current behavior is an LLVM abort, which seems suboptimal.
  • Whether or not to support MIR plugins. Preliminary support landed in a recent PR, but it’s unclear if we will ever want to support MIR plugins long-term (and it’s certainly too early to offer even the faintest of stability promises).

– nmatsakis

Lang

Full report

“If you choose not to decide, you still have made a choice.” – Rush

This week we decided to postpone two RFCs that have been lingering in final comment period for some time:

  • RFC #1129, which added a special overload for map[key] = value syntax. There were concerns about the implementation complexity and the general proliferation of ways to insert into maps, particularly if emplacement syntax becomes more mainstream. Hence we decided to postpone until we’ve had a chance to push harder on emplacement syntax.
  • RFC #1196, which allowed eliding type parameters and which filled in the results with _. Here the concerns were about the interaction with the inference fallbacks that were described in RFC 213 (but never fully implemented). The decision was to postpone the RFC in favor of a broader discussion that tries to capture the full set of constraints.

–nmatsakis

PS. Do not interpret that opening quote as suggesting any sort of endorsement of the band Rush, official or otherwise.

Libs

Full report

We had a busy week!

RFC decisions:

We are moving a large number of RFCs into final comment period:

  • FCP PR #1218: RFC: Checked integer conversions
    • This RFC has stalled to some degree, but covers important ground; please help us finalize the design!
  • FCP PR #1258: Add macros to get the values of configuration flags
  • FCP PR #1353: Add retain_mut to Vec and VecDeque
    • We’re close on this one, modulo bikeshedding on the final name.
  • FCP PR #1393: Expand try! macro with additional case
    • This RFC and the next both touch on the try! macro, and we likely want to postpone action here now that the ?/catch RFC has been merged.
  • FCP PR #1394: Add maybe! macro equivalent to try!
  • FCP PR #1419: Safe memcpy for slices ([T]::copy_from)
    • Some discussion about Copy vs Clone that could potentially change the situation for this RFC.
  • FCP PR #1443: Extend atomic compare_and_swap
  • FCP PR #1461: Move some net2 functionality into libstd
    • We’ve had no feedback here in a month – please take a look!
  • FCP PR #1467: Stabilize volatile read and write

We also reached a few decision on outstanding PRs and issues, as usual.

Tools

Full report

The past few weeks saw the merging of RFC 1361 which will improve the target-specific dependencies syntax in Cargo. Additionally, lots of effort has ramped up on the multirust-rs project in preparation for it taking over multirust.sh as well as rustup.sh.

Notable Rust PRs:

  • Support for MIPS MUSL has landed.
  • Backtrace support on MSVC has been improved.
  • Initial support for Illumos has landed.
  • Initial support for emscripten has landed, and ongoing PRs are happening to get more tests passing.
  • Rustdoc will now display since to show when APIs first became available.
  • The beginnings of a new build system based on Cargo have landed.
  • The compiler flag -C link-dead-code was added to aid in generating coverage information.

Notable Cargo PRs:

  • The default build target can now be set through build.target in .cargo/config.
  • The cargo metadata subcommand gained a --no-deps flag to eventually replace cargo read-manifest.
  • Cargo on Windows will now ensure that child processes (tests, rustc, etc) will die when Cargo dies (e.g. via ctrl-c)

#2

One thing that was missed in the lang team report: the let/else RFC is going into final comment period this week as well!