sml

C++14 State Machine library (by boost-ext)

Sml Alternatives

Similar projects and alternatives to sml

  1. Marlin

    757 sml VS Marlin

    Marlin is a firmware for RepRap 3D printers optimized for both 8 and 32 bit microcontrollers. Marlin supports all common platforms. Many commercial 3D printers come with Marlin installed. Check with your vendor if you need source code for your specific machine.

  2. InfluxDB

    InfluxDB – Built for High-Performance Time Series Workloads. InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.

    InfluxDB logo
  3. llvm-project

    445 sml VS llvm-project

    The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.

  4. just

    219 sml VS just

    🤖 Just a command runner

  5. {fmt}

    175 sml VS {fmt}

    A modern formatting library

  6. abseil-cpp

    66 sml VS abseil-cpp

    Abseil Common Libraries (C++)

  7. etl

    57 sml VS etl

    Embedded Template Library

  8. Kaitai Struct

    Kaitai Struct: declarative language to generate binary data parsers in C++ / C# / Go / Java / JavaScript / Lua / Nim / Perl / PHP / Python / Ruby / Rust

  9. Stream

    Stream - Scalable APIs for Chat, Feeds, Moderation, & Video. Stream helps developers build engaging apps that scale to millions with performant and flexible Chat, Feeds, Moderation, and Video APIs and SDKs powered by a global edge network and enterprise-grade infrastructure.

    Stream logo
  10. spdlog

    49 sml VS spdlog

    Fast C++ logging library.

  11. Magic Enum C++

    Static reflection for enums (to string, from string, iteration) for modern C++, work with any enum type without any macro or boilerplate code

  12. cpr

    22 sml VS cpr

    C++ Requests: Curl for People, a spiritual port of Python Requests.

  13. amp-embedded-infra-lib

    amp-embedded-infra-lib is a set of C++ libraries and headers that provide heap-less, STL like, infrastructure for embedded software development

  14. Experimental Boost.DI

    C++14 Dependency Injection library

  15. compile-time-init-build

    C++ library for composing modular firmware at compile-time.

  16. RESTinio

    14 sml VS RESTinio

    Cross-platform, efficient, customizable, and robust asynchronous HTTP(S)/WebSocket server C++ library with the right balance between performance and ease of use

  17. PEGTL

    13 sml VS PEGTL

    Parsing Expression Grammar Template Library

  18. HFSM2

    3 sml VS HFSM2

    High-Performance Hierarchical Finite State Machine Framework

  19. outcome

    9 sml VS outcome

    Provides very lightweight outcome<T> and result<T> (non-Boost edition)

  20. hsm

    1 sml VS hsm

    Finite state machine library based on the boost hana meta programming library. It follows the principles of the boost msm and boost sml libraries, but tries to reduce own complex meta programming code to a minimum. (by erikzenker)

  21. hana

    4 sml VS hana

    Your standard library for metaprogramming

  22. Better Enums

    5 sml VS Better Enums

    C++ compile-time enum to string, iteration, in a single header file

  23. SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a better sml alternative or higher similarity.

sml discussion

sml reviews and mentions

Posts with mentions or reviews of sml. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2025-07-06.
  • Show HN: CXXStateTree – A modern C++ library for hierarchical state machines
    10 projects | news.ycombinator.com | 6 Jul 2025
    Looks like SML is using user-defined literals [0, 1] to effectively pre-process the string literal into state/event objects. Looks like the string itself is turned into a template parameter in the process and I believe those shouldn't show up in the compiled code (maybe unless there's some mangling-related thing going on?)

    [0]: https://en.cppreference.com/w/cpp/language/user_literal.html

    [1]: https://github.com/boost-ext/sml/blob/f232328b49adf708737bef...

  • Sharing Saturday #496
    6 projects | /r/roguelikedev | 8 Dec 2023
    Anyway the need is not complicated, I need both entry and exit functions from every state, optionally allowing these functions to be coroutines (that's special sauce but for later), and an explicit state transition table which also have a way to say that a state can be accessed at any point. Also allow states to be state machines, optional FSM hierarchies. If you ignore the coroutine stuff it's pretty standard features these days, except that - Boost.MSM is quite archaic now (it was so novel when it was first released...) although it allows most of the features I talked about, I just think it will complicate my code unneecessarilly; - Boost-Ext.SML (not Boost) is almost perfect except it doesnt have entry/exit functions on states for some reason. Also last time we (as in in livestream) tried it in prototypes it didnt compile on msvc XD - Boost-Ext.SML2 is even better but still doesnt have entry/exit functions although it's in the plans.
  • State machines with C++20 coroutines and Asio/Boost Async
    2 projects | /r/cpp_questions | 8 Apr 2023
    Hello all. Being a huge fan of state machine and coroutines, I have been browsing around for examples of what other people do combine these two. I have been using boost-ext/sml for quite many projects and are quite happy about that. But when transitioning to code that relies on coroutines, I would like to write entry/exit/actions/guard methods that uses coroutines and where I can co_await on awaitables from Asio and more recently "Boost Async".
  • Looking for well written, modern C++ (17/20) example projects for microcontrollers
    19 projects | /r/embedded | 16 Mar 2023
    boost-ext/sml: quite modern way of doing state machines using a DSL
  • When Debug Symbols Get Large
    2 projects | news.ycombinator.com | 9 Mar 2023
    I recently was troubleshooting a crash that backtraced through the boost::sml library [0]. The crash didn't actually have anything to do with the library, but it was used as the core event loop.

    The backtrace -- as in, just the output from running `bt` in GDB -- was over a thousand wrapped lines long. There were ~5 stack frames that took up 200 lines of console each to print just the function name. That product's debug builds recently hit the 2GB line, which is enough that old versions of binutils complain.

    I don't know what the solution is. There's some really neat stuff you can do with template metaprogramming, and in stripped release builds it compiles down extremely tiny. Plus the code is very clean to read. But it does feel like there isn't any kind of central vision for the C++ debugging experience, and bad interactions between highly-complex modern C++ typing, the compiler, and the debugger are probably only going to get worse unless somebody (the ISO committee? Vendors?) thinks really hard about debugging support.

    [0]: https://github.com/boost-ext/sml

  • [Boost::MSM] Huge Memory Usage Issue During Compilation
    1 project | /r/cpp_questions | 11 Nov 2022
    I'm a big fan of MSM but what you're experiencing is pretty normal for template-heavy libraries built on C++03 machinery (emulation of variadic templates is the usual culprit). It's probably not the answer you're hoping for, but the real solution is to switch to a library with more modern foundations. (I've been happily using [Boost::ext].SML for a few years but I'm reluctant to strongly recommend anything in particular since I haven't re-explored the problem space since I found it.)
  • State machine suggestion?
    2 projects | /r/QtFramework | 27 Oct 2022
    The Boost one that you mention, seems to be one that it's kinda old. A "successor" of sorts is Boost SML. I've not used it yet, but certainly the first impressions are very good.
  • Specifications for an open source finite state machine library
    1 project | /r/cpp | 25 Oct 2022
    Or Boost.Sml
  • Facts about State Machines
    7 projects | news.ycombinator.com | 29 Sep 2022
    At our company, we rely a lot on https://github.com/boost-ext/sml
  • What are some cool modern libraries you enjoy using?
    32 projects | /r/cpp | 18 Sep 2022
    I'm a big fan of boost::sml for representing state machines.
  • A note from our sponsor - Stream
    getstream.io | 24 Dec 2025
    Stream helps developers build engaging apps that scale to millions with performant and flexible Chat, Feeds, Moderation, and Video APIs and SDKs powered by a global edge network and enterprise-grade infrastructure. Learn more →

Stats

Basic sml repo stats
25
1,302
7.2
20 days ago

boost-ext/sml is an open source project licensed under gtkbook License which is not an OSI approved license.

The primary programming language of sml is C++.


Sponsored
InfluxDB – Built for High-Performance Time Series Workloads
InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.
www.influxdata.com

Did you know that C++ is
the 7th most popular programming language
based on number of references?