Lang
Due in part to missing team members, two RFCs that were already in FCP are staying in FCP for another week:
- FCP PR #1398: Allocators, take III
- FCP PR #1513: RFC: Stabilize implementing panics as aborts
In addition, we reached final decisions on two long-standing FCP RFCs:
- FCP PR #1321: Unstable visibility RFC
- FCP PR #1346: Unsafe expressions
We also brought a couple of new RFCs into final comment period, leaving us with the following list for the week:
- FCP PR #1319: Amend RFC1228 with operator fixity and precedence
-
FCP PR #1373:
Remove some kinds of doc comments
- Proposes deprecating
#[doc=""]
,#![doc=""]
,/** */
, and/*! */
.
- Proposes deprecating
-
FCP PR #1398:
Allocators, take III
- Proposes a comprehensive API for describing and using allocators, with the
intent that types like
Vec
andHashMap
can ultimately support custom allocators.
- Proposes a comprehensive API for describing and using allocators, with the
intent that types like
-
FCP PR #1444:
unions
- Proposes a C-like
union
keyword in Rust, useful for FFI as well as a few pure-Rust scenarios (like manually-dropped data).
- Proposes a C-like
- FCP PR #1494: Amend RFC 550 with misc. follow set corrections
-
FCP PR #1513:
RFC: 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.
Libs
We discussed several RFCs that were previously in FCP:
- FCP PR #1398: Allocators, take III
-
FCP PR #1529:
rfc 1291: Add libutil to scope of libc crate on Linux
- Merged, due to the relevant library being both ubiquitous and in particular provided in musl (a good indicator of standardization).
-
FCP PR #1552:
Add a contains method to VecDeque and LinkedList
- Merged.
In addition, two new RFCs enter final comment period (FCP):
- FCP PR #1505: Add a generic Atomic type
- FCP PR #1543: Add more integer atomic types
Both of these RFCs address the desire for additional atomic types, but through different routes; we will accept at most one of them.
We also discussed the
encode_utf8
situation; this
was a case where an API was stabilized within libcore by accident, but not
within libstd. We landed a breaking change to the API in both locations, and
moved back to proper unstable status in libcore. We consider the latter to be a
bug fix, but also did due diligence in terms of trying to gauge usage (and
taking into account that using the API purely through libcore is pretty niche in
the first place). This was a tough call, but we believe the right thing to do in
this particular case.
We reached a decision on how to accommodate u64
-sized division and
multiplication for Duration
without breakage; see
https://github.com/rust-lang/rust/pull/32515.
Finally, we are landing our first trial use of specialization within std
:
speeding up the to_string
method on string slices!