Commit Graph

73 Commits

Author SHA1 Message Date
Ben Blum fa8102ab4a Unkillable is not unsafe. Close #7832. 2013-07-30 13:19:25 -04:00
Ben Blum 9675cd311a (cleanup) Fix unimplemented message for kill_all in newsched. 2013-07-30 13:19:25 -04:00
Steven Stewart-Gallus d0b7515aed Change concurrency primitives to standard naming conventions
To be more specific:

`UPPERCASETYPE` was changed to `UppercaseType`
`type_new` was changed to `Type::new`
`type_function(value)` was changed to `value.method()`
2013-07-27 22:06:29 -07:00
Alex Crichton 5aaaca0c6a Consolidate raw representations of rust values
This moves the raw struct layout of closures, vectors, boxes, and strings into a
new `unstable::raw` module. This is meant to be a centralized location to find
information for the layout of these values.

As safe method, `repr`, is provided to convert a rust value to its raw
representation. Unsafe methods to convert back are not provided because they are
rarely used and too numerous to write an implementation for each (not much of a
common pattern).
2013-07-26 09:53:03 -07:00
Daniel Micay ed67cdb73c new snapshot 2013-07-22 01:09:48 -04:00
Patrick Walton 06594ed96b librustc: Remove pub extern and priv extern from the language.
Place `pub` or `priv` on individual items instead.
2013-07-20 17:39:38 -07:00
blake2-ppc 980646a450 Use Option .take() or .take_unwrap() instead of util::replace where possible 2013-07-20 05:12:05 -04:00
Ben Blum 7ad7911222 Add watched and indestructible spawn modes. 2013-07-20 05:12:04 -04:00
Ben Blum 2183145850 Rename TCB to Taskgroup 2013-07-20 05:12:04 -04:00
Ben Blum f3c79c4026 Enable taskgroup code for newsched spawns. 2013-07-20 05:12:03 -04:00
Ben Blum 0e1be5ff9e Fix linked failure tests to block forever instead of looping around yield. 2013-07-20 05:08:58 -04:00
Ben Blum 728edb5af6 (cleanup) impl TaskSet 2013-07-20 05:08:58 -04:00
Ben Blum 6d9184609a (cleanup) Don't check taskgroup generation monotonicity unless cfg(test). 2013-07-20 05:08:58 -04:00
Ben Blum 87bbcb579a (cleanup) Modernize taskgroup code for the new borrow-checker. 2013-07-20 05:08:58 -04:00
Ben Blum 9bbec651df Replace *rust_task ptrs in taskgroup code with TaskHandle, for transitioning to newsched killing. 2013-07-20 05:08:57 -04:00
Ben Blum 9ad1997549 Change the HOF context switchers to pass a BlockedTask instead of a ~Task. 2013-07-20 05:08:57 -04:00
Ben Blum 629f6e8d68 Implement KillHandle::kill() and friends (unkillable, atomically). Close #6377. 2013-07-20 05:08:56 -04:00
Ben Blum 6882508b6f Add kill::Death for task death services and use it in Task. 2013-07-20 05:08:56 -04:00
bors b70c045f38 auto merge of #7856 : brson/rust/no-thread-per-core, r=pcwalton
This doesn't make sense under the new scheduler.
2013-07-18 19:10:41 -07:00
Patrick Walton e20549ff19 librustc: Remove all uses of the Copy bound. 2013-07-17 14:57:53 -07:00
bors c032dddf6f auto merge of #7841 : alexcrichton/rust/tls++, r=huonw
Simulates borrow checks for '@mut' boxes, or at least it's the same idea. This allows you to store owned values, but mutate them while they're owned by TLS.

This should remove the necessity for a `pop`/`set` pattern to mutate data structures in TLS.
2013-07-17 02:37:43 -07:00
Alex Crichton 948a62401e Add a get_mut method for TLS
Simulates borrow checks for '@mut' boxes, or at least it's the same idea.
2013-07-16 20:33:04 -07:00
Austin King 712ac836c6 Rename Option swap_unwrap to take_unwrap. Fixes Issue#7764 2013-07-16 12:47:01 -07:00
Alex Crichton 9fd2ac7428 Make TLS keys actually take up space
If the TLS key is 0-sized, then the linux linker is apparently smart enough to
put everything at the same pointer. OSX on the other hand, will reserve some
space for all of them. To get around this, the TLS key now actuall consumes
space to ensure that it gets a unique pointer
2013-07-14 10:15:07 -07:00
Alex Crichton e3211fa1f1 Purge the last remnants of the old TLS api
Closes #3273
2013-07-14 09:29:12 -07:00
Steven Fackler 6b37b5bab7 Split mutable methods out of Set and Map
Fixes most of #4989. I didn't add Persistent{Set,Map} since the only
persistent data structure is fun_treemap and its functionality is
currently too limited to build a trait out of.
2013-07-13 19:44:36 -07:00
bors 07183ea6e7 auto merge of #7677 : alexcrichton/rust/tls-gc, r=pcwalton
cc #6004 and #3273

This is a rewrite of TLS to get towards not requiring `@` when using task local storage. Most of the rewrite is straightforward, although there are two caveats:

1. Changing `local_set` to not require `@` is blocked on #7673
2. The code in `local_pop` is some of the most unsafe code I've written. A second set of eyes should definitely scrutinize it...

The public-facing interface currently hasn't changed, although it will have to change because `local_data::get` cannot return `Option<T>`, nor can it return `Option<&T>` (the lifetime isn't known). This will have to be changed to be given a closure which yield `&T` (or as an Option). I didn't do this part of the api rewrite in this pull request as I figured that it could wait until when `@` is fully removed.

This also doesn't deal with the issue of using something other than functions as keys, but I'm looking into using static slices (as mentioned in the issues).
2013-07-11 19:52:37 -07:00
Alex Crichton 11c63eaad2 Fix a soundness problem with get 2013-07-11 00:22:08 -07:00
Alex Crichton e3fb7062aa Work around stage0 to remove '@' requirements from TLS 2013-07-11 00:21:26 -07:00
Brian Anderson 1dbcc8b188 std: Remove ThreadPerCore spawn mode. Unused 2013-07-09 17:45:06 -07:00
Alex Crichton cb5b9a477c Rename local_data methods/types for less keystrokes 2013-07-09 17:39:49 -07:00
Alex Crichton 5c3a2e7eeb Change TLS to almost be able to contain owned types 2013-07-09 17:31:01 -07:00
Alex Crichton 692a22e69d Change the elements in the task-local map to be actual key-value pairs 2013-07-09 17:31:01 -07:00
Alex Crichton a89af1fa4c Use purely an owned vector for storing TLS data 2013-07-09 17:31:01 -07:00
Brian Anderson 29c9443d85 std: Add a yield implementation for newsched 2013-07-08 18:06:17 -07:00
Brian Anderson fae3336769 Merge remote-tracking branch 'mozilla/master'
Conflicts:
	src/libextra/test.rs
	src/libstd/rt/global_heap.rs
	src/libstd/unstable/lang.rs
	src/libstd/vec.rs
2013-07-08 16:29:54 -07:00
Daniel Micay 641aec7407 remove some method resolve workarounds 2013-07-07 19:51:13 -04:00
Brian Anderson 1098d6980b Merge remote-tracking branch 'mozilla/master'
Conflicts:
	src/libextra/test.rs
	src/libstd/at_vec.rs
	src/libstd/cleanup.rs
	src/libstd/rt/comm.rs
	src/libstd/rt/global_heap.rs
	src/libstd/task/spawn.rs
	src/libstd/unstable/lang.rs
	src/libstd/vec.rs
	src/rt/rustrt.def.in
	src/test/run-pass/extern-pub.rs
2013-07-03 14:49:13 -07:00
toddaaro 5cfad4b6de Refactored the runtime to view coroutines as a component of tasks, instead of tasks as a component of coroutines. 2013-07-01 16:14:56 -07:00
Alex Crichton b29c368674 Removing a lot of usage of '&const' 2013-06-29 08:35:48 -07:00
Ben Blum ff4ab9e147 'Borrow' stack closures rather than copying them (e.g., "|x|f(x)"), in prep for making them noncopyable. 2013-06-29 04:39:34 -04:00
Patrick Walton f6a27cbda2 libextra: Fix even more merge fallout. 2013-06-28 10:47:56 -04:00
Patrick Walton f9b54541ee librustc: Disallow "mut" from distributing over bindings.
This is the backwards-incompatible part of per-binding-site "mut".
2013-06-28 10:44:15 -04:00
Patrick Walton 1c0aa78481 librustc: Change "Owned" to "Send" everywhere 2013-06-28 10:44:15 -04:00
Huon Wilson 366ca44cc8 std: silence some test warnings. 2013-06-28 01:45:24 +10:00
bors 09b4525f84 auto merge of #7113 : alexcrichton/rust/banned-warnings, r=cmr
Reopening of #7031, Closes #6963

I imagine though that this will bounce in bors once or twice... Because attributes can't be cfg(stage0)'d off, there's temporarily a lot of new stage0/stage1+ code.
2013-06-26 00:56:04 -07:00
bors 22408d9ad5 auto merge of #7269 : luqmana/rust/drop, r=thestinger
Finally rename finalize to drop.
Closes #4332.
2013-06-25 20:29:06 -07:00
Luqman Aden ca2966c6d0 Change finalize -> drop. 2013-06-25 21:14:39 -04:00
Alex Crichton c109bed15b Deny common lints by default for lib{std,extra} 2013-06-25 17:39:43 -07:00
Daniel Micay e67c48a591 remove each from vec, HashMap and HashSet 2013-06-25 16:28:02 -04:00