Running Python code in a sandbox with MicroPython and WASM
L'auteur a développé micropython-wasm, une bibliothèque alpha qui exécute du code Python dans un bac à sable WebAssembly et l'utilise dans le plugin datasette-agent-micropython. La motivation est de permettre l'exécution sécurisée de code tiers dans des plugins tout en limitant mémoire, CPU, accès aux fichiers et au réseau et en contrôlant les fonctions exposées. Il a choisi WebAssembly et la runtime wasmtime pour leur maturité et leurs roues binaires, puis a compilé MicroPython en WebAssembly pour fournir un interpréteur léger capable d'être piloté depuis Python hôte. Pour conserver l'état entre exécutions il a implémenté un mécanisme où l'interpréteur bloque en appelant une fonction hôte __session_next__ et communique via une file de requêtes gérée par un thread, et il a ajouté le support de fonctions hôtes via un petit morceau de C compilé dans le binaire WASM. Le paquet est disponible sur PyPI et inclut un mode CLI pour essais, mais il est publié en alpha et l'auteur déconseille son usage en production sans évaluation de sécurité approfondie.