Espruino
{{Infobox software
| name = Espruino
| developer = Gordon Williams
| repo = {{URL|https://github.com/espruino/Espruino}}
| license = MPL 2.0
| website = {{URL|http://www.espruino.com/}}
}}
Espruino is an open-source JavaScript interpreter for single-board microcontrollers. It is designed for devices with small amounts of RAM (as low as 8 kiB{{Cite web|url=http://www.espruino.com/Performance|title=Espruino Performance Notes|website=www.espruino.com|language=en|access-date=2018-06-04}}). Espruino implements a large amount of the ECMAScript ES5 spec with parts of the ES6 spec where it is useful in an embedded environment.https://www.espruino.com/Features
Overview
Espruino was created by Gordon Williams in 2012 as an attempt to make microcontroller development truly multiplatform.{{Cite book|title=Make Boards Guide 2017.|date=2017|publisher=Make Books|others=Senese, Mike|isbn=9781680453423|pages=33|oclc=987280329}} Though initially not open-source, the Espruino firmware was offered as a free download for STM32 microcontrollers.{{Cite news|url=https://hackaday.com/2012/10/05/a-javascript-interpreter-for-arm-micros/|title=A JavaScript interpreter for ARM 'micros|date=2012-10-05|work=Hackaday|access-date=2018-06-01|language=en-US}} It was made open-source in 2013 after a successful Kickstarter campaign{{Cite web|url=https://www.kickstarter.com/projects/gfw/espruino-javascript-for-things|title=Espruino: JavaScript for Things|website=Kickstarter|language=en-US|access-date=2018-06-04}} for a development board running the software.{{ws|url=https://hackaday.com/2013/09/03/the-javascript-of-things/|title=The JavaScript of Things|date=2013-09-03|work=Hackaday|access-date=2018-06-01|language=en-US}} Since the original Espruino board, there have been a number of new official development boards including the small USB thumb-drive-sized Espruino Pico,{{Cite news|url=https://makezine.com/2014/11/11/javascript-by-the-pico/|title=Javascript by the Pico {{!}} Make|date=2014-11-11|work=Make: DIY Projects and Ideas for Makers|access-date=2018-06-04|language=en-US}} the Wifi-equipped Espruino WiFi, the Puck.js with built-in Bluetooth and the Pixl.js{{Cite web|url=https://www.heise.de/make/meldung/Angetestet-Pixl-js-Espruino-Board-mit-Bluetooth-und-Display-4039075.html|title=Angetestet: Pixl.js - Espruino-Bastelboard mit Bluetooth und Display|last=Make|website=Make|language=de-DE|access-date=2018-06-04}} with a built-in LCD display and Arduino shield compatibility. Espruino is the operating system used on the BangleJS and BangleJS2 smartwatches. In addition to the official boards, Espruino runs on approximately 40 other types of development boards{{Cite book|title=Make Boards Guide 2017.|date=2017|publisher=Make Books|others=Senese, Mike|isbn=9781680453423|pages=35|oclc=987280329}}{{Cite news|url=https://makezine.com/2017/06/01/espruino-open-for-business/|title=Espruino: The Challenges of Running an Open Source Hardware and Software Company {{!}} Make|date=2017-06-01|work=Make: DIY Projects and Ideas for Makers|access-date=2018-06-01|language=en-US}} including the ESP8266.{{Cite book|title=Node.js for Embedded Systems.|date=2015|publisher=Oreilly & Associates Inc|others=Mulder, Patrick.|isbn=9781491928967|pages=45|oclc=965413450}}{{Cite news|url=https://tech.scargill.net/espruino-for-you-sir/|title=Espruino For You Sir - Scargill's Tech Blog|date=2017-04-11|work=Scargill's Tech Blog|access-date=2018-06-04|language=en-GB}}
There is a large body of reference material for Espruino including over 100 tutorials{{Cite web|url=http://www.espruino.com/Tutorials|title=Tutorials and Examples - Espruino|website=www.espruino.com|language=en|access-date=2018-06-04}} as well as the book Making Things Smart{{Cite book|title=Making things smart : easy embedded JavaScript programming for making everyday objects into intelligent machines|last=F.|first=Williams, Gordon|isbn=9781680451894|edition=First|location=San Francisco, CA|oclc=964820771|year = 2017}} which contains a selection of hardware projects that can be created with Espruino-based microcontrollers.
To achieve maximal memory efficiency, Espruino executes code from source directly inside the parser, without the use of an Abstract Syntax Tree or intermediate bytecode.{{cite web |title=Espruino Documentation |url=https://www.espruino.com/Internals}}
Hardware
The first official development board was the Original Espruino. Later boards are available in a variety of form factors. The Original Espruino was followed by the Espruino Pico, Espruino WiFi, Puck.js and Pixl.js. A breakout board featuring the MDBT42Q Bluetooth LE module, the same used in the Puck.js and Pixl.js, is also available.
File:Espruino-original.jpg|Original Espruino
File:Espruino-pico.jpg|Espruino Pico
File:Espruino-wifi.jpg|Espruino WiFi
File:Espruino-puck.jpg|Espruino Puck.js
File:Espruino-pixl.jpg|Espruino Pixl.js
File:Espruino-mdbt42q.jpg|Espruino MDBT42Q Breakout
Software
{{Infobox software
| name = Espruino web-based IDE
| screenshot = Espruino-ide-screenshot.png
| caption = Screenshot of Espruino web-based IDE running in Google Chrome
| developer = Gordon Williams
| repo = {{URL|https://github.com/espruino/EspruinoWebIDE}}
| license = Apache License 2.0
| website = {{URL|https://www.espruino.com/ide/}}
}}
Espruino programs are written using JavaScript. The Espruino IDE is available as a web-based app, a Google Chrome App and as a native Windows application.{{Cite web|url=https://www.espruino.com/ide/|title=Espruino Web IDE|website=www.espruino.com|access-date=2019-05-28}} Alternative methods of programming Espruino boards include using terminal programs such as PuTTY on Windows.{{Cite web|url=https://www.espruino.com/Alternative+Terminal+Apps|title=Using Alternative Terminal Apps - Espruino|website=www.espruino.com|access-date=2019-05-28}}
License
All of Espruino is open source. The different parts are licensed as follows:
- Espruino Firmware - Mozilla Public License, version 2.0{{Cite web|url=https://github.com/espruino/Espruino/blob/master/LICENSE|title=espruino/Espruino|website=GitHub|language=en|access-date=2018-06-04}}
- Espruino Code Samples - MIT License{{Cite web|url=https://github.com/espruino/EspruinoDocs/blob/master/LICENSE|title=espruino/EspruinoDocs|website=GitHub|language=en|access-date=2018-06-04}}
- Espruino Documentation - Creative Commons Attribution-ShareAlike 3.0
- Espruino Hardware Design Files - Creative Commons Attribution-ShareAlike 3.0{{Cite web|url=https://github.com/espruino/EspruinoBoard/blob/master/LICENSE|title=espruino/EspruinoBoard|website=GitHub|language=en|access-date=2018-06-04}}