CircuitPython Turbo получил поддержку предварительной компиляции и режима Viper

3 мин
CircuitPython Turbo получил поддержку предварительной компиляции и режима Viper

Вы, вероятно, не раз встречались в интернете с утверждением о том, что Python — это свежий BASIC, который стал первым языком программирования для целого поколения разработчиков. Его главное преимущество заключается в том, что на нем легко и быстро писать исходник, тем не менее, как тот же самый BASIC, это интерпретируемый язык, что сказывается на скорости выполнения программ.

Проект CircuitPython, созданный компанией Adafruit на основе MicroPython, предназначен для быстрого прототипирования на микроконтроллерах. Плата определяется как обычная флешка, а написанный код сразу выполняется прямо на устройстве без сборки прошивки и настройки сложных toolchain.

Подобный подход действительно может быть полезен для начинающих программистов и небольших проектов, но быстрее, чем хотелось бы, упирается в потолок производительности железа. CircuitPython Turbo от Майка Склара, созданный при участии Claude LLM, нацелен помочь с решением этой проблемы: теперь важные участки кода можно предварительно компилировать.

Как происходит ускорение

Если вам показалось, что чем-то это все напоминает Viper, то вам не показалось. Как мы уже вспомнили ранее, CircuitPython — это форк MicroPython с некоторыми полезными дополнениями для плат Adafruit, но до сих пор Viper не входил в их число. До появления версии Turbo CircuitPython работал только в интерпретируемом режиме.

Как и в MicroPython, важные участки кода можно перевести в нативный режим: инструкции скомпилируются напрямую, а переменные останутся объектами Python, что даст прирост скорости примерно в три раза. Если же слегка доработать код — явно объявить типы и работу с памятью, — включается режим Viper, увеличивающий эффективность уже в 20–70 раз.

В официальной документации приводятся результаты тестирования на алгоритме множества Мандельброта. На плате Metro RP2040 выполнение кода в режиме Native ускорилось в 3 раза, а в режиме Viper — в 19,7 раза по сравнению со стандартным байт-кодом.

Снижаем цены на выделенные серверы в реальном времени

Успейте арендовать со скидкой до 35%, пока лот не ушел другому.

Подробнее →

Архитектурные особенности и структура проекта

Технически подход состоит из специальной прошивки и консольной утилиты. Прошивка собирается с параметром CIRCUITPY_LOAD_NATIVE=1, добавляющим загрузчик размером 2–3 КБ без набортного компилятора. Скомпилированные бинарные .mpy файлы создаются на компьютере с помощью компилятора mpy-cross и загружаются на плату.

При загрузке устройства скрипт lib/turbo.py объемом 49 строк модифицирует системный список sys.path, помещая путь к скомпилированным модулям /lib/turbo/<arch>/ в его начало. Исходные .py файлы переносятся в каталог /src/, который намеренно исключен из стандартного sys.path, чтобы исходный код не перекрывал бинарные модули при импорте. Основной файл code.py всегда исполняется как исходный исходник, так как запускается через pyexec_file.

Результаты тестов и дальнейшее развитие

Проект протестирован на двенадцати отладочных платах с архитектурами ARM Thumb, Xtensa и RISC-V. Наибольший прирост скорости в режиме Viper продемонстрировала плата Metro M0 Express, ускорившаяся в 71,7 раза. Плата ESP32-C5 на архитектуре RISC-V показала 44-кратное ускорение.

Единственное, чего тут не хватает по сравнению со старым добрым BASIC — это встроенный ассемблер. К слову, в оригинальном MicroPython он есть, так что не исключено, что появится и в Turbo. Разумеется, Python подходит далеко не для каждого микроконтроллерного проекта, но на нем уже умудряются создавать всё подряд — от систем управления электровелосипедами до железных плееров в стиле Winamp.

Читают сейчас

Американские власти впервые подтвердили хостинг оружия на приблизительноземной орбите

45 минут назад

Американские власти впервые подтвердили хостинг оружия на приблизительноземной орбите

Министр военно‑воздушных сил США Трой Мейнк сообщил, что Соединённые Штаты вывели на околоземную орбиту «оружие для контроля космического пространства». Это заявление стало первым публичным признанием

CRM можно больше не открывать. Главное с Dreamforce 2026

49 минут назад

CRM можно больше не открывать. Главное с Dreamforce 2026

Dreamforce 2026. В чем соль? Вместо CRM обещают завезти ИИ-агентов, которым достаточно описать задачу, а они сами найдут информация, соберут необходимый интерфейс и выполнят работу. Об этом и не тольк

Зачем разработчику погружаться в продуктовый контекст и как в этом помогает ИИ?

56 минут назад

Зачем разработчику погружаться в продуктовый контекст и как в этом помогает ИИ?

Порассуждали на эту тему в гостях у подкаста Moscow Python — ребята предложили вместе записать начальный оффлайн‑выпуск после долгого перерыва. Поговорили о том, где граница между ролями продакта и ра

В Москве прошла открытая стратегическая сессия для диджитал‑рынка

1 час назад

В Москве прошла открытая стратегическая сессия для диджитал‑рынка

11 сентября в офисе AGIMA прошла открытая стратегическая сессия для участников диджитал-рынка — первая офлайн-встреча нового сезона 2026. Десять владельцев агентств и сервисных компаний наряду с двумя

1 час назад

«Диасофт» внедрил ИИ‑функции и интеграцию с 1С в «Каталог метаданных»

Организация «Диасофт» расширила функциональность продукта «Каталог метаданных», входящего в состав решения «Фабрика данных» (Digital Q.DataFactory). В обновленной версии появились автоматическое запол