TinyGo v0.5.0 Release Notes

Release Date: 2019-04-20 // 10 months ago
  • 🔖 Version 0.5.0 has many big and small improvements. The headline changes include support for the Go standard library 1.12 in addition to the existing Go 1.11 support and a switch to LLVM 8 which improves WebAssembly support. Other notable changes are support for the stm32f4discovery and dropping the dependency on the GNU toolchain for ARM microcontrollers.

    • compiler driver
      • use wasm-ld instead of wasm-ld-8 on macOS
      • drop dependency on llvm-ar
      • fix linker script includes when running outside TINYGOROOT
    • compiler
      • switch to LLVM 8
      • add support for the Go 1.12 standard library (Go 1.11 is still supported)
      • work around lack of escape analysis due to nil checks
      • implement casting named structs and pointers to them
      • fix int casting to use the source signedness
      • fix some bugs around make([]T, …) with uncommon index types
      • some other optimizations
      • support interface asserts in interp for "math/rand" support
      • resolve all func value targets at compile time (wasm-only at the moment)
    • cgo
      • improve diagnostics
      • implement C struct, union, and arrays
      • fix CGo-related crash in libclang
      • implement C.struct_ types
    • targets
      • all baremetal: pretend to be linux/arm instead of js/wasm
      • avr: improve uintptr support
      • cortexm: implement memmove intrinsic generated by LLVM
      • cortexm: use the lld linker instead of arm-none-eabi-ld
      • darwin: use custom syscall package that links to libSystem.dylib
      • microbit: add blink example
      • samd21: support I2C1
      • samd21: machine/atsamd21: correct pad/pin handling when using both UART
        and USBCDC interfaces at same time
      • stm32f4discovery: add support for this board
      • wasm: support async func values
      • wasm: improve documentation and add extra example