Автор Datasette, LLM и sqlite-utils выпустил альфа-пакет micropython-wasm — это библиотека для безопасного выполнения Python-кода внутри WebAssembly-песочницы. В основе лежит MicroPython, скомпилированный в WASM, и рантайм wasmtime.
Проблема в том, что все его проекты поддерживают плагины через Pluggy, но любой плагин выполняется с полными правами внутри приложения. Один баг или вредоносный код — и он может прочитать любые файлы, выйти в сеть или положить всю программу. Автор давно искал способ запускать пользовательский код безопасно, с контролем памяти, CPU, файлов и сети, плюс с возможностью вызывать host-функции из песочницы.
Веб-движки — слишком сложные для встраивания, а готовые V8-обёртки для Python почти не поддерживаются. WebAssembly подходит куда лучше. Pyodide отличный, но заточен под браузер и не работает в серверном Python. Тогда автор решил попробовать MicroPython — легковесный интерпретатор, который нормально собирается под WASM.
С помощью GPT-5.5 и Codex Desktop он за несколько итераций собрал рабочий прототип. Самая сложная часть — сохранять состояние между вызовами. Решение: внутри WASM запущен MicroPython, который через host-функцию __session_next__() ждёт следующую порцию кода, выполняет её через eval(), а результат отправляет обратно через __session_result__(). В Python это выглядит как объект MicroPythonSession, у которого можно вызывать session.run("...") несколько раз подряд — переменные остаются в памяти.
Дополнительно пришлось написать 78 строк на C для поддержки host-функций. Всё это компилируется в 362 КБ WASM-бинарника. Лимиты памяти задаются через wasmtime, для CPU используется концепция «топлива» (fuel) — по умолчанию 20 миллионов операций. Значение подобрано экспериментально.
Пакет уже на PyPI. Его можно попробовать напрямую или через плагин datasette-agent-micropython в Datasette Agent. Живое демо работает на agent.datasette.io. Автор честно предупреждает: это альфа, сам он использует её с осторожностью, но другим пока не рекомендует без серьёзного риска. Единственное утешение — если в C ошибка, максимум что случится — WASM упадёт с исключением. Автор надеется, что его подход заинтересует компании с профессиональными security-командами, и они выпустят более надёжные открытые решения.