- targets
atsamd21: add support for the-portflag in the flash subcommand
- command line
- try more locations to find Clang built-in headers
- add support for
tinygo test - build current directory if no package is specified
- support custom .json target spec with
-targetflag - use zversion.go to detect version of GOROOT version
- make initial heap size configurable for some targets (currently WebAssembly only)
- cgo
- add support for bitfields using generated getters and setters
- add support for anonymous structs
- compiler
- show an error instead of panicking on duplicate function definitions
- allow packages like github.com/tinygo-org/tinygo/src/* by aliasing it
- remove
//go:volatilesupport
It has been replaced with the runtime/volatile package. - allow poiners in map keys
- support non-constant syscall numbers
- implement non-blocking selects
- add support for the
-tagsflag - add support for
stringto[]runeconversion - implement a portable conservative garbage collector (with support for wasm)
- add the
//go:noinlinepragma
- standard library
os: addos.Exitandsyscall.Exitos: add several stubsruntime: fix heap corruption in conservative GCruntime: add support for math intrinsics where supported, massively speeding up some benchmarkstesting: add basic support for testing
- targets
- add support for a generic target that calls
__tinygo_*functions for peripheral access arduino-nano33: add support for this boardhifive1: add support for this RISC-V boardreelboard: add e-paper pinsreelboard: addPowerSupplyActiveto enable voltage for on-board deviceswasm: put the stack at the start of linear memory, to detect stack overflows
- add support for a generic target that calls
- command line
- some portability improvements
- make
$GOROOTmore robust and configurable - check for Clang at the Homebrew install location as fallback
- compiler driver
- support multiple variations of LLVM commands, for non-Debian distributions
- compiler
- improve code quality in multiple ways
- make panic configurable, adding trap on panic
- refactor many internal parts of the compiler
- print all errors encountered during compilation
- implement calling function values of a named type
- implement returning values from blocking functions
- allow larger-than-int values to be sent across a channel
- implement complex arithmetic
- improve hashmap support
- add debuginfo for function arguments
- insert nil checks on stores (increasing code size)
- implement volatile operations as compiler builtins
- add
//go:inlinepragma - add build tags for the Go stdlib version
- cgo
- implement
char,enumandvoid*types - support
#includefor builtin headers - improve typedef/struct/enum support
- only include symbols that are necessary, for broader support
- mark external function args as
nocapture - implement support for some
#defineconstants - implement support for multiple CGo files in a single package
- implement
- standard library
machine: remove microbit matrix (moved to drivers repository)machine: refactor pins to usePintype instead ofGPIOruntime: print more interface types on panic, includingerror
- targets
arm: print an error on HardFault (including stack overflows)atsamd21: fix a bug in the ADC peripheralatsamd21: add support for I2Sfeather-m0: add support for this boardnrf51: fix a bug in I2Cstm32f103xx: fix a bug in I2Csyscall: implementExiton unixtrinket-m0: add support for this boardwasm: make main example smallerwasm: don't cache wasm file in the server, for ease of debuggingwasm: work around bug #41508 that caused a deadlock while linkingwasm: add support forjs.FuncOf
- compiler driver
- use
wasm-ldinstead ofwasm-ld-8on macOS - drop dependency on
llvm-ar - fix linker script includes when running outside
TINYGOROOT
- use
- 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: improveuintptrsupportcortexm: implement memmove intrinsic generated by LLVMcortexm: use the lld linker instead ofarm-none-eabi-lddarwin: use custom syscall package that links to libSystem.dylibmicrobit: add blink examplesamd21: support I2C1samd21: machine/atsamd21: correct pad/pin handling when using both UART and USBCDC interfaces at same timestm32f4discovery: add support for this boardwasm: support async func valueswasm: improve documentation and add extra example
- compiler
- fix
objcopyreplacement to include the .data section in the firmware image - use
llvm-ar-7on Linux to fix the Docker image
- fix
- compiler
- switch to the hardfloat ABI on ARM, which is more widely used
- avoid a dependency on
objcopy(arm-none-eabi-objcopyetc.) - fix a bug in
make([]T, n)wherenis 64-bits on a 32-bit platform - adapt to a change in the AVR backend in LLVM 8
- directly support the .uf2 firmware format as used on Adafruit boards
- fix a bug when calling
panic()at init time outside of the main package - implement nil checks, which results in a ~5% increase in code size
- inline slice bounds checking, which results in a ~1% decrease in code size
- targets
samd21: fix a bug in port B pinssamd21: implement SPI peripheralsamd21: implement ADC peripheralstm32: fix a bug in timekeepingwasm: fix a bug inwasm_exec.jsthat caused corruption in linear memory when running on Node.js.
- compiler
- remove old
-initinterpflag - add support for macOS
- remove old
- cgo
- add support for bool/float/complex types
- standard library
device/arm: add support to disable/enable hardware interruptsmachine: add CPU frequency for nrf-based boardssyscall: add support for darwin/amd64
- targets
circuitplay_express: add support for this boardmicrobit: add regular pin constantssamd21: fix time function for goroutine supportsamd21: add support for USB-CDC (serial over USB)samd21: add support for pins in port Bsamd21: add support for pullup and pulldown pinswasm: add support for Safari in example
- command line
- add version subcommand
- compiler
- fix a bug in floating point comparisons with NaN values
- fix a bug when calling
panicin package initialization code - add support for comparing
complex64andcomplex128
- cgo
- add support for external globals
- add support for pointers and function pointers
- standard library
fmt: initial support,fmt.Printlnworksmath: support for most/all functionsos: initial support (only stdin/stdout/stderr)reflect: initial supportsyscall: add support for amd64, arm, and arm64