Skip to content

Moddable SDK 5.9.0

Compare
Choose a tag to compare
@mkellner mkellner released this 17 Jul 02:09
· 41 commits to public since this release

Moddable SDK 5.9.0 contains improvements made between June 12, 2025 and July 16, 2025.

Realtime AI Tools

Over recent months, we've updated our new Realtime AI Architecture with support for OpenAI, Google Gemini, Deepgram, ElevenLabs, and HumeAI. Our latest update isn't another AI service but support for "Functioning calling", sometimes called tools, where the AI service calls functions in your application to perform an action or retrieve information. Fortunately, the AI services have largely standardized how this is done, making it practical to support the same Function call interface in Moddable's Realtime AI architecture.

This release of the Moddable SDK includes a simple example to get you started. Check out the new ChatAudioIO-Tools example on ESP32, macOS, Windows, and Linux. The voice agent provides temperatures for locations in and around a home along with the ability to control the thermostat and air conditioning.

All new Bluetooth LE Central

This release contains a completely new API for implementing Bluetooth Centrals (also called BLE Clients). Our original Central has served us well for many years, but has some shortcomings that we wanted to address. Moddable has proposed this API to Ecma TC53 to become part of the ECMA-419 standard. The current draft API is available to read as part of the ECMA-419 4th Edition working draft.

We've created a suite of examples to help you get started with the new API. You can run these on ESP32 using the NimBLE stack or on macOS using Core Bluetooth. This is the first time we've supported Bluetooth in the simulator. This has proven to be incredibly powerful for accelerating Bluetooth development.

The new BLE Client is still experimental, so you can expect changes. But it is working very nicely, so we wanted to share it now to get experience and feedback while it is still evolving.

Web Bluetooth

This release also includes a new implementation of Web Bluetooth! This is built on our new BLE Client, making it available on ESP32 and macOS too. We've got an example to help you get started.

Web Bluetooth is a very high-level API, making it very pleasant to develop with. However, because it was designed for use in a web browser, it has many restrictions to protect the user's security. These don't always make sense on an embedded device In particular, the way a device is discovered isn't perfectly suited to embedded devices. Currently, the first matching device that is found is selected. This is imperfect and will evolve, but is sufficient for development.

ESP-IDF I²C downgrade

In Moddable SDK 5.8.0, the I²C support for ESP32 reverted from Espressif's new i2c_master to the previous I²C API due to a large number of issues reported. It appears the next ESP-IDF addresses at least some of these issues. Note that Moddable SDK 5.8.0 did not fully downgrade; specifically, the 419 I²C was downgraded but not the original Pins I²C. In Moddable SDK 5.9.0, both have been downgraded.

Release Details

  • Modules
    • Deepgram support in ChatAudioIO now uses A-Law encoding for the user input to reduce bandwidth signficantly
    • ESP32 Ethernet driver replaces VSPI_HOST with SPI3_HOST (reported by @rmontrosecbw) #1509
    • New Web Bluetooth module
    • DS18X20 temperature sensor driver does reset before copying scratchpad (reported by @mauroForlimpopoli) #1514
  • XS
    • BigInt.prototype.toString rewritten to be up to 30x faster
    • Added xsNewFunction* macros to xs.h to invoke constructors directly
    • Fix undefined left shift in the fdlibm implementation of fmod
    • Add fxAsyncFromSyncIteratorFailed to snapshot table
  • ECMA-419
    • HTTP Client implements headersMask to parse only HTTP response headers that will be used
    • New BLE Client
  • Examples
  • Tools
    • xsbug displays BigInt values in base 10 (previously base 16)
    • xst fixes for garbage collection of timers (reported by @ChALkeR) #1515
    • mcconfig improvements for devices that use JTAG USB (reported by @mshioji)

Contact Us

If you have questions or suggestions about anything here, please reach out: