This project is still in the incubation stage, it took me about a year to complete the initial design and I currently have a working prototype. I am eager to receive your ideas, suggestions and even criticisms to improve the design of this project!
otavia is an IO and Actor programming model power by Scala 3, it provides a toolkit to make writing high-performance concurrent programs more easily.
You can get a quick overview of the basic usage and core design of
otavia in the following documentation:
More document can be found at website
- Full-Link Asynchronous：Everything is asynchronous, no blocking, no thread suspending.
- Forget Threads, Forget Locks：You will no longer be plagued by multithreading problems; everything you write runs in a single thread!
- Simpler Concurrent: Actors and Channel let you build systems that scale up, using the resources of a server more efficiently, and out.
- Resilient by Design: Building on the principles of The Reactive Manifesto Otavia allows you to write systems that self-heal and stay responsive in the face of failures.
- High Performance: build Millions actor instance and send many billion message in seconds.
- Type Safe: Message send between actor is type safe in compile time.
- Zero-Cost Ask-Pattern: Send ask message and get reply message like call a method, but zero-cost.
- DI of Actor: An
ActorSystemis also seen as a container for
Actorinstances, and developers can type-safely inject dependent
Actors at compile time.
- Powerful IO Stack: The IO stack is ported from Netty, but support AIO and file channel.
- async/await: Implement
async/awaitsyntaxes based on the CPS (Continuation Passing Style)
Scala 3metaprogramming tools.
- Simple threading model: The threading model of the
otaviaruntime is very simple and efficient, allowing you to maximize the utilization of your system’s CPU!
- Zero-Deps: The core modules does not depend on any third-party packages.
- Open Ecosystem: Otavia provides a module mechanism that allows users to easily use third-party module libraries.