Release 0.13.0
This new release adds support for Go 1.14 and LLVM 10. It fixes a number of compiler and runtime bugs and also has had some significant refactoring in goroutine support. Perhaps most visible is that USB-CDC now works on all major OSes (Windows, macOS, and Linux) so that you can flash Adafruit boards without manually entering the bootloader.
This release adds support for five new boards: the Adafruit CLUE, Arduino Mega 2560, and the Particle Argon, Boron and Xenon.
Note that this release requires Go 1.14 to support WebAssembly.
Here is a detailed list of changes with this release:
- command line
- use
gdb-multiarch
for debugging Cortex-M chips - support
tinygo run
with simavr - support LLVM 10
- support Go 1.14
- retry 3 times when attempting to do a 1200-baud reset
- use
- compiler
- mark the
abort
function as noreturn - fix deferred calls to exported functions
- add debug info for local variables
- check for channel size limit
- refactor coroutine lowering
- add
dereferenceable_or_null
attribute to pointer parameters - do not perform nil checking when indexing slices and on
unsafe.Pointer
- remove
runtime.isnil
hack - use LLVM builtins for runtime
memcpy
/memmove
/memzero
functions - implement spec-compliant shifts on negative/overflow
- support anonymous type asserts
- track pointer result of string concatenation for GC
- track PHI nodes for GC
- add debug info to goroutine start wrappers
- optimize comparing interface values against nil
- fix miscompilation when deferring an interface call
- builder: include picolibc for most baremetal targets
- builder: run tools (clang, lld) as separate processes
- builder: use
-fshort-enums
consistently - interp: add support for constant type asserts
- interp: better support for interface operations
- interp: include backtrace with error
- transform: do not track const globals for GC
- transform: replace panics with source locations
- transform: fix error in interface lowering pass
- transform: make coroutine lowering deterministic
- transform: fix miscompilation in func lowering
- mark the
- cgo
- make
-I
and-L
paths absolute
- make
- standard library
machine
: set the USB VID and PID to the manufacturer valuesmachine
: correct USB CDC composite descriptorsmachine
: moveerrors.New
calls to globalsruntime
: support operations on nil mapsruntime
: fix copy builtin return value on AVRruntime
: refactor goroutinesruntime
: support-scheduler=none
on most platformsruntime
: run package initialization in the main goroutineruntime
: exportmalloc
/free
for use from Cruntime
: add garbage collector that uses an external allocatorruntime
: scan callee-saved registers while marking the stackruntime
: remove recursion from conservative GCruntime
: fix blocking select on nil channelruntime/volatile
: includeReplaceBits
methodsync
: implement trivialsync.Map
- targets
arm
: use-fomit-frame-pointer
atmega1284
: support this chip for testing purposesatsamd51
: make QSPI available on all boardsatsamd51
: add support for ADC1atsamd51
: use new interrupt registration in UART codeattiny
: clean up pin definitionsavr
: use the correct RAM start addressavr
: pass the correct-mmcu
flag to the linkeravr
: add support for tasks scheduler (disabled by default)avr
: fix linker problem with overlapping program/data areasnrf
: fix typo in pin configuration optionsnrf
: add lib/nrfx/mdk to include dirsnrf52840
: implement USB-CDCriscv
: implement VirtIO target and add RISC-V integration testriscv
: add I2C support for the HiFive1 rev B boardstm32
: refactor GPIO pin handlingstm32
: refactor UART codestm32f4
: add SPIwasm
: support Go 1.14 (breaking previous versions)wasm
: supportsyscall/js.CopyBytesToJS
wasm
: sync polyfills from Go 1.14.
- boards
arduino-mega2560
: add the Arduino Mega 2560clue-alpha
: add the Adafruit CLUE Alphagameboy-advance
: enable debugging with GDBparticle-argon
: add the Particle Argon boardparticle-boron
: add the Particle Boron boardparticle-xenon
: add the Particle Xenon boardreelboard
: addreelboard-s140v7
SoftDevice target