## Summary [summary]: #summary Extend the existing `#[repr]` attribute on structs with a `packed = "N"` option to specify a custom packing for `struct` types. ## Motivation [motivation]: #motivation Many C/C++ compilers allow a packing to b...
## Summary [summary]: #summary Add a standard allocator interface and support for user-defined allocators, with the following goals: 1. Allow libraries (in libstd and elsewhere) to be generic with respect to the particular allocator, to sup...
## Summary [summary]: #summary Improve the target-specific dependency experience in Cargo by leveraging the same `#[cfg]` syntax that Rust has. ## Motivation [motivation]: #motivation Currently in Cargo it's [relatively painful][issue] to l...
## Summary [summary]: #summary Extend the existing `#[repr]` attribute on structs with an `align = "N"` option to specify a custom alignment for `struct` types. ## Motivation [motivation]: #motivation The alignment of a type is normally not...
## Summary [summary]: #summary Add two methods to the `std::os::unix::process::CommandExt` trait to provide more control over how processes are spawned on Unix, specifically: ```rust fn exec(&mut self) -> io::Error; fn before_exec<F>(&mut s...
## Summary [summary]: #summary [src/grammar]: https://github.com/rust-lang/rust/tree/master/src/grammar Grammar of the Rust language should not be rustc implementation-defined. We have a formal grammar at [src/grammar] which is to be used a...
## Summary [summary]: #summary Refine the unguarded-escape-hatch from [RFC 1238][] (nonparametric dropck) so that instead of a single attribute side-stepping *all* dropck constraints for a type's destructor, we instead have a more focused s...
## Summary Add "panic-safe" or "total" alternatives to the existing panicking indexing syntax. ## Motivation `SliceExt::get` and `SliceExt::get_mut` can be thought as non-panicking versions of the simple indexing syntax, `a[idx]`, and `Slic...
## Summary This RFC describes the Rust Language Server (RLS). This is a program designed to service IDEs and other tools. It offers a new access point to compilation and APIs for getting information about a program. The RLS can be thought o...
## Summary When a thread panics in Rust, the unwinding runtime currently prints a message to standard error containing the panic argument as well as the filename and line number corresponding to the location from which the panic originated....
## Summary Add some additional utility methods to OsString and OsStr. ## Motivation OsString and OsStr are extremely bare at the moment; some utilities would make them easier to work with. The given set of utilities is taken from String, an...
## Summary Define the general semantics of intrinsic functions. This does not define the semantics of the individual intrinsics, instead defines the semantics around intrinsic functions in general. ## Motivation Intrinsics are currently poo...
## Summary Promote the `libc` crate from the nursery into the `rust-lang` organization after applying changes such as: * Remove the internal organization of the crate in favor of just one flat namespace at the top of the crate. * Set up a l...
## Summary This RFC proposes several new types and associated APIs for working with times in Rust. The primary new types are `Instant`, for working with time that is guaranteed to be monotonic, and `SystemTime`, for working with times acros...
## Summary Improve Cargo's story around multi-crate single-repo project management by introducing the concept of workspaces. All packages in a workspace will share `Cargo.lock` and an output directory for artifacts. ## Motivation A common m...
## Summary This RFC proposes to allow library authors to use a `#[deprecated]` attribute, with optional `since = "`*version*`"` and `note = "`*free text*`"`fields. The compiler can then warn on deprecated items, while `rustdoc` can document...
## Summary Preventing overlapping implementations of a trait makes complete sense in the context of determining method dispatch. There must not be ambiguity in what code will actually be run for a given type. However, for marker traits, the...
## Summary Allow a re-export of a function as entry point `main`. ## Motivation Functions and re-exports of functions usually behave the same way, but they do not for the program entry point `main`. This RFC aims to fix this inconsistency....
## Summary Implement `.drain(range)` and `.drain()` respectively as appropriate on collections. ## Motivation The `drain` methods and their draining iterators serve to mass remove elements from a collection, receiving them by value in an it...
## Summary Taking a reference into a struct marked `repr(packed)` should become `unsafe`, because it can lead to undefined behaviour. `repr(packed)` structs need to be banned from storing `Drop` types for this reason. ## Motivation Issue [#...