Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

0.3 alpha burndown issue #1033

Closed
13 tasks
aturon opened this issue Jun 6, 2018 · 9 comments
Closed
13 tasks

0.3 alpha burndown issue #1033

aturon opened this issue Jun 6, 2018 · 9 comments

Comments

@aturon
Copy link
Member

aturon commented Jun 6, 2018

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 in std, 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 the Map combinator.
    • The various 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

    • Start with 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

    • 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

@aturon
Copy link
Member Author

aturon commented Jun 6, 2018

cc @MajorBreakfast @cramertj

@aturon
Copy link
Member Author

aturon commented Jun 6, 2018

Let's use this issue to coordinate remaining work. If you're interested in taking on any of these items, speak up here!

@aturon
Copy link
Member Author

aturon commented Jun 7, 2018

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!

@aturon
Copy link
Member Author

aturon commented Jun 7, 2018

@Nemo157 btw, do you have any interest in taking any of these on? @cramertj and I are otherwise-occupied.

@tinaun
Copy link
Contributor

tinaun commented Jun 7, 2018

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?

@MajorBreakfast
Copy link
Contributor

Quick update:

@MajorBreakfast
Copy link
Contributor

#1034 has been merged
@aturon can you update the checkbox?

@MajorBreakfast
Copy link
Contributor

MajorBreakfast commented Jun 23, 2018

My PR #1037 was merged! 🎉

  • the futures crate works now
    • the prelude is back again
    • all the stuff from the other crates is exported
    • the tests are disabled. They need to be ported
  • futures-core: Some exports were added
  • the futures-executors crate works now
    • The LocalPool 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?
    • Some tests were disabled because of this
    • Benchmarks still need to be ported
    • stream::FuturesUnordered (for efficient single threaded polling of futures with support for wake up form other threads, used by LocalPool) was refactored:
      • it was made pinning-aware
      • the file was split up into submodules
      • many identifiers were renamed
      • the algorithm works as before
  • the future-util crate works now
    • The tests and doc tests run (except for Fanout. Its tests depend on not yet converted functionality)
    • Documentation remains outdated
    • Some stuff needs to be renamed now that futures don't have an associated error type anymore, e.g. TryFutureExt::recover should be renamed to unwrap_or_else
    • Some functionality still needs to be ported
    • Benchmarks still need to be ported

@aturon
Copy link
Member Author

aturon commented Jul 24, 2018

This is done! https://rust-lang-nursery.github.io/futures-rs/blog/2018/07/19/futures-0.3.0-alpha.1.html

@aturon aturon closed this as completed Jul 24, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants