Introducing otavia: Your shiny new IO & Actor programming model!

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 for Actor instances, 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/await syntaxes based on the CPS (Continuation Passing Style)
    using Scala 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.
2 Likes

Interesting! Could you, if relevant, summarize some important similarities and differences between Otavia and Akka/Pekko? I think it would be good to have contrasting info about open source alternatives in the Otavia docs, to help understand the sweet-spot of this lib.

1 Like

Very good suggestion, next I’ll add a comparison document between otavia and AKKA. AKKA is a great project, while otavia in general focuses more on a lightweight Actor model and a better IO model (ported from Netty).

Since real programming requires us to handle a lot of IO tasks, porting the IO model from Netty allows us to port a lot of application-layer protocol coding and decoding code from the Netty ecosystem. Perhaps this will expand the boundaries of the Actor model even more!

Wellcome to the Discussions of Otavia!

GitHub - Discussions

2 Likes

Thank you for your interest in otavia. This is a frequently asked question, so I maintain a thread dedicated to it. You are welcome to participate!

Discussions - Similarities and Differences between Otavia and Akka/Pekko

1 Like