Commit Graph

35424 Commits

Author SHA1 Message Date
Alex Crichton
a7061d02e1 Tweak the startup routine to pass on linux
We need to be sure to init thread_info before we init args for example because
args is grabbing locks which may entail looking at the local thread eventually.
2014-12-18 23:31:52 -08:00
Alex Crichton
7a6c54c46e Fix compilation on linux 2014-12-18 23:31:52 -08:00
Alex Crichton
9644d60cc4 Fix the capture_stderr test
There's always a fun time having two sets of standard libraries when testing!
2014-12-18 23:31:52 -08:00
Aaron Turon
ced2239852 Disable capture_stderr test for now 2014-12-18 23:31:51 -08:00
Aaron Turon
43ae4b3301 Fallout from new thread API 2014-12-18 23:31:51 -08:00
Aaron Turon
14c1a103bc Revise rt::unwind 2014-12-18 23:31:51 -08:00
Aaron Turon
d8e4780b0b Remove rt::{mutex, exclusive} 2014-12-18 23:31:51 -08:00
Aaron Turon
7fd7ce682d Add blocking support module for channels 2014-12-18 23:31:51 -08:00
Aaron Turon
84cb6cd938 Remove rt::{local, local_data, thread_local_storage} 2014-12-18 23:31:51 -08:00
Aaron Turon
cac133c9a8 Introduce std::thread
Also removes:

* `std::task`
* `std::rt::task`
* `std::rt::thread`

Notes for the new API are in a follow-up commit.

Closes #18000
2014-12-18 23:31:35 -08:00
Aaron Turon
9b03b72d7f Remove rt::bookkeeping
This commit removes the runtime bookkeeping previously used to ensure
that all Rust tasks were joined before the runtime was shut down.

This functionality will be replaced by an RAII style `Thread` API, that
will also offer a detached mode.

Since this changes the semantics of shutdown, it is a:

[breaking-change]
2014-12-18 23:31:35 -08:00
Aaron Turon
c009bfdf94 Make at_exit initialize lazily 2014-12-18 23:31:34 -08:00
Aaron Turon
b66681cd31 Allow args to work without rt initialization 2014-12-18 23:31:34 -08:00
Aaron Turon
74d0769993 Refactor std::os to use sys::os 2014-12-18 23:31:34 -08:00
Aaron Turon
2b3477d373 libs: merge librustrt into libstd
This commit merges the `rustrt` crate into `std`, undoing part of the
facade. This merger continues the paring down of the runtime system.

Code relying on the public API of `rustrt` will break; some of this API
is now available through `std::rt`, but is likely to change and/or be
removed very soon.

[breaking-change]
2014-12-18 23:31:34 -08:00
bors
6bdce25e15 auto merge of #19899 : japaric/rust/unops-by-value, r=nikomatsakis
- The following operator traits now take their argument by value: `Neg`, `Not`. This breaks all existing implementations of these traits.

- The unary operation `OP a` now "desugars" to `OpTrait::op_method(a)` and consumes its argument.

[breaking-change]

---

r? @nikomatsakis This PR is very similar to the binops-by-value PR
cc @aturon
2014-12-19 06:12:01 +00:00
bors
840de07208 auto merge of #19955 : Gankro/rust/kill-all-code, r=aturon
EnumSet lives on in libcollections so that librustc can still use it. This adds a direct dependency on libcollections to librustc and libserialize.

Should not be merged until https://github.com/rust-lang/rfcs/pull/509 is accepted.

All of these collections have already been moved to collect-rs where they will ideally be maintained and experimented with, or will be replaced by something better: https://github.com/Gankro/collect-rs/

[breaking-change]

r? @aturon @alexcrichton
2014-12-19 02:52:01 +00:00
Alexis Beingessner
67d3823fc3 enumset fallout 2014-12-18 16:20:32 -05:00
Alexis Beingessner
0bd4dc68e6 s/Tree/BTree 2014-12-18 16:20:32 -05:00
Alexis Beingessner
6c00f9c5ff remove TreeMap, TreeSet, TrieMap, TrieSet, LruCache. deprecate EnumSet's std re-export 2014-12-18 16:20:31 -05:00
bors
99d6956c3b auto merge of #19896 : ktossell/rust/allow-nodoc-install, r=alexcrichton
If you configure with `--disable-docs`, the `doc` directory does not get generated, so the
`cp -r doc dist/` step fails when you `make dist{,-tar-bins,-doc}` or `make install`.
2014-12-18 20:32:07 +00:00
Jorge Aparicio
9b5de39c25 Address Niko's comments 2014-12-18 15:02:29 -05:00
Jorge Aparicio
d15d1529e0 Test unop move semantics 2014-12-18 15:02:29 -05:00
Jorge Aparicio
5d49999ad3 Fix run pass tests 2014-12-18 15:02:29 -05:00
Jorge Aparicio
5f347d7708 libstd: convert Duration unops to by value 2014-12-18 15:02:29 -05:00
Jorge Aparicio
340f042e03 libstd: convert BitFlags unops to by value 2014-12-18 15:02:28 -05:00
Jorge Aparicio
5359879fb6 libcore: convert unop traits to by value 2014-12-18 15:02:27 -05:00
Jorge Aparicio
5caebb23cd Tell regionck that user unops are by value 2014-12-18 14:56:00 -05:00
Jorge Aparicio
b98c3bd4d2 Tell expr_use_visitor that user unops are by value 2014-12-18 14:56:00 -05:00
Jorge Aparicio
9a962a7bdc Tell trans that user unops are by value 2014-12-18 14:56:00 -05:00
Jorge Aparicio
c5b6d9412d Tell typeck that user unops are by value 2014-12-18 14:56:00 -05:00
Jorge Aparicio
7efaf3fa34 syntax/ast_util: add is_by_value_unop() 2014-12-18 14:56:00 -05:00
bors
f9a48492a8 auto merge of #19984 : japaric/rust/macro-expressions, r=alexcrichton
followed by a semicolon.

This allows code like `vec![1i, 2, 3].len();` to work.

This breaks code that uses macros as statements without putting
semicolons after them, such as:

    fn main() {
        ...
        assert!(a == b)
        assert!(c == d)
        println(...);
    }

It also breaks code that uses macros as items without semicolons:

    local_data_key!(foo)

    fn main() {
        println("hello world")
    }

Add semicolons to fix this code. Those two examples can be fixed as
follows:

    fn main() {
        ...
        assert!(a == b);
        assert!(c == d);
        println(...);
    }

    local_data_key!(foo);

    fn main() {
        println("hello world")
    }

RFC #378.

Closes #18635.

[breaking-change]

---

Rebased version of #18958
r? @alexcrichton 
cc @pcwalton
2014-12-18 17:32:07 +00:00
Patrick Walton
ddb2466f6a librustc: Always parse macro!()/macro![] as expressions if not
followed by a semicolon.

This allows code like `vec![1i, 2, 3].len();` to work.

This breaks code that uses macros as statements without putting
semicolons after them, such as:

    fn main() {
        ...
        assert!(a == b)
        assert!(c == d)
        println(...);
    }

It also breaks code that uses macros as items without semicolons:

    local_data_key!(foo)

    fn main() {
        println("hello world")
    }

Add semicolons to fix this code. Those two examples can be fixed as
follows:

    fn main() {
        ...
        assert!(a == b);
        assert!(c == d);
        println(...);
    }

    local_data_key!(foo);

    fn main() {
        println("hello world")
    }

RFC #378.

Closes #18635.

[breaking-change]
2014-12-18 12:09:07 -05:00
bors
c4d58ce15b auto merge of #19819 : vadimcn/rust/fix-demangle, r=alexcrichton
Windows dbghelp strips leading underscores from symbols, and I could not find a way to turn this off.  So let's accept  "ZN...E" form too.
Also, print PC displacement from symbols.  This is helpful in gauging whether the PC was indeed within the function displayed in the backtrace, or whether it just happened to be the closest public symbol in the module.
2014-12-18 14:42:06 +00:00
bors
2a231594c4 auto merge of #19780 : jakub-/rust/e-needstest, r=alexcrichton
Closes #5988.
Closes #10176.
Closes #10456.
Closes #12744.
Closes #13264.
Closes #13324.
Closes #14182.
Closes #15381.
Closes #15444.
Closes #15480.
Closes #15756.
Closes #16822.
Closes #16966.
Closes #17351.
Closes #17503.
Closes #17545.
Closes #17771.
Closes #17816.
Closes #17897.
Closes #17905.
Closes #18188.
Closes #18232.
Closes #18345.
Closes #18389.
Closes #18400.
Closes #18502.
Closes #18611.
Closes #18783.
Closes #19009.
Closes #19081.
Closes #19098.
Closes #19127.
Closes #19135.
2014-12-18 12:21:57 +00:00
bors
c0b2885ee1 auto merge of #19769 : nick29581/rust/coerce-if, r=nikomatsakis
r? @nikomatsakis 

We discussed coercions for `if` and `match` expressions. `if` seems to work already, was there some specific behaviour which wasn't working?
2014-12-18 06:41:59 +00:00
Nick Cameron
46eb72453f Propagate coercions through match expressions. 2014-12-18 13:48:05 +13:00
Ken Tossell
cbf80f3a68 Only try to install the doc directory if it exists.
If you configure with `--disable-docs`, the `doc` directory does not get generated, so
`cp -r doc dist/` fails when you `make dist{,-tar-bins,-doc}` or `make install`
2014-12-17 19:24:40 -05:00
Jakub Bukaj
62d80df0c9 Add tests for E-needstest issues 2014-12-17 23:00:32 +01:00
bors
22a9f250b5 auto merge of #19958 : alexcrichton/rust/rollup, r=alexcrichton 2014-12-17 21:33:15 +00:00
Alex Crichton
5c98952409 Test fixes and rebase conflicts 2014-12-17 11:50:32 -08:00
Alex Crichton
76fbb5d527 rollup merge of #19947: csouth3/arc-borrowfrom
Closes #19937.
2014-12-17 11:50:31 -08:00
Alex Crichton
7ffbd8bad5 rollup merge of #19943: steveklabnik/doc_std_vec
Random improvements to the `std::vec` docs.
2014-12-17 11:50:31 -08:00
Alex Crichton
cbc3cf7a9e rollup merge of #19942: steveklabnik/doc_std_mem 2014-12-17 11:50:31 -08:00
Alex Crichton
1b9b647b07 rollup merge of #19940: phi-gamma/canonical-master
Signed-off-by: Philipp Gesang <phg@phi-gamma.net>
2014-12-17 11:50:31 -08:00
Alex Crichton
a7bb4795d3 rollup merge of #19935: cgaebel/hashmap-tuple-indexing
r? @Gankro @pczarn
2014-12-17 11:50:31 -08:00
Alex Crichton
42dbee098b rollup merge of #19930: cllns/lowercase-if
On the [guide site](http://doc.rust-lang.org/guide.html#if) I was confused when I got to "5 If". It looked like "5 LF" in lowercase.

Changing the if to lowercase solves this problem. I know titles are all capitalized, but I think it makes sense in this case to keep it lowercase, since `if` is a reserved word. I'd also be open to making it ```    `if`   ``` but I'm not sure how that would look on the site.

Before:
![screen shot 2014-12-16 at 12 58 01](https://cloud.githubusercontent.com/assets/632942/5458866/cb34c006-8523-11e4-89ef-3a3964bcedfc.png)
After:
![screen shot 2014-12-16 at 12 58 14](https://cloud.githubusercontent.com/assets/632942/5458865/cb33c444-8523-11e4-8d95-d377ed583ed6.png)
2014-12-17 11:50:30 -08:00
Alex Crichton
b56d4bf916 rollup merge of #19923: pnkfelix/fix-make-tags.emacs
Fix `make TAGS.emacs`.

@nikomatsakis has been complaining to me about this.  (I had not noticed since I drive `ctags` with a separate script.)

(Suitable for a rollup build.)
2014-12-17 11:50:30 -08:00
Alex Crichton
a02885e167 rollup merge of #19918: pnkfelix/ast-refactor-make-place-in-exprbox-an-option
This is to allow us to migrate away from UnUniq in a followup commit,
and thus unify the code paths related to all forms of `box`.
2014-12-17 11:50:30 -08:00