Hi, here!
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!
GitHub - otavia-projects/otavia: Your shiny new IO & Actor programming model!
Introduction
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
Features at a Glance
- 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
ActorSystem
is also seen as a container forActor
instances, and developers can type-safely inject dependentActor
s at compile time. - Powerful IO Stack: The IO stack is ported from Netty, but support AIO and file channel.
- async/await: Implement
async/await
syntaxes based on the CPS (Continuation Passing Style)
usingScala 3
metaprogramming tools. - Simple threading model: The threading model of the
otavia
runtime 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.