LINUX.ORG.RU

Проект elk развивает компактный движок JavaScript для микроконтроллеров

 ,


0

0

На данный момент доступна версия движка JavaScript elk 2.0.9. Проект нацелен на создание прошивок для платформ с ограниченными ресурсами, таких как ESP32 и Arduino Nano. Сам движок потребляет малое количество ресурсов: 100 Б ОЗУ и 20 КБ флеш-памяти. JS-код выполняется в изолированном от основного кода окружении. Используется интерпретатор, а байткод не генерируется.

>>> Подробности

Шутки про ядро на яваскрипте постепенно становятся пугающе близкими к реальности.

Пока мне не понятно, зачем это, особенно учитывая, что собственно js код огорожен от основного, более низкоуровнего. Разве что вебдевелоперов быстро на эмбед переучивать.

le_poisson ()
Ответ на: комментарий от le_poisson

Это может быть полезно для того, чтобы выполнять один и тот же код в обработчике HTTP-запросов и в браузере, откуда эти запросы генерируются.

Самый типичный пример - валидация. Например, такое правило - в поле «login» можно писать только латинские буквы в нижнем регистре, цифры и символ подчёркивания, причём символов должно быть от 2 до 16, а первым символом должна быть не цифра. Пользователю удобно, когда поле валидируется сразу, ещё до отправки на сервер - в этом случае он получает шанс сразу же исправить свою ошибку. А на сервере всё равно придётся проверять ещё раз - не доверять же клиенту (ведь им может оказаться не браузер, исполняющий наш код, а, например, злоумышленник; или браузер, но с выключенным js). Чтобы не писать код дважды (для браузера и обработчика запроса), существуют разные подходы. Один из них - использовать один и тот же язык, что позволит вызвать одну и ту же функцию валидации из разных мест.

У ESP8266/ESP32 хватит ресурсов, чтобы сделать на его базе целое устройство, предоставляющее пользователю веб-интерфейс для настройки и управления.

kmeaw ★★★ ()
let a = 0;        // 97 milliseconds on a 16Mhz 8-bit Atmega328P (Arduino Uno and alike)
while (a < 100)   // 16 milliseconds on a 48Mhz SAMD21
  a++;            //  5 milliseconds on a 133Mhz Raspberry RP2040
                  //  2 milliseconds on a 240Mhz ESP32

Куда это годится?

Tinker ()
Ответ на: комментарий от anonymous

«Забавно. То есть люди, не способные выучить новый язык, решили программировать на микроконтроллерах.»

Забавно люди умеющие программировать решили не программировать , а просто забирать успешный успех и выдавать за свой и локация их известна москва да питер. Основная их задача играть сеньоров помидоров да мидлов пирамидлов взбрасывая свой успешный успех на ютуб с целью пропаганды самих себя забыв про того кто кто этот успешный успех и прибыли принес почти всему миру технологии в частности «Архитектор»

anonymous ()
Ответ на: комментарий от futurama

Будет как с гомогеями - сначала «геи тоже люди», «они тоже имеют право любить», а кончится тем что в каждом фильме - «дежурный гей» и обязательно представительство секс меньшинств в каждой корпорации…

anonymous ()
Ответ на: комментарий от fernandos

В том то и дело что и тебе, и мне, и всем остальным - микроконтроллер частенько очень важными вещами рулит. Так сказать, мал золотник, да важен.

anonymous ()
Ответ на: комментарий от emorozov

По сравнению с теми убожествами которые в свой время масдайщики напридумывали и активно пытались впихнуть во все места, это - вполне себе неплохая вещь.

anonymous ()
Ответ на: комментарий от pingvinek

Фрейд и расовая чистота? Месье знает толк… Сильно подозреваю что много о чем вы можете поговорить, но не о всем пристойно говорить публично.

anonymous ()

Очень нужно. Скриптовый язык требуется в очень разных, иногда неожиданных, задачах, когда нет возможности разработать универсальную прошивку. Одна из альтернатив этому проекту - lua, но lua просто убогий.

Скорость выполнения в данном случае не важна совсем, потому что ему нужно лишь вызывать методы в нужном порядке, в соседнем потоке будет без проблем крутиться ничему не мешая.

SL_RU ★★★ ()
Ответ на: комментарий от fernandos

Очень нужно. Скриптовый язык требуется в очень разных, иногда неожиданных, задачах, когда нет возможности разработать универсальную прошивку. Одна из альтернатив этому проекту - lua, но lua просто убогий. Скорость выполнения в данном случае не важна совсем, потому что ему нужно лишь вызывать методы в нужном порядке, в соседнем потоке будет без проблем крутиться ничему не мешая.

А вот и первая кухарка подтянулась…

anonymous ()
Ответ на: комментарий от SL_RU

Скорость выполнения в данном случае не важна совсем, потому что ему нужно лишь вызывать методы в нужном порядке, в соседнем потоке будет без проблем крутиться ничему не мешая.

Ау, дядя, на микроконтроллерах нет «потоков». Там твой js хавает время выполнения у нормальной прошивки. А с учетом этого:

let a = 0;        // 97 milliseconds on a 16Mhz 8-bit Atmega328P (Arduino Uno and alike)
while (a < 100)   // 16 milliseconds on a 48Mhz SAMD21
  a++;            //  5 milliseconds on a 133Mhz Raspberry RP2040
                  //  2 milliseconds on a 240Mhz ESP32

Валидация уже упомянутого поля login будет занимать несколько минут.

PPP328 ★★★★ ()
Ответ на: комментарий от kmeaw

Это может быть полезно для того, чтобы выполнять один и тот же код в обработчике HTTP-запросов и в браузере, откуда эти запросы генерируются.

Самый типичный пример - валидация.

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

ya-betmen ★★★★★ ()
Ответ на: комментарий от PPP328

С любой RTOS потоки есть, а так же есть DMA и прерывания. Скорость выполнения для задач, где нужен скриптовый язык, более чем достаточная. Я реализовывал проект на STM32 со встраиваемым lua, скорость там не выше, а убогость lua в разы больше, с удовольствием бы вместо lua использовал бы эту библиотеку.

SL_RU ★★★ ()