Commit graph

36476 commits

Author SHA1 Message Date
Brian Anderson db8d960c38 1.0.0-alpha release notes 2015-01-06 15:58:23 -08:00
Brian Anderson 93190b364b Bump some version numbers 2015-01-06 15:58:23 -08:00
bors ea6f65c5f1 auto merge of #20633 : vhbit/rust/ios-cstring, r=brson 2015-01-06 19:47:08 +00:00
bors 6539cb417f auto merge of #20618 : alexcrichton/rust/less-warn, r=brson
This warning has been around in the compiler for quite some time now, but the
real place for a warning like this, if it should exist, is in Cargo, not in the
compiler itself. It's a first-class feature of Cargo that multiple versions of a
crate can be compiled into the same executable, and we shouldn't be warning
about our first-class features.
2015-01-06 16:42:43 +00:00
Alex Crichton 9d0b3c9fc9 rustc: Turn off multiple versions of crate warning
This warning has been around in the compiler for quite some time now, but the
real place for a warning like this, if it should exist, is in Cargo, not in the
compiler itself. It's a first-class feature of Cargo that multiple versions of a
crate can be compiled into the same executable, and we shouldn't be warning
about our first-class features.
2015-01-06 08:22:59 -08:00
bors 8efd9901b6 auto merge of #20573 : huonw/rust/num-stab-2, r=alexcrichton
cc #19260 

Open questions:

- I still feel weird about marking functions like `exp` as `#[stable]` in `core` since they're highly likely to call into libm which is theoretically something core is designed to avoid and so we may be forced/want to move it at some point in the future, and so it feels like a lie to call it `#[stable]` (I know `core` is `#[experimental]`, but still...)
- `abs_sub` is a horrible name IMO: it feels like it is `(a - b).abs()`, but it is actually `(a - b).max(0.)`. maybe something along the lines of `pos_diff` ("positive difference") is better.
- the associated-function nature of `Int::from_be` and `Int::from_le` feel strange to me, it feels like they should be methods, but I cannot think of a good name.

I'm also not hugely in favour of `ldexp` and `frexp` but the precedent from C is large. (e.g. AFAICT,  `ldexp` must mean "load exponent" which is essentially what it does... but only for a subset of its inputs.)
2015-01-06 13:30:29 +00:00
Valerii Hiora 72e08006da iOS: CString fallout 2015-01-06 15:21:04 +02:00
Huon Wilson f3a80ab9d2 Apply stability attributes to core::num::{Int, SignedInt, UnsignedInt}. 2015-01-06 23:21:27 +11:00
Huon Wilson 49feb0c431 Unstabilise f32/f64 constants that are int/uint.
Pending integer conventions.
2015-01-06 23:21:27 +11:00
Huon Wilson 65922dd42d Apply stability attributes to std::num::Float. 2015-01-06 23:21:27 +11:00
Huon Wilson ae4762761c Merge core::num::Float and std::num::FloatMath.
`FloatMath` no longer exists and all functionality from both traits is
available under `Float`. Change from

    use std::num::{Float, FloatMath};

to

    use std::num::Float;

[breaking-change]
2015-01-06 23:21:27 +11:00
Huon Wilson 1291fc76e0 Reword unstability message for core::num::Float. 2015-01-06 23:21:01 +11:00
Huon Wilson cd4ed38404 Deprecate the constant-returning functions in Float.
These are replaced by the equivalent constants in `std::f32` and
`std::f64` respectively.

[breaking-change]
2015-01-06 23:21:01 +11:00
Huon Wilson cfb2e2acd7 num: remove deprecated functionality. 2015-01-06 23:21:01 +11:00
bors 340ac040f7 auto merge of #20610 : alexcrichton/rust/rollup, r=alexcrichton 2015-01-06 08:25:32 +00:00
Alex Crichton 4b359e3aee More test fixes! 2015-01-05 22:58:37 -08:00
Alex Crichton ee9921aaed Revert "Remove i suffix in docs"
This reverts commit f031671c6e.

Conflicts:
	src/libcollections/slice.rs
	src/libcore/iter.rs
	src/libstd/sync/mpsc/mod.rs
	src/libstd/sync/rwlock.rs
2015-01-05 19:08:37 -08:00
Alex Crichton f331c56869 Test fixes 2015-01-05 19:07:07 -08:00
Alex Crichton 7975fd9cee rollup merge of #20482: kmcallister/macro-reform
Conflicts:
	src/libflate/lib.rs
	src/libstd/lib.rs
	src/libstd/macros.rs
	src/libsyntax/feature_gate.rs
	src/libsyntax/parse/parser.rs
	src/libsyntax/show_span.rs
	src/test/auxiliary/macro_crate_test.rs
	src/test/compile-fail/lint-stability.rs
	src/test/run-pass/intrinsics-math.rs
	src/test/run-pass/tcp-connect-timeouts.rs
2015-01-05 19:01:17 -08:00
Alex Crichton 563f6d8218 rollup merge of #20608: nikomatsakis/assoc-types-method-dispatch 2015-01-05 18:56:45 -08:00
Alex Crichton 384e218789 Merge remote-tracking branch 'nrc/sized-2' into rollup
Conflicts:
	src/liballoc/boxed.rs
	src/libcollections/btree/map.rs
	src/libcollections/slice.rs
	src/libcore/borrow.rs
	src/libcore/cmp.rs
	src/libcore/ops.rs
	src/libstd/c_str.rs
	src/libstd/collections/hash/map.rs
	src/libsyntax/parse/obsolete.rs
	src/test/compile-fail/unboxed-closure-sugar-default.rs
	src/test/compile-fail/unboxed-closure-sugar-equiv.rs
	src/test/compile-fail/unboxed-closure-sugar-lifetime-elision.rs
	src/test/compile-fail/unboxed-closure-sugar-region.rs
	src/test/compile-fail/unsized3.rs
	src/test/run-pass/associated-types-conditional-dispatch.rs
2015-01-05 18:55:41 -08:00
Niko Matsakis e58f1bdc03 Normalize predicates during method winnowing.
Fixes #20604.
Fixes #20378.
2015-01-05 21:50:23 -05:00
Niko Matsakis 2a1ba2f1ac Permit method calls based on where clauses. 2015-01-05 21:50:22 -05:00
Alex Crichton afbce050ca rollup merge of #20556: japaric/no-for-sized
Conflicts:
	src/libcollections/slice.rs
	src/libcollections/str.rs
	src/libcore/borrow.rs
	src/libcore/cmp.rs
	src/libcore/ops.rs
	src/libstd/c_str.rs
	src/test/compile-fail/issue-19009.rs
2015-01-05 18:47:45 -08:00
Alex Crichton cf8a11e98b rollup merge of #20594: nikomatsakis/orphan-ordered
Conflicts:
	src/libsyntax/feature_gate.rs
2015-01-05 18:42:34 -08:00
Alex Crichton f3ad232022 rollup merge of #20584: brson/versioning
Also, change the version number to 1.0.0.
2015-01-05 18:42:08 -08:00
Alex Crichton 4c549786fa rollup merge of #20583: csouth3/vim-syntax
The prelude has changed quite a bit since the list that Vim is aware of has been updated.  This pull request brings it up to date with `std::prelude`.
2015-01-05 18:42:06 -08:00
Alex Crichton de78419b8d rollup merge of #20581: apasel422/extend 2015-01-05 18:42:04 -08:00
Alex Crichton b24431970e rollup merge of #20568: huonw/ungate-AT-globs
These aren't in their final form, but are all aiming to be part of 1.0, so at the very least encouraging usage now to find the bugs is nice.

Also, the widespread roll-out of associated types in the standard library indicates they're getting good, and it's lame to have to activate a feature in essentially every crate ever.
2015-01-05 18:42:00 -08:00
Alex Crichton cda6acb2f1 rollup merge of #20566: zsiciarz/fix-stdext-docs 2015-01-05 18:41:59 -08:00
Alex Crichton 83c890b454 rollup merge of #20565: alexcrichton/missing-stability
Conflicts:
	src/libstd/sync/mpsc/mod.rs
2015-01-05 18:41:55 -08:00
Alex Crichton 59bbf56d49 rollup merge of #20564: bombless/patch-3
Update keyword list according to https://github.com/rust-lang/rust/blob/master/src/libsyntax/parse/token.rs
2015-01-05 18:41:23 -08:00
Alex Crichton 2e883a5f53 rollup merge of #20560: aturon/stab-2-iter-ops-slice
Conflicts:
	src/libcollections/slice.rs
	src/libcore/iter.rs
	src/libstd/sync/mpsc/mod.rs
	src/libstd/sync/rwlock.rs
2015-01-05 18:41:20 -08:00
Alex Crichton bb5e16b4b8 rollup merge of #20554: huonw/mut-pattern
Conflicts:
	src/librustc_typeck/check/_match.rs
2015-01-05 18:38:51 -08:00
Alex Crichton 0ca3a8cca7 rollup merge of #20548: tshepang/fix-ping-pong-benchmark
Looks like no one has checked this benchmark in a long time: its main thread quit too early, taking down the worker threads before they were done.
2015-01-05 18:38:02 -08:00
Alex Crichton 308c1baead rollup merge of #20538: EchoAce/issue-20529
Docs in ```tuple.rs``` edited.

Edit: for some reason commits from something else found their way into here.
2015-01-05 18:38:01 -08:00
Alex Crichton 6c2263c423 rollup merge of #20519: ville-h/rwlock-rename
Conflicts:
	src/libstd/sync/rwlock.rs
2015-01-05 18:37:58 -08:00
Alex Crichton a73c35249d rollup merge of #20518: nagisa/weighted-bool
1 in 1 chance to return true always results in true.
2015-01-05 18:37:25 -08:00
Alex Crichton 33533712c7 rollup merge of #20517: nikomatsakis/safety-issue-19997
Fixes various safety issues.

r? @aturon
2015-01-05 18:37:24 -08:00
Alex Crichton cc0697ec9e rollup merge of #20511: csouth3/derive-lint
`#[deriving]` has been changed to `#[derive]`, so we should update this lint accordingly so that it remains consistent with the language.

Also register the rename with the LintStore.

I've changed the one reference to `raw_pointer_deriving` that occurs in the tests (as well as renamed the file appropriately), but the rest of the `raw_pointer_deriving`s in the Rust codebase will need to wait for a snapshot to be changed because stage0 doesn't know about the new lint name.  I'll take care of the remaining renaming after the next snapshot.

Closes #20498.
2015-01-05 18:37:23 -08:00
Alex Crichton 25d5a3a194 rollup merge of #20507: alexcrichton/issue-20444
This commit is an implementation of [RFC 494][rfc] which removes the entire
`std::c_vec` module and redesigns the `std::c_str` module as `std::ffi`.

[rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0494-c_str-and-c_vec-stability.md

The interface of the new `CString` is outlined in the linked RFC, the primary
changes being:

* The `ToCStr` trait is gone, meaning the `with_c_str` and `to_c_str` methods
  are now gone. These two methods are replaced with a `CString::from_slice`
  method.
* The `CString` type is now just a wrapper around `Vec<u8>` with a static
  guarantee that there is a trailing nul byte with no internal nul bytes. This
  means that `CString` now implements `Deref<Target = [c_char]>`, which is where
  it gains most of its methods from. A few helper methods are added to acquire a
  slice of `u8` instead of `c_char`, as well as including a slice with the
  trailing nul byte if necessary.
* All usage of non-owned `CString` values is now done via two functions inside
  of `std::ffi`, called `c_str_to_bytes` and `c_str_to_bytes_with_nul`. These
  functions are now the one method used to convert a `*const c_char` to a Rust
  slice of `u8`.

Many more details, including newly deprecated methods, can be found linked in
the RFC. This is a:

[breaking-change]
Closes #20444
2015-01-05 18:37:22 -08:00
Alex Crichton 743d926d9e rollup merge of #20488: ltratt/nondeterministic_tempdir
The previous scheme made it possible for another user/attacker to cause the
temporary directory creation scheme to panic. All you needed to know was the pid
of the process you wanted to target ('other_pid') and the suffix it was using
(let's pretend it's 'sfx') and then code such as this would, in essence, DOS it:

    for i in range(0u, 1001) {
        let tp = &Path::new(format!("/tmp/rs-{}-{}-sfx", other_pid, i));
        match fs::mkdir(tp, io::USER_RWX) { _ => () }
    }

Since the scheme only 1000 times to create a temporary directory before dying,
the next time the attacked process called TempDir::new("sfx") after that would
typically cause a panic. Of course, you don't necessarily need an attacker to
cause such a DOS: creating 1000 temporary directories without closing any of the
previous would be enough to DOS yourself.

This patch broadly follows the OpenBSD implementation of mkstemp. It uses the
operating system's random number generator to produce random directory names
that are impractical to guess (and, just in case someone manages to do that, it
retries creating the directory for a long time before giving up; OpenBSD
retries INT_MAX times, although 1<<31 seems enough to thwart even the most
patient attacker).

As a small additional change while the file name is changing, this patch also
makes the argument that TempDir::new takes a prefix rather than a suffix.
This is because 1) it more closely matches what mkstemp and friends do 2)
if you're going to have a deterministic part of a filename, you really want it at
the beginning so that shell completion is useful.
2015-01-05 18:37:20 -08:00
Alex Crichton ca40fe0f5e rollup merge of #20483: nagisa/rng-copy
* Implement (derive) `Clone` for `ChaChaRng`, `Isaac*Rng`, `StdRng` and `ThreadRng`;
* Derive `XorShiftRng` `Clone` implementation instead of implementing it explicitly.

`OsRng` is the only Rng which does not implement `Clone` or `Copy` after this patch because of its dependence on `Reader`.

r? @huonw I guess?
2015-01-05 18:37:18 -08:00
Alex Crichton 38d81baec8 rollup merge of #20478: SeanTAllen/master
Number of rustc calls would depending on various circumstances. Two is misleading.
2015-01-05 18:36:38 -08:00
Alex Crichton eee6a57438 rollup merge of #20472: mneumann/llvm-dragonfly 2015-01-05 18:36:37 -08:00
Alex Crichton 88b4c8e0d3 rollup merge of #20465: nikomatsakis/assoc-types-regions-20303
Treat associated types the same as type parameters when it comes to region bounding. Fixes #20303.

Strictly speaking, this is a [breaking-change] (if you are using
associated types). You are no longer free to wantonly violate the type
system rules by closing associated types into objects without any form
of region bound. Instead you should add region bounds like `T::X :
'a`, just as you would with a normal type parameter.

r? @aturon
2015-01-05 18:36:34 -08:00
Alex Crichton 059566b019 rollup merge of #20434: steveklabnik/five_eye
This takes advantage of integer fallback to stop recomending `i` so much.
2015-01-05 18:36:32 -08:00
Alex Crichton 3d9923d0d5 rollup merge of #20424: jroesch/tuple-struct-where-clause-fix
Fixes #17904. All the cases that I believe we should support are detailed in the test case, let me know if there is there is any more desired behavior. cc @japaric.

r? @nikomatsakis or whoever is appropriate.
2015-01-05 18:36:30 -08:00
Alex Crichton 0dd07429ab rollup merge of #20258: sanxiyn/show-span-2 2015-01-05 18:36:28 -08:00
Alex Crichton ba2b79c757 rollup merge of #20197: pczarn/ring_buf-collections-reform
Part of collections reform part 1 and 2, #18424 and #19986

* shrink_to_fit
* swap_back_remove
* swap_front_remove
* truncate
* resize
2015-01-05 18:36:27 -08:00