Moddable SDK 3.9.4
This release contains improvements to the Moddable SDK made between May 4, 2023 and June 1, 2023.
Highlights of this release include:
- MP3 decoder
- MP3 audio streaming
- Audio playback support for Raspberry Pi Pico (including MP3)
- High quality Text-to-Speech with ElevenLabs.io
- Support for more ESP32-S2 and ESP32-C3 development boards
- XS 14.1 - garbage collection of keys and support for Symbols as WeakMap Keys
June Community Call
The monthly Moddable Community Call is Wednesday, June 14 at 3:00 PM PDT. Join us live on Zoom to learn more about this month's release and chat with the Moddable community.
New: Sign-up to receive an email reminder about our monthly community calls.
Our special guests this month are Daniel Ashcroft and Lawrence Kincheloe, founders of Juniper Technology. They are preparing to launch Twig, an agricultural monitoring IoT product with an open hardware design that gives users complete control of their data. Twig is their first product, created for hobbyists and explorers. Daniel and Lawrence will share the philosophy behind their product, their unusual approach to manufacturing, and how the Moddable SDK helps them bring their vision to market.
July release
Because of summer travel plans, our July release of the Moddable SDK will be delayed until approximately July 10.
Release details
- Devices
- M5Stack Fire
- M5Stack Core2 now enables PSRAM, increasing available RAM by 16x
- Support for Adafruit QT Py-S2 development board
- Support for WEMOS S2 Mini development board
- Support for Espressif's ESP32-C3-DevKitM-1 development board
- Support for Espressif's ESP32-C3-DevKit-RUST-1 development board
- Audio
- MP3 audio decoder integrated with a JavaScript API. The implementation uses the libmad MCU fork by Earle F. Philhower, III.
- MP3 Resource streaming API to play MP3 from flash memory.
- MP3 HTTP streaming API to stream MP3 from HTTP and HTTPS sources.
- New SomaFM example application for continuous MP3 radio streaming (thank you to @stc1988 for assistance identifying memory issues #1111)
- Text-to-speech streaming API for the ElevenLabs.io engine with secure MP3 streaming.
- audioOut using I2S now supported on Raspberry Pi Pico (including new MP3 support)
- audioIn simulator implemented. Sources audio from a Wave file.
- Microcontroller runtimes
- MCP7940 Real-time Clock implements digital trim adjustment to compensate for clock drift
- Initialize time/date via SNTP if unavailable from debugger or RTC. Gives better default behavior for release & instrumented builds. (reported by @meganetaaan) #1094
- Enable growable keys in XS by default to avoid running out of keys (reported by @linfan68) #1103
- ESP32 USB now implements the debugger serial connection over both CDC-JTAG and TinyUSB
- ESP32-S2 requires TinyUSB
- ESP32-S3 can use either
- ESP32-C3 requires CDC-JTAG
- Fully initialize UART configuration on ESP32 platforms to fix intermittent failures with PSRAM enabled
- TLS
- ECMA-419 TLS socket implements read into existing buffer
- Bump default TLS version to 1.2. Contributed by @jethrowharton.
- ECMA-419 Analog input on ESP32 only performs calibration once #1120
pins/monitor
working on Pico to deliver callbacks on digital input change- Mods working on Pico
- Tools
- TypeScript support for mods by setting-up tsconfig.json in manifest_mod.json. (reported by @linfan68) #1104
mcrun
for ESP32 sources ESP-IDFexports.sh
to provide identical Python environment asmcconfig
.mcrun
reports specific error message when attempting to build a project that includes native code #1098mcconfig
outputs recursively merged manifests asmanifest_flat.json
. This is useful for debugging manifest mistakes and for tools that operate on manifests.
- XS 14.1
- Keys can now be garbage collected
- Collects keys created by scripts; does not collect keys used in byte code
- Enabled in
xst
command line tool - Disabled in MCU builds where dynamically creating and discarding keys is very rare
- Support enabled by
mxKeysGarbageCollection
flag
- "Symbols as WeakMap Keys" is now implemented - completes support for ECMAScript 2023
- xsbug now displays contents of TypedArrays and ArrayBuffers (suggested by @tve). Up to 1024 elements are displayed.
- Fixes
- Fixed "XS returns the wrong result for expressions that assign to array length" (reported by @gibson402) #1123
- Fixed "toFixed(0) sometimes returns a trailing dot" (reported by @tve) #1124
- Revert
BigInt
change that caused incorrectadd
calculation on some platforms - Fixes for issues identified by fuzz testing with Fuzzilli and oss-fuzz. Thank you to @Agoric for their ongoing assistance with this work.
- Keys can now be garbage collected
- Documentation
- Documentation on ESP32 family boards with USB connections - how to port and develop
- Mods document links to discussion of how to install a mod without using mcrun. #1105
- The
xsLog()
function is now described in the XS in C documentation (suggested by @tve)
Contact Us
If you have questions or suggestions about anything here, please reach out:
- Start a new Discussion on our GitHub repository
- Drop by our Gitter to chat
- Contact us on Twitter at @moddabletech