otavia

otavia

Your shiny new IO & Actor programming model!

GitHub GitHub Pages Static Badge Static Badge Unit Tests Maven Central GitHub commit activity GitHub Release Date - Published_At GitHub code size in bytes

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:

You can also learn about other modules in otavia through other documentation on this site.

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 a set of 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.

Ecosystem

The IO stack of otavia is ported from Netty. In order to make the IO tasks work better with the Actor model, otavia is not fully compatible with Netty. Happily, most of the application-layer network protocol codecs in the Netty ecosystem can be easily ported to otavia, so we maintain this ecosystem project to port various application-layer network protocol codecs from Netty and Eclipse Vert.x.

Contributes

Any contributions are welcome!