Skip to content

Commit ae2a8a6

Browse files
Merge branch 'master' of https://github.com/rust-lang/rust
2 parents 0b4605f + 59ba55d commit ae2a8a6

File tree

171 files changed

+4544
-2563
lines changed

Some content is hidden

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

171 files changed

+4544
-2563
lines changed

Makefile.in

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -266,8 +266,3 @@ ifneq ($(strip $(findstring TAGS.emacs,$(MAKECMDGOALS)) \
266266
CFG_INFO := $(info cfg: including ctags rules)
267267
include $(CFG_SRC_DIR)mk/ctags.mk
268268
endif
269-
270-
# Find all of the .d files and include them to add information about
271-
# header file dependencies.
272-
ALL_DEP_FILES := $(ALL_OBJ_FILES:%.o=%.d)
273-
-include $(ALL_DEP_FILES)

RELEASES.md

Lines changed: 32 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ Language
1919

2020
* Several [restrictions have been added to trait coherence][coh] in
2121
order to make it easier for upstream authors to change traits
22-
without breaking downsteam code.
22+
without breaking downstream code.
2323
* Digits of binary and octal literals are [lexed more eagerly][lex] to
2424
improve error messages and macro behavior. For example, `0b1234` is
2525
now lexed as `0b1234` instead of two tokens, `0b1` and `234`.
26-
* Trait bounds [are always invariant][inv], eleminating the need for
26+
* Trait bounds [are always invariant][inv], eliminating the need for
2727
the `PhantomFn` and `MarkerTrait` lang items, which have been
2828
removed.
2929
* ["-" is no longer a valid character in crate names][cr], the `extern crate
@@ -162,17 +162,17 @@ Misc
162162

163163

164164
Version 1.0.0-alpha.2 (February 2015)
165-
-------------------------------------
165+
=====================================
166166

167167
* ~1300 changes, numerous bugfixes
168168

169169
* Highlights
170170

171171
* The various I/O modules were [overhauled][io-rfc] to reduce
172-
unncessary abstractions and provide better interoperation with
172+
unnecessary abstractions and provide better interoperation with
173173
the underlying platform. The old `io` module remains temporarily
174174
at `std::old_io`.
175-
* The standard library now [partipates in feature gating][feat],
175+
* The standard library now [participates in feature gating][feat],
176176
so use of unstable libraries now requires a `#![feature(...)]`
177177
attribute. The impact of this change is [described on the
178178
forum][feat-forum]. [RFC][feat-rfc].
@@ -260,8 +260,9 @@ Version 1.0.0-alpha.2 (February 2015)
260260
[ufcs-rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0132-ufcs.md
261261
[un]: https://github.com/rust-lang/rust/pull/22256
262262

263+
263264
Version 1.0.0-alpha (January 2015)
264-
----------------------------------
265+
==================================
265266

266267
* ~2400 changes, numerous bugfixes
267268

@@ -384,7 +385,7 @@ Version 1.0.0-alpha (January 2015)
384385
syscall when available.
385386
* The 'serialize' crate has been renamed 'rustc-serialize' and
386387
moved out of the distribution to Cargo. Although it is widely
387-
used now, it is expected to be superceded in the near future.
388+
used now, it is expected to be superseded in the near future.
388389
* The `Show` formatter, typically implemented with
389390
`#[derive(Show)]` is [now requested with the `{:?}`
390391
specifier][show] and is intended for use by all types, for uses
@@ -446,8 +447,9 @@ Version 1.0.0-alpha (January 2015)
446447
[trpl]: http://doc.rust-lang.org/book/index.html
447448
[rbe]: http://rustbyexample.com/
448449

450+
449451
Version 0.12.0 (October 2014)
450-
-----------------------------
452+
=============================
451453

452454
* ~1900 changes, numerous bugfixes
453455

@@ -568,8 +570,9 @@ Version 0.12.0 (October 2014)
568570
* Official Rust binaries on Linux are more compatible with older
569571
kernels and distributions, built on CentOS 5.10.
570572

573+
571574
Version 0.11.0 (July 2014)
572-
-------------------------
575+
==========================
573576

574577
* ~1700 changes, numerous bugfixes
575578

@@ -700,8 +703,9 @@ Version 0.11.0 (July 2014)
700703
* Error message related to non-exhaustive match expressions have been
701704
greatly improved.
702705

706+
703707
Version 0.10 (April 2014)
704-
-------------------------
708+
=========================
705709

706710
* ~1500 changes, numerous bugfixes
707711

@@ -866,8 +870,9 @@ Version 0.10 (April 2014)
866870
* search works across crates that have been rendered to the same output
867871
directory.
868872

873+
869874
Version 0.9 (January 2014)
870-
--------------------------
875+
==========================
871876

872877
* ~1800 changes, numerous bugfixes
873878

@@ -1031,8 +1036,9 @@ Version 0.9 (January 2014)
10311036
* `rustc` adds a `--dep-info` flag for communicating dependencies to
10321037
build tools.
10331038

1039+
10341040
Version 0.8 (September 2013)
1035-
--------------------------
1041+
============================
10361042

10371043
* ~2200 changes, numerous bugfixes
10381044

@@ -1186,8 +1192,9 @@ Version 0.8 (September 2013)
11861192
* A new documentation backend, rustdoc_ng, is available for use. It is
11871193
still invoked through the normal `rustdoc` command.
11881194

1195+
11891196
Version 0.7 (July 2013)
1190-
-----------------------
1197+
=======================
11911198

11921199
* ~2000 changes, numerous bugfixes
11931200

@@ -1302,8 +1309,9 @@ Version 0.7 (July 2013)
13021309
* Various improvements to rustdoc.
13031310
* Improvements to rustpkg (see the detailed release notes).
13041311

1312+
13051313
Version 0.6 (April 2013)
1306-
------------------------
1314+
========================
13071315

13081316
* ~2100 changes, numerous bugfixes
13091317

@@ -1404,8 +1412,9 @@ Version 0.6 (April 2013)
14041412
* Rust code may be embedded in foreign code under limited circumstances
14051413
* Inline assembler supported by new asm!() syntax extension.
14061414

1415+
14071416
Version 0.5 (December 2012)
1408-
---------------------------
1417+
===========================
14091418

14101419
* ~900 changes, numerous bugfixes
14111420

@@ -1460,8 +1469,9 @@ Version 0.5 (December 2012)
14601469
* Added a preliminary REPL, `rusti`
14611470
* License changed from MIT to dual MIT/APL2
14621471

1472+
14631473
Version 0.4 (October 2012)
1464-
--------------------------
1474+
==========================
14651475

14661476
* ~2000 changes, numerous bugfixes
14671477

@@ -1515,8 +1525,9 @@ Version 0.4 (October 2012)
15151525
Rust-based (visitor) code
15161526
* All hash functions and tables converted to secure, randomized SipHash
15171527

1528+
15181529
Version 0.3 (July 2012)
1519-
------------------------
1530+
========================
15201531

15211532
* ~1900 changes, numerous bugfixes
15221533

@@ -1573,8 +1584,9 @@ Version 0.3 (July 2012)
15731584
* Tool improvements
15741585
* Cargo automatically resolves dependencies
15751586

1587+
15761588
Version 0.2 (March 2012)
1577-
-------------------------
1589+
=========================
15781590

15791591
* >1500 changes, numerous bugfixes
15801592
@@ -1613,8 +1625,9 @@ Version 0.2 (March 2012)
16131625
* Merged per-platform std::{os*, fs*} to core::{libc, os}
16141626
* Extensive cleanup, regularization in libstd, libcore
16151627

1628+
16161629
Version 0.1 (January 20, 2012)
1617-
-------------------------------
1630+
===============================
16181631

16191632
* Most language features work, including:
16201633
* Unique pointers, unique closures, move semantics

configure

Lines changed: 100 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -610,7 +610,7 @@ CFG_TARGET=$(to_llvm_triple $CFG_TARGET)
610610
# there's no rpath. This is where the build system itself puts libraries;
611611
# --libdir is used to configure the installation directory.
612612
# FIXME: This needs to parameterized over target triples. Do it in platform.mk
613-
if [ "$CFG_OSTYPE" = "pc-windows-gnu" ]
613+
if [ "$CFG_OSTYPE" = "pc-windows-gnu" ] || [ "$CFG_OSTYPE" = "pc-windows-msvc" ]
614614
then
615615
CFG_LIBDIR_RELATIVE=bin
616616
else
@@ -628,7 +628,8 @@ esac
628628

629629
CFG_LIBDIR_RELATIVE=`echo ${CFG_LIBDIR} | cut -c$((${#CFG_PREFIX}+${CAT_INC}))-`
630630

631-
if [ "$CFG_OSTYPE" = "pc-windows-gnu" ] && [ "$CFG_LIBDIR_RELATIVE" != "bin" ]; then
631+
if ( [ "$CFG_OSTYPE" = "pc-windows-gnu" ] || [ "$CFG_OSTYPE" = "pc-windows-msvc" ] ) \
632+
&& [ "$CFG_LIBDIR_RELATIVE" != "bin" ]; then
632633
err "libdir on windows should be set to 'bin'"
633634
fi
634635

@@ -716,10 +717,10 @@ probe CFG_MD5 md5
716717
probe CFG_MD5SUM md5sum
717718
if [ -n "$CFG_MD5" ]
718719
then
719-
CFG_HASH_COMMAND="$CFG_MD5 -q | head -c 8"
720+
CFG_HASH_COMMAND="$CFG_MD5 -q | cut -c 1-8"
720721
elif [ -n "$CFG_MD5SUM" ]
721722
then
722-
CFG_HASH_COMMAND="$CFG_MD5SUM | head -c 8"
723+
CFG_HASH_COMMAND="$CFG_MD5SUM | cut -c 1-8"
723724
else
724725
err 'could not find one of: md5 md5sum'
725726
fi
@@ -817,7 +818,7 @@ then
817818
fi
818819

819820
BIN_SUF=
820-
if [ "$CFG_OSTYPE" = "pc-windows-gnu" ]
821+
if [ "$CFG_OSTYPE" = "pc-windows-gnu" ] || [ "$CFG_OSTYPE" = "pc-windows-msvc" ]
821822
then
822823
BIN_SUF=.exe
823824
fi
@@ -1097,6 +1098,65 @@ do
10971098
err "musl libc $CFG_MUSL_ROOT/lib/libc.a not found"
10981099
fi
10991100
;;
1101+
1102+
x86_64-*-msvc)
1103+
# Currently the build system is not configured to build jemalloc
1104+
# with MSVC, so we omit this optional dependency.
1105+
step_msg "targeting MSVC, disabling jemalloc"
1106+
CFG_DISABLE_JEMALLOC=1
1107+
putvar CFG_DISABLE_JEMALLOC
1108+
1109+
# There are some MSYS python builds which will auto-translate
1110+
# windows-style paths to MSYS-style paths in Python itself.
1111+
# Unfortunately this breaks LLVM's build system as somewhere along
1112+
# the line LLVM prints a path into a file from Python and then CMake
1113+
# later tries to interpret that path. If Python prints a MSYS path
1114+
# and CMake tries to use it as a Windows path, you're gonna have a
1115+
# Bad Time.
1116+
#
1117+
# Consequently here we try to detect when that happens and print an
1118+
# error if it does.
1119+
if $CFG_PYTHON -c 'import sys; print sys.argv[1]' `pwd` | grep '^/'
1120+
then
1121+
err "python is silently translating windows paths to MSYS paths \
1122+
and the build will fail if this python is used.\n\n \
1123+
Either an official python install must be used or an \
1124+
alternative python package in MinGW must be used."
1125+
fi
1126+
1127+
# MSVC requires cmake because that's how we're going to build LLVM
1128+
probe_need CFG_CMAKE cmake
1129+
1130+
# Use the REG program to figure out where VS is installed
1131+
# We need to figure out where cl.exe and link.exe are, so we do some
1132+
# munging and some probing here. We also look for the default
1133+
# INCLUDE and LIB variables for MSVC so we can set those in the
1134+
# build system as well.
1135+
install=$(reg QUERY \
1136+
'HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\12.0' \
1137+
-v InstallDir)
1138+
need_ok "couldn't find visual studio install root"
1139+
CFG_MSVC_ROOT=$(echo "$install" | grep InstallDir | sed 's/.*REG_SZ[ ]*//')
1140+
CFG_MSVC_ROOT=$(dirname "$CFG_MSVC_ROOT")
1141+
CFG_MSVC_ROOT=$(dirname "$CFG_MSVC_ROOT")
1142+
CFG_MSVC_CL="${CFG_MSVC_ROOT}/VC/bin/amd64/cl.exe"
1143+
CFG_MSVC_LIB="${CFG_MSVC_ROOT}/VC/bin/amd64/lib.exe"
1144+
CFG_MSVC_LINK="${CFG_MSVC_ROOT}/VC/bin/amd64/link.exe"
1145+
1146+
vcvarsall="${CFG_MSVC_ROOT}/VC/vcvarsall.bat"
1147+
CFG_MSVC_INCLUDE_PATH=$(cmd /c "\"$vcvarsall\" amd64 && cmd /c echo %INCLUDE%")
1148+
need_ok "failed to learn about MSVC's INCLUDE"
1149+
CFG_MSVC_LIB_PATH=$(cmd /c "\"$vcvarsall\" amd64 && cmd /c echo %LIB%")
1150+
need_ok "failed to learn about MSVC's LIB"
1151+
1152+
putvar CFG_MSVC_ROOT
1153+
putvar CFG_MSVC_CL
1154+
putvar CFG_MSVC_LIB
1155+
putvar CFG_MSVC_LINK
1156+
putvar CFG_MSVC_INCLUDE_PATH
1157+
putvar CFG_MSVC_LIB_PATH
1158+
;;
1159+
11001160
*)
11011161
;;
11021162
esac
@@ -1138,6 +1198,7 @@ do
11381198
do
11391199
make_dir $t/rt/stage$s
11401200
make_dir $t/rt/jemalloc
1201+
make_dir $t/rt/compiler-rt
11411202
for i in \
11421203
isaac sync test \
11431204
arch/i386 arch/x86_64 arch/arm arch/aarch64 arch/mips arch/powerpc
@@ -1301,7 +1362,39 @@ do
13011362
done
13021363
fi
13031364

1304-
if [ ${do_reconfigure} -ne 0 ]
1365+
use_cmake=0
1366+
case "$t" in
1367+
(*-msvc)
1368+
use_cmake=1
1369+
;;
1370+
esac
1371+
1372+
if [ ${do_reconfigure} -ne 0 ] && [ ${use_cmake} -ne 0 ]
1373+
then
1374+
msg "configuring LLVM for $t with cmake"
1375+
1376+
CMAKE_ARGS="-DLLVM_INCLUDE_TESTS=OFF"
1377+
if [ ! -z "$CFG_DISABLE_OPTIMIZE_LLVM" ]; then
1378+
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_BUILD_TYPE=Debug"
1379+
else
1380+
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release"
1381+
fi
1382+
if [ -z "$CFG_ENABLE_LLVM_ASSERTIONS" ]
1383+
then
1384+
CMAKE_ARGS="$CMAKE_ARGS -DLLVM_ENABLE_ASSERTIONS=OFF"
1385+
else
1386+
CMAKE_ARGS="$CMAKE_ARGS -DLLVM_ENABLE_ASSERTIONS=ON"
1387+
fi
1388+
1389+
msg "configuring LLVM with:"
1390+
msg "$CMAKE_ARGS"
1391+
(cd $LLVM_BUILD_DIR && "$CFG_CMAKE" $CFG_LLVM_SRC_DIR \
1392+
-G "Visual Studio 12 2013 Win64" \
1393+
$CMAKE_ARGS)
1394+
need_ok "LLVM cmake configure failed"
1395+
fi
1396+
1397+
if [ ${do_reconfigure} -ne 0 ] && [ ${use_cmake} -eq 0 ]
13051398
then
13061399
# LLVM's configure doesn't recognize the new Windows triples yet
13071400
gnu_t=$(to_gnu_triple $t)
@@ -1325,7 +1418,7 @@ do
13251418
# (llvm's configure tries to find pthread first, so we have to disable it explicitly.)
13261419
# Also note that pthreads works badly on mingw-w64 systems: #8996
13271420
case "$CFG_BUILD" in
1328-
(*-windows-*)
1421+
(*-windows-gnu)
13291422
LLVM_OPTS="$LLVM_OPTS --disable-pthreads"
13301423
;;
13311424
esac
@@ -1509,11 +1602,6 @@ do
15091602
putvar $CFG_LLVM_INST_DIR
15101603
done
15111604

1512-
# Munge any paths that appear in config.mk back to posix-y
1513-
cp config.tmp config.tmp.bak
1514-
sed -e 's@ \([a-zA-Z]\):[/\\]@ /\1/@g;' <config.tmp.bak >config.tmp
1515-
rm -f config.tmp.bak
1516-
15171605
msg
15181606
copy_if_changed ${CFG_SRC_DIR}Makefile.in ./Makefile
15191607
move_if_changed config.tmp config.mk

mk/cfg/aarch64-apple-ios.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ ifneq ($(findstring darwin,$(CFG_OSTYPE)),)
55
CFG_IOS_SDK_aarch64-apple-ios := $(shell xcrun --show-sdk-path -sdk iphoneos 2>/dev/null)
66
CFG_IOS_SDK_FLAGS_aarch64-apple-ios := -target aarch64-apple-darwin -isysroot $(CFG_IOS_SDK_aarch64-apple-ios) -mios-version-min=7.0 -arch arm64
77
CC_aarch64-apple-ios = $(shell xcrun -find -sdk iphoneos clang)
8+
LINK_aarch64-apple-ios = $(shell xcrun -find -sdk iphoneos clang)
89
CXX_aarch64-apple-ios = $(shell xcrun -find -sdk iphoneos clang++)
910
CPP_aarch64-apple-ios = $(shell xcrun -find -sdk iphoneos clang++)
1011
AR_aarch64-apple-ios = $(shell xcrun -find -sdk iphoneos ar)

mk/cfg/aarch64-linux-android.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# aarch64-linux-android configuration
22
# CROSS_PREFIX_aarch64-linux-android-
33
CC_aarch64-linux-android=$(CFG_ANDROID_CROSS_PATH)/bin/aarch64-linux-android-gcc
4+
LINK_aarch64-linux-android=$(CFG_ANDROID_CROSS_PATH)/bin/aarch64-linux-android-gcc
45
CXX_aarch64-linux-android=$(CFG_ANDROID_CROSS_PATH)/bin/aarch64-linux-android-g++
56
CPP_aarch64-linux-android=$(CFG_ANDROID_CROSS_PATH)/bin/aarch64-linux-android-gcc -E
67
AR_aarch64-linux-android=$(CFG_ANDROID_CROSS_PATH)/bin/aarch64-linux-android-ar

mk/cfg/aarch64-unknown-linux-gnu.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# aarch64-unknown-linux-gnu configuration
22
CROSS_PREFIX_aarch64-unknown-linux-gnu=aarch64-linux-gnu-
33
CC_aarch64-unknown-linux-gnu=gcc
4+
LINK_aarch64-unknown-linux-gnu=gcc
45
CXX_aarch64-unknown-linux-gnu=g++
56
CPP_aarch64-unknown-linux-gnu=gcc -E
67
AR_aarch64-unknown-linux-gnu=ar

0 commit comments

Comments
 (0)