
CircuitPython Turbo ускорил работу микроконтроллеров: предкомпиляция и Viper
CircuitPython — платформа от Adafruit для быстрой прототипизации на микроконтроллерах. Раньше код запускался напрямую как интерпретируемый скрипт, что ограничивало производительность. Теперь Turbo‑версии добавили два пути ускорения.
Включи режим Native: утилита mpy‑cross превращает выбранные файлы в бинарные .mpy, а загрузчик поднимает их в память. На тесте с фракталом Мандельброта Metro RP2040 стал работать в 3 раза быстрее. Если объявить типы и управлять памятью, активируется Viper‑режим, который в тех же тестах дал ускорение почти 20 раз, а на Metro M0 Express достиг 71,7 раз.
Технически всё реализовано через небольшую прошивку (параметр CIRCUITPY_LOAD_NATIVE=1) и скрипт lib/turbo.py, который переопределяет sys.path, помещая каталог /lib/turbo/<arch>/ впереди. Исходники перемещаются в /src/, где их импорт не конфликтует с готовыми .mpy‑модулями. Главный файл code.py всегда исполняется как обычный Python‑скрипт.
Команда протестировала Turbo на двенадцати платах с архитектурами ARM Thumb, Xtensa и RISC‑V. Лучший прирост в Viper‑режиме показала плата ESP32‑C5 (44‑кратное ускорение). Пока в составе нет встроенного ассемблера, но оригинальный MicroPython его поддерживает, так что появление такой возможности в Turbo не исключено.



Комментарии 0