Hey HN — SimpleBLE 1.0 is finally here.TL;DR SimpleBLE is a cross-platform BLE library for Windows, macOS, Linux, iOS, and Android, with APIs and bindings for C++, C, Python, Java, and Rust. It s awesome and you should definitely try it.If you ve made it so far, let me give you a bit more background...Most of my career as an EE has revolved around embedded devices and Bluetooth, and as you might know, a BLE device rarely needs firmware alone. Proper development needs test tools, utilities and companion apps which usually get built on Android on iOS because that s where the BLE support has historically been most mature. Desktop support for BLE, especially in C++, has been a mix of broken and abandoned libraries that caused me so many headaches that I decided to build my own.SimpleBLE reached 1.0 this week after five years and more than 1,000 commits. It is now used across medical devices, consumer electronics, automotive tools and so many other places I ve lost track. There is no grand rewrite behind the version number, tt is mostly a line in the sand I should have crossed a long time ago, so here we are.From a design perspective, SimpleBLE puts a common C++ core over each operating system s native Bluetooth stack with a simple (get the pun?) unified API that is focused on developer ergonomics and quick time to value. I can talk a lot about the different aspects that went into the design and implementation challenges that each backend brought, so feel free to poke around if you find things interesting. I ll highlight a few but here are so many more. - Windows with their WinRT thread apartments get tricky when multiple libraries in an application want to handle threads differently. - DBus on Linux is a constant fight against race conditions. - Android implements an incomplete JNI specification and the most overly complicated implementation architecture of all I ve seen. - CoreBluetooth has UUIDs instead of MAC addresses, plus weird event flows between Adapter and Peripheral objects.The project uses BUSL 1.1: it is free for non-commercial use and requires a license for commercial use. I know that is a tradeoff and I m happy to discuss it.Release: https://github.com/simpleble/simpleble/releases/tag/v1.0.0GitHub: https://github.com/simpleble/simplebleIf you ve had to make BLE behave across more than one platform, I d love to compare notes.