March 30, 2022
This is the first release in a little while. These release notes cover February 28, 2022 to April 1, 2022. Moving forward, the goal is to provide release notes at least once a month.
There's a lot of great work in this release – new features, updates to existing features, and the inevitable bug fixes. The release notes contain extensive links to make it convenient for you to explore the changes.
Thank you to everyone who reported an issue or contributed a PR. We appreciate you sharing your time and expertise.
-
Tools
- Simulator
mcsim
is now the default simulator in the Moddable SDK on macOS, Windows, and Linux. The original simulator, Screen Test, is still available but not recommended and will eventually be removed.mcsim
simulator updates instrumentation dynamically when stepping, consistent withscreen test
- Add M5StickC target to
mcsim
simulator. Contributed by @wilberforce. - Dark mode now available in
xsbug
andmcsim
mcsim
now callssetup/*
modules in the same way as device targets. Contributed by @FWeinb.- M5Paper simulator now shows power-pin status. Contributed by @FWeinb.
mcsim
has simulators for Pico Display and Pico Display 2
- The compileDataView tool has been integrated into the Moddable SDK. This tool simplifies working with binary data structures in JavaScript. It converts C language data structures to JavaScript implementations. The js/views example shows how to use compileDataView in a project manifest to share a C header between JavaScript and C source code.
- Fix duplicate path problem building TypeScript modules. Reported by @MKGaru. #869.
xst
(XS Test Tool) now contains support for fuzzing XS with Fuzzilli. Based on contribution by @jessysaurusrex. #817- Improvements to test262 tool to avoid buffer overflows when transferring test script source code to target
- Simulator
-
Devices
- Raspberry Pi Pico is now a supported platform! Check out the Pico documentation for supported features, set-up instructions, and a list of supported device targets.
- Added support for Wemos OLED Lolin32 (based on Heltec WiFi Kit 32 port). Contributed by @costa-victor.
-
Examples
- New collection of BLE HID (Human Interface Device) peripheral examples for building BLE keyboards and media controllers. Read the blog post by @andycarle for demos and details.
- New
httpbridge
example that demonstrates a new architecture bringing together Wi-Fi hotspot support, HTTP server, WebSocket server, and a very efficient use of ZIP files to deliver an embedded web site. Lots of cool techniques and useful code. Contributed by @wilberforce. - New Commodetto fireworks example. Created to show off the Pico Display, it works on any device with a display.
- New Piu QRCode example in response to a request from @wilberforce.
- Update xsuse example to eliminate device dependency on instrumentation indices and to calculate slot size at runtime for compatibility with 64-bit platforms
-
XS
- Fix JavaScript language conformance issues reported by @gibson042
- Fix crash in Compartment Function eval after lockdown
- Unhandled
Promise
rejection now reports reason - Fix stack overflow in degenerate Array sort cases
-
Runtime
- Network
- Add implementation of proposed Ecma-419 standard WebSocket client, with example.
- Add implementation of HTML5 WebSocket class built on Ecma-419 standard WebSocket client, with example. Tested on macOS, ESP32, and ESP8266.
- WebSocket server now supports creating a server from an existing socket. This allows one listener to be shared by HTTP and WebSocket servers. #755
Socket
implementation on Windows supports reading outside of the callback, as on other platforms.#755SecureSocket
now propagates error state to client- Socket implementation on macOS, Linux, and Windows now detects receive error correctly to avoid infinite loop. Reported by @michaelfig.
- Ecma-419 TCP implementation for lwip (ESP32 and ESP8266) now clears all native callbacks when socket is closed or disconnected
- Base
Timer.clear
may now be passedundefined
without throwing an exceptionTimer
module times now correctly schedule when millisecond wraps 32-bit value. Reported by @Arorar3. #875- WebWorker instrumentation now guarded by semaphore to prevent debugger cross-talk with multiple threads
- Merge updates to File module type declarations from @cmidgley
- File module
rename
function handles slashes consistently across flat and hierarchical file systems. #878 Flash
module updated to accept any kind of buffer forwrite
- Fix Outline module compilation on Windows
- Ecma-419 provider for Moddable One had SPI in and out pins reversed
- Network
-
Documentation
- CRC8 and CRC16 classes added to Data reference documentation.
- Fix mix-up with
PICO_SDK_DIR
in Raspberry Pi Pico docs. By @HipsterBrown.