I'm curious and couldn't find the info from a quick search of the repo, how much flash space does the JS virtual machine take up? And how much space is left to include libraries you may need?
Between the Arduino runtime, wifi library, mqtt library, libraries for talking to peripherals, and my C++ application code I'm already getting pretty close to the 512KiB limit for an ESP8266-based thermostat I've been working on. Hard to imagine JS being small enough to fit on that, but perhaps it's designed for embedded chips with a bit more flash space available
I can't speak for a JS virtual machine, but for a point of comparison CircuitPython[1] runs on many ESP32 boards and builds are often under 1.5 MB. It does come with a whole set of modules, with the ones you'd expect to have in Python like "re" or "time" (although they only have a few functions in there), but also with CircuitPython-specific modules like "board" or "digitalio" to access peripherals, or "wifi" for networking.
The boards listed on the CircuitPython downloads page usually have between 2 and 8 MB of flash, so you often have enough for the VM and your own code plus a few files.
Devices memory vary in size https://en.wikipedia.org/wiki/ESP8266. Minification has been common with JS for years so it should be easy to add that in with the rollup.js build. Some checking be a nice to have.
Well, related to espruino as linked below. Having the VM does allow it to handle power and sleep states for you by the nature of the VM understanding the scheduling that's required.
The primary goal is to add TypeScript for types and abstractions. I dont think the JS runtime the TypeScript transpiler targets matters as long as it can be transpiled to the current version. I wasnt aware of that project but now I will look into it.
I've looked into both, but I'd still prefer to write in typescript over python. Although those are both pretty decent. Of course, all my work stuff is still in C and C++ and will probably stay that way.
15 comments
[ 3.9 ms ] story [ 46.6 ms ] threadBetween the Arduino runtime, wifi library, mqtt library, libraries for talking to peripherals, and my C++ application code I'm already getting pretty close to the 512KiB limit for an ESP8266-based thermostat I've been working on. Hard to imagine JS being small enough to fit on that, but perhaps it's designed for embedded chips with a bit more flash space available
The boards listed on the CircuitPython downloads page usually have between 2 and 8 MB of flash, so you often have enough for the VM and your own code plus a few files.
[1] https://circuitpython.org/
More details in the Espruino repo: https://github.com/espruino/Espruino
What are the benefits of doing this vs. using a runtime (like Moddable's XS) that supports ECMAScript 2018?