In the old days, micro-controller programming was all done in assembly or C, but in recent years higher level languages, included interpreted ones such as Python and JavaScript, have made their ways into MCUs with projects such as MicroPython or Espruino (JS) often running on STMicro STM32 ARM Cortex M micro-controllers, but also other platforms such as ESP8266.
As I browsed through the Embedded Linux Conference Europe 2016 schedule, I discovered that Samsung worked on it own implementation of a JavaScript engine for the Internet of Things: JerryScript. It is a full implementation of ECMAScript 5.1 standard written in C that can run on micro-controllers with less than 64KB RAM, and less than 200KB storage (160KB footprint with ARM Thumb-2 compilation).
JerryScript is comprised of two main components: Parser and Virtual Machine (VM), with the parser performing translation of input ECMAScript application into byte-code than is then executed by the Virtual Machine that performs interpretation.
Although JerryScript is designed for MCUs, and is said to be running on hundreds of thousands of smartwatches, you can easily build it and try in any machine running Linux:
1 2 3 4 5 6 |
git clone https://github.com/Samsung/jerryscript.git cd jerryscript python tools/build.py ./build/bin/jerry jerry> print ('Hello, World!'); Hello, World! |
You can also compile the code for full, compact or minimal implementation, use the C Api to integrate JavaScript support into your program, etc… Many more details can be found on JerryScript website and Github repository. JerryScript is also used in IoT.js framework that currently runs on Linux and NuttX RTOS platforms, as well as STM32F4-Discovery + “BB” (Beaglebone Black?) and Raspberry Pi 2, and will soon be ported to Samsung Artik 1 (MIPS), STM32F429-Discovery, STM32F411-Nucleo, and Intel Edison boards.
Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress
64KB RAM… so it’ll still not run on most current low cost MCU’s then…
I made a package of Jerryscript for openwrt a while ago, but at the end I dropped javascript for shell 🙂
Also, the paid Samsung team who is working on it makes it a pain to contribute patches.
Mediatek has also adopted it for microlattice.js
Let me guess the lead dev is called Jerry?
Hope it’s not Seinfeld… 😉
@zoobab: Let’s be fair: https://github.com/Samsung/jerryscript/pulls?q=is%3Apr+author%3Azoobab+is%3Aclosed This was only one PR, which was answered the same day, but abandoned after issues were pointed out.
@JM: Nope 🙂