Top 15 FSM Open-Source Projects

  • GitHub repo stateless4j

    Lightweight Java State Machine

  • GitHub repo Orleankka

    Functional API for Microsoft Orleans http://orleanscontrib.github.io/Orleankka/

  • GitHub repo stateless

    Go library for creating state machines (by qmuntal)

    Project mention: README localization, is it worth it? | reddit.com/r/golang | 2021-05-17

    I'm thinking of translating the README.md of https://github.com/qmuntal/stateless, as it contains useful documentation on how to use the library and it may be useful for some non-English speakers to have it in their own language.

  • GitHub repo jssm

    Fast, easy Javascript finite state machines with visualizations; enjoy a one liner FSM instead of pages. MIT; Typescripted; 100% test coverage. Implements the FSL language.

    Project mention: Good Examples of Testing in an Open Source Repo? | reddit.com/r/node | 2021-06-03

    This is my general approach

  • GitHub repo automata

    A Python library for simulating finite automata, pushdown automata, and Turing machines (by caleb531)

    Project mention: Python library for simulating finite automata | reddit.com/r/compsci | 2021-05-18

    I recommend looking at https://github.com/caleb531/automata which is another automata library in Python (also for pushdown automata, Turing machines) I've found useful in the past. One thing that wasn't so great about it was the assumption that states and symbols are Python strings. Using tuples mostly works, but sometimes it still breaks.

  • GitHub repo moonlibs

    Lua libraries for graphics and audio programming

    Project mention: Best lua 3D engines? | reddit.com/r/lua | 2021-05-03

    Thank you for mentioning it. I wrote also bindings for OpenGL, GLFW, and a few other libraries (see https://github.com/stetre/moonlibs ). Desktop only.

  • GitHub repo clj-statecharts

    State Machine and StateCharts for Clojure(Script)

    Project mention: Parallel States now supported in clj-statecharts | reddit.com/r/Clojure | 2021-03-24

    I just added parallel states (a.k.a concurrent states) support to clj-statecharts, the State Machine and StateCharts for Clojure(Script).

  • GitHub repo finity

    A finite state machine library for Node.js and the browser with a friendly configuration DSL.

  • GitHub repo Synthesis

    Synthesis is a compiletime, procedure-based, low-overhead, no-allocation, state-machine generator optimized for communicating processes and threads

    Project mention: Nim Apocrypha, Vol. I | news.ycombinator.com | 2020-12-22

    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.

  • GitHub repo visual-automata

    Visual Automata is a Python 3 library built as a wrapper for the Automata library to add more visualization features.

    Project mention: Visual Automata: A wrapper for Automata to add more visualization features | news.ycombinator.com | 2021-03-24
  • GitHub repo DiscreteStatePattern

    A pattern for creating highly compact and light-weight general purpose finite state machines. (by DidacticSpectre)

    Project mention: Multiplayer card game : how to wait ? | reddit.com/r/Unity3D | 2021-05-19

    However, you are going to want to implement a state machine, which I have the perfect solution for you.

  • GitHub repo infinite-scroll

    Infinite Scroll with Svelte 3, XState and IntersectionObserver

    Project mention: Infinite Scrolling with Svelte 3, XState and IntersectionObserver | dev.to | 2021-02-01

    Notes: Rick and Marty API docs can be found: here GitHub Repository: here Youtube video (Spanish): here

  • GitHub repo moonagents

    Reactive state machines in Lua

    Project mention: How to get Lua scripts to communicate with each other? | reddit.com/r/lua | 2021-04-05

    I'm not familiar with Sol3 so I don't know how (and if) this can fit with it, but you can have a look at MoonAgents. It's a library I wrote some time ago that loosely implements the ITU-T SDL standard which defines precisely the system you are looking for, where multiple concurrently running agents (scripts) send/receive signals (data) to each other and react accordingly.

  • GitHub repo strict-machine

    A declarative DSL for building asynchronously evaluated Finite State Machines on the JVM

    Project mention: Kotlin Finite State Machine | reddit.com/r/Kotlin | 2021-04-30

    Mine's in Java and geared towards asynchronous operation but it's perfectly usable from Kotlin and the tests are written in Kotlin: https://github.com/digitalpetri/strict-machine

  • GitHub repo FSM

    This is the package I developed for model checking in Haskell

NOTE: The open source projects on this list are ordered by number of github stars. The number of mentions indicates repo mentiontions in the last 12 Months or since we started tracking (Dec 2020). The latest post mention was on 2021-06-03.

Index

What are some of the best open-source FSM projects? This list will help you:

Project Stars
1 stateless4j 677
2 Orleankka 438
3 stateless 274
4 jssm 155
5 automata 142
6 moonlibs 134
7 clj-statecharts 130
8 finity 90
9 Synthesis 71
10 visual-automata 35
11 DiscreteStatePattern 27
12 infinite-scroll 8
13 moonagents 5
14 strict-machine 5
15 FSM 0