about summary refs log tree commit diff
path: root/src/libstd/task
AgeCommit message (Collapse)AuthorLines
2013-08-01modified local to include an implementation for try_unsafe_borrow::<Task> so ↵toddaaro-6/+6
that the log methods will work
2013-08-01Have linked failure tests run on the new scheduler instead of requiring ↵Ben Blum-79/+152
RUST_NEWRT to test.
2013-08-01A major refactoring that changes the way the runtime uses TLS. In thetoddaaro-30/+13
old design the TLS held the scheduler struct, and the scheduler struct held the active task. This posed all sorts of weird problems due to how we wanted to use the contents of TLS. The cleaner approach is to leave the active task in TLS and have the task hold the scheduler. To make this work out the scheduler has to run inside a regular task, and then once that is the case the context switching code is massively simplified, as instead of three possible paths there is only one. The logical flow is also easier to follow, as the scheduler struct acts somewhat like a "token" indicating what is active. These changes also necessitated changing a large number of runtime tests, and rewriting most of the runtime testing helpers. Polish level is "low", as I will very soon start on more scheduler changes that will require wiping the polish off. That being said there should be sufficient comments around anything complex to make this entirely respectable as a standalone commit.
2013-08-01std: Change `Times` trait to use `do` instead of `for`blake2-ppc-9/+9
Change the former repetition:: for 5.times { } to:: do 5.times { } .times() cannot be broken with `break` or `return` anymore; for those cases, use a numerical range loop instead.
2013-08-01std: Replace `for` with `do { .. }` expr where internal iterators are usedblake2-ppc-1/+2
2013-08-01auto merge of #8158 : bblum/rust/task-cleanup, r=brsonbors-55/+59
r? @brson
2013-08-01migrate many `for` loops to `foreach`Daniel Micay-6/+5
2013-07-31Move atomically to unstable::sync, and document what it actually does. Close ↵Ben Blum-53/+0
#7872.
2013-07-31Give tasks useful names. #2891Ben Blum-2/+59
2013-07-31auto merge of #8139 : brson/rust/rm-old-task-apis, r=pcwaltonbors-129/+5
This removes a bunch of options from the task builder interface that are irrelevant to the new scheduler and were generally unused anyway. It also bumps the stack size of new scheduler tasks so that there's enough room to run rustc and changes the interface to `Thread` to not implicitly join threads on destruction, but instead require an explicit, and mandatory, call to `join`.
2013-07-30std: Remove foreign_stack_size spawn option. Irrelevant to future FFI changesBrian Anderson-16/+3
2013-07-30std: Remove get_task function. UnusedBrian Anderson-15/+0
2013-07-30std: Remove CurrentScheduler spawn mode. UnusedBrian Anderson-13/+2
2013-07-30std: Remove ExistingScheduler spawn mode. UnusedBrian Anderson-17/+2
2013-07-30std: Remove PlatformThread spawn mode. ObsoleteBrian Anderson-22/+2
2013-07-30std: Remove ThreadPerTask spawn mode. UnimplementedBrian Anderson-6/+1
2013-07-30std: Remove ManualThreads spawn modeBrian Anderson-46/+1
2013-07-30Unkillable is not unsafe. Close #7832.Ben Blum-22/+24
2013-07-30(cleanup) Fix unimplemented message for kill_all in newsched.Ben Blum-2/+7
2013-07-27Change concurrency primitives to standard naming conventionsSteven Stewart-Gallus-6/+6
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-26Consolidate raw representations of rust valuesAlex Crichton-2/+2
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-22new snapshotDaniel Micay-238/+0
2013-07-20librustc: Remove `pub extern` and `priv extern` from the language.Patrick Walton-28/+28
Place `pub` or `priv` on individual items instead.
2013-07-20Use Option .take() or .take_unwrap() instead of util::replace where possibleblake2-ppc-6/+5
2013-07-20Add watched and indestructible spawn modes.Ben Blum-3/+120
2013-07-20Rename TCB to TaskgroupBen Blum-13/+14
2013-07-20Enable taskgroup code for newsched spawns.Ben Blum-3/+28
2013-07-20Fix linked failure tests to block forever instead of looping around yield.Ben Blum-29/+13
2013-07-20(cleanup) impl TaskSetBen Blum-39/+39
2013-07-20(cleanup) Don't check taskgroup generation monotonicity unless cfg(test).Ben Blum-16/+16
2013-07-20(cleanup) Modernize taskgroup code for the new borrow-checker.Ben Blum-61/+20
2013-07-20Replace *rust_task ptrs in taskgroup code with TaskHandle, for transitioning ↵Ben Blum-128/+202
to newsched killing.
2013-07-20Change the HOF context switchers to pass a BlockedTask instead of a ~Task.Ben Blum-1/+2
2013-07-20Implement KillHandle::kill() and friends (unkillable, atomically). Close #6377.Ben Blum-35/+77
2013-07-20Add kill::Death for task death services and use it in Task.Ben Blum-1/+1
2013-07-18auto merge of #7856 : brson/rust/no-thread-per-core, r=pcwaltonbors-21/+1
This doesn't make sense under the new scheduler.
2013-07-17librustc: Remove all uses of the `Copy` bound.Patrick Walton-2/+4
2013-07-17auto merge of #7841 : alexcrichton/rust/tls++, r=huonwbors-15/+69
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-16Add a `get_mut` method for TLSAlex Crichton-15/+69
Simulates borrow checks for '@mut' boxes, or at least it's the same idea.
2013-07-16Rename Option swap_unwrap to take_unwrap. Fixes Issue#7764Austin King-3/+3
2013-07-14Make TLS keys actually take up spaceAlex Crichton-9/+13
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-14Purge the last remnants of the old TLS apiAlex Crichton-4/+3
Closes #3273
2013-07-13Split mutable methods out of Set and MapSteven Fackler-1/+1
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-11auto merge of #7677 : alexcrichton/rust/tls-gc, r=pcwaltonbors-170/+462
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-11Fix a soundness problem with `get`Alex Crichton-31/+71
2013-07-11Work around stage0 to remove '@' requirements from TLSAlex Crichton-70/+289
2013-07-09std: Remove ThreadPerCore spawn mode. UnusedBrian Anderson-21/+1
2013-07-09Rename local_data methods/types for less keystrokesAlex Crichton-5/+5
2013-07-09Change TLS to almost be able to contain owned typesAlex Crichton-74/+138
2013-07-09Change the elements in the task-local map to be actual key-value pairsAlex Crichton-124/+104