6 releases

0.2.1 May 6, 2023
0.2.0 Apr 5, 2023
0.1.3 Jan 21, 2023
0.1.0 Dec 23, 2022

#866 in Concurrency

Download history 13/week @ 2024-02-19 7/week @ 2024-02-26 71/week @ 2024-04-01

71 downloads per month

GPL-3.0 license

61KB
996 lines

busan (부산)

Crates.io Build Status GNU GPL v3 licensed Decision log Change Log

Busan is an 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.

Documentation

The project lacks comprehensive documentation at this time, however I am experimenting with decision logs as a way to document and communicate the major design decisions that were made.

Of course the source code is also lightly documented and available at docs.rs and there are fully functional examples available in the examples folder.

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 and the current milestone should be up-to-date. Generally my plan looks like:

  • 0.2.0 - Spawn actors, send and receive messages (shipped)
  • 0.3.0 - Ergonomics, observability, test support, docs
  • 0.4.0 - Actor utilities - routers, timers, ask-pattern, behaviors, etc.
  • 0.5.0 - Core features - lifecycle management, actor/work scheduler, etc.

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

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.

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.

Dependencies

~2.3–4.5MB
~80K SLoC