I’ve been working on a new actor library called acto-rs.
This is in a very early phase (even if the version number is 0.5.0). The library is fairly un-documented, un-tested, full of unsafe code. May be the only part that I am comfortable with is the main API.
So this is about forming processing pipelines from components. The components can be connected by typed channels and they can have states. Nothing special so far. What is different from other similar solutions is:
- the components are categorised based on their connection topology to others. For example a
sinkcomponent has only one input and it doesn’t have outputs.
- the main goal of the library is low latency messaging between components. There are a few unusual measure there, like using bounded, non-blocking queues (lossyq) that has low overhead to the sender.
- the scheduler that runs the components, uses 1) fixed number of threads, 2) fixed scheduling rules to determine when to run a component. The components can be run on a periodic basis, or ASAP, or when a message arrives to it on one of its input channels, or when an external notification triggers it (for MIO integration).
I am looking for comments, ideas, feedback in general.
Thank you for your time if you look into it.
Best wishes, David