-
Synthesis
Synthesis is a compiletime, procedure-based, low-overhead, no-allocation, state-machine generator optimized for communicating processes and threads (by mratsim)
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
State machines can be metaprogramed: https://github.com/mratsim/Synthesis
You describe the events, transitions and even interrupts and this compiles to optimized goto statements with no allocation, indirect function calls.
> The `with` syntax is new to me, but it looks useful for dealing with lots of subfields.
It's not syntax, but rather a third-party macro[0], which it should be noted is inspired by a rather horrible feature of the same name in javascript. Though I guess the devil would be in the details.
[0] https://github.com/zevv/with
At least one[1] of the 5+ variants makes you list which fields the code gets access to which is an alternate, perhaps more keystroke-heavy solution to the problem bothering @simias.
[1] https://github.com/c-blake/cligen/blob/master/cligen/macUt.n...
There are compile-time checks to make sure you don't have state with no transition from and it also produce a visual graph of your state and transitions.
It's been tuned to be used as the core of my high performance multithreading runtime so zero overhead compared to handwritten. It is suitable for any state machine with zero alloc constraint and state machines can be composed (they are just a function).
I hope in the future to be able to add model checking using Nim Z3 integration so that we can reach Ada/Sparks formal verification prowess: https://github.com/nim-lang/RFCs/issues/222