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
  • InfluxDB - Build time-series-based applications quickly and at scale.
  • Scout APM - Truly a developer’s best friend
  • SonarLint - Clean code begins in your IDE with SonarLint
  • Zigi - Close all those tabs. Zigi will handle your updates.
  • 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.

  • InfluxDB

    Build time-series-based applications quickly and at scale.. InfluxDB is the Time Series Data Platform where developers build real-time applications for analytics, IoT and cloud-native services in less time with less code.

  • 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. Pull requests are not accepted. Use the mailing list to submit patches.

  • 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

  • Scout APM

    Truly a developer’s best friend. Scout APM is great for developers who want to find and fix performance issues in their applications. With Scout, we'll take care of the bugs so you can focus on building great things 🚀.

  • 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