Why doesn’t V8 fit on my microcontroller?

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • ulisp

    A version of the Lisp programming language for ATmega-based Arduino boards.

  • > In a nutshell, the problem is that on microcontrollers everything is firmware that is compiled, linked, and deployed together using really old-fashioned tools. Changing anything means changing everything.

    The author hasn't seemingly heard of http://www.ulisp.com/ which is small enough to fit within kilobytes of memory and at the same time featureful enough to drive complex microcontroller applications. At the same time, it has a normal REPL running on the microcontroller that is accessible from the outside and usable for interactive programming.

  • moddable

    Tools for developers to create truly open IoT products using standard JavaScript on low cost microcontrollers.

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • nesper

    Program the ESP32 with Nim! Wrappers around ESP-IDF API's.

  • Not quite sure if I follow what you're saying. As in Tasmota/Berry do or do not do more than provide I2C/SPI?

    > If one wants to do serious stuff they would use an appropriate RTOS and program it in C.

    It's unfortunate, but still largely appears to be the case. I find C very time consuming to program, so I ported Nim to FreeRTOS [1]. It's _very_ nice being able to go from writing highly optimized ISR functions to high level JSON parsing in one language. Add in defaulting to memory safety but with no pause-the-world GC. I tried Rust but it seems more difficult to integrate into existing world RTOS'es, flashers, Swagger debuggers, etc.

    Though, I've been curious what running a WASM VM would be like? One could integrate any language: C++, C, Nim, Rust, etc. Would be interesting.

    > MongooseOS does more than this if we're talking ESP32, also other devices, Javascript, C, C++, commercial support, cloud based OTA upgrades and integration with AWS, Azure, Google and IBM Watson IoT cloud services.

    MongooseOS does seem interesting, but very targeting a niche market with prebuilt needs? For future RTOS'es I think ZephyrOS [2] has a lot of potential given it's now supported by NXP [3], TI, and others but is independent of any given (cloud) vendors or other IoT companies. Some might not like the CMake based build system, but in my view all the RTOS build systems are terrible in their own special way.

    1: https://github.com/elcritch/nesper

  • quickjs

    Public repository of the QuickJS Javascript Engine.

  • esp32quickjs

    QuickJS JavaScript Engine for ESP32

  • If the scope is limited to ESP32/ESP8266, it seems technically possible to run QuickJS on them.

    From Fabrice Bellard himself:

    > QuickJS should be able to run on the ESP32 platform as it is OS independent (as you said, quickjs-libc.c is not part of the engine). For simple scripts it should fit in the available RAM.

    https://www.freelists.org/post/quickjs-devel/quickjs-on-esp3...

    Some attempts on GitHub:

    https://github.com/binzume/esp32quickjs

    https://github.com/huming2207/quickjs-esp32

    https://github.com/jack828/esp8266-quickjs

  • quickjs-esp32

    QuickJS port for ESP32

  • If the scope is limited to ESP32/ESP8266, it seems technically possible to run QuickJS on them.

    From Fabrice Bellard himself:

    > QuickJS should be able to run on the ESP32 platform as it is OS independent (as you said, quickjs-libc.c is not part of the engine). For simple scripts it should fit in the available RAM.

    https://www.freelists.org/post/quickjs-devel/quickjs-on-esp3...

    Some attempts on GitHub:

    https://github.com/binzume/esp32quickjs

    https://github.com/huming2207/quickjs-esp32

    https://github.com/jack828/esp8266-quickjs

  • esp8266-quickjs

    An attempt on getting QuickJS working on ESP8266 hardware

  • If the scope is limited to ESP32/ESP8266, it seems technically possible to run QuickJS on them.

    From Fabrice Bellard himself:

    > QuickJS should be able to run on the ESP32 platform as it is OS independent (as you said, quickjs-libc.c is not part of the engine). For simple scripts it should fit in the available RAM.

    https://www.freelists.org/post/quickjs-devel/quickjs-on-esp3...

    Some attempts on GitHub:

    https://github.com/binzume/esp32quickjs

    https://github.com/huming2207/quickjs-esp32

    https://github.com/jack828/esp8266-quickjs

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • qemu_esp32

    Add tensilica esp32 cpu and a board to qemu and dump the rom to learn more about esp-idf

  • embedded-hal

    A Hardware Abstraction Layer (HAL) for embedded systems

  • I can write a library for an OLED device that is driven by an platform agnostic I2C device that will run on any microcontroller that implements the necessary abstractions.

    The `embedded-hal` (https://github.com/rust-embedded/embedded-hal) are these abstractions that allow this to happen

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts