I have a week-end hobby project. This is a port of my Aivika simulation library written in Haskell. The port is written in pure Rust already. I called it Theta. It mimics the most important functions of the sequential Aivika library. I’m also the author of the Aivika library.
Now I’m curios to know whether anybody is interested in using the discrete event simulation library written in Rust. In my very simple tests Theta is faster on macOS about in 30% than Aivika, although on Windows Bootcamp the speed is the same. On old computers Theta is faster than Aivika more significantly. But Theta has no garbage collector at all as well as it almost has no run-time system; and hence Theta can be embedded in a very wide range of software written in other languages such as C, C++, Python, C# or Java.
Theta supports the event-oriented, process-oriented and activity-oriented paradigms. Also like Aivika it supports something similar to the GPSS language. At least, now Theta implements the Facility resource and supports the resource preemption. Theta is in an experimental state so far, which actually means that the most of code has been written already, but I did not yet test it much.
The approach I applied in Theta is somewhere similar to the approach that was used in the famous futures-rs library before introducing async-await. Actually, Theta has a monadic interface and also uses arrows, but this is pure Rust only. The simulation computations must be bound with help of combinators like
and_then, but which I already called
flat_map according the FP tradition.
Even though Theta is my hobby project that I’m working on over week-ends only from time to time, I didn’t decide whether I will ever open source Theta. At least, I open sourced Aivika before.
So, the question is as follows. Is anybody interested in using the Rust library which is very close to Aivika by simulation capabilities? I would prefer to have commercial customers.
Certainly, Theta requires more coding and it is more difficult to use than Aivika, but Theta has no such burden as a heavy-weight Haskell run-time which Aivika has.