Skip to content

Commit e766c46

Browse files
committed
Merge branch 'master' into escape-reason-docs
2 parents 96c52d4 + 314c28b commit e766c46

File tree

601 files changed

+19297
-10336
lines changed

Some content is hidden

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

601 files changed

+19297
-10336
lines changed

.travis.yml

+18-9
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ git:
88
depth: 1
99
submodules: false
1010

11+
osx_image: xcode8.2
12+
1113
matrix:
1214
include:
1315
# Linux builders, all docker images
@@ -27,28 +29,37 @@ matrix:
2729
# OSX builders
2830
- env: >
2931
RUST_CHECK_TARGET=check
30-
RUST_CONFIGURE_ARGS=--target=x86_64-apple-darwin
32+
RUST_CONFIGURE_ARGS=--build=x86_64-apple-darwin
3133
SRC=.
3234
os: osx
33-
install: brew install ccache
35+
install: &osx_install_sccache >
36+
curl -L https://api.pub.build.mozilla.org/tooltool/sha512/d0025b286468cc5ada83b23d3fafbc936b9f190eaa7d4a981715b18e8e3bf720a7bcee7bfe758cfdeb8268857f6098fd52dcdd8818232692a30ce91039936596 |
37+
tar xJf - -C /usr/local/bin --strip-components=1
3438
- env: >
3539
RUST_CHECK_TARGET=check
36-
RUST_CONFIGURE_ARGS=--target=i686-apple-darwin
40+
RUST_CONFIGURE_ARGS=--build=i686-apple-darwin
3741
SRC=.
3842
os: osx
39-
install: brew install ccache
43+
install: *osx_install_sccache
4044
- env: >
4145
RUST_CHECK_TARGET=check
42-
RUST_CONFIGURE_ARGS=--target=x86_64-apple-darwin --disable-rustbuild
46+
RUST_CONFIGURE_ARGS=--build=x86_64-apple-darwin --disable-rustbuild
4347
SRC=.
4448
os: osx
45-
install: brew install ccache
49+
install: *osx_install_sccache
4650
- env: >
4751
RUST_CHECK_TARGET=
4852
RUST_CONFIGURE_ARGS=--target=aarch64-apple-ios,armv7-apple-ios,armv7s-apple-ios,i386-apple-ios,x86_64-apple-ios
4953
SRC=.
5054
os: osx
51-
install: brew install ccache
55+
install: *osx_install_sccache
56+
57+
env:
58+
global:
59+
- SCCACHE_BUCKET=rust-lang-ci-sccache
60+
- AWS_ACCESS_KEY_ID=AKIAIMX7VLAS3PZAVLUQ
61+
# AWS_SECRET_ACCESS_KEY=...
62+
- secure: "Pixhh0hXDqGCdOyLtGFjli3J2AtDWIpyb2btIrLe956nCBDRutRoMm6rv5DI9sFZN07Mms7VzNNvhc9wCW1y63JAm414d2Co7Ob8kWMZlz9l9t7ACHuktUiis8yr+S4Quq1Vqd6pqi7pf2J++UxC8R/uLeqVrubzr6+X7AbmEFE="
5263

5364
script:
5465
- >
@@ -77,5 +88,3 @@ notifications:
7788
cache:
7889
directories:
7990
- $HOME/docker
80-
- $HOME/.ccache
81-
- $HOME/.cargo

CONTRIBUTING.md

+5-4
Original file line numberDiff line numberDiff line change
@@ -212,12 +212,13 @@ Some common invocations of `x.py` are:
212212
& everything builds in the correct manner.
213213
- `x.py test src/libstd --stage 1` - test the standard library without
214214
recompiling stage 2.
215-
- `x.py test src/test/run-pass --filter TESTNAME` - Run a matching set of tests.
215+
- `x.py test src/test/run-pass --test-args TESTNAME` - Run a matching set of
216+
tests.
216217
- `TESTNAME` should be a substring of the tests to match against e.g. it could
217218
be the fully qualified test name, or just a part of it.
218219
`TESTNAME=collections::hash::map::test_map::test_capacity_not_less_than_len`
219220
or `TESTNAME=test_capacity_not_less_than_len`.
220-
- `x.py test src/test/run-pass --stage 1 --filter <substring-of-test-name>` -
221+
- `x.py test src/test/run-pass --stage 1 --test-args <substring-of-test-name>` -
221222
Run a single rpass test with the stage1 compiler (this will be quicker than
222223
running the command above as we only build the stage1 compiler, not the entire
223224
thing). You can also leave off the directory argument to run all stage1 test
@@ -284,7 +285,7 @@ been approved. The PR then enters the [merge queue][merge-queue], where @bors
284285
will run all the tests on every platform we support. If it all works out,
285286
@bors will merge your code into `master` and close the pull request.
286287

287-
[merge-queue]: http://buildbot.rust-lang.org/homu/queue/rust
288+
[merge-queue]: https://buildbot.rust-lang.org/homu/queue/rust
288289

289290
Speaking of tests, Rust has a comprehensive test suite. More information about
290291
it can be found
@@ -403,4 +404,4 @@ are:
403404
[tlgba]: http://tomlee.co/2014/04/a-more-detailed-tour-of-the-rust-compiler/
404405
[ro]: http://www.rustaceans.org/
405406
[rctd]: ./COMPILER_TESTS.md
406-
[cheatsheet]: http://buildbot.rust-lang.org/homu/
407+
[cheatsheet]: https://buildbot.rust-lang.org/homu/

RELEASES.md

+219
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,222 @@
1+
Version 1.14.0 (2016-12-22)
2+
===========================
3+
4+
Language
5+
--------
6+
7+
* [`..` matches multiple tuple fields in enum variants, structs
8+
and tuples][36843]. [RFC 1492].
9+
* [Safe `fn` items can be coerced to `unsafe fn` pointers][37389]
10+
* [`use *` and `use ::*` both glob-import from the crate root][37367]
11+
* [It's now possible to call a `Vec<Box<Fn()>>` without explicit
12+
dereferencing][36822]
13+
14+
Compiler
15+
--------
16+
17+
* [Mark enums with non-zero discriminant as non-zero][37224]
18+
* [Lower-case `static mut` names are linted like other
19+
statics and consts][37162]
20+
* [Fix ICE on some macros in const integer positions
21+
(e.g. `[u8; m!()]`)][36819]
22+
* [Improve error message and snippet for "did you mean `x`"][36798]
23+
* [Add a panic-strategy field to the target specification][36794]
24+
* [Include LLVM version in `--version --verbose`][37200]
25+
26+
Compile-time Optimizations
27+
--------------------------
28+
29+
* [Improve macro expansion performance][37569]
30+
* [Shrink `Expr_::ExprInlineAsm`][37445]
31+
* [Replace all uses of SHA-256 with BLAKE2b][37439]
32+
* [Reduce the number of bytes hashed by `IchHasher`][37427]
33+
* [Avoid more allocations when compiling html5ever][37373]
34+
* [Use `SmallVector` in `CombineFields::instantiate`][37322]
35+
* [Avoid some allocations in the macro parser][37318]
36+
* [Use a faster deflate setting][37298]
37+
* [Add `ArrayVec` and `AccumulateVec` to reduce heap allocations
38+
during interning of slices][37270]
39+
* [Optimize `write_metadata`][37267]
40+
* [Don't process obligation forest cycles when stalled][37231]
41+
* [Avoid many `CrateConfig` clones][37161]
42+
* [Optimize `Substs::super_fold_with`][37108]
43+
* [Optimize `ObligationForest`'s `NodeState` handling][36993]
44+
* [Speed up `plug_leaks`][36917]
45+
46+
Libraries
47+
---------
48+
49+
* [`println!()`, with no arguments, prints newline][36825].
50+
Previously, an empty string was required to achieve the same.
51+
* [`Wrapping` impls standard binary and unary operators, as well as
52+
the `Sum` and `Product` iterators][37356]
53+
* [Implement `From<Cow<str>> for String` and `From<Cow<[T]>> for
54+
Vec<T>`][37326]
55+
* [Improve `fold` performance for `chain`, `cloned`, `map`, and
56+
`VecDeque` iterators][37315]
57+
* [Improve `SipHasher` performance on small values][37312]
58+
* [Add Iterator trait TrustedLen to enable better FromIterator /
59+
Extend][37306]
60+
* [Expand `.zip()` specialization to `.map()` and `.cloned()`][37230]
61+
* [`ReadDir` implements `Debug`][37221]
62+
* [Implement `RefUnwindSafe` for atomic types][37178]
63+
* [Specialize `Vec::extend` to `Vec::extend_from_slice`][37094]
64+
* [Avoid allocations in `Decoder::read_str`][37064]
65+
* [`io::Error` implements `From<io::ErrorKind>`][37037]
66+
* [Impl `Debug` for raw pointers to unsized data][36880]
67+
* [Don't reuse `HashMap` random seeds][37470]
68+
* [The internal memory layout of `HashMap` is more cache-friendly, for
69+
significant improvements in some operations][36692]
70+
* [`HashMap` uses less memory on 32-bit architectures][36595]
71+
* [Impl `Add<{str, Cow<str>}>` for `Cow<str>`][36430]
72+
73+
Cargo
74+
-----
75+
76+
* [Expose rustc cfg values to build scripts][cargo/3243]
77+
* [Allow cargo to work with read-only `CARGO_HOME`][cargo/3259]
78+
* [Fix passing --features when testing multiple packages][cargo/3280]
79+
* [Use a single profile set per workspace][cargo/3249]
80+
* [Load `replace` sections from lock files][cargo/3220]
81+
* [Ignore `panic` configuration for test/bench profiles][cargo/3175]
82+
83+
Tooling
84+
-------
85+
86+
* [rustup is the recommended Rust installation method][1.14rustup]
87+
* This release includes host (rustc) builds for Linux on MIPS, PowerPC, and
88+
S390x. These are [tier 2] platforms and may have major defects. Follow the
89+
instructions on the website to install, or add the targets to an existing
90+
installation with `rustup target add`. The new target triples are:
91+
- `mips-unknown-linux-gnu`
92+
- `mipsel-unknown-linux-gnu`
93+
- `mips64-unknown-linux-gnuabi64`
94+
- `mips64el-unknown-linux-gnuabi64 `
95+
- `powerpc-unknown-linux-gnu`
96+
- `powerpc64-unknown-linux-gnu`
97+
- `powerpc64le-unknown-linux-gnu`
98+
- `s390x-unknown-linux-gnu `
99+
* This release includes target (std) builds for ARM Linux running MUSL
100+
libc. These are [tier 2] platforms and may have major defects. Add the
101+
following triples to an existing rustup installation with `rustup target add`:
102+
- `arm-unknown-linux-musleabi`
103+
- `arm-unknown-linux-musleabihf`
104+
- `armv7-unknown-linux-musleabihf`
105+
* This release includes [experimental support for WebAssembly][1.14wasm], via
106+
the `wasm32-unknown-emscripten` target. This target is known to have major
107+
defects. Please test, report, and fix.
108+
* rustup no longer installs documentation by default. Run `rustup
109+
component add rust-docs` to install.
110+
* [Fix line stepping in debugger][37310]
111+
* [Enable line number debuginfo in releases][37280]
112+
113+
Misc
114+
----
115+
116+
* [Disable jemalloc on aarch64/powerpc/mips][37392]
117+
* [Add support for Fuchsia OS][37313]
118+
* [Detect local-rebuild by only MAJOR.MINOR version][37273]
119+
120+
Compatibility Notes
121+
-------------------
122+
123+
* [A number of forward-compatibility lints used by the compiler
124+
to gradually introduce language changes have been converted
125+
to deny by default][36894]:
126+
- ["use of inaccessible extern crate erroneously allowed"][36886]
127+
- ["type parameter default erroneously allowed in invalid location"][36887]
128+
- ["detects super or self keywords at the beginning of global path"][36888]
129+
- ["two overlapping inherent impls define an item with the same name
130+
were erroneously allowed"][36889]
131+
- ["floating-point constants cannot be used in patterns"][36890]
132+
- ["constants of struct or enum type can only be used in a pattern if
133+
the struct or enum has `#[derive(PartialEq, Eq)]`"][36891]
134+
- ["lifetimes or labels named `'_` were erroneously allowed"][36892]
135+
* [Prohibit patterns in trait methods without bodies][37378]
136+
* [The atomic `Ordering` enum may not be matched exhaustively][37351]
137+
* [Future-proofing `#[no_link]` breaks some obscure cases][37247]
138+
* [The `$crate` macro variable is accepted in fewer locations][37213]
139+
* [Impls specifying extra region requirements beyond the trait
140+
they implement are rejected][37167]
141+
* [Enums may not be unsized][37111]. Unsized enums are intended to
142+
work but never have. For now they are forbidden.
143+
* [Enforce the shadowing restrictions from RFC 1560 for today's macros][36767]
144+
145+
[tier 2]: https://forge.rust-lang.org/platform-support.html
146+
[1.14rustup]: https://internals.rust-lang.org/t/beta-testing-rustup-rs/3316/204
147+
[1.14wasm]: https://users.rust-lang.org/t/compiling-to-the-web-with-rust-and-emscripten/7627
148+
[36430]: https://github.com/rust-lang/rust/pull/36430
149+
[36595]: https://github.com/rust-lang/rust/pull/36595
150+
[36595]: https://github.com/rust-lang/rust/pull/36595
151+
[36692]: https://github.com/rust-lang/rust/pull/36692
152+
[36767]: https://github.com/rust-lang/rust/pull/36767
153+
[36794]: https://github.com/rust-lang/rust/pull/36794
154+
[36798]: https://github.com/rust-lang/rust/pull/36798
155+
[36819]: https://github.com/rust-lang/rust/pull/36819
156+
[36822]: https://github.com/rust-lang/rust/pull/36822
157+
[36825]: https://github.com/rust-lang/rust/pull/36825
158+
[36843]: https://github.com/rust-lang/rust/pull/36843
159+
[36880]: https://github.com/rust-lang/rust/pull/36880
160+
[36886]: https://github.com/rust-lang/rust/issues/36886
161+
[36887]: https://github.com/rust-lang/rust/issues/36887
162+
[36888]: https://github.com/rust-lang/rust/issues/36888
163+
[36889]: https://github.com/rust-lang/rust/issues/36889
164+
[36890]: https://github.com/rust-lang/rust/issues/36890
165+
[36891]: https://github.com/rust-lang/rust/issues/36891
166+
[36892]: https://github.com/rust-lang/rust/issues/36892
167+
[36894]: https://github.com/rust-lang/rust/pull/36894
168+
[36917]: https://github.com/rust-lang/rust/pull/36917
169+
[36993]: https://github.com/rust-lang/rust/pull/36993
170+
[37037]: https://github.com/rust-lang/rust/pull/37037
171+
[37064]: https://github.com/rust-lang/rust/pull/37064
172+
[37094]: https://github.com/rust-lang/rust/pull/37094
173+
[37108]: https://github.com/rust-lang/rust/pull/37108
174+
[37111]: https://github.com/rust-lang/rust/pull/37111
175+
[37161]: https://github.com/rust-lang/rust/pull/37161
176+
[37162]: https://github.com/rust-lang/rust/pull/37162
177+
[37167]: https://github.com/rust-lang/rust/pull/37167
178+
[37178]: https://github.com/rust-lang/rust/pull/37178
179+
[37200]: https://github.com/rust-lang/rust/pull/37200
180+
[37213]: https://github.com/rust-lang/rust/pull/37213
181+
[37221]: https://github.com/rust-lang/rust/pull/37221
182+
[37224]: https://github.com/rust-lang/rust/pull/37224
183+
[37230]: https://github.com/rust-lang/rust/pull/37230
184+
[37231]: https://github.com/rust-lang/rust/pull/37231
185+
[37247]: https://github.com/rust-lang/rust/pull/37247
186+
[37267]: https://github.com/rust-lang/rust/pull/37267
187+
[37270]: https://github.com/rust-lang/rust/pull/37270
188+
[37273]: https://github.com/rust-lang/rust/pull/37273
189+
[37280]: https://github.com/rust-lang/rust/pull/37280
190+
[37298]: https://github.com/rust-lang/rust/pull/37298
191+
[37306]: https://github.com/rust-lang/rust/pull/37306
192+
[37310]: https://github.com/rust-lang/rust/pull/37310
193+
[37312]: https://github.com/rust-lang/rust/pull/37312
194+
[37313]: https://github.com/rust-lang/rust/pull/37313
195+
[37315]: https://github.com/rust-lang/rust/pull/37315
196+
[37318]: https://github.com/rust-lang/rust/pull/37318
197+
[37322]: https://github.com/rust-lang/rust/pull/37322
198+
[37326]: https://github.com/rust-lang/rust/pull/37326
199+
[37351]: https://github.com/rust-lang/rust/pull/37351
200+
[37356]: https://github.com/rust-lang/rust/pull/37356
201+
[37367]: https://github.com/rust-lang/rust/pull/37367
202+
[37373]: https://github.com/rust-lang/rust/pull/37373
203+
[37378]: https://github.com/rust-lang/rust/pull/37378
204+
[37389]: https://github.com/rust-lang/rust/pull/37389
205+
[37392]: https://github.com/rust-lang/rust/pull/37392
206+
[37427]: https://github.com/rust-lang/rust/pull/37427
207+
[37439]: https://github.com/rust-lang/rust/pull/37439
208+
[37445]: https://github.com/rust-lang/rust/pull/37445
209+
[37470]: https://github.com/rust-lang/rust/pull/37470
210+
[37569]: https://github.com/rust-lang/rust/pull/37569
211+
[RFC 1492]: https://github.com/rust-lang/rfcs/blob/master/text/1492-dotdot-in-patterns.md
212+
[cargo/3175]: https://github.com/rust-lang/cargo/pull/3175
213+
[cargo/3220]: https://github.com/rust-lang/cargo/pull/3220
214+
[cargo/3243]: https://github.com/rust-lang/cargo/pull/3243
215+
[cargo/3249]: https://github.com/rust-lang/cargo/pull/3249
216+
[cargo/3259]: https://github.com/rust-lang/cargo/pull/3259
217+
[cargo/3280]: https://github.com/rust-lang/cargo/pull/3280
218+
219+
1220
Version 1.13.0 (2016-11-10)
2221
===========================
3222

appveyor.yml

+12
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
environment:
2+
SCCACHE_BUCKET: rust-lang-ci-sccache
3+
AWS_ACCESS_KEY_ID: AKIAIMX7VLAS3PZAVLUQ
4+
AWS_SECRET_ACCESS_KEY:
5+
secure: 1UkmbiDd15tWtYbMm5O2Uqm0b0Ur8v1MoSlydxl4ojcroPeerRMlUges0l57py8c
6+
SCCACHE_DIGEST: f808afabb4a4eb1d7112bcb3fa6be03b61e93412890c88e177c667eb37f46353d7ec294e559b16f9f4b5e894f2185fe7670a0df15fd064889ecbd80f0c34166c
27
matrix:
38
# 32/64 bit MSVC
49
- MSYS_BITS: 64
@@ -84,6 +89,13 @@ install:
8489
# Otherwise pull in the MinGW installed on appveyor
8590
- if NOT defined MINGW_URL set PATH=C:\msys64\mingw%MSYS_BITS%\bin;C:\msys64\usr\bin;%PATH%
8691

92+
# Download and install sccache
93+
- appveyor DownloadFile https://api.pub.build.mozilla.org/tooltool/sha512/%SCCACHE_DIGEST%
94+
- mv %SCCACHE_DIGEST% sccache.tar.bz2
95+
- 7z x -y sccache.tar.bz2 > nul
96+
- 7z x -y sccache.tar > nul
97+
- set PATH=%PATH%;%CD%\sccache2
98+
8799
test_script:
88100
- git submodule update --init
89101
- set SRC=.

configure

+29-4
Original file line numberDiff line numberDiff line change
@@ -621,6 +621,7 @@ opt llvm-assertions 0 "build LLVM with assertions"
621621
opt debug-assertions 0 "build with debugging assertions"
622622
opt fast-make 0 "use .gitmodules as timestamp for submodule deps"
623623
opt ccache 0 "invoke gcc/clang via ccache to reuse object files between builds"
624+
opt sccache 0 "invoke gcc/clang via sccache to reuse object files between builds"
624625
opt local-rust 0 "use an installed rustc rather than downloading a snapshot"
625626
opt local-rebuild 0 "assume local-rust matches the current version, for rebuilds; implies local-rust, and is implied if local-rust already matches the current version"
626627
opt llvm-static-stdcpp 0 "statically link to libstdc++ for LLVM"
@@ -916,6 +917,18 @@ case $CFG_BUILD in
916917
esac
917918
putvar CFG_LLDB_PYTHON
918919

920+
# Do some sanity checks if running on buildbot
921+
# (these env vars are set by rust-buildbot)
922+
if [ -n "$RUST_DIST_SERVER" -a -n "$ALLOW_NONZERO_RLIMIT_CORE" ]; then
923+
# Frequently the llvm submodule directory is broken by the build
924+
# being killed
925+
llvm_lock="${CFG_SRC_DIR}/.git/modules/src/llvm/index.lock"
926+
if [ -e "$llvm_lock" ]; then
927+
step_msg "removing $llvm_lock"
928+
rm -f "$llvm_lock"
929+
fi
930+
fi
931+
919932
step_msg "looking for target specific programs"
920933

921934
probe CFG_ADB adb
@@ -1677,11 +1690,23 @@ do
16771690
LLVM_CC_64_ARG1="gcc"
16781691
;;
16791692
("gcc")
1680-
LLVM_CXX_32="g++"
1681-
LLVM_CC_32="gcc"
1693+
if [ -z "$CFG_ENABLE_SCCACHE" ]; then
1694+
LLVM_CXX_32="g++"
1695+
LLVM_CC_32="gcc"
16821696

1683-
LLVM_CXX_64="g++"
1684-
LLVM_CC_64="gcc"
1697+
LLVM_CXX_64="g++"
1698+
LLVM_CC_64="gcc"
1699+
else
1700+
LLVM_CXX_32="sccache"
1701+
LLVM_CC_32="sccache"
1702+
LLVM_CXX_32_ARG1="g++"
1703+
LLVM_CC_32_ARG1="gcc"
1704+
1705+
LLVM_CXX_64="sccache"
1706+
LLVM_CC_64="sccache"
1707+
LLVM_CXX_64_ARG1="g++"
1708+
LLVM_CC_64_ARG1="gcc"
1709+
fi
16851710
;;
16861711

16871712
(*)

mk/cfg/x86_64-unknown-redox.mk

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# rustbuild-only target

0 commit comments

Comments
 (0)