github.com
## Summary Promote `!` to be a full-fledged type equivalent to an `enum` with no variants. ## Motivation To understand the motivation for this it's necessary to understand the concept of empty types. An empty type is a type with no inhabita...
RFC 1216
RFC
2015-07-19
~13 min read
github.com
## Summary Type system changes to address the outlives relation with respect to projections, and to better enforce that all types are well-formed (meaning that they respect their declared bounds). The current implementation can be both unso...
RFC 1214
RFC
2015-07-17
~34 min read
github.com
## Summary Introduce a "mid-level IR" (MIR) into the compiler. The MIR desugars most of Rust's surface representation, leaving a simpler form that is well-suited to type-checking and translation. ## Motivation The current compiler uses a si...
RFC 1211
RFC
2015-07-14
~27 min read
github.com
## Summary Add a new subcommand to Cargo, `install`, which will install `[[bin]]`-based packages onto the local system in a Cargo-specific directory. ## Motivation There has [almost always been a desire][cargo-37] to be able to install Carg...
RFC 1200
RFC
2015-07-10
~8 min read
github.com
## This RFC was previously approved, but later **withdrawn** In short this RFC was superseded by RFC 2972. For details see the [summary comment]. [summary comment]: https://github.com/rust-lang/rust/issues/32408#issuecomment-1016931986 ## S...
RFC 1201
RFC
2015-07-10
~5 min read
github.com
## Summary Change all functions dealing with reading "lines" to treat both '\n' and '\r\n' as a valid line-ending. ## Motivation The current behavior of these functions is to treat only '\n' as line-ending. This is surprising for programmer...
RFC 1212
RFC
2015-07-10
~2 min read
github.com
## Summary Add element-recovery methods to the set types in `std`. ## Motivation Sets are sometimes used as a cache keyed on a certain property of a type, but programs may need to access the type's other properties for efficiency or functio...
RFC 1194
RFC
2015-07-08
~2 min read
github.com
## Summary Allow a `x...y` expression to create an inclusive range. ## Motivation There are several use-cases for inclusive ranges, that semantically include both end-points. For example, iterating from `0_u8` up to and including some numbe...
RFC 1192
RFC
2015-07-07
~5 min read
github.com
## Summary Add a new flag to the compiler, `--cap-lints`, which set the maximum possible lint level for the entire crate (and cannot be overridden). Cargo will then pass `--cap-lints allow` to all upstream dependencies when compiling code....
RFC 1193
RFC
2015-07-07
~3 min read
github.com
## Summary Add a high-level intermediate representation (HIR) to the compiler. This is basically a new (and additional) AST more suited for use by the compiler. This is purely an implementation detail of the compiler. It has no effect on th...
RFC 1191
RFC
2015-07-06
~2 min read
github.com
## Summary Add support to the compiler to override the default allocator, allowing a different allocator to be used by default in Rust programs. Additionally, also switch the default allocator for dynamic libraries and static libraries to u...
RFC 1183
RFC
2015-06-27
~8 min read
github.com
## 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...
RFC 1184
RFC
2015-06-26
~5 min read
github.com
## 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...
RFC 1174
RFC
2015-06-24
~1 min read
github.com
## 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...
RFC 1210
RFC
2015-06-17
~58 min read
github.com
## 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...
RFC 1152
RFC
2015-06-06
~1 min read
github.com
## 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...
RFC 1156
RFC
2015-06-04
~8 min read
github.com
## 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...
RFC 1199
RFC
2015-06-02
~12 min read
github.com
## 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...
RFC 1135
RFC
2015-05-27
~1 min read
github.com
## 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...
RFC 2856
RFC
2015-05-21
~11 min read
github.com
## 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...
RFC 1131
RFC
2015-05-20
~2 min read