Peut-on RIIR de tout ?
1. Quèsaco ?
Il était une fois...
1.1 Vous avez un message
1.2 Nouvelle CVE
Suite à notre audit de sécurité régulier et l'analyse de votre BOM (Bill of Materials), j'ai identifié que votre projet utilise GDAL 3.10.x.
Une vulnérabilité critique vient d'être publiée :
🔴 CVE-2025-29480 - Score CVSS : 9.8/10
- Type : Buffer overflow dans le parser GeoTIFF
- Impact : Exécution de code arbitraire possible
- Exploitation : Active dans la nature
⚠️ Action requise : Mise à jour urgente ou mitigation
Cordialement,
Rowan O'Wasp - RSSI
1.3 CVE-2025-29480
CVE-2025-29480
💥 Buffer Overflow: Gestion mémoire défaillante
📊 70% des CVEs critiques: problème mémoire
💭 Et si on pouvait éviter ça ?
1.4 GitHub issue
Critical vulnerability CVE-2025-29480#42
Consider migrating from GDAL to "safer" language
Description
Given the recent CVE-2025-29480 critical vulnerability in GDAL (CVSS 9.8), I believe we should seriously consider migrating to a Rust-based alternative or another "safer" language.
Problem
- Recurring memory safety issues in GDAL (15+ CVEs in last 2 years)
- Complex dependency management
Proposed solution
Use existing crates referenced in GeoRust, and add create missing one.
Benefits
✅ Memory safety by design
✅ Better performance (no GC)
✅ Simpler deployment
🤔 Thoughts?
1.5 RIIR
Rewrite It In Rust
1.6 RIIR IRL
RIIR IRL
🛠️ Outils systèmes
🗄️ Base de données
...
2. Pourquoi?
Pourquoi en Rust ?
2.1 NIH
NIH
🎓 Académique
- Cyclone : Système de régions/lifetimes
2.2 Programmation système
Rust Vs langages bas niveaux
🛟 Sécurité mémoire *
- Pas de crash mémoire
- Pas de dangling pointers
- Pas de double free
- Pas de use after free
*: en safe Rust
2.3 Contrôle sans GC
Rust Vs langages à gestion de mémoire
🏎️ Performance
- Pas de GC
- Abstractions à coût nul
- 📈 meilleur performance moyenne, p99
- 📉 moins de mémoire
🎛️ Contrôle sur la gestion mémoire
- Choix d'allocation: pile ou tas
- Choix de pattern d'allocation: arena, slab, ...
- Choix de allocateur: jemalloc, mimalloc, ...
2.4 Sécurité du langage
Autre avantages
🛟 Système de typage
- Type de données algébrique,
trait - Pattern matching
OptionetResult
🧵 Concurrence et mutations sans craintes
- Thread safety à la compilation (pas de data race)
- Sémantique de l'emprunt
&T, d'emprunt exlcusif&mut T, - ou transmition
T
2.5 Quotidien
Rust au quotidien
🦊 Navigateurs
Firefox, Chrome
☁️ Cloud
AWS, Azure, Cloudflare, ...
🐧 OS & Mobile
Linux, Android, Fushia, Windows, ...
💻 Outils
uv, ruff, biome, oxlint, ...
2.6 Quotidien
🥇 Rust - Pros/cons
- plus de sécurité
- de meilleur performances
- outillage plus simple
- moins de charge cognitive
- plus de confiance sur le code
- écosystème de qualité
- dirigé par la communauté
- long temps de compilation
- courbe d'apprentissage
- maturité de l'écosystème
- limitation de la communauté
3. Quoi ?
Que peut on faire avec Rust?
3.1 Yak-Shaving
3.2 CLI
Outils CLI
📦 Crates
3.3 Serveur backend
Backend, Middleware
📦 Crates
🪜 Scaffolding
3.4 Web avec WASM
WASM
🏆 Champions
3.5 Client lourd
Application desktop
🏆 Champions
- Zed: IDE
- COSMIC desktop: dans Pop!_OS
3.6 TUI
TUI
3.7 Diagram
4. Encore plus
Encore plus
4.1 Embarqué
ESP32-S3 - spec. hardware
⚙️ CPU & mémoire
- CPU: Dual-Core Xtensa® 32bit LX7 up to 240 MHz
- SRAM: 512 KB, ROM: 384 KB, PSRAM: Octal SPI, 16 MB, 120 MHz
- External Flash: Quad SPI, 16 MB
📡 Sans fil
- Wi-Fi: 2.4 GHz, IEEE 802.11b/g/n
- Bluetooth® LE: Bluetooth® 5 LE and Bluetooth® mesh
📺 Écran
- Display Type: 2.4-inch LCD
- SPI, 240 x 320 pixels, 40 MHz
- Driver IC: ILI9342C ...
4.2 Embarqué
Embarqué & IoT
- 📖 The embedded Rust Book
- 📖 impl Rust for ESP32
- Ferrocene: Rust pour les systèmes critique
📦 Crates
- embassy : async/await embedded
- embedded-graphics, embedded-svc, embedded-hal : abstraction hardware cross-platform
- heapless, defmt, ...
4.3 Mobile
📱 Mobile
📦 Crates
- UniFFI: binding avec Swift, Kotlin, ...
- Flutter Rust Bridge
- ou Tauri, Dioxus
🏆 Champions
- Proton mail: https://proton.me/blog/new-mail-apps
- Signal: protocole crypto partagé
- 1Password: cryptographie Rust
4.4 PyO3
🐍 Interoperabilité avec Python
🏆 Champions
- Polars, datafusion: big data
- Pydantic: validation des données
- tokenizers: ML Tokenizers
- orjson: JSON
- ...
4.5 Interop
Rust & autres écosystèmes
- Web: via Web Assembly
- Swift & Kotlin: via UniFFI
4.6 Diagram
4.7 Et le reste
On peut presque tout faire
🎙️ Moteurs de présentation
- 🛝 toboggan
https://github.com/ilaborie/toboggan,
https://github.com/ilaborie/toboggan-esp32 - 👉 presenterm: dans le terminal
Ou encore
- 🕹️ moteurs de jeux,
- 🔐 crypto,
- 🤖 AI,
- ...
5. Quand ?
Bilan
5.1 RIIR ou ne pas RIIR?
RIIR ou ne pas RIIR?
💰 Quel ROI ?
- la sécurité
- la performance
- l'efficacité
- pas de problèmes
- pas le temps de réécrire
- pas les compétences
🎯 Stratégie
- Intégrer Rust dans les CI/CD
- Former progressivement les équipes
- Commencer petit
5.2 Et si on pouvait...
🙌 Projet parallèles
6. Conclusion
Nouveau project en Rust ?
Y a-t-il une bonne raison pour
ne pas le faire ?
6.1 Constat
Pourquoi ne fait-on pas de Rust?
🪲 On veut des bugs, des problèmes de sécurité
🐌 On ne cherche pas la rapidité, l'efficacité
🐣 Trop jeune ? écosystème ?
🍐 On ne sait pas faire de Rust.
6.2 Me
Igor Laborie
Founding Engineer @ Darwin Data
6.3 Startup
🌱 Rust en Startup
- 🚅 Vélocité à moyen terme vs PoC
- 🪲 Moins de bugs, maintenance plus facile
- 💸 Moins de coûts
- "🚀 Blazing fast", aspect marketing
- Profitez de l'image positive sécurité, efficacité, performance de Rust
6.4 action
⛓️💥 Agir plutôt que subir
📚 Apprendre
🏗️ Construire
💬 Partager, 🐝 Essaimer
6.5 Citation
Soyez donc résolus à ne plus
servir et vous serez libres.