Dr Petros Papapanagiotou

Head of Development - Tech Consultant

Cats-Actors

Cats-Actors 🐱 is a functional programming-based actor system derived from AkkaAkka v2.6.21.

It is available under the Apache 2.0 License on GitHub: https://github.com/suprnation/cats-actors

Description

The following text taken from the project README (original author: Mark Galea) introduces Cats-Actors, its main goal and benefits.

Introduction

Actors are the fundamental units of computation in the Actor Model, encapsulating state and behavior. They interact exclusively through asynchronous message passing, ensuring their state is accessed sequentially.

How Actors Communicate

Actor Lifecycle

Supervision and Fault Tolerance

For more details, refer to the Wikipedia page on the Actor Model.

Cats-Actors is a library designed to help developers build highly concurrent applications using functional programming principles. It is a fork of AkkaAkka 2.6.x, created before the Akka project adopted the Business Source License. The library has been modified to use modern functional programming tools like CatsCats and Cats-Effect, making it easier to write safe, efficient, and scalable code. Cats-Actors allows you to manage multiple tasks simultaneously without the complexity of traditional threading, making it ideal for applications that need to handle a lot of operations at once.

Why Should I Use Cats-Actors?

Cats-Actors leverages functional programming and the CatsCats and Cats-Effect libraries for a more efficient, maintainable, and expressive framework for building concurrent applications.

Contribution

Since Akka’s license change, I have been eager to contribute to an actor library that takes advantage of the elegance and robustness of functional programming. I am a top contributor to Cats-Actors, which is actively used to power backend components in production at SuprNation.

So far my contributions have been focused on specific core features, such as the ask pattern, the Finite State Machines (FSMs) and the test kit.

What sets Cats-Actors apart from the traditional Akka approach is its commitment to a purely functional paradigm. This provides not only a safer and more predictable architecture, but also stronger guarantees around immutability and referential transparency, leading to fewer bugs and easier reasoning about code. The result? Greater concurrency and fault tolerance, which we leverage to drive real value in production.

Being part of the Scala ecosystem and contributing to projects that advance the use of FP in real-world applications is something I am truly passionate about.