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)