Subteam report: libs 2016-04-01
Highlights
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!
Dashboard
High priority issues
Issues needing a decision
RFC phase
- FCP PR #1398: Allocators, take III
- FCP PR #1505: Add a generic Atomic type
- FCP PR #1543: Add more integer atomic types
- PR #1218: RFC: Checked integer conversions
- PR #1309: OS string string-like interface
- PR #1325: Add panic-safe slicing methods
- PR #1353: Add retain_mut to Vec and VecDeque
- PR #1379: Change thread local variables to only accept async-signal-safe types.
- PR #1480: RFC proposal for thread affinity
- PR #1502: libstd::sys, the great libstd refactor
- PR #1521: Copy clone semantics
- PR #1533: Keyless Entry
- PR #1534: RFC: Saturating and checking integer wrapper types
- PR #1542: Add TryFrom and TryInto traits
- PR #1547: as_millis function on std::time::Duration
Implementation phase
- Issue #5016: implement "dynamic drop" semantics using flags on the stack rather than zeroing
- Issue #19986: Tracking issue for collections reform part 2 (RFC 509)
- Issue #32310: Tracking issue for {Vec,String}::splice
- Issue #32311: Tracking issue for Range*::contains
- Issue #32313: Tracking issue for Ipv6Addr octet methods
- Issue #32630: Tracking issue for {VecDeque,LinkedList}::contains
Stabilization phase
- FCP Issue #27719:
Tracking issue for
recoverstabilization - FCP Issue #27751:
Tracking issue for
rawstabilization - FCP Issue #27754:
Tracking issue for
str_charstabilization - FCP Issue #27780: Tracking issue for <*mut T, *const T>::{as_ref, as_mut_ref}
- FCP Issue #27784: Tracking issue for char encoding methods
- FCP Issue #27809: Tracking issue for make_ascii_{upper,lower}case
- FCP Issue #27811: Tracking issue for CommandExt::session_leader
- FCP Issue #27830: Tracking issue for UTF-16 decoding iterators
- FCP Issue #28050: Set recovery methods
- FCP Issue #29453: Add Capacity/length methods for OsString
- FCP Issue #29791: Tracking issue for getting pthread_t from JoinHandle
- FCP Issue #29935:
Tracking issue for
#[deprecated] - FCP Issue #30014: Tracking issue for OpenOptions expansion
- FCP Issue #30752: Tracking issue for panic::propagate
- FCP Issue #31262:
HashMapandHashSetshould provide a getter for their hashers - FCP Issue #31398: Tracking issue for CommandExt::{exec, before_exec}
- FCP Issue #31405: Tracking issue for file_try_clone
- FCP Issue #31572: Tracking issue for SocketAddr setters
- FCP Issue #31755: Tracking issue for <[T]>::copy_from_slice
- FCP Issue #31756: Tracking issue for ptr::{read,write}_volatile
- Issue #5016: implement "dynamic drop" semantics using flags on the stack rather than zeroing
- Issue #24263: discriminant_value intrinsic -- tracking issue for 639
- Issue #27389: Tracking issue for changing the global, default allocator (RFC 1183)
- Issue #27700: Tracking issue for allocation APIs
- Issue #27703: Tracking issue for stabilizing randomness
- Issue #27705: Tracking issue for DNS in std::net
- Issue #27708:
Tracking issue for
as_unsafe_cellstabilization - Issue #27709: Tracking issue for Ipv{4,6}Addr convenience methods
- Issue #27716:
Tracking issue for
thread_local_statestabilization - Issue #27717: Tracking issue for static synchronization primitives
- Issue #27720: Tracking issue for OpenOptionsExt on Windows
- Issue #27721: Tracking issue for string patterns
- Issue #27726: Tracking issue for access to Formatter flags/options
- Issue #27730:
Tracking issue for
NonZero/Unique/Sharedstabilization - Issue #27731: Tracking issue for SIMD support
- Issue #27732: Tracking issue for DST coercions (coerce_unsized, unsize) stabilization
- Issue #27733:
Tracking issue for
borrow_statestabilization - Issue #27739:
Tracking issue for
Zero/One/iter_arithstabilization - Issue #27741:
Tracking issue for
step_bystabilization - Issue #27745: Tracking issue for type_id stabilization
- Issue #27747:
Tracking issue for
slice_concat_extstabilization - Issue #27749:
Tracking issue for
Reflectstabilization - Issue #27752:
Tracking issue for
float_extrasstabilization - Issue #27778: Tracking issue for core::array
- Issue #27779: Tracking issue for placement new
- Issue #27783: Tracking issue for location of facade crates
- Issue #27787: Tracking issue for sorted collection ranges
- Issue #27788: Tracking issue for VecDeque Extras
- Issue #27791: Tracking issue for str escaping
- Issue #27794: Tracking issue for extra linked list methods
- Issue #27800: Tracking issue for channel selection
- Issue #27802: Tracking issue for Read::chars
- Issue #27812: Tracking issue for crates that are compiler dependencies
- Issue #28147: Tracking issue for BinaryHeap::{push_pop, replace}
- Issue #28237:
Tracking issue for
...inclusive ranges (RFC #1192) - Issue #28356: Tracking issue for Arc/Rc extras
- Issue #28796: Tracking issue for FnBox()
- Issue #29553: Tracking issue for #[bench] and benchmarking support
- Issue #29625:
Tracking issue for Fn traits (
unboxed_closuresfeature) - Issue #30172: Implement placement-in protocol for relevant data structures
- Issue #30425: No way to construct std::rc::Weak without a strong reference
- Issue #30449: Custom panic handlers in the standard library
- Issue #30877: Tracking issue for RangeArgument
- Issue #31190: Tracking issue for CStr::from_bytes_with_nul
- Issue #31399: Tracking issue for SystemTime accessors from fs::Metadata
- Issue #31767: Tracking issue for compare_exchange
- Issue #32110: Tracking issue for libcore prelude traits
- Issue #32111: Tracking issue for the Peekable::is_empty function
- Issue #32281: Add methods exposing keys of BTreeMap and HashMap entries
- Issue #32312: Tracking issue for Unix Sockets in the standard library