Skip to content

Commit

Permalink
update README + Changelog
Browse files Browse the repository at this point in the history
  • Loading branch information
JohnMurray committed May 16, 2024
1 parent c25c495 commit e9d5132
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 38 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@
+ Support `ToMessage` in actor-spawn methods - #62
+ `Context::send` now sends `ToMessage` objects and `Context::send_message` sends `Box<Message>` - #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

Expand Down
72 changes: 34 additions & 38 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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

Expand All @@ -45,50 +45,46 @@ $ 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

The project is currently licensed under the [GNU GPL v3][license] license. My intention is to
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

0 comments on commit e9d5132

Please sign in to comment.