// the find
SmingHub/Sming
Sming - powerful open source framework simplifying the creation of embedded C++ applications.
Sming is an async C++ framework for embedded network devices, targeting ESP8266, ESP32, and RP2040/RP2350. It's for firmware developers who want Arduino-style ergonomics but with real non-blocking I/O, an HTTP/SMTP/OTA stack, and a proper HAL instead of the bare Arduino core.
Multi-architecture support is real, not a thin header shim — each Arch/ directory has its own driver, startup, and SDK integration code. It ships with working async HTTP client/server, SMTP client, and OTA updater out of the box, which saves real time versus stitching together Arduino libraries. There's a host emulator so you can develop and debug application logic without flashing hardware every cycle, plus gdbstub support for live on-device debugging. The project has been running CI (including per-arch build matrices and Coverity scanning) for years, which for embedded C++ is not a given.
The build system is still Makefile/component.mk-based with git submodules for vendored SDKs (esp-open-lwip, the ESP8266 SDK) — getting a clean checkout and toolchain set up is more work than `pio run`. Documentation is split across readthedocs (stable vs. latest) and a GitHub wiki, so it's easy to follow stale instructions. RP2040/RP2350 support reads as the newest addition and the README examples (WifiStation, GPIO2 blink) are still ESP8266-flavored, so parity across architectures is unclear without digging into the docs. No mention of a package manager or versioned library ecosystem beyond bundled samples, so pulling in third-party components means manual vendoring.