Skip to content

Moddable SDK 5.0.0

Compare
Choose a tag to compare
@mkellner mkellner released this 16 Sep 19:12
· 21 commits to public since this release

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 Register 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
      • Allow overriding the audio resource using config.audioInWave. Requested by @stc1988. #1390
      • Support stereo audio resources
    • 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 uses c_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, and Listener sockets for Windows
    • TCP socket on embedded, macOS, and Linux conformance improvements
    • TCP Listener clears host destructor on close
    • 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 @gibson402 with test case by @anba. tc39/ecma262#3388
    • TypedArray.prototype.byteLength now returns conforming size when buffer is resized to a non-integrate size. Reported by @gibson402. #1392
    • Fix parsing of conditional expressions following await. Only occurred when explicit resource management proposal support is enabled. (Reported by @gibson402). #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, and fxToBigUint64
  • 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
    • ESP-IDF component dependencies
  • TypeScript
    • Update instrumentation typings (contributed by @cmidgley)
    • Add AudioOut.volume case to enqueue typing (contributed by @stc1988)
    • Add optional microseconds() function to Time 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: