You are reading a single comment by @Gordon and its replies. Click here to read the full conversation.
  • Finally there's a new Espruino release - and it's a big one!­aHw


    • Getter and Setter support
    • for(var i of array) to iterate over elements
    • More ES6 API functions including Array.find, String.startsWith/endsWith/includes/repeat
    • Bluetooth LE boards now communicate over twice as fast, while going into an idle mode when not used and drawing significantly less power when connected.
    • Software Serial Transmit and Receive on any pin
    • Better vector font rendering
    • New Graphics improvements, including createImage for easy, readable 1bpp bitmaps, and .dump to output a copy of the current Graphics object as an image in the Web IDE console.
    • Lots of fixes, and extra checks added based on code fuzzing performed by a few different groups.
    • Improved Espruino API reference in many areas
    • You can now add extra code to be executed at boot as .boot0/1/2/3 in Storage
    • heatshrink library allows access to Espruino's built-in LZSS compression engine from JS
    • Doubled the IO buffer size on many boards (so FIFO_FULL errors are far less likely)
    • E.mapInPlace is now extremely powerful for quickly packing/unpacking bits in arrays

    Full Changes

    ES5/ES6 features

    Check current state at

    • Allow to iterate over prototype chains down from Array and Object
    • Add for(var i of array) to iterate over elements
    • Added getter and setter support
    • Add missing ArrayBufferView.filter
    • Added Array.find and findIndex (also for ArrayBufferViews)
    • Added String.startsWith/endsWith/includes (#1302)
    • Added ES6 String.prototype.repeat


    • Added support for Software Serial ports (for low baud rates, eg. 9600)
    • Add extra ReferenceError checks, even if variable is not used
    • Now check for ReferenceErrors in global scope
    • Stop parsing blocks if not executing (fix #572)
    • Switch to non-recursive StringExt copy (fix #1451)
    • Add E.lookupNoCase to allow searching case-insensitively for Object keys
    • edit() now chooses the shortest way to describe the function
    • Added Global isFinite
    • Enable E.setTimeZone on boards with very little flash memory
    • Reconstruct start and end newlines when dumping multi-line functions
    • Add Ethernet.getIP/setIP callbacks for Wiznet to bring them in line with WiFi (fix #1482)
    • Console now doesn't print quotes around object keys if it's not needed
    • Added E.toJS to allow very compact JS data stringification (similar to JSON.stringify for JSON2)
    • Output the current timer number as a comment in dump()
    • Don't print =undefined to console if line is empty
    • Use 32 bit floats for E.FFT, not 64 (fix #1443)
    • Automatically shut down UART if both pin states are changed
    • Added non-standard Uint24Array, because it's very useful for RGB
    • Allow btoa to work for arrays as well as Strings (fix #1509)
    • Improve E.mapInPlace docs, and allow it to work with no map (eg pass straight through)
    • Allow E.mapInPlace to merge bits from multiple source elements, also add option for msb/lsb first
    • Double IO buffer size to 256 (1k bytes) on boards with 96k of RAM or more (or NRF52)
    • Add 'bits' option for Software SPI
    • STM32 reset pin IRQs before storing the state - makes lost setWatches far less likely


    • Pixl.js menu now resets font alignment, and down arrow icon is fixed
    • Added Graphics.asBMP/asURL/dump - allowing easy debugging of Graphics via IDE
    • Added Graphics.drawPoly
    • Fix rounding errors in fillPoly -> improve vector font rendering
    • Graphics.stringWidth now takes account of newlines
    • Add Graphics.asImage to turn a Graphics instance into an Image that can be used with drawImage
    • Add Graphics.createImage to allow creation of a 1 bit image direct from a string

    Flash Memory

    • Added Storage.getFree() to return available space
    • Check Flash Storage for modules when using require
    • Added 'heatshrink' library to expose built-in heatshrink compression
    • Search for and execute files '.boot0'/1/2/3 in Storage at boot time if they exist

    Bluetooth Boards

    • Add options argument to NRF.connect and BluetoothDevice.gatt.connect, allowing a connection interval to be specified
    • Start renegotiating speed after 0.1ms, not 5s. Massively improves connect speed.
    • Add Dynamic Interval Adjustment - default to 2x connection speed, but idle at 10x slower if not used for 2 minutes
    • Add NRF.setConnectionInterval() to allow connection speed to be set manually
    • NRF.requestDevice now resolves as soon as a device is found. Faster and better in congested areas
    • increase JsSysTime accuracy to 2^-20 from 2^-16 - drastically improves Util Timer accuracy
    • Add Pixl.setLCDPower to allow the LCD to be powered off, more than halving power consumption
    • Allow NRF.setScan and NRF.findDevices to take the same search filters NRF.requestDevice does (fix #1496)
    • allow arbirtary baud rates to be specified for UART
    • Added NRF.HID event for two-way BLE HID communications
    • Pixl.js: Fix 30s pause when closing sockets on WIZnet W5100 (fix #1306)
    • MDBT42Q: Add LED2 var in the Espruino interpreter, but don't use it for the bootloader


Avatar for Gordon @Gordon started