Skip to content

Releases: Moddable-OpenSource/moddable

October 14, 2020

14 Oct 22:34
Compare
Choose a tag to compare

This release is primarily an update to the XS JavaScript engine.

  • New optimization added to XS Linker to improve performance of property look-up for objects preloaded in flash/ROM. The performance gain is up to 18%, depending on a variety of factors. The optimization is based on graph coloring. See the ROM Colors document for details.
  • New XS byte code for for strings larger than 64 KB (found during work with @Agoric)
  • XS fix for "Object rest incorrectly accepts complex assignment targets" #155 (reported by @bakkot)
  • XS fix for "Eval preventing const declaration in the caller scope" #64 (reported by @tevador)
  • XS fix for "Object rest incorrectly accepts complex assignment targets" #155 (reported by @bakkot)
  • XS fix for "XS allows trailing comma in Expressions" #315 (reported by @jugglinmike)
  • XS fix for "async function: silent swallowing of the 'override mistake'" #322 (reported by @michaelfig) and "XS does not apply runtime strict mode restrictions to async functions" #334 (reported by @jugglinmike). These two reports are both symptoms of the same bug: an async function body ran in sloppy mode! Great find.

Note: The changes to the XS JavaScript engine are not backwards compatible with precompiled byte code. After updating, be sure to clear the contents of $MODDABLE/build/bin and $MODDABLE/build/tmp, and then rebuild tools. See Moddable SDK - Keeping Up To Date for details.

Note:: The xst binaries used by jsvu have been updated to this release of XS (10.4.0).

Other changes:

  • Project manifests for mods may now specify the rotation and pixel format, just like manifests for hosts
  • Correct time passed to Piu touch events (introduced in recent scheduling changes to Piu)

October 12, 2020

12 Oct 23:51
Compare
Choose a tag to compare

October 12, 2020

  • Timer class allows a timer to be unscheduled without being cleared as an optimization to avoid frequently allocating/deallocating a timer. To unschedule a timer, call Timer.schedule with only the id argument:
let t = Timer.repeat(() => trace("tick\n"), 1000);
t.schedule(t);
  • Piu unschedules internal idle timer when not needed by current UI content.
  • Fix ESP32 audio to play if first sound is queued after playback begins. This fixes Piu Sound playback failure reported by @meganetaaan
  • Backlight control is working on Moddable Two in all cases again
  • XS JavaScript engine partial fix for "Object rest incorrectly accepts complex assignment targets" #155 (reported by @bakkot)
  • Projects running on touch devices that do not use touch input can disable the touch driver entirely by setting touchCount to 0 in the config section of the manifest
  • Remove JavaScript module API interface to instrumentation from the base manifest. Most projects do not use it and removing it reduces the binary by several hundred bytes. Projects may still include the module directly. (The Instruments pane in xsbug is unchanged.)
  • Remove accents from Piu text example

October 6, 2020

06 Oct 21:38
Compare
Choose a tag to compare
  • mcrun uses correct path separator ("/", not "\") when building on Windows for ESP8266 and ESP32 targets (reported by @LongNguyen1984)
  • mDNS catches exceptions on UDP write to avoid reboot on unhandled exception when network disconnects
  • preferences on ESP32 doesn't orphan open NVS instance if invalid key passed

October 5, 2020

06 Oct 03:41
Compare
Choose a tag to compare

September 30, 2020

06 Oct 04:00
Compare
Choose a tag to compare
  • Add NodeMCU build device targets for ESP8266 and ESP32 (esp/nodemcu and esp32/nodemcu)
  • Add Button and LED classes following the TC53 IO Peripheral Class Pattern
  • Use Button and LED in classes in hosts for Moddable One, Moddable Two, Moddable Three, ESP8266 NodeMCU, and ESP32 NodeMCU.
new Host.Button.Default({
   onPush(down) {
      trace(`Button pushed: ${down}\n`);
   },
})
const led = new Host.LED.Default;
led.on();
led.off();
led.write(1);
  • Update Commodetto mini-drag example for FT6202 capacitive touch driver compatibility #465 (reported by @basuke)
  • mcrun fixes for Windows host
  • Piu example to control Moddable Two display backlight (by @lprader)
  • XS JavaScript engine fixes for #452 and #453 (reported by @kvenux)
  • ESP32 builds that do not use Wi-Fi are smaller (about 200 KB) by using esp_efuse_mac_get_default in the debugger communication to report the device ID
  • Option to set lwip hostname on ESP32 #470 (requested by @ederle)

September 25, 2020

06 Oct 05:34
Compare
Choose a tag to compare
  • IMA compressed audio now plays on 8-bit audio outputs
  • Piu idle uses interval to reduce frequency of idle events
  • GT911 capacitive touch input driver supports any number of touch points
  • wasm build fixes for Linux host
  • Fix crash on get("REMOTE_IP") on UDP sockets. Update documentation on remote IP. #457 (reported by @JanVanBraeckel)
  • Update WebSocket server document to correctly explain write method #445 (reported by @LaurenceMason)
  • Add replay example to demonstrate use of AudioIn class
  • XS JavaScript engine - disallow use of bound function as constructor, Object.defineProperties works for all types of functions
  • Add manifest for SMBus module
  • Content for examples that depend on non-secure http connection moved to test.moddable.com domain to avoid https redirect (reported by @basuke)
  • Core tween code of Piu Timeline object rewritten in C to increase speed and reduce memory use

This release includes significant enhancements to support for M5 device targets include M5Stack Fire, M5Stack CORE2, M5Atom Lite, M5Atom Echo, and M5Atom Matrix.

  • Support for M5Stack CORE2 build target (esp32/m5stack_core2) #455 (from @meganetaaan and @jpzukin)
  • Update targets for esp32/m5atom-matrix, esp32/m5atom-echo, and esp32/m5atom-liteto be consistent in
  • M5Atom target fixes - correct colors for NeoPixel lights, correct NeoPixel string length, consistent accelerometer orientation
  • Update AudioIn class to work on M5Stack Fire and M5Atom Echo targets.
  • M5Atom Echo example stops playing sound before starting next
  • Debounce buttons on M5 products to work around hardware noise when Wi-Fi is enabled

September 15, 2020

06 Oct 05:34
Compare
Choose a tag to compare
  • GT911 touch driver reuses read buffer to reduce load on garbage collector
  • Support 16-bit ARGB4444 pixels in tools
  • XS JavaScript engine fixes for #446, #447, #448, #449, and #450 (reported by @kvenux)
  • Fix crash if lwip socket closed immediately before Wi-Fi disconnect
  • Fix crash in when using lwip listener (reported by @basuke)
  • Fix crash invoking callbacks in audio mixer
  • Update Moddable One and Moddable Two documentation to describe pin use by I²C touch and SPI display components

September 10, 2020

06 Oct 06:12
Compare
Choose a tag to compare
  • Support M5Atom Lite, M5Atom Echo, and M5Atom Matrix (from @wilberforce)
  • GT911 touch driver marks unavailable touch points with 0x80

September 8, 2020

06 Oct 06:12
Compare
Choose a tag to compare
  • Lower overhead message queues for BLE on QCA4020
  • Make start-up sound configurable on M5Stack and M5Stack Fire
  • Desktop simulator supports screen "holes"
  • Optional microseconds static property for Time #439 (requested by @LaurenceMason)
  • Fix modSPIUninit crash on ESP32
  • XS JavaScript engine fixes for #440, #441, and #442 (reported by @kvenux)
  • Use Xtreme Quality IMA-ADPCM encoder by David Bryant for higher quality
  • IMA ADPCM compressed audio stores temporally first sample in low 4-bits of byte

September 4, 2020

06 Oct 06:13
Compare
Choose a tag to compare
  • Fix wifi-config example to run on Moddable One
  • Fix TypeScript support on Windows