## Summary Tweak the `#![no_std]` attribute, add a new `#![no_core]` attribute, and pave the way for stabilizing the libcore library. ## Motivation Currently all stable Rust programs must link to the standard library (libstd), and it is imp...
## Summary Introduce and implement `IntoRaw{Fd, Socket, Handle}` traits to complement the existing `AsRaw{Fd, Socket, Handle}` traits already in the standard library. ## Motivation The `FromRaw{Fd, Socket, Handle}` traits each take ownershi...
## Summary This RFC proposes a design for *specialization*, which permits multiple `impl` blocks to apply to the same type/trait, so long as one of the blocks is clearly "more specific" than the other. The more specific `impl` block is used...
## Summary Add some methods that already exist on slices to strings. Specifically, the following methods should be added: - `str::into_string` - `String::into_boxed_str` ## Motivation Conceptually, strings and slices are similar types. Many...
## Summary Adjust the object default bound algorithm for cases like `&'x Box<Trait>` and `&'x Arc<Trait>`. The existing algorithm would default to `&'x Box<Trait+'x>`. The proposed change is to default to `&'x Box<Trait+'static>`. Note: Thi...
## Summary Lay the ground work for building powerful SIMD functionality. ## Motivation SIMD (Single-Instruction Multiple-Data) is an important part of performant modern applications. Most CPUs used for that sort of task provide dedicated ha...
## Summary Allow equality, but not order, comparisons between fat raw pointers of the same type. ## Motivation Currently, fat raw pointers can't be compared via either PartialEq or PartialOrd (currently this causes an ICE). It seems to me t...
## Summary - Formalize project groups as groups dedicated to specific projects within the context of a Rust team. - Project groups are created via team consensus (such as an RFC) and have a "parent team(s)" - The groups then drive the proje...
## Summary Provide a pair of intrinsic functions for hinting the likelihood of branches being taken. ## Motivation Branch prediction can have significant effects on the running time of some code. Especially tight inner loops which may be ru...
## Summary Introduce the method `split_at(&self, mid: usize) -> (&str, &str)` on `str`, to divide a slice into two, just like we can with `[T]`. ## Motivation Adding `split_at` is a measure to provide a method from `[T]` in a version that m...
## Summary Add an `expect` method to the Result type, bounded to `E: Debug` ## Motivation While `Result::unwrap` exists, it does not allow annotating the panic message with the operation attempted (e.g. what file was being opened). This is...
## Summary This RFC has the goal of defining what sorts of breaking changes we will permit for the Rust language itself, and giving guidelines for how to go about making such changes. ## Motivation With the release of 1.0, we need to establ...
## Summary This RFC proposes a comprehensive set of guidelines for which changes to *stable* APIs are considered breaking from a semver perspective, and which are not. These guidelines are intended for both the standard library and for the...
## Summary Rename `.connect()` to `.join()` in `SliceConcatExt`. ## Motivation Rust has a string concatenation method named `.connect()` in `SliceConcatExt`. However, this does not align with the precedents in other languages. Most language...
## Summary Remove the `static_assert` feature. ## Motivation To recap, `static_assert` looks like this: ```rust #![feature(static_assert)] #[static_assert] static assertion: bool = true; ``` If `assertion` is `false` instead, this fails to...
## Summary Alter the signature of the `std::mem::forget` function to remove `unsafe`. Explicitly state that it is not considered unsafe behavior to not run destructors. ## Motivation It was [recently discovered][scoped-bug] by @arielb1 that...
## Summary Add the `Sync` bound to `io::Error` by requiring that any wrapped custom errors also conform to `Sync` in addition to `error::Error + Send`. ## Motivation Adding the `Sync` bound to `io::Error` has 3 primary benefits: * Values th...
## Summary Replace `slice.tail()`, `slice.init()` with new methods `slice.split_first()`, `slice.split_last()`. ## Motivation The `slice.tail()` and `slice.init()` methods are relics from an older version of the slice APIs that included a `...
## Summary Rename or replace `str::words` to side-step the ambiguity of “a word”. ## Motivation The [`str::words`](http://doc.rust-lang.org/std/primitive.str.html#method.words) method is currently marked `#[unstable(reason = "the precise al...
## Summary Deprecate `std::fs::soft_link` in favor of platform-specific versions: `std::os::unix::fs::symlink`, `std::os::windows::fs::symlink_file`, and `std::os::windows::fs::symlink_dir`. ## Motivation Windows Vista introduced the abilit...