Skip to content

March 30, 2022

Compare
Choose a tag to compare
@phoddie phoddie released this 17 May 03:50
· 3752 commits to public since this release

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 with screen test
      • Add M5StickC target to mcsim simulator. Contributed by @wilberforce.
      • Dark mode now available in xsbug and mcsim
      • mcsim now calls setup/* 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
  • 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

  • XS

    • Fix JavaScript language conformance issues reported by @gibson042
      • "TypedArrays incorrectly write to 'NaN' properties". #886
      • "ToNumber incorrectly accepts 'INFINITY'". #885
      • "Change Date.parse to round milliseconds down". #879
      • "function name is set incorrectly on a method for a property key that is a registered symbol". #876
    • 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.#755
      • SecureSocket 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 passed undefined without throwing an exception
      • Timer 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 for write
    • Fix Outline module compilation on Windows
    • Ecma-419 provider for Moddable One had SPI in and out pins reversed
  • Documentation

    • CRC8 and CRC16 classes added to Data reference documentation.
    • Fix mix-up with PICO_SDK_DIR in Raspberry Pi Pico docs. By @HipsterBrown.