Toit 2.0 стал стабильным: язык для скриптов и независимых приложений на ESP32
Релиз от 31 октября добавил Unix domain sockets и настройку имени устройства через конфигурацию прошивки. Разбираем, где заканчивается прошивка и начинается отдельно обновляемое приложение.

Что действительно добавлено в версии 2.0
31 октября проект Toit опубликовал стабильный выпуск 2.0.0 после серии альфа-версий. В кратких release notes названы исправления ошибок, поддержка Unix domain sockets и возможность задать hostname через конфигурацию прошивки. Для сокетов отдельно уточняется будущий доступ через пакет host: наличие изменения в среде исполнения не стоит автоматически считать готовым одинаковым API для любого устройства.
Журнал ведёт сравнение с v2.0.0-alpha.199. Это конкретная граница изменений, а не обещание полной совместимости каждого старого проекта. Сам выпуск не сопровождается новыми результатами тестов производительности, поэтому приписывать версии ускорение на определённый процент оснований нет.
Один язык для компьютера и микроконтроллера
Toit предназначен как для скриптов на обычном компьютере, так и для приложений на ESP32. В языке есть классы, исключения и встроенные типы; короткий сценарий можно постепенно превращать в более структурированную программу. Запуск настольного скрипта не требует сначала подключать микроконтроллер.
Эти два сценария используют общее название языка, но работают в разных окружениях. Программа, обрабатывающая файлы на компьютере, и программа, опрашивающая вход платы, зависят от разных библиотек и доступного оборудования. Поддержка языка сама по себе не означает, что любой настольный интерфейс появляется внутри прошивки ESP32.
Что означает контейнер на устройстве
В модели Toit прошивка предоставляет среду исполнения, а приложения работают поверх неё в отдельных контейнерах с собственной управляемой памятью. Один компонент можно остановить и заменить, сохранив другие работающими. Для взаимодействия между компонентами предусмотрены сервисы. Это описание устройства программной среды Toit, а не утверждение о запуске обычных Docker-образов на микроконтроллере.
Для работы с периферией проект описывает GPIO, I²C, SPI, UART и сетевые возможности. Драйверы датчиков доступны через реестр пакетов. Разделение компонентов позволяет обновлять логику приложения отдельно от остальных программ, но не устраняет требования к конкретным выводам платы, подключению датчика и совместимой версии драйвера.
Jaguar отделяет первоначальную прошивку от повседневной разработки
Официальное руководство начинает работу с установки Jaguar и первоначальной записи прошивки через последовательное соединение. После запуска устройство объявляет себя в локальной сети, а разработчик может отправлять программу по Wi-Fi. Для поиска платы компьютер и ESP32 должны находиться в одной сети; это не автоматическое обнаружение устройства через интернет.
Важна разница между временным запуском и установкой. Программа, отправленная через jag run, не сохраняется после перезагрузки. Именованный контейнер, установленный через jag container install, запускается при последующем старте системы. Режим jag watch отслеживает изменение исходников и перезапускает код во время разработки. Эти команды относятся к существующему рабочему процессу Jaguar, а не перечислению новых функций версии 2.0.
| Действие | Результат |
|---|---|
| Первоначальная прошивка | Установка среды исполнения и Jaguar на устройство |
| jag run | Временный запуск программы |
| jag watch | Перезапуск при изменениях исходников |
| jag container install | Именованное приложение с запуском после перезагрузки |
Источник: Toit — Run on your device
Настольный сценарий не ограничивается примером Hello World
Для командных приложений проект предлагает пакет CLI: разбор аргументов, типизированные параметры, подкоманды и автоматически формируемую справку. Описана поддержка дополнения команд для Bash, Zsh и Fish. Сам инструмент toit написан на этом языке и служит более крупным примером использования пакета.
По мере роста утилиты тот же набор средств предоставляет хранение конфигурации, кеширование и вывод с разной подробностью в текстовом формате или JSON. Таким образом, стабильный релиз относится к языку и его инструментам сразу для нескольких задач; он не является анонсом новой аппаратной платы или обязательного облачного сервиса.


