Sento is an actor framework for Common Lisp featuring actors, agents, FSMs, and an event stream for building reactive, concurrent systems.
Sento is an actor framework for Common Lisp that provides a message-passing model for building reactive, concurrent, and event-driven systems. It solves the challenge of managing parallel computations and state in a structured way, offering actors, agents, finite-state machines, and an event stream as core abstractions.
Common Lisp developers building systems that require high concurrency, parallel processing, or event-driven architectures, such as automation tools, network services, or real-time applications.
Developers choose Sento for its comprehensive feature set—including agents for state management, FSMs for complex logic, and remoting for distributed systems—all within a familiar Common Lisp ecosystem, avoiding the need to adopt external runtime environments like the JVM or BEAM.
Sento - Actor framework featuring actors and agents for easy access to state and asynchronous operations.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports actors with ask/tell operations, agents for state management, and finite-state machines, providing a full suite for building concurrent systems, as detailed in the README's core features.
Includes an EventStream for publish-subscribe messaging, enabling decoupled, reactive system design similar to an event bus, with examples for subscription and publishing.
Remoting feature allows actor systems to communicate over networks with TLS support, facilitating distributed applications using remote actor references and URIs.
Tasks API simplifies asynchronous and concurrent operations, with utilities like mapping and streaming over collections, using configurable dispatchers for optimized throughput.
Does not enforce immutability; developers must manually ensure thread safety when modifying actor state, increasing the risk of data races if not handled carefully in receive functions.
Benchmarks show inconsistent performance across Lisp implementations, with SBCL struggling in synchronous ask scenarios using shared dispatchers, and Clasp being significantly slower in tests.
Requires deep understanding of actor model concepts and careful handling of asynchronous operations, such as capturing *sender* in lexical contexts for callbacks, which can lead to subtle bugs.
Sento is an open-source alternative to the following products:
Erlang/OTP is a set of Erlang libraries and design principles for building robust, concurrent applications, including the Erlang runtime system.
Akka is a toolkit and runtime for building highly concurrent, distributed, and resilient message-driven applications on the Java Virtual Machine (JVM).