xtra icon indicating copy to clipboard operation
xtra copied to clipboard

Roadmap to 0.6

Open thomaseizinger opened this issue 3 years ago • 3 comments

Lots of good PRs have been merged into master since the last release. I'd like to make an effort to finalise the public API so we can push a new release out and continue to iterate on internals in future patch releases.

There are a few more decisions that need to be made in regards to the public API:

  • https://github.com/Restioson/xtra/pull/133
    • This PR introduces a Mailbox type and makes Context short-lived. I think that part is non-controversial.
    • This PR also moves run, select, join, yield_once and tick away from Context into free functions at the crate root. This change is yet to be agreed on.
  • https://github.com/Restioson/xtra/issues/136
  • https://github.com/Restioson/xtra/issues/119
  • https://github.com/Restioson/xtra/issues/134
  • Technically, https://github.com/Restioson/xtra/issues/132 would also be a breaking change, although only noticable for users that take the future and store it somewhere.

thomaseizinger avatar Jul 16 '22 20:07 thomaseizinger

Technically speaking, could select, join, yield_once, and run all go outside of the main crate? Where do we want to draw the line on these?

Personally, I think run is probably useful to have in the main crate itself, whereas the others I wouldn't mind moving out, except that run will most likely be implemented using yield_once.

Restioson avatar Jul 17 '22 16:07 Restioson

I've gone ahead and added all the mentioned issues to https://github.com/Restioson/xtra/milestone/4, by the way!

Restioson avatar Jul 17 '22 16:07 Restioson

Technically speaking, could select, join, yield_once, and run all go outside of the main crate? Where do we want to draw the line on these?

Personally, I think run is probably useful to have in the main crate itself, whereas the others I wouldn't mind moving out, except that run will most likely be implemented using yield_once.

It is a tough question. It depends on what we define as the "main" crate :D

If I were to split things now, I'd probably create an xtra_core crate with:

  • The channel implementation
  • Address,
  • Mailbox
  • Actor trait
  • Context type

Anything else: run, join, select, yield_one, scoped, spawn etc would be in xtra or an extension crate re-exported from xtra.

thomaseizinger avatar Jul 17 '22 16:07 thomaseizinger

All of the above issues are resolved and we have a milestone for the remaining so this can be closed!

thomaseizinger avatar Sep 15 '22 03:09 thomaseizinger