Commit Graph

38379 Commits

Author SHA1 Message Date
Manish Goregaokar
d014548d5a Rollup merge of #22248 - duaneedwards:patch-1, r=Gankro 2015-02-15 18:22:32 +05:30
Manish Goregaokar
e6ad3848c6 Rollup merge of #22238 - dotdash:llvmup_20150212, r=alexcrichton
Fixes #22233 

r? @alexcrichton
2015-02-15 18:22:32 +05:30
Manish Goregaokar
8623fe70eb Rollup merge of #22229 - vhbit:ios-default-cpus, r=alexcrichton
According to @dotdash it enables more aggressive optimizations from LLVM
2015-02-15 18:22:32 +05:30
Manish Goregaokar
132b56cefc Rollup merge of #22224 - sanxiyn:must-use, r=cmr
Fix #20109.
2015-02-15 18:22:31 +05:30
Manish Goregaokar
8cc3fbd41d Rollup merge of #22218 - huonw:raw-docs, r=steveklabnik,huonw
This overhauls the very meager docs that currently exist to clarify
various understandable confusions that I've noticed, e.g. people look in
`std::raw` for the "real" types of slices like `&[T]`, or think that
`Slice<T>` refers to `[T]` (fixes #22214).

This patch takes the liberty of offering some "style" guidance around
`raw::Slice`, since there's more restricted ways to duplicate all
functionality connected to it: `std::slice::from_raw_parts{,_mut}` for
construction and `.as_{,mut_}ptr` & `.len` for deconstruction.

It also deprecates the `std::raw::Closure` type which is now useless for
non-type-erased closures, and replaced by `TraitObject` for `&Fn`, `&mut
FnMut` etc, so I guess it should be called a:

[breaking-change]
2015-02-15 18:22:31 +05:30
Manish Goregaokar
63091efa3b Rollup merge of #22201 - brson:version, r=nick29581
rustc --version says

```
rustc 1.0.0-dev (d0e82a68a 2015-02-05 14:38:56 -0800) (built 2015-02-11)
```
2015-02-15 18:22:31 +05:30
Manish Goregaokar
b13fddda20 Rollup merge of #22132 - steveklabnik:gh16645, r=alexcrichton
Fixes #16645

Fixing this in any deeper way will require an RFC, so let's just document the current behavior.
2015-02-15 18:22:31 +05:30
bors
b6d91a2bda Auto merge of #22126 - steveklabnik:gh21281, r=nikomatsakis
This is super black magic internals at the moment, but having it
somewhere semi-public seems good. The current versions weren't being
rendered, and they'll be useful for some people.

Fixes #21281

r? @nikomatsakis @kmcallister
2015-02-15 07:53:07 +00:00
bors
5be210c418 Auto merge of #22058 - Gankro:all-the-impls, r=huonw
Working on just knocking these out for all the collections so that there's something there.
2015-02-15 03:07:59 +00:00
Alexis
3c18bc4272 naive RingBuf::append impl 2015-02-14 19:30:33 -05:00
Steve Klabnik
bdc730e403 remove extra mod doc;s 2015-02-14 12:07:09 -05:00
bors
b63cee4a11 Auto merge of #22158 - Kimundi:the_lonely_uppercase_keyword, r=pnkfelix
It is only allowed in paths now, where it will either work inside a `trait`
or `impl` item, or not resolve outside of it.

[breaking-change]

Closes #22137
2015-02-14 17:01:11 +00:00
bors
3d1c1added Auto merge of #22114 - alexcrichton:issue-22084, r=steveklabnik
This ended up just being a forgotten attribute on the `char` module in
libunicode.

Closes #22084
2015-02-14 13:08:33 +00:00
bors
df54632601 Auto merge of #22119 - aturon:new-process, r=alexcrichton
Per [RFC 579](https://github.com/rust-lang/rfcs/pull/579), this commit
adds a new `std::process` module. This module is largely based on the
existing `std::old_io::process` module, but refactors the API to use
`OsStr` and other new standards set out by IO reform.

The existing module is not yet deprecated, to allow for the new API to
get a bit of testing before a mass migration to it.
2015-02-14 10:03:01 +00:00
Aaron Turon
4175f1ce2f Add std::process
Per [RFC 579](https://github.com/rust-lang/rfcs/pull/579), this commit
adds a new `std::process` module. This module is largely based on the
existing `std::old_io::process` module, but refactors the API to use
`OsStr` and other new standards set out by IO reform.

The existing module is not yet deprecated, to allow for the new API to
get a bit of testing before a mass migration to it.
2015-02-13 23:21:08 -08:00
bors
95b228ab95 Auto merge of #22041 - semarie:configure-compat, r=alexcrichton
the sed option `--in-place` (or `-i`) is a GNU extension, and it is not
portable to BSD system (openbsd and freebsd checked).

use an alternate construction in order to keep the semantic.
2015-02-14 07:10:52 +00:00
bors
f174bcabcb Auto merge of #21834 - genbattle:doc-range-notation, r=steveklabnik
Replaced outdated use of the `range(start, end)` function where appropriate with `start..end`, and tweaked the examples to compile and run with the latest rust. I also fixed two periphery compile issues in reference.md which were occluding whether there were any new errors created by these changes.
2015-02-14 03:10:40 +00:00
Ulrik Sverdrup
7a52932f4c Make std::raw::Repr an unsafe trait
The default implementation of .repr() will call conveniently call
transmute_copy which should be appropriate for all implementors, but is
memory unsafe if used wrong.

Fixes #22260

You need to use `unsafe impl` to implement the Repr trait now.

[breaking-change]
2015-02-14 11:32:42 +11:00
Huon Wilson
5e3ae102db Dramatically expand the docs of std::raw.
This overhauls the very meager docs that currently exist to clarify
various understandable confusions that I've noticed, e.g. people look in
`std::raw` for the "real" types of slices like `&[T]`, or think that
`Slice<T>` refers to `[T]` (fixes #22214).

This patch takes the liberty of offering some "style" guidance around
`raw::Slice`, since there's more restricted ways to duplicate all
functionality connected to it: `std::slice::from_raw_parts{,_mut}` for
construction and `.as_{,mut_}ptr` & `.len` for deconstruction.

It also deprecates the `std::raw::Closure` type which is now useless for
non-type-erased closures, and replaced by `TraitObject` for `&Fn`, `&mut
FnMut` etc, so I guess it should be called a:

[breaking-change]
2015-02-14 11:32:08 +11:00
bors
b8c112fc72 Auto merge of #21376 - fhahn:issue-15881-model-lexer-dotdotdot, r=cmr
This PR adds a dedicated regression test for #15881 as @cmr suggested.
2015-02-13 23:56:40 +00:00
Brian Anderson
effad62bc5 Add the build date to the reported version. #21957
rustc --version says

```
rustc 1.0.0-dev (d0e82a68a 2015-02-05) (built 2015-02-11)
```
2015-02-13 14:30:04 -08:00
bors
b9ba643b72 Auto merge of #22200 - alexcrichton:opt-vec-collect, r=huonw
This PR is an optimization of the `FromIterator` implementation of `Vec`

Benchmark: https://gist.github.com/alexcrichton/03d666159a28a80e7c70

Before:

    test macro_repeat1     ... bench:        57 ns/iter (+/- 1)
    test macro_repeat2     ... bench:        56 ns/iter (+/- 1)
    test map_clone1        ... bench:       828 ns/iter (+/- 13)
    test map_clone2        ... bench:       828 ns/iter (+/- 8)
    test repeat1           ... bench:      1104 ns/iter (+/- 10)
    test repeat2           ... bench:      1106 ns/iter (+/- 11)

After:

    test macro_repeat1     ... bench:        75 ns/iter (+/- 21)
    test macro_repeat2     ... bench:        59 ns/iter (+/- 31)
    test map_clone1        ... bench:        34 ns/iter (+/- 22)
    test map_clone2        ... bench:        52 ns/iter (+/- 21)
    test repeat1           ... bench:        34 ns/iter (+/- 11)
    test repeat2           ... bench:        33 ns/iter (+/- 12)

The idea behind this optimization is to avoid all bounds checks for space
already allocated into the vector. This may involve running the iterator twice,
but the first run of the iterator should be optimizable to a memcpy or memset if
possible.

The same treatment can in theory be applied to `Vec::extend` but the benchmarks
for that currently get *worse* if the change is applied. This appears to be some
LLVM optimizations going awry but it's seems prudent to land at least the
`collect` portion beforehand.
2015-02-13 21:15:39 +00:00
Steve Klabnik
ad2efdc67d Instead of putting them in the book, make them READMEs. 2015-02-13 12:32:37 -05:00
Steve Klabnik
ce22f30b9e Make note of doc duplication with reexports
Fixes #16645
2015-02-13 08:56:44 -05:00
bors
cf636c233d Auto merge of #22093 - petrochenkov:builtin, r=pnkfelix
Names of structs, enums, traits, type aliases and type parameters (i.e. all identifiers that can be used as full paths in type position) are not allowed to match the names of primitive types.
See #20427 for more information.

This is a minor [breaking-change]
2015-02-13 07:44:41 +00:00
bors
ba2efe96ae Auto merge of #22219 - pnkfelix:partial-reinit, r=pnkfelix
borrowck: Prevent partial reinitialization of uninitialized structures

This is a pnkfelix-swiped squash of #22079, which was a rebase and revision of #18963

Fixes #18571.
2015-02-13 02:09:15 +00:00
Duane Edwards
9c686dc54d Correct typo for 'underyling' 2015-02-13 08:45:52 +10:00
Marvin Löbel
07d00deab2 Made Self a keyword.
It is only allowed in paths now, where it will either work inside a `trait`
or `impl` item, or not resolve outside of it.

[breaking-change]

Closes #22137
2015-02-12 22:04:31 +01:00
Björn Steinbrink
3df5c4ac21 Update LLVM to disable asserts in the PassInfo cache
Fixes #22233
2015-02-12 21:30:04 +01:00
bors
39b463f153 Auto merge of #22182 - nikomatsakis:cycles-in-collect, r=nikomatsakis
This resolves a number of bugs that trigger stack overflows or other cyclic errors.

r? @nick29581 (it is based on work that you started)
f? @jroesch (also based on your branch)
2015-02-12 20:03:50 +00:00
Niko Matsakis
a25ed227a7 Pacify the merciless nrc. 2015-02-12 13:29:52 -05:00
Niko Matsakis
eec3b431aa Pacify the mercilous tidy. 2015-02-12 13:29:52 -05:00
Niko Matsakis
21fb420592 Add test that shows how a cycle between the where-clauses on a type
and the type appearing in the trait would (previously) trigger an
error message. The code is now accepted. No reported issue that I am
aware of.
2015-02-12 13:29:52 -05:00
Niko Matsakis
14141aca80 Add test for self-referencing pattern blocked by #20551. Fixes #20551. 2015-02-12 13:29:51 -05:00
Niko Matsakis
28e48f308c Add test for IntoIterator pattern blocked by #20220. Fixes #20220. 2015-02-12 13:29:51 -05:00
Niko Matsakis
c87166e149 Adjust wording of astconv comment. 2015-02-12 13:29:51 -05:00
Niko Matsakis
a6c295cb22 Modify repr() so that when -Z verbose is used, at least, it does not
fetch trait definitions. This allows is to be used early in the compiler
without triggering ICEs. Also make -Z verbose less horrifyingly ugly.
2015-02-12 13:29:51 -05:00
Niko Matsakis
3e88b5bbf9 Rote changes to fix fallout throughout the compiler from splitting the
predicates and renaming some things.
2015-02-12 13:29:51 -05:00
Alex Crichton
985fc7d09b std: Optimize Vec::from_iter
This PR is an optimization of the `FromIterator` implementation of `Vec`

Benchmark: https://gist.github.com/alexcrichton/03d666159a28a80e7c70

Before:
    test macro_repeat1     ... bench:        57 ns/iter (+/- 1)
    test macro_repeat2     ... bench:        56 ns/iter (+/- 1)
    test map_clone1        ... bench:       828 ns/iter (+/- 13)
    test map_clone2        ... bench:       828 ns/iter (+/- 8)
    test repeat1           ... bench:      1104 ns/iter (+/- 10)
    test repeat2           ... bench:      1106 ns/iter (+/- 11)

After:
    test macro_repeat1     ... bench:        75 ns/iter (+/- 21)
    test macro_repeat2     ... bench:        59 ns/iter (+/- 31)
    test map_clone1        ... bench:        34 ns/iter (+/- 22)
    test map_clone2        ... bench:        52 ns/iter (+/- 21)
    test repeat1           ... bench:        34 ns/iter (+/- 11)
    test repeat2           ... bench:        33 ns/iter (+/- 12)

The idea behind this optimization is to avoid all bounds checks for space
already allocated into the vector. This may involve running the iterator twice,
but the first run of the iterator should be optimizable to a memcpy or memset if
possible.

The same treatment can in theory be applied to `Vec::extend` but the benchmarks
for that currently get *worse* if the change is applied. This appears to be some
LLVM optimizations going awry but it's seems prudent to land at least the
`collect` portion beforehand.
2015-02-12 10:25:34 -08:00
Niko Matsakis
3764699c83 Refactor collect to separate out the computation of the type scheme
and predicates. Try to document how things work. More cleanup is
needed here but I had to draw the line somewhere gosh darn it.
2015-02-12 13:02:38 -05:00
Niko Matsakis
d1630970de Split the predicates listing out of TraitDef and TypeScheme and into a separate map, tcx.predicates, that is used for both traits and other kinds of items. Also use two newtypes to distinguish
instantiated predicates from the raw, unsubstituted predicates extracted from the map.
2015-02-12 13:02:37 -05:00
Niko Matsakis
bea8b81225 Make VecPerParamSpace support IntoIterator 2015-02-12 13:02:37 -05:00
Niko Matsakis
acd1a0090a Update metadata to reflect that predicates/schemes/trait-defs are now severed 2015-02-12 13:02:37 -05:00
Vadim Petrochenkov
8ed58d8ccc Fix duplicate error code 2015-02-12 20:31:31 +03:00
Valerii Hiora
00a6ff9571 Adjusting default CPUs for iOS
According to @dotdash it enables more aggressive optimizations from LLVM
2015-02-12 19:17:34 +02:00
Seo Sanghyeon
995b159157 rustdoc: Show must_use attribute 2015-02-13 00:47:03 +09:00
bors
cca1cf613b Auto merge of #21895 - alfie:libcoretest, r=pnkfelix 2015-02-12 14:58:13 +00:00
Felix S. Klock II
6cc3b00d3f Add a couple FIXME notes inspired during my review. 2015-02-12 13:55:49 +01:00
Kevin Butler
32d0dbd49a librustc: Forbid partial reinitialization of uninitialized structures or
enumerations that implement the `Drop` trait.

This breaks code like:

    struct Struct {
        f: String,
        g: String,
    }

    impl Drop for Struct { ... }

    fn main() {
        let x = Struct { ... };
        drop(x);
        x.f = ...;
    }

Change this code to not create partially-initialized structures. For
example:

    struct Struct {
        f: String,
        g: String,
    }

    impl Drop for Struct { ... }

    fn main() {
        let x = Struct { ... };
        drop(x);
        x = Struct {
            f: ...,
            g: ...,
        }
    }

Closes #18571.

[breaking-change]

----

(Joint authorship by pcwalton and Ryman; thanks all!)
2015-02-12 13:55:08 +01:00
bors
c34421e490 Auto merge of #22217 - mmatyas:char_typofix, r=huonw
There are two dots at the end of a line in the documentation of std::char.
2015-02-12 12:45:13 +00:00