Create a gist now

Instantly share code, notes, and snippets.

@cmr /gist:d0e6d145af65e6d74713 Secret
Last active Aug 29, 2015

What would you like to do?
commit ade807c6dcf6dc4454732c5e914ca06ebb429773
Author: Alex Crichton <>
Date: Wed Jun 11 19:33:52 2014 -0700
rustc: Obsolete the `@` syntax entirely
This removes all remnants of `@` pointers from rustc. Additionally, this removes
the `GC` structure from the prelude as it seems odd exporting an experimental
type in the prelude by default.
Closes #14193
commit d7de4e9affac24c6e96ae068954480bfa763908c
Author: Cameron Zwarich <>
Date: Fri Jun 13 20:48:09 2014 -0700
Enforce stronger guarantees for mutable borrows
Implement the stronger guarantees for mutable borrows from #12624. This
removes the ability to read from a mutably borrowed path for the
duration of the borrow, and enforces a unique access path for any
mutable borrow, for both reads and writes.
This makes mutable borrows work better with concurrent accesses from
multiple threads, and it opens the door for allowing moves out of
mutably borrowed values, as long as a new value is written before the
mutable borrow ends. This also aligns Rust more closely with academic
languages based on substructural types and separation logic.
The most common situation triggering an error after this change is a
call to a function mutably borrowing self with self.field as one of the
arguments. The workaround is to bind self.field to a temporary, but the
need for these temporaries will hopefully go away after #6268 is fixed.
Another situation that triggers an error is using the head expression of
a match in an arm that binds a variable with a mutable reference. The
use of the head expression needs to be replaced with an expression that
reconstructs it from match-bound variables.
This fixes #12624.
commit 0642cbbde0e51d5f4465b937ab8ff7d46df02df0
Author: Huon Wilson <>
Date: Sat Jun 14 11:11:09 2014 +1000
getopts: format failure messages with `Show`.
This obsoletes the old `to_err_msg` method. Replace
println!("Error: {}", failure.to_err_msg())
let string = failure.to_err_msg();
println!("Error: {}", failure)
let string = failure.to_str();
commit c9f3f47702602d196de414aa4f10bb2c2148ab9a
Author: Patrick Walton <>
Date: Thu Jun 12 14:08:44 2014 -0700
librustc: Forbid `transmute` from being called on types whose size is
only known post-monomorphization, and report `transmute` errors before
the code is generated for that `transmute`.
This can break code that looked like:
unsafe fn f<T>(x: T) {
let y: int = transmute(x);
Change such code to take a type parameter that has the same size as the
type being transmuted to.
Closes #12898.
commit 9b9ef442337ee3b9a29449a0792ae2eeb0480d0c
Author: Patrick Walton <>
Date: Wed Jun 11 12:14:38 2014 -0700
libsyntax: Allow `+` to separate trait bounds from objects.
RFC #27.
After a snapshot, the old syntax will be removed.
This can break some code that looked like `foo as &Trait:Send`. Now you
will need to write `foo as (&Trait+Send)`.
Closes #12778.
commit 2ed473487323bb4e5a600a3318e0981981214210
Author: Patrick Walton <>
Date: Tue Jun 10 13:54:13 2014 -0700
librustc: Fix the issue with labels shadowing variable names by making
the leading quote part of the identifier for the purposes of hygiene.
This adopts @jbclements' solution to #14539.
I'm not sure if this is a breaking change or not.
Closes #12512.
commit 30772d94b1e86a09723af1f137149b45e8c12ed7
Author: Patrick Walton <>
Date: Fri Jun 13 11:14:04 2014 -0700
librustc: Forbid enum-to-float casts.
Closes #14794.
If you're casting from an enum to a float, cast through an integer
commit cac7a2053aba7be214d5e58e13867089638a8f50
Author: Alex Crichton <>
Date: Wed May 28 09:24:28 2014 -0700
std: Remove i18n/l10n from format!
* The select/plural methods from format strings are removed
* The # character no longer needs to be escaped
* The \-based escapes have been removed
* '{{' is now an escape for '{'
* '}}' is now an escape for '}'
Closes #14810
commit c23748c59ce0969bf9251f6d4bb1882ca0045a78
Author: Patrick Walton <>
Date: Tue Jun 10 14:39:10 2014 -0700
librustc: Forbid identifiers that shadow in the same pattern in let
bindings and function arguments.
Issue #14581.
To fix code that this breaks, give the pattern identifiers different names.
commit b1c9ce9c6f0eb7d4a7df1aad6b6799f4b548181c
Author: Alex Crichton <>
Date: Sat Jun 7 11:13:26 2014 -0700
sync: Move underneath libstd
This commit is the final step in the libstd facade, #13851. The purpose of this
commit is to move libsync underneath the standard library, behind the facade.
This will allow core primitives like channels, queues, and atomics to all live
in the same location.
There were a few notable changes and a few breaking changes as part of this
* The `Vec` and `String` types are reexported at the top level of libcollections
* The `unreachable!()` macro was copied to libcore
* The `std::rt::thread` module was moved to librustrt, but it is still
reexported at the same location.
* The `std::comm` module was moved to libsync
* The `sync::comm` module was moved under `sync::comm`, and renamed to `duplex`.
It is now a private module with types/functions being reexported under
`sync::comm`. This is a breaking change for any existing users of duplex
* All concurrent queues/deques were moved directly under libsync. They are also
all marked with #![experimental] for now if they are public.
* The `task_pool` and `future` modules no longer live in libsync, but rather
live under `std::sync`. They will forever live at this location, but they may
move to libsync if the `std::task` module moves as well.
commit 531ed3d599000de2517cba102c83fe44a1f1e252
Author: Alex Crichton <>
Date: Thu May 15 18:18:00 2014 -0700
rustc: Update how Gc<T> is recognized
This commit uses the same trick as ~/Box to map Gc<T> to @T internally inside
the compiler. This moves a number of implementations of traits to the `gc`
module in the standard library.
This removes functions such as `Gc::new`, `Gc::borrow`, and `Gc::ptr_eq` in
favor of the more modern equivalents, `box(GC)`, `Deref`, and pointer equality.
The Gc pointer itself should be much more useful now, and subsequent commits
will move the compiler away from @T towards Gc<T>
commit 1a381fa2d257908d0a4c984b1c0e26bdede620d8
Author: Patrick Walton <>
Date: Mon Jun 9 20:39:20 2014 -0700
librustc: Use *signed* extension when converting enums to floats.
Previously, constants used unsigned extension, while non-constants used
signed extension. This unifies both paths to use signed extension.
If this breaks your code, take a deep breath, go for a walk, and
consider why you're relying on the sign extension semantics of
enum-to-float casts.
Closes #8230.
commit d42cc130f9eaaa4b35944854c3ba34ae98d6361e
Author: Alex Crichton <>
Date: Mon Jun 2 14:51:58 2014 -0700
std: Remove the as_utf16_p functions
These functions are all much better expressed via RAII using the to_utf16()
method on strings. This refactoring also takes this opportunity to properly
handle when filenames aren't valid unicode when passed through to the windows
I/O layer by properly returning I/O errors.
All previous users of the `as_utf16_p` or `as_utf16_mut_p` functions will need
to convert their code to using `foo.to_utf16().append_one(0)` to get a
null-terminated utf16 string.
commit 6d15c6749c30d9077c6e12af3be64c5f68fafcff
Author: Keegan McAllister <>
Date: Sat May 24 16:16:10 2014 -0700
Implement #[plugin_registrar]
See RFC 22.
commit da0703973af921626d7235131d14847b1aacffc2
Author: Alex Crichton <>
Date: Fri Jun 6 16:33:44 2014 -0700
core: Move the collections traits to libcollections
This commit moves Mutable, Map, MutableMap, Set, and MutableSet from
`core::collections` to the `collections` crate at the top-level. Additionally,
this removes the `deque` module and moves the `Deque` trait to only being
available at the top-level of the collections crate.
All functionality continues to be reexported through `std::collections`.
commit 50942c7695783875bd2161596036a52755ffb09c
Author: Brian Anderson <>
Date: Mon May 19 11:32:09 2014 -0700
core: Rename `container` mod to `collections`. Closes #12543
Also renames the `Container` trait to `Collection`.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment