TinyGo v0.11.0 Release Notes

Release Date: 2019-12-23 // 26 days ago
  • 🚑 This release includes a few significant usability improvements: it bundles Clang in the release tarball, auto-detects the serial port on macOS, and adds support for tinygo flash on Windows. There are also other changes, such as the addition of the Adafruit PyBadge and a critical fix to RISC-V support.

    🏁 Windows binaries will be uploaded soon, when the build is finished.

    • 💻 command line
      • add support for QEMU in gdb subcommand
      • use builtin Clang when building statically, dropping the clang-9 dependency
      • search for default serial port on both macOS and Linux
      • windows: support tinygo flash directly by using win32 wmi
    • compiler
      • add location information to the IR checker
      • make reflection sidetables constant globals
      • improve error locations in goroutine lowering
      • interp: improve support for maps with string keys
      • interp: add runtime fallback for mapassign operations
    • standard library
      • machine: add support for SPI.Tx() on play.tinygo.org
      • machine: rename CPU_FREQUENCY to CPUFrequency()
    • targets
      • adafruit-pybadge: add Adafruit Pybadge
      • arduino-nano33: allow simulation on play.tinygo.org
      • arduino-nano33: fix default SPI pin numbers to be D13/D11/D12
      • circuitplay-express: allow simulation on play.tinygo.org
      • hifive1-qemu: add target for testing RISC-V bare metal in QEMU
      • riscv: fix heap corruption due to changes in LLVM 9
      • riscv: add support for compiler-rt
      • qemu: rename to cortex-m-qemu

Previous changes from v0.10.0

  • 🚀 This release adds support for blocking select, switches to LLVM 9, improves CGo support, improves support for the ATSAMD51 ("M4") chip, and generally has a lot of improvements and bug fixes throughout. It also adds support for a number of new boards: the Adafruit Feather M4, the Adafruit Metro M4 Express AirLift, the PineTime dev kit, and the "X9 Pro" smartwatch.

    🐧 Note: binaries for linux/arm are still being built and will be added soon.

    • 💻 command line
      • halt GDB after flashing with gdb subcommand
      • fix a crash when using -ocd-output
      • add info subcommand
      • add -programmer flag
    • 🏗 builder
      • macos: use llvm@8 instead of just llvm in paths
      • add linkerscript key to target JSON files
      • write a symbol table when writing out the compiler-rt lib
      • make Clang header detection more robust
      • switch to LLVM 9
    • compiler
      • fix interface miscompilation with reflect
      • fix miscompile of static goroutine calls to closures
      • fix todo: store panic
      • fix incorrect starting value for optimized allocations in a loop
      • optimize coroutines on non-Cortex-M targets
      • fix crash for programs which have heap allocations but never hit the GC
      • add support for async interface calls
      • fix inserting non-const values in a const global
      • interp: improve error reporting
      • interp: implement comparing ptrtoint to 0
    • cgo
      • improve diagnostics
      • implement the constant parser (for #define) as a real parser
      • rename reserved field names such as type
      • avoid "unsafe" imported but not used error
      • include all enums in the CGo Go AST
      • add support for nested structs and unions
      • implement #cgo CFLAGS
    • standard library
      • reflect: add implementation of array alignment
      • runtime: improve scheduler performance when no goroutines are queued
      • runtime: add blocking select
      • runtime: implement interface equality in non-trivial cases
      • runtime: add AdjustTimeOffset to update current time
      • runtime: only implement CountString for required platforms
      • runtime: use MSP/PSP registers for scheduling on Cortex-M
    • targets
      • arm: add system timer registers
      • atmega: add port C GPIO support
      • atsamd21: correct handling of pins >= 32
      • atsamd21: i2s initialization fixes
      • atsamd51: fix clock init code
      • atsamd51: correct initialization for RTC
      • atsamd51: fix pin function selection
      • atsamd51: pin method cleanup
      • atsamd51: allow setting pin mode for each of the SPI pins
      • atsamd51: correct channel init and pin map for ADC based on ItsyBitsy-M4
      • feather-m4: add Adafruit Feather M4 board
      • hifive1b: add support for SPI1
      • hifive1b: fix compiling in simulation
      • linux: fix time on arm32
      • metro-m4: add support for Adafruit Metro M4 Express Airlift board
      • metro-m4: fixes for UART2
      • pinetime-devkit0: add support for the PineTime dev kit
      • x9pro: add support for this smartwatch
      • pca10040-s132v6: add support for SoftDevice
      • pca10056-s140v7: add support for SoftDevice
      • arduino-nano33: added SPI1 connected to NINA-W102 chip on Arduino Nano 33 IO