src/sync/condvar.rs (7 lines): - line 37: // TODO Check if we can avoid using epochs now that we have vector clocks. - line 38: // TODO See [Issue 39](https://github.com/awslabs/shuttle/issues/39) - line 176: // TODO The context switch involved here might be redundant? The scheduler implicitly chose - line 177: // TODO this thread to win the lock when it ran us after the context switch above. - line 199: // TODO support the timeout case -- this method never times out - line 218: // TODO support the timeout case -- this method never times out - line 287: // TODO we shouldn't need to do this, but RefCell is not Send src/sync/rwlock.rs (6 lines): - line 169: // TODO should always be in the waiters? - line 206: // TODO a bit of a bummer that we have to do this (it would be cleaner if those threads - line 207: // TODO never become unblocked), but might need to track more state to avoid this. - line 253: // TODO we shouldn't need to do this, but RefCell is not Send, and anything we put within a RwLock - line 254: // TODO needs to be Send. - line 258: // TODO this is the RefCell biting us again src/sync/barrier.rs (6 lines): - line 61: // TODO The documentation for `Barrier` states that - line 62: // TODO A single (arbitrary) thread will receive a `BarrierWaitResult` that returns true - line 63: // TODO from `BarrierWaitResult::is_leader()` when returning from this function - line 64: // TODO Currently, the first waiter becomes the leader. We should use Shuttle's nondeterministic - line 65: // TODO choice to generalize this so that _any_ participant could become the leader. - line 115: // TODO we shouldn't need to do this, but RefCell is not Send, and Barrier needs to be Send. src/thread.rs (5 lines): - line 12: // TODO Should we add an execution id here, like Loom does? - line 60: // TODO Check if it's worth avoiding the call to `ExecutionState::config()` if we're going - line 61: // TODO to use an existing continuation from the pool. - line 124: // TODO can we soundly skip the yield if the target thread has already finished? - line 173: // TODO: Implement park(), unpark() src/scheduler/dfs.rs (4 lines): - line 43: // TODO probably should memoize this -- at each iteration, just need to know the largest i - line 44: // TODO such that levels[i].1 == true, which is the place we'll make a change - line 67: // TODO should we respect `is_yielding` by not allowing `current` to be scheduled next? That - line 68: // TODO would be unsound but perhaps useful for validating some code src/scheduler/pct.rs (3 lines): - line 108: // TODO is this really correct? need to think about it more - line 112: // TODO in the paper, the i'th change point gets priority i, whereas this gives d-i. - line 113: // TODO I don't think this matters, because the change points are randomized. src/sync/mutex.rs (3 lines): - line 124: // TODO we shouldn't need to do this, but RefCell is not Send, and anything we put within a Mutex - line 125: // TODO needs to be Send. - line 129: // TODO this is the RefCell biting us again src/runtime/thread/continuation.rs (3 lines): - line 4: // TODO: upgrade to the new scoped generator API - line 189: // TODO add a check to ensure that if we recycled a continuation, its - line 190: // TODO allocated stack size is at least the requested `stack_size` src/asynch.rs (3 lines): - line 40: // TODO implement (only tokio provides this) - line 46: // TODO: need to work out all the error cases here - line 114: // TODO: thread locals and futures don't mix well right now. each task gets its own src/sync/mpsc.rs (2 lines): - line 352: // TODO We use this workaround in several places in Shuttle. Maybe there's a cleaner solution. - line 373: // TODO support the timeout case -- this method never times out src/runtime/runner.rs (2 lines): - line 46: // TODO it would be a lot nicer if this were a more generic "context" thing that we passed - line 47: // TODO around explicitly rather than being a thread local src/sync/atomic/mod.rs (1 line): - line 136: // TODO Check that the argument above is sound src/sync/atomic/bool.rs (1 line): - line 101: // TODO actually produce spurious failures src/sync/atomic/ptr.rs (1 line): - line 106: // TODO actually produce spurious failures src/lib.rs (1 line): - line 286: // TODO consider removing this -- round robin scheduling is never what you want. src/sync/atomic/int.rs (1 line): - line 113: // TODO actually produce spurious failures src/runtime/task/mod.rs (1 line): - line 280: // TODO this probably won't work well with large numbers of tasks -- maybe a BitVec? src/sync/mod.rs (1 line): - line 24: // TODO implement true support for `Arc` src/scheduler/mod.rs (1 line): - line 23: // TODO would be nice to make this generic in the type of `seed`, but for now all our seeds are u64s