{"id":27402940,"url":"https://github.com/k1ngmar/msm","last_synced_at":"2025-07-06T21:36:04.638Z","repository":{"id":266387827,"uuid":"863970507","full_name":"K1ngmar/MSM","owner":"K1ngmar","description":"☊  A high performance compile time evaluated state machine","archived":false,"fork":false,"pushed_at":"2024-12-01T15:45:36.000Z","size":86,"stargazers_count":0,"open_issues_count":6,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-13T07:58:51.776Z","etag":null,"topics":["cpp","header-only","state-machine","template-metaprogramming"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/K1ngmar.png","metadata":{"files":{"readme":"README.md","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":"2024-09-27T08:52:00.000Z","updated_at":"2024-12-01T15:47:38.000Z","dependencies_parsed_at":"2024-12-04T02:42:55.610Z","dependency_job_id":"319cddcd-88c4-46d0-8d4b-a1103cd85dd4","html_url":"https://github.com/K1ngmar/MSM","commit_stats":null,"previous_names":["k1ngmar/msm"],"tags_count":0,"template":false,"template_full_name":"K1ngmar/C-project-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/K1ngmar%2FMSM","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/K1ngmar%2FMSM/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/K1ngmar%2FMSM/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/K1ngmar%2FMSM/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/K1ngmar","download_url":"https://codeload.github.com/K1ngmar/MSM/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248824667,"owners_count":21167343,"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":["cpp","header-only","state-machine","template-metaprogramming"],"created_at":"2025-04-14T04:46:20.645Z","updated_at":"2025-04-14T04:46:23.855Z","avatar_url":"https://github.com/K1ngmar.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ✔️ Meta State Machine\nA high performance headeronly compile time evaluated statemachine.\nBig shoutout to [boost::msm](https://www.boost.org/doc/libs/1_86_0/libs/msm/doc/HTML/index.html) for inspiring me to create this project.\nI started this project to learn more about template metaprogramming while also making something very usefull for some of my other projects.\nIt is probably (definitely :sweat_smile:) not as complete and performant as boost::msm since they have put years of reasearch into it and use even less runtime stuff than I do here :)\n\n# ⚙️ Requirements\nA C++ compiler that has c++20 support.\n\n# 🎓 Learn more about MSM\nCheck out the [wiki](https://github.com/K1ngmar/MSM/wiki) to learn more about the msms and its implementation!\n\n# 🤯 Important to know\n\n### Thread safety\nBy itself the statemachine is not thread safe, if you want to dispatch events from multiple events you would need to handle this yourself in the calls to `ProcessEvent();`.\n\n### Event processing\nIf an event is dispatched whilst it is performing a transition the event will be stored in a queue and will be executed as soon as the current transition is finished. This means that if you decide to do a lot of computation in an `OnEntry()`, `OnExit()` etc. it will block the statemachine from perfoming transitions. Think carefull about how you implement these functions :)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fk1ngmar%2Fmsm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fk1ngmar%2Fmsm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fk1ngmar%2Fmsm/lists"}