Alex Crichton [Wed, 2 Apr 2014 03:34:40 +0000 (20:34 -0700)]
rustc: Require that vector indices are uints
This commit tightens up the restriction on types used to index slices to require
exactly `uint` indices. Previously any integral type was accepted, but this
leads to a few subtle problems:
* 64-bit indices don't make much sense on 32-bit systems
* Signed indices for slices used as negative indexing isn't implemented
This was discussed at the recent work week, and also has some discussion on
issue #10453.
Huon Wilson [Thu, 27 Mar 2014 12:01:41 +0000 (23:01 +1100)]
rand: replace Rng.shuffle's functionality with .shuffle_mut.
Deprecates the `shuffle_mut` name in favour of `shuffle` too.
In future there will be many different types of owned
vectors/vector-likes (e.g. DST's ~[], Vec, SmallVec, Rope, ...), and so
privileging just `Vec` with the "functional" `shuffle` method is silly.
auto merge of #13243 : huonw/rust/cellshow, r=thestinger
std: fix Cell's Show instance.
Previously it was printing the address of the Unsafe contained in the
Cell (i.e. the address of the Cell itself). This is clearly useless, and
was presumably a mistake due to writing `*&` instead of `&*`.
However, this later expression is likely also incorrect, since it takes
a reference into a Cell while other user code is executing (i.e. the
Show instance for the contained type), hence the contents should just be
copied out.
auto merge of #13241 : stepancheg/rust/push-all, r=alexcrichton
* push_all* operations should reserve capacity before pushing data to avoid unnecessary reallocations
* reserve_exact should never shrink, as specified in documentation
The `Float` trait methods will be usable as functions via UFCS, and
we came to a consensus to remove duplicate functions like this a long
time ago.
It does still make sense to keep the duplicate functions when the trait
methods are static, unless the decision to leave out the in-scope trait
name resolution for static methods changes.
auto merge of #13115 : huonw/rust/rand-errors, r=alexcrichton
move errno -> IoError converter into std, bubble up OSRng errors
Also adds a general errno -> `~str` converter to `std::os`, and makes the failure messages for the things using `OSRng` (e.g. (transitively) the task-local RNG, meaning hashmap initialisation failures aren't such a black box).
Huon Wilson [Tue, 1 Apr 2014 12:58:31 +0000 (23:58 +1100)]
std: fix Cell's Show instance.
Previously it was printing the address of the Unsafe contained in the
Cell (i.e. the address of the Cell itself). This is clearly useless, and
was presumably a mistake due to writing `*&` instead of `&*`.
However, this later expression is likely also incorrect, since it takes
a reference into a Cell while other user code is executing (i.e. the
Show instance for the contained type), hence the contents should just be
copied out.
Daniel Micay [Tue, 1 Apr 2014 09:11:23 +0000 (05:11 -0400)]
remove the cmath module
This is an implementation detail of the `f32` and `f64` modules and it
should not be public. It renames many functions and leaves out any
provided by LLVM intrinsics, so it is not a sensible binding to the C
standard library's math library and will never be a stable target.
This also removes the abuse of link_name so that this can be switched to
using automatically generated definitions in the future. This also
removes the `scalbn` binding as it is equivalent to `ldexp` when
`FLT_RADIX` is 2, which must always be true for Rust.
Huon Wilson [Tue, 25 Mar 2014 05:13:11 +0000 (16:13 +1100)]
rand: bubble up IO messages futher.
The various ...Rng::new() methods can hit IO errors from the OSRng they use,
and it seems sensible to expose them at a higher level. Unfortunately, writing
e.g. `StdRng::new().unwrap()` gives a much poorer error message than if it
failed internally, but this is a problem with all `IoResult`s.
bors [Mon, 31 Mar 2014 22:51:33 +0000 (15:51 -0700)]
auto merge of #13184 : alexcrichton/rust/priv-fields, r=brson
This is an implementation of a portion of [RFC #4](https://github.com/rust-lang/rfcs/blob/master/active/0004-private-fields.md). This PR makes named struct fields private by default (as opposed to inherited by default).
The only real meaty change is the first commit to `rustc`, all other commits are just fallout of that change.
Summary of changes made:
* Named fields are private by default *everywhere*
* The `priv` keyword is now default-deny on named fields (done in a "lint" pass in privacy)
Changes yet to be done (before the RFC is closed)
* Change tuple structs to have private fields by default
* Remove `priv` enum variants
* Make `priv` a reserved keyword
Daniel Micay [Mon, 31 Mar 2014 11:00:26 +0000 (07:00 -0400)]
num: rm wrapping of `Float` methods as functions
The `Float` trait methods will be usable as functions via UFCS, and
we came to a consensus to remove duplicate functions like this a long
time ago.
It does still make sense to keep the duplicate functions when the trait
methods are static, unless the decision to leave out the in-scope trait
name resolution for static methods changes.
Alex Crichton [Thu, 27 Mar 2014 20:22:56 +0000 (13:22 -0700)]
rustc: Switch struct fields to private by default
This commit switches privacy's checking of fields to have *all* fields be
private by default. This does not yet change tuple structs, this only affects
structs with named fields. The fallout of this change will follow shortly.
bors [Mon, 31 Mar 2014 18:11:40 +0000 (11:11 -0700)]
auto merge of #13230 : Kroisse/rust/encodable-json, r=erickt
The implementation of `Encodable<E, S>` for `Json` doesn't need to assume `S` to be `IoError`, only the default encoders for `Json` are depend on it. So this can be parametrize to increase flexiblity. If not, types that implement `Encoder<E>` where `E` is not `IoError` can't be worked with `Json`.
Brian Anderson [Mon, 31 Mar 2014 07:05:41 +0000 (00:05 -0700)]
mk: Workaround distcheck failure on mac. #13224
Mac can't actually build our source tarballs because it's `tar`
command doesn't support the --exclude-vcs flag. This is just
a workaround to make our mac nightlies work (we get our source
tarballs from the linux bot).
bors [Mon, 31 Mar 2014 00:21:40 +0000 (17:21 -0700)]
auto merge of #13216 : alexcrichton/rust/fix-configure-for-travis, r=sfackler
The previous regex was a bit to strict, rejecting versions such as 3.4.1 which
is apparently the version which travis is currently installing, causing all
travis builds to fail.
Alex Crichton [Sun, 30 Mar 2014 20:54:57 +0000 (13:54 -0700)]
configure: Accept LLVM 3.4.X during configuration
The previous regex was a bit to strict, rejecting versions such as 3.4.1 which
is apparently the version which travis is currently installing, causing all
travis builds to fail.
bors [Sat, 29 Mar 2014 20:31:36 +0000 (13:31 -0700)]
auto merge of #13199 : klutzy/rust/msys2, r=cmr
MSYS2 supports `MINGW64` system for 64-bit environment. It sets
`MSYSTEM=MINGW64` environment variable, which changes output of
`uname -s` thus affects `configure` behavior.
This patch adds `MINGW64*` support for `configure`.
klutzy [Sat, 29 Mar 2014 19:34:26 +0000 (04:34 +0900)]
configure: Add MINGW64 OS type
MSYS2 supports `MINGW64` system for 64-bit environment. It sets
`MSYSTEM=MINGW64` environment variable, which changes output of
`uname -s` thus affects `configure` behavior.
This patch adds `MINGW64*` support for `configure`.
bors [Sat, 29 Mar 2014 18:41:37 +0000 (11:41 -0700)]
auto merge of #13183 : erickt/rust/remove-list, r=alexcrichton
`collections::list::List` was decided in a [team meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2014-03-25) that it was unnecessary, so this PR removes it. Additionally, it removes an old and redundant purity test and fixes some warnings.
bors [Sat, 29 Mar 2014 17:21:39 +0000 (10:21 -0700)]
auto merge of #13143 : gentlefolk/rust/issue-9227, r=michaelwoerister
Only supports crate level statics. No debug info is generated for function level statics. Closes #9227.
As discussed at the end of the comments for #9227, I took an initial stab at adding support for function level statics and decided it would be enough work to warrant being split into a separate issue.
See #13144 for the new issue describing the need to add support for function level static variables.
bors [Sat, 29 Mar 2014 08:41:42 +0000 (01:41 -0700)]
auto merge of #13185 : alexcrichton/rust/osx-pkg, r=brson
This performs a few touch-ups to the OSX installer:
* A rust logo is shown during installation
* The installation happens to /usr/local by default (instead of /)
* A new welcome screen is shown that's slightly more relevant
bors [Sat, 29 Mar 2014 06:01:43 +0000 (23:01 -0700)]
auto merge of #13168 : jankobler/rust/verify-grammar-02, r=brson
This fixes some problems with
make verify-grammar
llnextgen still reports a lot of errors
FYI: My build directory /my-test/build is different from the source directory /my-test/rust.
cd /my-test/build
/my-test/rust/configure --prefix=/my-test/bin
make
make install
make verify-grammar
bors [Sat, 29 Mar 2014 02:01:48 +0000 (19:01 -0700)]
auto merge of #13157 : pnkfelix/rust/fsk-iss13140, r=nikomatsakis
r? @nikomatsakis
Fix #13140
Includes two fixes, and a semi-thorough regression test.
(There is another set of tests that I linked from #5121, but those are sort of all over the place, while the ones I've included here are more directly focused on the issues at hand.)
Alex Crichton [Fri, 28 Mar 2014 21:35:43 +0000 (14:35 -0700)]
dist: Tweak the OSX pkg installer
This performs a few touch-ups to the OSX installer:
* A rust logo is shown during installation
* The installation happens to /usr/local by default (instead of /)
* A new welcome screen is shown that's slightly more relevant