Skip to content

Commit 655effe

Browse files
committed
Merge branch 'master' of https://github.com/rust-lang/rust
Conflicts: src/libcoretest/lib.rs
2 parents 4e2822c + ac968c4 commit 655effe

File tree

1,501 files changed

+41435
-33765
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,501 files changed

+41435
-33765
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ build.
8989
$ pacman -S git \
9090
make \
9191
diffutils \
92+
tar \
9293
mingw-w64-x86_64-python2 \
9394
mingw-w64-x86_64-cmake \
9495
mingw-w64-x86_64-gcc

RELEASES.md

+257-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,259 @@
1+
Version 1.12.0 (2016-09-29)
2+
===========================
3+
4+
Highlights
5+
----------
6+
7+
* [`rustc` translates code to LLVM IR via its own "middle" IR (MIR)]
8+
(https://github.com/rust-lang/rust/pull/34096).
9+
This translation pass is far simpler than the previous AST->LLVM pass, and
10+
creates opportunities to perform new optimizations directly on the MIR. It
11+
was previously described [on the Rust blog]
12+
(https://blog.rust-lang.org/2016/04/19/MIR.html).
13+
* [`rustc` presents a new, more readable error format, along with
14+
machine-readable JSON error output for use by IDEs]
15+
(https://github.com/rust-lang/rust/pull/35401).
16+
Most common editors supporting Rust have been updated to work with it. It was
17+
previously described [on the Rust blog]
18+
(https://blog.rust-lang.org/2016/08/10/Shape-of-errors-to-come.html).
19+
20+
Compiler
21+
--------
22+
23+
* [`rustc` translates code to LLVM IR via its own "middle" IR (MIR)]
24+
(https://github.com/rust-lang/rust/pull/34096).
25+
This translation pass is far simpler than the previous AST->LLVM pass, and
26+
creates opportunities to perform new optimizations directly on the MIR. It
27+
was previously described [on the Rust blog]
28+
(https://blog.rust-lang.org/2016/04/19/MIR.html).
29+
* [Print the Rust target name, not the LLVM target name, with
30+
`--print target-list`]
31+
(https://github.com/rust-lang/rust/pull/35489)
32+
* [The computation of `TypeId` is correct in some cases where it was previously
33+
producing inconsistent results]
34+
(https://github.com/rust-lang/rust/pull/35267)
35+
* [The `mips-unknown-linux-gnu` target uses hardware floating point by default]
36+
(https://github.com/rust-lang/rust/pull/34910)
37+
* [The `rustc` arguments, `--print target-cpus`, `--print target-features`,
38+
`--print relocation-models`, and `--print code-models` print the available
39+
options to the `-C target-cpu`, `-C target-feature`, `-C relocation-model` and
40+
`-C code-model` code generation arguments]
41+
(https://github.com/rust-lang/rust/pull/34845)
42+
* [`rustc` supports three new MUSL targets on ARM: `arm-unknown-linux-musleabi`,
43+
`arm-unknown-linux-musleabihf`, and `armv7-unknown-linux-musleabihf`]
44+
(https://github.com/rust-lang/rust/pull/35060).
45+
These targets produce statically-linked binaries. There are no binary release
46+
builds yet though.
47+
48+
Diagnostics
49+
-----------
50+
51+
* [`rustc` presents a new, more readable error format, along with
52+
machine-readable JSON error output for use by IDEs]
53+
(https://github.com/rust-lang/rust/pull/35401).
54+
Most common editors supporting Rust have been updated to work with it. It was
55+
previously described [on the Rust blog]
56+
(https://blog.rust-lang.org/2016/08/10/Shape-of-errors-to-come.html).
57+
* [In error descriptions, references are now described in plain English,
58+
instead of as "&-ptr"]
59+
(https://github.com/rust-lang/rust/pull/35611)
60+
* [In error type descriptions, unknown numeric types are named `{integer}` or
61+
`{float}` instead of `_`]
62+
(https://github.com/rust-lang/rust/pull/35080)
63+
* [`rustc` emits a clearer error when inner attributes follow a doc comment]
64+
(https://github.com/rust-lang/rust/pull/34676)
65+
66+
Language
67+
--------
68+
69+
* [`macro_rules!` invocations can be made within `macro_rules!` invocations]
70+
(https://github.com/rust-lang/rust/pull/34925)
71+
* [`macro_rules!` meta-variables are hygienic]
72+
(https://github.com/rust-lang/rust/pull/35453)
73+
* [`macro_rules!` `tt` matchers can be reparsed correctly, making them much more
74+
useful]
75+
(https://github.com/rust-lang/rust/pull/34908)
76+
* [`macro_rules!` `stmt` matchers correctly consume the entire contents when
77+
inside non-braces invocations]
78+
(https://github.com/rust-lang/rust/pull/34886)
79+
* [Semicolons are properly required as statement delimeters inside
80+
`macro_rules!` invocations]
81+
(https://github.com/rust-lang/rust/pull/34660)
82+
* [`cfg_attr` works on `path` attributes]
83+
(https://github.com/rust-lang/rust/pull/34546)
84+
85+
Stabilized APIs
86+
---------------
87+
88+
* [`Cell::as_ptr`]
89+
(https://doc.rust-lang.org/std/cell/struct.Cell.html#method.as_ptr)
90+
* [`RefCell::as_ptr`]
91+
(https://doc.rust-lang.org/std/cell/struct.RefCell.html#method.as_ptr)
92+
* [`IpAddr::is_unspecified`]
93+
(https://doc.rust-lang.org/std/net/enum.IpAddr.html#method.is_unspecified)
94+
* [`IpAddr::is_loopback`]
95+
(https://doc.rust-lang.org/std/net/enum.IpAddr.html#method.is_loopback)
96+
* [`IpAddr::is_multicast`]
97+
(https://doc.rust-lang.org/std/net/enum.IpAddr.html#method.is_multicast)
98+
* [`Ipv4Addr::is_unspecified`]
99+
(https://doc.rust-lang.org/std/net/struct.Ipv4Addr.html#method.is_unspecified)
100+
* [`Ipv6Addr::octets`]
101+
(https://doc.rust-lang.org/std/net/struct.Ipv6Addr.html#method.octets)
102+
* [`LinkedList::contains`]
103+
(https://doc.rust-lang.org/std/collections/linked_list/struct.LinkedList.html#method.contains)
104+
* [`VecDeque::contains`]
105+
(https://doc.rust-lang.org/std/collections/vec_deque/struct.VecDeque.html#method.contains)
106+
* [`ExitStatusExt::from_raw`]
107+
(https://doc.rust-lang.org/std/os/unix/process/trait.ExitStatusExt.html#tymethod.from_raw).
108+
Both on Unix and Windows.
109+
* [`Receiver::recv_timeout`]
110+
(https://doc.rust-lang.org/std/sync/mpsc/struct.Receiver.html#method.recv_timeout)
111+
* [`RecvTimeoutError`]
112+
(https://doc.rust-lang.org/std/sync/mpsc/enum.RecvTimeoutError.html)
113+
* [`BinaryHeap::peek_mut`]
114+
(https://doc.rust-lang.org/std/collections/binary_heap/struct.BinaryHeap.html#method.peek_mut)
115+
* [`PeekMut`]
116+
(https://doc.rust-lang.org/std/collections/binary_heap/struct.PeekMut.html)
117+
* [`iter::Product`]
118+
(https://doc.rust-lang.org/std/iter/trait.Product.html)
119+
* [`iter::Sum`]
120+
(https://doc.rust-lang.org/std/iter/trait.Sum.html)
121+
* [`OccupiedEntry::remove_entry`]
122+
(https://doc.rust-lang.org/std/collections/btree_map/struct.OccupiedEntry.html#method.remove_entry)
123+
* [`VacantEntry::into_key`]
124+
(https://doc.rust-lang.org/std/collections/btree_map/struct.VacantEntry.html#method.into_key)
125+
126+
Libraries
127+
---------
128+
129+
* [The `format!` macro and friends now allow a single argument to be formatted
130+
in multiple styles]
131+
(https://github.com/rust-lang/rust/pull/33642)
132+
* [The lifetime bounds on `[T]::binary_search_by` and
133+
`[T]::binary_search_by_key` have been adjusted to be more flexible]
134+
(https://github.com/rust-lang/rust/pull/34762)
135+
* [`Option` implements `From` for its contained type]
136+
(https://github.com/rust-lang/rust/pull/34828)
137+
* [`Cell`, `RefCell` and `UnsafeCell` implement `From` for their contained type]
138+
(https://github.com/rust-lang/rust/pull/35392)
139+
* [`RwLock` panics if the reader count overflows]
140+
(https://github.com/rust-lang/rust/pull/35378)
141+
* [`vec_deque::Drain`, `hash_map::Drain` and `hash_set::Drain` are covariant]
142+
(https://github.com/rust-lang/rust/pull/35354)
143+
* [`vec::Drain` and `binary_heap::Drain` are covariant]
144+
(https://github.com/rust-lang/rust/pull/34951)
145+
* [`Cow<str>` implements `FromIterator` for `char`, `&str` and `String`]
146+
(https://github.com/rust-lang/rust/pull/35064)
147+
* [Sockets on Linux are correctly closed in subprocesses via `SOCK_CLOEXEC`]
148+
(https://github.com/rust-lang/rust/pull/34946)
149+
* [`hash_map::Entry`, `hash_map::VacantEntry` and `hash_map::OccupiedEntry`
150+
implement `Debug`]
151+
(https://github.com/rust-lang/rust/pull/34937)
152+
* [`btree_map::Entry`, `btree_map::VacantEntry` and `btree_map::OccupiedEntry`
153+
implement `Debug`]
154+
(https://github.com/rust-lang/rust/pull/34885)
155+
* [`String` implements `AddAssign`]
156+
(https://github.com/rust-lang/rust/pull/34890)
157+
* [Variadic `extern fn` pointers implement the `Clone`, `PartialEq`, `Eq`,
158+
`PartialOrd`, `Ord`, `Hash`, `fmt::Pointer`, and `fmt::Debug` traits]
159+
(https://github.com/rust-lang/rust/pull/34879)
160+
* [`FileType` implements `Debug`]
161+
(https://github.com/rust-lang/rust/pull/34757)
162+
* [References to `Mutex` and `RwLock` are unwind-safe]
163+
(https://github.com/rust-lang/rust/pull/34756)
164+
* [`mpsc::sync_channel` `Receiver`s return any available message before
165+
reporting a disconnect]
166+
(https://github.com/rust-lang/rust/pull/34731)
167+
* [Unicode definitions have been updated to 9.0]
168+
(https://github.com/rust-lang/rust/pull/34599)
169+
* [`env` iterators implement `DoubleEndedIterator`]
170+
(https://github.com/rust-lang/rust/pull/33312)
171+
172+
Cargo
173+
-----
174+
175+
* [Support local mirrors of registries]
176+
(https://github.com/rust-lang/cargo/pull/2857)
177+
* [Add support for command aliases]
178+
(https://github.com/rust-lang/cargo/pull/2679)
179+
* [Allow `opt-level="s"` / `opt-level="z"` in profile overrides]
180+
(https://github.com/rust-lang/cargo/pull/3007)
181+
* [Make `cargo doc --open --target` work as expected]
182+
(https://github.com/rust-lang/cargo/pull/2988)
183+
* [Speed up noop registry updates]
184+
(https://github.com/rust-lang/cargo/pull/2974)
185+
* [Update OpenSSL]
186+
(https://github.com/rust-lang/cargo/pull/2971)
187+
* [Fix `--panic=abort` with plugins]
188+
(https://github.com/rust-lang/cargo/pull/2954)
189+
* [Always pass `-C metadata` to the compiler]
190+
(https://github.com/rust-lang/cargo/pull/2946)
191+
* [Fix depending on git repos with workspaces]
192+
(https://github.com/rust-lang/cargo/pull/2938)
193+
* [Add a `--lib` flag to `cargo new`]
194+
(https://github.com/rust-lang/cargo/pull/2921)
195+
* [Add `http.cainfo` for custom certs]
196+
(https://github.com/rust-lang/cargo/pull/2917)
197+
* [Indicate the compilation profile after compiling]
198+
(https://github.com/rust-lang/cargo/pull/2909)
199+
* [Allow enabling features for dependencies with `--features`]
200+
(https://github.com/rust-lang/cargo/pull/2876)
201+
* [Add `--jobs` flag to `cargo package`]
202+
(https://github.com/rust-lang/cargo/pull/2867)
203+
* [Add `--dry-run` to `cargo publish`]
204+
(https://github.com/rust-lang/cargo/pull/2849)
205+
* [Add support for `RUSTDOCFLAGS`]
206+
(https://github.com/rust-lang/cargo/pull/2794)
207+
208+
Performance
209+
-----------
210+
211+
* [`panic::catch_unwind` is more optimized]
212+
(https://github.com/rust-lang/rust/pull/35444)
213+
* [`panic::catch_unwind` no longer accesses thread-local storage on entry]
214+
(https://github.com/rust-lang/rust/pull/34866)
215+
216+
Tooling
217+
-------
218+
219+
* [Test binaries now support a `--test-threads` argument to specify the number
220+
of threads used to run tests, and which acts the same as the
221+
`RUST_TEST_THREADS` environment variable]
222+
(https://github.com/rust-lang/rust/pull/35414)
223+
* [The test runner now emits a warning when tests run over 60 seconds]
224+
(https://github.com/rust-lang/rust/pull/35405)
225+
* [rustdoc: Fix methods in search results]
226+
(https://github.com/rust-lang/rust/pull/34752)
227+
* [`rust-lldb` warns about unsupported versions of LLDB]
228+
(https://github.com/rust-lang/rust/pull/34646)
229+
* [Rust releases now come with source packages that can be installed by rustup
230+
via `rustup component add rust-src`]
231+
(https://github.com/rust-lang/rust/pull/34366).
232+
The resulting source code can be used by tools and IDES, located in the
233+
sysroot under `lib/rustlib/src`.
234+
235+
Misc
236+
----
237+
238+
* [The compiler can now be built against LLVM 3.9]
239+
(https://github.com/rust-lang/rust/pull/35594)
240+
* Many minor improvements to the documentation.
241+
* [The Rust exception handling "personality" routine is now written in Rust]
242+
(https://github.com/rust-lang/rust/pull/34832)
243+
244+
Compatibility Notes
245+
-------------------
246+
247+
* [When printing Windows `OsStr`s, unpaired surrogate codepoints are escaped
248+
with the lowercase format instead of the uppercase]
249+
(https://github.com/rust-lang/rust/pull/35084)
250+
* [When formatting strings, if "precision" is specified, the "fill",
251+
"align" and "width" specifiers are no longer ignored]
252+
(https://github.com/rust-lang/rust/pull/34544)
253+
* [The `Debug` impl for strings no longer escapes all non-ASCII characters]
254+
(https://github.com/rust-lang/rust/pull/34485)
255+
256+
1257
Version 1.11.0 (2016-08-18)
2258
===========================
3259

@@ -629,7 +885,7 @@ Cargo
629885
Performance
630886
-----------
631887

632-
* [The time complexity of comparing variables for equivalence during type
888+
* [The time complexity of comparing variables for equivalence during type
633889
unification is reduced from _O_(_n_!) to _O_(_n_)][1.9tu]. This leads
634890
to major compilation time improvement in some scenarios.
635891
* [`ToString` is specialized for `str`, giving it the same performance

appveyor.yml

+110
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
environment:
2+
matrix:
3+
# 32/64 bit MSVC
4+
- MSYS_BITS: 64
5+
TARGET: x86_64-pc-windows-msvc
6+
CHECK: check
7+
CONFIGURE_ARGS: --enable-llvm-assertions --enable-debug-assertions
8+
- MSYS_BITS: 32
9+
TARGET: i686-pc-windows-msvc
10+
CHECK: check
11+
CONFIGURE_ARGS: --enable-llvm-assertions --enable-debug-assertions
12+
13+
# MSVC rustbuild
14+
- MSYS_BITS: 64
15+
CONFIGURE_ARGS: --enable-rustbuild --enable-llvm-assertions --enable-debug-assertions
16+
TARGET: x86_64-pc-windows-msvc
17+
CHECK: check
18+
19+
# MSVC cargotest
20+
- MSYS_BITS: 64
21+
CONFIGURE_ARGS: --enable-rustbuild --enable-llvm-assertions --enable-debug-assertions
22+
TARGET: x86_64-pc-windows-msvc
23+
CHECK: check-cargotest
24+
25+
# 32/64-bit MinGW builds.
26+
#
27+
# The MinGW builds unfortunately have to both download a custom toolchain and
28+
# avoid the one installed by AppVeyor by default. Interestingly, though, for
29+
# different reasons!
30+
#
31+
# For 32-bit the installed gcc toolchain on AppVeyor uses the pthread
32+
# threading model. This is unfortunately not what we want, and if we compile
33+
# with it then there's lots of link errors in the standard library (undefined
34+
# references to pthread symbols).
35+
#
36+
# For 64-bit the installed gcc toolchain is currently 5.3.0 which
37+
# unfortunately segfaults on Windows with --enable-llvm-assertions (segfaults
38+
# in LLVM). See rust-lang/rust#28445 for more information, but to work around
39+
# this we go back in time to 4.9.2 specifically.
40+
#
41+
# Finally, note that the downloads below are all in the `rust-lang-ci` S3
42+
# bucket, but they cleraly didn't originate there! The downloads originally
43+
# came from the mingw-w64 SourceForge download site. Unfortunately
44+
# SourceForge is notoriously flaky, so we mirror it on our own infrastructure.
45+
#
46+
# And as a final point of note, the 32-bit MinGW build using the makefiles do
47+
# *not* use debug assertions and llvm assertions. This is because they take
48+
# too long on appveyor and this is tested by rustbuild below.
49+
- MSYS_BITS: 32
50+
TARGET: i686-pc-windows-gnu
51+
CHECK: check
52+
MINGW_URL: https://s3.amazonaws.com/rust-lang-ci
53+
MINGW_ARCHIVE: i686-4.9.2-release-win32-dwarf-rt_v4-rev4.7z
54+
MINGW_DIR: mingw32
55+
56+
- MSYS_BITS: 32
57+
CONFIGURE_ARGS: --enable-rustbuild --enable-llvm-assertions --enable-debug-assertions
58+
TARGET: i686-pc-windows-gnu
59+
CHECK: check
60+
MINGW_URL: https://s3.amazonaws.com/rust-lang-ci
61+
MINGW_ARCHIVE: i686-4.9.2-release-win32-dwarf-rt_v4-rev4.7z
62+
MINGW_DIR: mingw32
63+
64+
- MSYS_BITS: 64
65+
CONFIGURE_ARGS: --enable-llvm-assertions --enable-debug-assertions
66+
TARGET: x86_64-pc-windows-gnu
67+
CHECK: check
68+
MINGW_URL: https://s3.amazonaws.com/rust-lang-ci
69+
MINGW_ARCHIVE: x86_64-4.9.2-release-win32-seh-rt_v4-rev4.7z
70+
MINGW_DIR: mingw64
71+
72+
clone_depth: 1
73+
build: false
74+
75+
install:
76+
# If we need to download a custom MinGW, do so here and set the path
77+
# appropriately.
78+
#
79+
# Note that this *also* means that we're not using what is typically
80+
# /mingw32/bin/python2.7.exe, which is a "correct" python interpreter where
81+
# /usr/bin/python2.7.exe is not. To ensure we use the right interpreter we
82+
# move `C:\Python27` ahead in PATH and then also make sure the `python2.7.exe`
83+
# file exists in there (which it doesn't by default).
84+
- if defined MINGW_URL appveyor DownloadFile %MINGW_URL%/%MINGW_ARCHIVE%
85+
- if defined MINGW_URL 7z x -y %MINGW_ARCHIVE% > nul
86+
- if defined MINGW_URL set PATH=C:\Python27;%CD%\%MINGW_DIR%\bin;C:\msys64\usr\bin;%PATH%
87+
- if defined MINGW_URL copy C:\Python27\python.exe C:\Python27\python2.7.exe
88+
89+
# Otherwise pull in the MinGW installed on appveyor
90+
- if NOT defined MINGW_URL set PATH=C:\msys64\mingw%MSYS_BITS%\bin;C:\msys64\usr\bin;%PATH%
91+
92+
test_script:
93+
- sh ./configure
94+
%CONFIGURE_ARGS%
95+
--build=%TARGET%
96+
- bash -c "make -j$(nproc)"
97+
- bash -c "make %CHECK% -j$(nproc)"
98+
99+
cache:
100+
- build/%TARGET%/llvm -> src/rustllvm/llvm-auto-clean-trigger
101+
- "%TARGET%/llvm -> src/rustllvm/llvm-auto-clean-trigger"
102+
103+
branches:
104+
only:
105+
- auto
106+
107+
# init:
108+
# - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
109+
# on_finish:
110+
# - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))

0 commit comments

Comments
 (0)