C++ embarqué : 8 ans de prod, 8 ans de valgrind
Le C++ est un excellent langage. C'est aussi une source inépuisable de bugs mémoire en production. Sur un système embarqué critique — contrôleur industriel, IoT médical — un undefined behavior peut coûter très cher.
Ce qui nous a convaincus d'essayer Rust
La promesse du compilateur Rust : si ça compile, pas de data races, pas de dangling pointers. On était sceptiques — jusqu'au premier projet de test sur un microcontrôleur STM32.
Les vraies difficultés de la migration
Le borrow checker est déroutant les premières semaines. Pas parce qu'il a tort — mais parce qu'il force à repenser des patterns C++ qu'on utilisait depuis des années sans questionner. La courbe d'apprentissage est réelle.
L'écosystème embedded-hal et embassy est encore jeune comparé au C++. Certains drivers HAL manquent, certains crates sont en alpha.
Ce qu'on ne regrette pas
Les segfaults ont disparu. Le code est plus lisible. Et l'async embarqué avec Embassy est une révélation — écrire du code concurrent sur microcontrôleur sans RTOS, c'est une rupture majeure par rapport au C++ classique.