15 comments

[ 3.9 ms ] story [ 46.6 ms ] thread
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.

[1] https://circuitpython.org/

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.
> Transpile TypeScript to Espruino flavor of JavaScript

What are the benefits of doing this vs. using a runtime (like Moddable's XS) that supports ECMAScript 2018?

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.
Coming from web I do find it brutal transitioning to C++ so it sounds interesting
May I suggest looking into CircuitPython or MicroPython? CircuitPython is well-supported by Adafruit, and works very well on RP2040s and ESP32s
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.
That was the primary decision for working with TypeScript over Python. While I like, it's not my daily language of choice.
Now I'm intrigued, because I'm working more and more with Typescript as part of my DevOps work. I'll have to give it a try!
I'm trying to learn C++ just because of how widespread its use is.