This issue is for tracking/mentoring the steps needed to get a complete 0.3 branch together.
These issues are listed in roughly order of increasing difficulty, and in the most natural order for completion.
[ ] Remove futures-stable
[ ] Switch 0.3 branch to use task system from std. Now that the core task definitions have landed in std, the 0.3 branch should be switched over to use these definitions from nightly. That means:
Future trait itself[ ] Update futures-executor in 0.3. Right now, this crate is not part of the 0.3 branch, and needs to be updated:
0.3.0-alpha throughoutFuture should be updated to work with the new definitions (which means dealing with pinning, etc). E.g. the Spawn future.unsafe_* macros are really useful for working with pinned data. A good example of using these macros is the Map combinator.spawn functions will have to be updated to make the 0.3 revisions (with TaskObj etc)[ ] Reinstate the prelude
[ ] Get the futures top-level crate compiling
[ ] Get tests working
futures-core, then move to futures-util[ ] Reinstate the Future::join combinator
[ ] Reinstate the Future::select combinator
[ ] Reinstate the join_all, select_all, select_ok combinators
[ ] Reinstate the Future::shared combinator
[ ] Reinstate the missing Stream combinators
[ ] Reinstate with_flat_map
[ ] Figure out how to update the async/await macro code
cc @majorbreakfast @cramertj
Let's use this issue to coordinate remaining work. If you're interested in taking on any of these items, speak up here!
Btw, @cramertj estimates to be within a couple weeks of async notation landing in nightly; it'd be awesome to intercept that with an alpha release!
@Nemo157 btw, do you have any interest in taking any of these on? @cramertj and I are otherwise-occupied.
im going to try to do the first two things listed here - though ive noticed that the definitions in the crate has a lot more inherent methods and trait impls than the ones in std, how should i handle those without orphan rules getting in the way? a whole lot of extension traits?
Quick update:
std: @tinaun has provided a PR https://github.com/rust-lang-nursery/futures-rs/pull/1034 (open)@aturon can you update the checkbox?
My PR https://github.com/rust-lang-nursery/futures-rs/pull/1037 was merged! 馃帀
futures crate works nowfutures-core: Some exports were addedfutures-executors crate works nowLocalPool can ATM only execute Sendable futures because it uses TaskObj internally. Some kind of LocalTaskObj needs to be added to make it accept non-Send tasks. Maybe add LocalTaskObj that is ?Send inside futures-core and add a From<TaskObj> impl that uses transmute?stream::FuturesUnordered (for efficient single threaded polling of futures with support for wake up form other threads, used by LocalPool) was refactored:future-util crate works nowFanout. Its tests depend on not yet converted functionality)TryFutureExt::recover should be renamed to unwrap_or_else
Most helpful comment
My PR https://github.com/rust-lang-nursery/futures-rs/pull/1037 was merged! 馃帀
futurescrate works nowfutures-core: Some exports were addedfutures-executorscrate works nowLocalPoolcan ATM only executeSendable futures because it usesTaskObjinternally. Some kind ofLocalTaskObjneeds to be added to make it accept non-Sendtasks. Maybe addLocalTaskObjthat is?Sendinsidefutures-coreand add aFrom<TaskObj>impl that usestransmute?stream::FuturesUnordered(for efficient single threaded polling of futures with support for wake up form other threads, used byLocalPool) was refactored:future-utilcrate works nowFanout. Its tests depend on not yet converted functionality)TryFutureExt::recovershould be renamed tounwrap_or_else