diff --git a/CHANGELOG.md b/CHANGELOG.md index 7569d6e..f0e83b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ + Support `ToMessage` in actor-spawn methods - #62 + `Context::send` now sends `ToMessage` objects and `Context::send_message` sends `Box` - #66 + `Message` support for `ActorAddress` so they can be shared between actors - #67 + + Added send/receive macros for internal channel operations + + Implemented a heirarchical shutdown system + + Added `ACK` messages for message delivery confirmation + + Added `ActorSpawnHandle` for newly created actors ## 0.1.2 through 0.2.0 diff --git a/README.md b/README.md index 1df14ad..12e556c 100644 --- a/README.md +++ b/README.md @@ -6,22 +6,22 @@ [![Decision log][decision-log-badge]][decision-log-url] [![Change Log][change-log-badge]][change-log-url] - [crates-badge]: https://img.shields.io/crates/v/busan.svg - [crates-url]: https://crates.io/crates/busan - [actions-badge]: https://github.com/JohnMurray/busan/actions/workflows/ci.yaml/badge.svg - [actions-url]: https://github.com/JohnMurray/busan/actions/workflows/ci.yaml - [gpl-badge]: https://img.shields.io/badge/license-GPL-blue.svg - [gpl-url]: https://github.com/JohnMurray/busan/blob/main/LICENSE - [decision-log-badge]: https://img.shields.io/badge/%F0%9F%93%83-decision%20log-blue - [decision-log-url]: https://github.com/JohnMurray/busan/tree/main/decisions - [change-log-badge]: https://img.shields.io/badge/%F0%9F%93%83-change%20log-blue - [change-log-url]: https://github.com/JohnMurray/busan/blob/main/CHANGELOG.md +[crates-badge]: https://img.shields.io/crates/v/busan.svg +[crates-url]: https://crates.io/crates/busan +[actions-badge]: https://github.com/JohnMurray/busan/actions/workflows/ci.yaml/badge.svg +[actions-url]: https://github.com/JohnMurray/busan/actions/workflows/ci.yaml +[gpl-badge]: https://img.shields.io/badge/license-GPL-blue.svg +[gpl-url]: https://github.com/JohnMurray/busan/blob/main/LICENSE +[decision-log-badge]: https://img.shields.io/badge/%F0%9F%93%83-decision%20log-blue +[decision-log-url]: https://github.com/JohnMurray/busan/tree/main/decisions +[change-log-badge]: https://img.shields.io/badge/%F0%9F%93%83-change%20log-blue +[change-log-url]: https://github.com/JohnMurray/busan/blob/main/CHANGELOG.md Busan is an [actor][wikipedia_actor] implementation for Rust that is currently under heavy development and is experimental in nature. It is not yet ready for production use, although -it usable to build hobby/personal projects on. +it usable to build hobby/personal projects on (with a lot of effort). - [wikipedia_actor]: https://en.wikipedia.org/wiki/Actor_model +[wikipedia_actor]: https://en.wikipedia.org/wiki/Actor_model ## Documentation @@ -32,8 +32,8 @@ source of documentation will be found in the rustdocs at [docs.rs][docs-rs-busan If you are interested in additional context behind the project or technical decisions, then the [decision logs][decision-log-url] may be of particular interest. - [docs-rs-busan]: https://docs.rs/busan/latest/busan/ - [examples-url]: https://github.com/JohnMurray/busan/blob/main/examples/ +[docs-rs-busan]: https://docs.rs/busan/latest/busan/ +[examples-url]: https://github.com/JohnMurray/busan/blob/main/examples/ ### Examples @@ -45,45 +45,41 @@ $ cargo run -p examples_ping_pong $ cargo run -p examples_hello_world # Trick the cargo run command into listing our example workspaces -$ cargo run -p 2>&1 | grep 'examples_' +$ cargo run -p 2>&1 | grep 'examples_' ``` ## Roadmap The roadmap is constantly evolving, so I don't expect plans to be super detailed outside -the short-term milestones. I'm currently using GitHub's Project feature to organize my work, -which is publicly viewable [here][github_project] and the current milestone should be -up-to-date. Generally my plan looks like: +the short-term milestones. I'm currently tracking my work in [NOTES.md][notes] and is +constantly evolving. - + ~~[`0.2.0`][m1] - Spawn actors, send and receive messages~~ (shipped) - + [`0.3.0`][m2] - Ergonomics, observability, test support, docs - + [`0.4.0`][m3] - Actor utilities - routers, timers, ask-pattern, behaviors, etc. - + `0.5.0` - Core features - lifecycle management, actor/work scheduler, etc. +- ~~[`0.2.0`][m1] - Spawn actors, send and receive messages~~ (shipped) +- `0.3.0` - Core features - lifecycle management, actor/work scheduler, etc. +- `0.4.0` - Ergonomics & Utilities (routers, timers, behaviors, etc) +- `0.4.0` - Observability, test support, docs - [m1]: https://github.com/JohnMurray/busan/milestone/1 - [m2]: https://github.com/JohnMurray/busan/milestone/2 - [m3]: https://github.com/JohnMurray/busan/milestone/3 +[m1]: https://github.com/JohnMurray/busan/milestone/1 +[notes]: https://github.com/JohnMurray/busan/blob/main/NOTES.md Beyond this, I don't have any defined plans. Things on my mind include: - + Remote facilities - remote routing/messaging, clustering, remote actor spawning, etc. - + gRPC bridging (exposing a gRPC interface to communicate with actors) - + Network bridging - a generic take on gRPC bridging that allows for arbitrary network protocols - + DSL for one-off actor systems - + State snapshotting/journaling, actor migration - + Async IO and/or async/await support and/or Tower integration +- Remote facilities - remote routing/messaging, clustering, remote actor spawning, etc. +- gRPC bridging (exposing a gRPC interface to communicate with actors) +- Network bridging - a generic take on gRPC bridging that allows for arbitrary network protocols +- DSL for one-off actor systems +- State snapshotting/journaling, actor migration +- Async IO and/or async/await support and/or Tower integration It's not clear how quickly progress will be made against these milestones and ideas as this is also a personal experiment in how I think about and manage my open-source projects. - [github_project]: https://github.com/users/JohnMurray/projects/1/views/1 - ## Contributing -I'm not currently considering code contributions at the moment as the project is still in its infancy, -and I'm still working out the design. However, I am open to suggestions and feedback. If you have any -ideas or suggestions, please start a discussion. I'd also be interested in hearing about -real-world use-cases that are not well-supported by other Rust-based actor implementations. +I'm not currently considering code contributions at the moment as the project is still in its +infancy, and I'm still working out the design. However, I am open to suggestions and feedback. If +you have any ideas or suggestions, please start a discussion. I'd also be interested in hearing +about real-world use-cases that are not well-supported by other Rust-based actor implementations. ## Licensing @@ -91,4 +87,4 @@ The project is currently licensed under the [GNU GPL v3][license] license. My in ensure all early work and development on this project is kept open. I may revisit this if there is significant commercial interest. - [license]: https://github.com/JohnMurray/busan/blob/main/LICENSE +[license]: https://github.com/JohnMurray/busan/blob/main/LICENSE