Description
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
- This should no longer be relevant
-
Switch 0.3 branch to use task system from
std
. Now that the core task definitions have landed instd
, the 0.3 branch should be switched over to use these definitions from nightly. That means:- Removing the various task/executor definitions in the futures crate and replacing them with re-exports
- Similarly for the
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:- Its Cargo.toml should be updated to use
0.3.0-alpha
throughout - All uses of
Future
should be updated to work with the new definitions (which means dealing with pinning, etc). E.g. the Spawn future. - The
unsafe_*
macros are really useful for working with pinned data. A good example of using these macros is theMap
combinator. - The various
spawn
functions will have to be updated to make the 0.3 revisions (withTaskObj
etc)
- Its Cargo.toml should be updated to use
-
Reinstate the prelude
-
Get the
futures
top-level crate compiling -
Get tests working
- Start with
futures-core
, then move tofutures-util
- Start with
-
Reinstate the
Future::join
combinator -
Reinstate the
Future::select
combinator -
Reinstate the
join_all
,select_all
,select_ok
combinators- This will require some design work to re-think these combinators given our new error handling approach -- i.e. how to divide with the ones here
-
Reinstate the
Future::shared
combinator -
Reinstate the missing
Stream
combinators -
Reinstate
with_flat_map
-
Figure out how to update the async/await macro code