{"id":13643696,"url":"https://github.com/jonasblixt/ufsm","last_synced_at":"2025-04-21T02:31:07.165Z","repository":{"id":55566190,"uuid":"133351351","full_name":"jonasblixt/ufsm","owner":"jonasblixt","description":"Statechart library and editor","archived":false,"fork":false,"pushed_at":"2025-04-04T19:14:48.000Z","size":4506,"stargazers_count":362,"open_issues_count":15,"forks_count":37,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-04-04T20:25:12.993Z","etag":null,"topics":["c","embedded","finite-state-machine","fsm","state-machine","statechart","statemachine"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jonasblixt.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-05-14T11:35:33.000Z","updated_at":"2025-03-28T01:32:33.000Z","dependencies_parsed_at":"2023-02-18T10:46:52.780Z","dependency_job_id":"bfcb24b6-88d5-4212-915d-94b3eabbe363","html_url":"https://github.com/jonasblixt/ufsm","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonasblixt%2Fufsm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonasblixt%2Fufsm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonasblixt%2Fufsm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonasblixt%2Fufsm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jonasblixt","download_url":"https://codeload.github.com/jonasblixt/ufsm/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249986048,"owners_count":21356314,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","embedded","finite-state-machine","fsm","state-machine","statechart","statemachine"],"created_at":"2024-08-02T01:01:51.378Z","updated_at":"2025-04-21T02:31:02.145Z","avatar_url":"https://github.com/jonasblixt.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":".. image:: doc/logo.png\n    :width: 10 %\n.. image:: https://github.com/jonasblixt/ufsm/actions/workflows/build.yml/badge.svg\n    :target: https://github.com/jonasblixt/ufsm/actions/workflows/build.yml\n.. image:: https://readthedocs.org/projects/ufsm/badge/?version=latest\n    :target: https://ufsm.readthedocs.io/en/latest/?badge=latest\n    :alt: Documentation Status\n\nuFSM is a tool for drawing hierarchical state machines and generating code.\nThe two main parts are \"ufsm-compose\" the graphical editor and \"ufsm-generate\",\nThe code generator.\n\n.. image:: doc/ufsm_design_guides.gif\n\n----------\nDisclaimer\n----------\n\nuFSM is a work in progress, it's incomplete, it fully possible to design machines\nthat will not work.\n\n-------\nHistory\n-------\n\n    - Versions 0.1 - 0.3\n        Used a rather complicated runtime that operated on a tree structure that's\n        true to the graphical representation of a state machine. This worked but\n        was resource hungry and error prone.\n\n        The first versions also relied on external drawing tools and used the\n        XMI format to translate designs to compilable code.\n\n    - Version 0.4.x\n        Shipped \"ufsm compose\" drawing tool\n\n    - Version 0.5.x\n        Fundametal change in how code is generated. From 0.5 and onward the complicated\n        runtime is dropped in favor of a code generator that computes most things\n        statically. This reduces the runtime memory requirements substantially.\n\n------------\nFuture plans\n------------\n\n    - Add more code generator backends, for example rust, js and python\n    - DRC, design rule checker\n    - BDD based state condition rule optimizer\n\n-----------------------\nBuilding and installing\n-----------------------\n\nAppimages for linux:\n\n    Under releases appimages are available for the drawing tool and the code\n    generator. This is the easiest way to quickly test ufsm.\n\nBuilding::\n\n    $ mkdir build \u0026\u0026 cd build\n    $ cmake ..\n    $ make\n\nDependencies:\n\n==========  ===================\nPackage     Ubuntu package name\n==========  ===================\ncmake       cmake\nuuid        uuid-runtime, uuid-dev\nGTK 3       libgtk-3-0, libgtk-3-dev\n==========  ===================\n\nRunning tests::\n\n    $ make tests\n\n\nDocumentation is available here: `uFSM documentation`_\n\n.. _uFSM documentation: http://ufsm.readthedocs.io/en/latest\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonasblixt%2Fufsm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonasblixt%2Fufsm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonasblixt%2Fufsm/lists"}