Moddable SDK 5.0.0
Moddable SDK 5.0 contains improvements made between August 10 and September 13, 2024.
Highlights of this release include:
- OneWire support for ESP-IDF v5
- Integration of The ESP Component Registry with project manifests
- ECMA-419 TCP, UDP, and Listener sockets for Windows
The xs-dev project is working towards a version 1.0 release. If you aren't already using xs-dev, it is worth taking a look. It is the easiest way to install and update the Moddable SDK and the embedded SDKs it depends on. Nick Hehr, creator of xs-dev, is requesting feedback on changes to the structure of xs-dev to make it easier for future contributions and maintenance. If you are a user or contributor to xs-dev, please take a look.
Note: ESP-IDF v5.3.1 has been released. Our initial testing shows that it is compatible with Moddable SDK v5.0. We are not requiring an update to ESP-IDF v5.3.1 at this time, as it does not appear to contain any critical changes and there have been quite a few ESP-IDF updates lately.
Release Details
- Modules
- OneWire support reimplemented for ESP32 family of microcontrollers using ESP-IDF v5
- Audio Input module in simulator
- Add another valid device ID to FT6206 touch input driver. Contributed by @washishi.
- Add modules/data/views directory to hold C header files for use with CompileDataView. Initially includes Wave and MAUD file headers.
- Commodetto
static
renderer usesc_rand
on ESP32 to avoid overhead of cryptographically secure random number generator - UUID module falls back to random when MAC address is unavailable and conforms to RFC 9562 (contributed by @cmidgley)
- Implement
Net.get("IP")
for Linux
- ECMA-419
TCP
,UDP
, andListener
sockets for WindowsTCP
socket on embedded, macOS, and Linux conformance improvements- TCP
Listener
clears host destructor onclose
- File module implementations only need to export
Directory
buildCommon.h
- Compatibility with C++
- Rework to support additional format types (used as part of experimental 419 Storage class)
- Devices
- Moddable Six device targets now define default serial port for built-in programmer (reported by @mauroForlimpopoli) #1406
- XS
ArrayBuffer
constructor steps were not strictly conformant with spec. Reported by @gibson042 with test case by @anba. tc39/ecma262#3388TypedArray.prototype.byteLength
now returns conforming size when buffer is resized to a non-integrate size. Reported by @gibson042. #1392- Fix parsing of conditional expressions following
await
. Only occurred when explicit resource management proposal support is enabled. (Reported by @gibson042). #1394 - Correct explicit resource management function IDs that caused a few objects not to be skipped by Hardened JavaScript's
lockdown()
- Metering now uses 64-bit values consistently internally and in callback. Eliminates overflows and extends range.
- Export
fxFromBigInt64
,fxFromBigUint64
,fxToBigInt64
, andfxToBigUint64
- Documentation
- Fix syntax errors in code blocks of multiple documents. (contributed by @stc1988)
- Explain
dependency
element for ESP32 targets in Platforms section of Manifest documentation - Add image of Moddable Six programmer (reported by @stc1988) #1393
- Use
jsonc
(JSON with comments) to tag JSON fragments with comments (follow on to #1378) - Explanation of
static
expanded and augmented with link to Wikipedia (Requested by @stc1988) #1396
- Tools
- xsbug-log
- Can now capture binary data from embedded device to files on host computer
- Works with multiple VMs for Web Worker support (contributed by @cmidgley)
- Add
$262.isLockDown()
to allow test262 tests to determine if running under Hardened JavaScript's lockdown. - Bring wasm build up-to-date
- testmc (unit test runner)
- Add async
$NETWORK.resolve()
function for DNS look-up - Update list of TLS certificates
- Add async
- ESP-IDF component dependencies
- Add native libraries from The ESP Component Registry with a
dependency
element in your project'smanifest.json
- See ESP32 OneWire driver for example
- Add native libraries from The ESP Component Registry with a
- xsbug-log
- TypeScript
- Update instrumentation typings (contributed by @cmidgley)
- Add
AudioOut.volume
case toenqueue
typing (contributed by @stc1988) - Add optional
microseconds()
function toTime
module typings (contributed by @cmidgley) - xsbug REPL reverse scope order resolution (impacts multiple variables of same name across different scopes)
- Tests
- Add unit tests for ECMA-419 TCP socket
- Add unit tests for ECMA-419 UDP socket
- Examples
- New Embedded Escape Room Challenge to demonstrate Hardened JavaScript Compartments
- Replay audio input/output example handles stereo and queues more samples to playback more reliably on all targets
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