Контейнеры в IoT (дождались)
С тех пор как embedded-устройствами стали называть ARMv7 штуки с Debian на борту, я уже ничему не удивляюсь. Вот, собственно, и ESP32-native контейнеры подвезли.
Опытные разработчики, за плечами которых стоит V8 (компилятор Javascript в машинный код, также известен как NodeJS) и Dart (язык для фреймворка мобильных приложений Flutter) - оба сделаны в Гугле - обособились в стартап под названием Toit, где пишут целый стек технологий, прицеленных на сегмент интернета вещей. Давайте кратко пробежимся по нему.
Итак, в основе всего стоит одноименный язык программирования для разработки микроконтроллерных приложений, дизайн которого предусматривает высокоуровневость, объектно-ориентированность, декларативность, статическую анализируемость, безопасность и сборку мусора. Типизация в языке опциональная. Для выразительности присутствуют лямбда-функции, которые, тем не менее, рекомендуется заменять на более эффективные оригинальные "блоки" (blocks). Также присутствуют встроенные управления многозадачностью и собственный пакетный менеджер (куда ж без него).
Вроде бы всё типично, но изюминкой тут являются виртуальная машина, на которой исполняется скомпилированный код, и дополнительные инструменты для прошивки устройств и массогого деплоймента. Виртуальная машина по сути и является этой системой контейнеризации, для запуска изолированных сервисов. Она оптимизирована под over-the-air прошивку устройств (привет из фронтенд-разработки), позволяет по мере добавления нового кода сразу же грузить его в микроконтроллер (например по вайфаю, без программатора и USB) и получать моментальную обратную связь. Штука, которая выполняет роль этакого микрозагрузчика, называется Jaguar и написана на Go с щепоткой Toit. Управление деплойментом реализуется с помощью проприетарной утилиты Artemis и является точкой коммерциализации проекта - доступна только демо-версия для 10 устройств.
Проекту уже более 3-ёх лет. Текущая документация оставляет приятные ощущения - изобилует большим количеством разнообразных обучающих материалов от Hello World и моргания светодиодом до HTTP файлового сервера. Строгая ориентация в позиционировании на ESP32 несколько смущает и смахивает на намеренное "обрезание крыльев" под влиянием маркетологов или спонсоров в виде производителей одноимённых чипов. Тем не менее, в подвале главной страницы сайта языка вскользь упоминается возможность запускать это дело на десктопах.
Также обращает на себя внимание тот факт, что современные языко-строители всегда строят по сути экосистему. Одного компилятора недостаточно в современном мире для жизнеспособности проекта - всегда нужны инструменты управления зависимостями, их дистрибьюции, встроенные по соседству возможности CI/CD, расширения популярных IDE. Авторы Toif явно это понимают и всё выше перечисленное у них имеется.
#embedded #iot #esp32
С тех пор как embedded-устройствами стали называть ARMv7 штуки с Debian на борту, я уже ничему не удивляюсь. Вот, собственно, и ESP32-native контейнеры подвезли.
Опытные разработчики, за плечами которых стоит V8 (компилятор Javascript в машинный код, также известен как NodeJS) и Dart (язык для фреймворка мобильных приложений Flutter) - оба сделаны в Гугле - обособились в стартап под названием Toit, где пишут целый стек технологий, прицеленных на сегмент интернета вещей. Давайте кратко пробежимся по нему.
Итак, в основе всего стоит одноименный язык программирования для разработки микроконтроллерных приложений, дизайн которого предусматривает высокоуровневость, объектно-ориентированность, декларативность, статическую анализируемость, безопасность и сборку мусора. Типизация в языке опциональная. Для выразительности присутствуют лямбда-функции, которые, тем не менее, рекомендуется заменять на более эффективные оригинальные "блоки" (blocks). Также присутствуют встроенные управления многозадачностью и собственный пакетный менеджер (куда ж без него).
Вроде бы всё типично, но изюминкой тут являются виртуальная машина, на которой исполняется скомпилированный код, и дополнительные инструменты для прошивки устройств и массогого деплоймента. Виртуальная машина по сути и является этой системой контейнеризации, для запуска изолированных сервисов. Она оптимизирована под over-the-air прошивку устройств (привет из фронтенд-разработки), позволяет по мере добавления нового кода сразу же грузить его в микроконтроллер (например по вайфаю, без программатора и USB) и получать моментальную обратную связь. Штука, которая выполняет роль этакого микрозагрузчика, называется Jaguar и написана на Go с щепоткой Toit. Управление деплойментом реализуется с помощью проприетарной утилиты Artemis и является точкой коммерциализации проекта - доступна только демо-версия для 10 устройств.
Проекту уже более 3-ёх лет. Текущая документация оставляет приятные ощущения - изобилует большим количеством разнообразных обучающих материалов от Hello World и моргания светодиодом до HTTP файлового сервера. Строгая ориентация в позиционировании на ESP32 несколько смущает и смахивает на намеренное "обрезание крыльев" под влиянием маркетологов или спонсоров в виде производителей одноимённых чипов. Тем не менее, в подвале главной страницы сайта языка вскользь упоминается возможность запускать это дело на десктопах.
Также обращает на себя внимание тот факт, что современные языко-строители всегда строят по сути экосистему. Одного компилятора недостаточно в современном мире для жизнеспособности проекта - всегда нужны инструменты управления зависимостями, их дистрибьюции, встроенные по соседству возможности CI/CD, расширения популярных IDE. Авторы Toif явно это понимают и всё выше перечисленное у них имеется.
#embedded #iot #esp32
👍10🤯2🙏1