Commit Graph

29624 Commits

Author SHA1 Message Date
bors f9260d41d6 auto merge of #14746 : alexcrichton/rust/libsync, r=brson
This commit is the final step in the libstd facade, #13851. The purpose of this
commit is to move libsync underneath the standard library, behind the facade.
This will allow core primitives like channels, queues, and atomics to all live
in the same location.

There were a few notable changes and a few breaking changes as part of this
movement:

* The `Vec` and `String` types are reexported at the top level of libcollections
* The `unreachable!()` macro was copied to libcore
* The `std::rt::thread` module was moved to librustrt, but it is still
  reexported at the same location.
* The `std::comm` module was moved to libsync
* The `sync::comm` module was moved under `sync::comm`, and renamed to `duplex`.
  It is now a private module with types/functions being reexported under
  `sync::comm`. This is a breaking change for any existing users of duplex
  streams.
* All concurrent queues/deques were moved directly under libsync. They are also
  all marked with #![experimental] for now if they are public.
* The `task_pool` and `future` modules no longer live in libsync, but rather
  live under `std::sync`. They will forever live at this location, but they may
  move to libsync if the `std::task` module moves as well.

[breaking-change]
2014-06-11 11:47:04 -07:00
bors f0f9095f1d auto merge of #14250 : alexcrichton/rust/gc, r=brson
This commit removes `@T` from the compiler by moving the AST to using `Gc<T>`. This also starts treating `Gc<T>` as `@T` in the same way that `Box<T>` is the same as `~T` in the compiler.

After this hits a snapshot, the `@T` syntax should be able to be removed completely.
2014-06-11 10:02:04 -07:00
Alex Crichton b1c9ce9c6f sync: Move underneath libstd
This commit is the final step in the libstd facade, #13851. The purpose of this
commit is to move libsync underneath the standard library, behind the facade.
This will allow core primitives like channels, queues, and atomics to all live
in the same location.

There were a few notable changes and a few breaking changes as part of this
movement:

* The `Vec` and `String` types are reexported at the top level of libcollections
* The `unreachable!()` macro was copied to libcore
* The `std::rt::thread` module was moved to librustrt, but it is still
  reexported at the same location.
* The `std::comm` module was moved to libsync
* The `sync::comm` module was moved under `sync::comm`, and renamed to `duplex`.
  It is now a private module with types/functions being reexported under
  `sync::comm`. This is a breaking change for any existing users of duplex
  streams.
* All concurrent queues/deques were moved directly under libsync. They are also
  all marked with #![experimental] for now if they are public.
* The `task_pool` and `future` modules no longer live in libsync, but rather
  live under `std::sync`. They will forever live at this location, but they may
  move to libsync if the `std::task` module moves as well.

[breaking-change]
2014-06-11 10:00:43 -07:00
Alex Crichton 54c2a1e1ce rustc: Move the AST from @T to Gc<T> 2014-06-11 09:51:37 -07:00
Alex Crichton 53ad426e92 syntax: Move the AST from @T to Gc<T> 2014-06-11 09:11:40 -07:00
Alex Crichton 531ed3d599 rustc: Update how Gc<T> is recognized
This commit uses the same trick as ~/Box to map Gc<T> to @T internally inside
the compiler. This moves a number of implementations of traits to the `gc`
module in the standard library.

This removes functions such as `Gc::new`, `Gc::borrow`, and `Gc::ptr_eq` in
favor of the more modern equivalents, `box(GC)`, `Deref`, and pointer equality.

The Gc pointer itself should be much more useful now, and subsequent commits
will move the compiler away from @T towards Gc<T>

[breaking-change]
2014-06-11 09:11:40 -07:00
bors c54ce27b39 auto merge of #14789 : aochagavia/rust/prelude, r=alexcrichton 2014-06-11 07:42:07 -07:00
bors ea41101b35 auto merge of #14788 : Sawyer47/rust/issue-13214, r=huonw
Closes #13214
2014-06-11 06:02:10 -07:00
bors db9e0a1142 auto merge of #14787 : alexcrichton/rust/issue-14784, r=pcwalton
This is another case of #13246. The RAII lock wasn't being destroyed until after
the allocation was free'd due to destructor scheduling.

Closes #14784
2014-06-11 04:22:02 -07:00
bors 4fdc27e55e auto merge of #14786 : pcwalton/rust/enum-to-float-casts, r=alexcrichton
If this breaks your code, take a deep breath, go for a walk, and
consider why you're relying on the sign extension semantics of
enum-to-float casts.

[breaking-change]

Closes #8230.
2014-06-10 23:37:06 -07:00
bors c690191a84 auto merge of #14777 : alexcrichton/rust/issue-14747, r=huonw
When generating documentation, rustdoc has the ability to generate relative
links within the current distribution of crates to one another. To do this, it
must recognize when a crate's documentation is in the same output directory. The
current threshold for "local documentation for crate X being available" is
whether the directory "doc/X" exists.

This change modifies the build system to have new dependencies for each
directory of upstream crates for a rustdoc invocation. This will ensure that
when building documentation that all the crates in the standard distribution are
guaranteed to have relative links to one another.

This change is prompted by guaranteeing that offline docs always work with one
another. Before this change, races could mean that some docs were built before
others, and hence may have http links when relative links would suffice.

Closes #14747
2014-06-10 19:52:05 -07:00
bors f92a8facf9 auto merge of #14768 : riccieri/rust/detransmute-arena, r=alexcrichton
**Update**

I've reimplemented this using `Cell` and `RefCell`, as suggested by @alexcrichton. By taking care with the duration of the borrows, I was able to maintain the recursive allocation feature (now covered by a test) without the use of `Unsafe`, and without breaking the non-aliasing `&mut` invariant.

**Original**

Changes both `Arena` and `TypedArena` to contain an inner struct wrapped in a `Unsafe`, and change field access to go through those instead of transmuting `&self` to `&mut self`.

Part of #13933
2014-06-10 18:07:07 -07:00
bors b1302f9c4f auto merge of #14764 : jbcrail/rust/fix-more-comments, r=alexcrichton 2014-06-10 15:17:01 -07:00
bors 7f777a5ba4 auto merge of #14752 : jakub-/rust/issue-11940, r=alexcrichton
Fixes #8315
Fixes #11940
2014-06-10 13:17:10 -07:00
bors 9bb8f88d3a auto merge of #14696 : jakub-/rust/dead-struct-fields, r=alexcrichton
This uncovered some dead code, most notably in middle/liveness.rs, which I think suggests there must be something fishy with that part of the code.

The #[allow(dead_code)] annotations on some of the fields I am not super happy about but as I understand, marker type may disappear at some point.
2014-06-10 09:49:29 -07:00
Joseph Crail c2c9946372 Fix more misspelled comments and strings. 2014-06-10 11:24:17 -04:00
Adolfo Ochagavía 02866e6fe2 Pub use CheckedDiv in the prelude 2014-06-10 10:01:49 +02:00
Piotr Jawniak 9bead9b3f1 Add test for issue #13214
Closes #13214
2014-06-10 09:26:49 +02:00
bors 0ee6a8e8a5 auto merge of #14606 : pcwalton/rust/fn-trait-sugar, r=alexcrichton
r? @alexcrichton
2014-06-09 23:41:53 -07:00
bors 5bc2d03955 auto merge of #14783 : alexcrichton/rust/rollup, r=alexcrichton
Closes #14611 (std: Remove the as_utf16_p functions)
Closes #14694 (Num cleanup)
Closes #14760 (Add --color to test binary options)
Closes #14763 (std: Move dynamic_lib from std::unstable to std)
Closes #14766 (Add test for issue #13446)
Closes #14769 (collections: Add missing Default impls)
Closes #14773 (General nits)
Closes #14776 (rustdoc: Correctly classify enums/typedefs)
2014-06-09 21:57:09 -07:00
Alex Crichton 5ede96c2fd Test fixes from rollup 2014-06-09 21:52:37 -07:00
Alex Crichton 4fecc503ee rustrt: Fix invalid reads caught by valgrind
This is another case of #13246. The RAII lock wasn't being destroyed until after
the allocation was free'd due to destructor scheduling.

Closes #14784
2014-06-09 20:57:55 -07:00
Patrick Walton 1a381fa2d2 librustc: Use *signed* extension when converting enums to floats.
Previously, constants used unsigned extension, while non-constants used
signed extension. This unifies both paths to use signed extension.

If this breaks your code, take a deep breath, go for a walk, and
consider why you're relying on the sign extension semantics of
enum-to-float casts.

Closes #8230.

[breaking-change]
2014-06-09 20:55:38 -07:00
Renato Zannon 47b72e388d Remove & -> &mut transmute from TypedArena 2014-06-10 00:41:44 -03:00
Renato Zannon a535cfb1f0 Remove & -> &mut transmute from Arena 2014-06-10 00:29:42 -03:00
Patrick Walton f02b6f3a8b librustc: Implement sugar for the `FnMut` trait 2014-06-09 20:19:07 -07:00
Renato Zannon e0855bccd3 Add a test for nested Arena.alloc 2014-06-09 23:54:52 -03:00
bors 5bf5cc605f auto merge of #14694 : aochagavia/rust/num-cleanup, r=alexcrichton 2014-06-09 19:52:08 -07:00
Alex Crichton 24cbe38423 rustdoc: Correctly classify enums/typedefs
Both of these items are surfaced as a DefTy, so some extra logic was needed in
the decoder module to figure out whether one is actually an enum or whether it's
a typedef.

Closes #14757
2014-06-09 17:46:53 -07:00
Huon Wilson 14668f2791 std: adjust the TCP io doc example to work reliably.
Fixes #11576 by making the code never run (and hence never
pass when the test was marked `should_fail`).
2014-06-09 17:46:53 -07:00
Huon Wilson 05810604c8 native: add more info to the native unimplemented error.
This refers to green, which (AFAICT) has everything implemented. In
particular, this will help guide people to get working signal handling
via libgreen.
2014-06-09 17:46:53 -07:00
Tom Jakubowski d6a39419db collections: Add missing Default impls
Add Default impls for TreeMap, TreeSet, SmallIntMap, BitvSet, DList,
PriorityQueue, RingBuf, TrieMap, and TrieSet.
2014-06-09 17:46:53 -07:00
Piotr Jawniak 810ddfd611 Add test for issue #13446
Closes #13446
2014-06-09 17:46:53 -07:00
Brian Anderson 1635ef2a19 std: Move dynamic_lib from std::unstable to std
This leaves a deprecated reexport in place temporarily.

Closes #1457.
2014-06-09 17:46:53 -07:00
Steven Fackler 5eb4d19dc3 Add a --color flag to test binaries
It uses the same behavior as rustc's.
2014-06-09 17:46:27 -07:00
Adolfo Ochagavía 9faf5a3483 Cleanup bigint 2014-06-09 17:46:27 -07:00
Adolfo Ochagavía 1e931918c8 Moved integer trait and functions to submodule 2014-06-09 17:46:27 -07:00
Alex Crichton d42cc130f9 std: Remove the as_utf16_p functions
These functions are all much better expressed via RAII using the to_utf16()
method on strings. This refactoring also takes this opportunity to properly
handle when filenames aren't valid unicode when passed through to the windows
I/O layer by properly returning I/O errors.

All previous users of the `as_utf16_p` or `as_utf16_mut_p` functions will need
to convert their code to using `foo.to_utf16().append_one(0)` to get a
null-terminated utf16 string.

[breaking-change]
2014-06-09 17:46:27 -07:00
bors 907d961876 auto merge of #14590 : pcwalton/rust/overloaded-call, r=nick29581
gate.

This is part of unboxed closures.

r? @nick29581
2014-06-09 17:37:08 -07:00
bors 0ea7aa30cc auto merge of #14554 : kmcallister/rust/plugin_registrar, r=cmr
This implements the design in rust-lang/rfcs#86.  It shouldn't be merged until that RFC is accepted, but it would be great if somebody has time to review the code before then.
2014-06-09 15:52:07 -07:00
Keegan McAllister deecda6a94 Macro crates now depend on librustc 2014-06-09 14:29:30 -07:00
Keegan McAllister d43a948bb1 Document rustc::plugin 2014-06-09 14:29:30 -07:00
Keegan McAllister 7c674aceeb Add a test for deprecated phase(syntax) 2014-06-09 14:29:30 -07:00
Keegan McAllister 5084de3aaf Convert tests to use #[plugin_registrar] 2014-06-09 14:29:30 -07:00
Keegan McAllister aca0bac29f Convert libraries to use #[plugin_registrar] 2014-06-09 14:29:30 -07:00
Keegan McAllister ed41b71fbe Use phase(plugin) in tests 2014-06-09 14:29:30 -07:00
Keegan McAllister 84243ed6e1 Use phase(plugin) in other crates 2014-06-09 14:29:30 -07:00
Keegan McAllister ffb2f12ed8 Use phase(plugin) in bootstrap crates
Do this to avoid warnings on post-stage0 builds.
2014-06-09 14:29:30 -07:00
Keegan McAllister 6d15c6749c Implement #[plugin_registrar]
See RFC 22.

[breaking-change]
2014-06-09 14:29:29 -07:00
bors b6146e652a auto merge of #14775 : alexcrichton/rust/fix-master, r=brson
Apparently one of the linux bots doesn't have the USER variable defined, and
this fix will likely land more quickly than a fix to the bots.
2014-06-09 14:07:12 -07:00