Skip to content

0.8.0 - WASM x Zephyr refactor

Latest

Choose a tag to compare

@tolauwae tolauwae released this 08 Jul 14:55
0c2000c

Release Overview

Previous releases have been incrementally refactoring the VM's code, yet the technical debt has kept increasing.
This release introduces a huge refactor of the VM's code base to eliminate much of this technical debt.

The refactor is centered around:

  • add missing features of the latest WASM spec (focussed on version 2)
  • improve testing (many bugs have been fixed in latch)

The release is also a major step towards Zephyr as main platform (#290).

What's Changed

πŸ’₯ Breaking Changes

  • Debugger::printValue uses decimal representation for all datatypes (#339)
  • Mocking with multiple or no arguments (#381)

πŸ“‘ WebAssembly specification

  • Fix unreachable reinterpret instruction execution (#334)
  • Add import/export mutable globals (#329)
  • Add sign extension instructions support (#333)
  • Add multi-value support (#330)

πŸš€ New Features

  • Tracing checkpoint policy (#348)
  • Display support on: Zephyr, ESP Rover kit v4, and Raspberry Pi Pico (#337, #373)
  • Support for multiple modules (#338)

✨ Changes

  • Serialize more primitive function details when using --dump-info (#382)
  • Implement section 12 (#366)

πŸ› Bug Fixes

  • Fix logging causing compilation errors (#344)
  • Fix overlay and conf files for stm32 and rpi_pico (#350)
  • Send checkpoints when stepping or pausing in trace mode (#352)
  • Fix segmentation fault in debugger (#355)
  • Don't use uart_irq_rx_ready return type since it is now void (#375)

🚨 Testing

  • Ignore comment lines in latch test parser (#335)
  • Extend spec test suite with block, branch and select tests (#336)

πŸ§‘β€πŸ’» Quality of Life

  • Specify PRODUCT and MANUFACTURER in prj.conf to make WARDuino microcontrollers easily identifiable over USB (#374)
  • Add heap information as primitive and to debugger (#351)

⬆️ Upgrading dependencies

♻️ Refactor

  • Dynamic sized primitive array (#325)
  • Primitive configuration system (#324)
  • Use unordered_map instead of vector for primitives (#384)

🎨 Improve format/structure

  • Print error info for AssemblyScript abort primitive (#266)

πŸ’„ Linting

  • Explicitly set clang-format PointerAlignment (#353)

πŸ‘· CI

  • Add action that builds WARDuino for Zephyr (#360)