|
|
|
0.14.1
|
|
|
|
---
|
|
|
|
* **command-line**
|
|
|
|
- support for Go 1.15
|
|
|
|
* **compiler**
|
|
|
|
- loader: work around Windows symlink limitation
|
|
|
|
|
|
|
|
0.14.0
|
|
|
|
---
|
|
|
|
* **command-line**
|
|
|
|
- fix `getDefaultPort()` on non-English Windows locales
|
|
|
|
- compileopts: improve error reporting of unsupported flags
|
|
|
|
- fix test subcommand
|
|
|
|
- use auto-retry to locate MSD for UF2 and HEX flashing
|
|
|
|
- fix touchSerialPortAt1200bps on Windows
|
|
|
|
- support package names with backslashes on Windows
|
|
|
|
* **compiler**
|
|
|
|
- fix a few crashes due to named types
|
|
|
|
- add support for atomic operations
|
|
|
|
- move the channel blocked list onto the stack
|
|
|
|
- fix -gc=none
|
|
|
|
- fix named string to `[]byte` slice conversion
|
|
|
|
- implement func value and builtin defers
|
|
|
|
- add proper parameter names to runtime.initAll, to fix a panic
|
|
|
|
- builder: fix picolibc include path
|
|
|
|
- builder: use newer version of gohex
|
|
|
|
- builder: try to determine stack size information at compile time
|
|
|
|
- builder: remove -opt=0
|
|
|
|
- interp: fix sync/atomic.Value load/store methods
|
|
|
|
- loader: add Go module support
|
|
|
|
- transform: fix debug information in func lowering pass
|
|
|
|
- transform: do not special-case zero or one implementations of a method call
|
|
|
|
- transform: introduce check for method calls on nil interfaces
|
|
|
|
- transform: gc: track 0-index GEPs to fix miscompilation
|
|
|
|
* **cgo**
|
|
|
|
- Add LDFlags support
|
|
|
|
* **standard library**
|
|
|
|
- extend stdlib to allow import of more packages
|
|
|
|
- replace master/slave terminology with appropriate alternatives (MOSI->SDO
|
|
|
|
etc)
|
|
|
|
- `internal/bytealg`: reimplement bytealg in pure Go
|
|
|
|
- `internal/task`: fix nil panic in (*internal/task.Stack).Pop
|
|
|
|
- `os`: add Args and stub it with mock data
|
|
|
|
- `os`: implement virtual filesystem support
|
|
|
|
- `reflect`: add Cap and Len support for map and chan
|
|
|
|
- `runtime`: fix return address in scheduler on RISC-V
|
|
|
|
- `runtime`: avoid recursion in printuint64 function
|
|
|
|
- `runtime`: replace ReadRegister with AsmFull inline assembly
|
|
|
|
- `runtime`: fix compilation errors when using gc.extalloc
|
|
|
|
- `runtime`: add cap and len support for chans
|
|
|
|
- `runtime`: refactor time handling (improving accuracy)
|
|
|
|
- `runtime`: make channels work in interrupts
|
|
|
|
- `runtime/interrupt`: add cross-chip disable/restore interrupt support
|
|
|
|
- `sync`: implement `sync.Cond`
|
|
|
|
- `sync`: add WaitGroup
|
|
|
|
* **targets**
|
|
|
|
- `arm`: allow nesting in DisableInterrupts and EnableInterrupts
|
|
|
|
- `arm`: make FPU configuraton consistent
|
|
|
|
- `arm`: do not mask fault handlers in critical sections
|
|
|
|
- `atmega2560`: fix pin mapping for pins D2, D5 and the L port
|
|
|
|
- `atsamd`: return an error when an incorrect PWM pin is used
|
|
|
|
- `atsamd`: add support for pin change interrupts
|
|
|
|
- `atsamd`: add DAC support
|
|
|
|
- `atsamd21`: add more ADC pins
|
|
|
|
- `atsamd51`: fix ROM / RAM size on atsamd51j20
|
|
|
|
- `atsamd51`: add more pins
|
|
|
|
- `atsamd51`: add more ADC pins
|
|
|
|
- `atsamd51`: add pin change interrupt settings
|
|
|
|
- `atsamd51`: extend pinPadMapping
|
|
|
|
- `arduino-nano33`: use (U)SB flag to ensure that device can be found when
|
|
|
|
not on default port
|
|
|
|
- `arduino-nano33`: remove (d)ebug flag to reduce console noise when flashing
|
|
|
|
- `avr`: use standard pin numbering
|
|
|
|
- `avr`: unify GPIO pin/port code
|
|
|
|
- `avr`: add support for PinInputPullup
|
|
|
|
- `avr`: work around codegen bug in LLVM 10
|
|
|
|
- `avr`: fix target triple
|
|
|
|
- `fe310`: remove extra println left in by mistake
|
|
|
|
- `feather-nrf52840`: add support for the Feather nRF52840
|
|
|
|
- `maixbit`: add board definition and dummy runtime
|
|
|
|
- `nintendoswitch`: Add experimental Nintendo Switch support without CRT
|
|
|
|
- `nrf`: expose the RAM base address
|
|
|
|
- `nrf`: add support for pin change interrupts
|
|
|
|
- `nrf`: add microbit-s110v8 target
|
|
|
|
- `nrf`: fix bug in SPI.Tx
|
|
|
|
- `nrf`: support debugging the PCA10056
|
|
|
|
- `pygamer`: add Adafruit PyGamer suport
|
|
|
|
- `riscv`: fix interrupt configuration bug
|
|
|
|
- `riscv`: disable linker relaxations during gp init
|
|
|
|
- `stm32f4disco`: add new target with ST-Link v2.1 debugger
|
|
|
|
- `teensy36`: add Teensy 3.6 support
|
|
|
|
- `wasm`: fix event handling
|
|
|
|
- `wasm`: add --no-demangle linker option
|
|
|
|
- `wioterminal`: add support for the Seeed Wio Terminal
|
|
|
|
- `xiao`: add support for the Seeed XIAO
|
|
|
|
|
|
|
|
0.13.1
|
|
|
|
---
|
|
|
|
* **standard library**
|
|
|
|
- `runtime`: do not put scheduler and GC code in the same section
|
|
|
|
- `runtime`: copy stack scan assembly for GBA
|
|
|
|
* **boards**
|
|
|
|
- `gameboy-advance`: always use ARM mode instead of Thumb mode
|
|
|
|
|
|
|
|
|
|
|
|
0.13.0
|
|
|
|
---
|
|
|
|
* **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
|
|
|
|
* **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
|
|
|
|
* **cgo**
|
|
|
|
- make `-I` and `-L` paths absolute
|
|
|
|
* **standard library**
|
|
|
|
- `machine`: set the USB VID and PID to the manufacturer values
|
|
|
|
- `machine`: correct USB CDC composite descriptors
|
|
|
|
- `machine`: move `errors.New` calls to globals
|
|
|
|
- `runtime`: support operations on nil maps
|
|
|
|
- `runtime`: fix copy builtin return value on AVR
|
|
|
|
- `runtime`: refactor goroutines
|
|
|
|
- `runtime`: support `-scheduler=none` on most platforms
|
|
|
|
- `runtime`: run package initialization in the main goroutine
|
|
|
|
- `runtime`: export `malloc` / `free` for use from C
|
|
|
|
- `runtime`: add garbage collector that uses an external allocator
|
|
|
|
- `runtime`: scan callee-saved registers while marking the stack
|
|
|
|
- `runtime`: remove recursion from conservative GC
|
|
|
|
- `runtime`: fix blocking select on nil channel
|
|
|
|
- `runtime/volatile`: include `ReplaceBits` method
|
|
|
|
- `sync`: implement trivial `sync.Map`
|
|
|
|
* **targets**
|
|
|
|
- `arm`: use `-fomit-frame-pointer`
|
|
|
|
- `atmega1284`: support this chip for testing purposes
|
|
|
|
- `atsamd51`: make QSPI available on all boards
|
|
|
|
- `atsamd51`: add support for ADC1
|
|
|
|
- `atsamd51`: use new interrupt registration in UART code
|
|
|
|
- `attiny`: clean up pin definitions
|
|
|
|
- `avr`: use the correct RAM start address
|
|
|
|
- `avr`: pass the correct `-mmcu` flag to the linker
|
|
|
|
- `avr`: add support for tasks scheduler (disabled by default)
|
|
|
|
- `avr`: fix linker problem with overlapping program/data areas
|
|
|
|
- `nrf`: fix typo in pin configuration options
|
|
|
|
- `nrf`: add lib/nrfx/mdk to include dirs
|
|
|
|
- `nrf52840`: implement USB-CDC
|
|
|
|
- `riscv`: implement VirtIO target and add RISC-V integration test
|
|
|
|
- `riscv`: add I2C support for the HiFive1 rev B board
|
|
|
|
- `stm32`: refactor GPIO pin handling
|
|
|
|
- `stm32`: refactor UART code
|
|
|
|
- `stm32f4`: add SPI
|
|
|
|
- `wasm`: support Go 1.14 (breaking previous versions)
|
|
|
|
- `wasm`: support `syscall/js.CopyBytesToJS`
|
|
|
|
- `wasm`: sync polyfills from Go 1.14.
|
|
|
|
* **boards**
|
|
|
|
- `arduino-mega2560`: add the Arduino Mega 2560
|
|
|
|
- `clue-alpha`: add the Adafruit CLUE Alpha
|
|
|
|
- `gameboy-advance`: enable debugging with GDB
|
|
|
|
- `particle-argon`: add the Particle Argon board
|
|
|
|
- `particle-boron`: add the Particle Boron board
|
|
|
|
- `particle-xenon`: add the Particle Xenon board
|
|
|
|
- `reelboard`: add `reelboard-s140v7` SoftDevice target
|
|
|
|
|
|
|
|
0.12.0
|
|
|
|
---
|
|
|
|
* **command line**
|
|
|
|
- add initial FreeBSD support
|
|
|
|
- remove getting a serial port in gdb subcommand
|
|
|
|
- add support for debugging through JLinkGDBServer
|
|
|
|
- fix CGo when cross compiling
|
|
|
|
- remove default port check for Digispark as micronucleus communicates directly using HID
|
|
|
|
- differentiate between various serial/USB error messages
|
|
|
|
* **builder**
|
|
|
|
- improve detection of Clang headers
|
|
|
|
* **compiler**
|
|
|
|
- fix assertion on empty interface
|
|
|
|
- don't crash when encountering `types.Invalid`
|
|
|
|
- revise defer to use heap allocations when running a variable number of times
|
|
|
|
- improve error messages for failed imports
|
|
|
|
- improve "function redeclared" error
|
|
|
|
- add globaldce pass to start of optimization pipeline
|
|
|
|
- add support for debugging globals
|
|
|
|
- implement RISC-V CSR operations as intrinsics
|
|
|
|
- add support for CGO_ENABLED environment variable
|
|
|
|
- do not emit debug info for extern globals (bugfix)
|
|
|
|
- add support for interrupts
|
|
|
|
- implement maps for arbitrary keys
|
|
|
|
- interp: error location for "unknown GEP" error
|
|
|
|
- wasm-abi: create temporary allocas in the entry block
|
|
|
|
* **cgo**
|
|
|
|
- add support for symbols in `#define`
|
|
|
|
- fix a bug in number tokenization
|
|
|
|
* **standard library**
|
|
|
|
- `machine`: avoid bytes package in USB logic
|
|
|
|
- `runtime`: fix external address declarations
|
|
|
|
- `runtime`: provide implementation for `internal/bytealg.IndexByte`
|
|
|
|
* **targets**
|
|
|
|
- `atsamd51`: fix volatile usage
|
|
|
|
- `atsamd51`: fix ADC, updating to 12-bits precision
|
|
|
|
- `atsamd51`: refactor SPI pin configuration to only look at pin numbers
|
|
|
|
- `atsamd51`: switch UART to use new pin configuration
|
|
|
|
- `atsamd51`: fix obvious bug in I2C code
|
|
|
|
- `atsamd51`: use only the necessary UART interrupts
|
|
|
|
- `atsamd51`: refactor I2C pin handling to auto-detect pin mode
|
|
|
|
- `avr`: use a garbage collector
|
|
|
|
- `fe310`: use CLINT peripheral for timekeeping
|
|
|
|
- `fe310`: add support for PLIC interrupts
|
|
|
|
- `fe310`: implement UART receive interrupts
|
|
|
|
- `riscv`: support sleeping in QEMU
|
|
|
|
- `riscv`: add bare-bones interrupt support
|
|
|
|
- `riscv`: print exception PC and code
|
|
|
|
- `wasm`: implement memcpy and memset
|
|
|
|
- `wasm`: include wasi-libc
|
|
|
|
- `wasm`: use wasi ABI for basic startup/stdout
|
|
|
|
* **boards**
|
|
|
|
- `arduino`: make avrdude command line compatible with Windows
|
|
|
|
- `arduino-nano`: add this board
|
|
|
|
- `arduino-nano33`: fix UART1 and UART2
|
|
|
|
- `circuitplay-bluefruit`: add this board
|
|
|
|
- `digispark`: add clock speed and pin mappings
|
|
|
|
- `gameboy-advance`: include compiler-rt in build
|
|
|
|
- `gameboy-advance`: implement interrupt handler
|
|
|
|
- `hifive1b`: add support for gdb subcommand
|
|
|
|
- `pyportal`: add this board
|
|
|
|
- `pyportal`: remove manual SPI pin mapping as now handled by default
|
|
|
|
|
|
|
|
|
|
|
|
0.11.0
|
|
|
|
---
|
|
|
|
* **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`
|
|
|
|
|
|
|
|
0.10.0
|
|
|
|
---
|
|
|
|
* **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 IOT
|
|
|
|
|
|
|
|
0.9.0
|
|
|
|
---
|
|
|
|
* **command line**
|
|
|
|
- implement 1200-baud UART bootloader reset when flashing boards that support
|
|
|
|
it
|
|
|
|
- flash using mass-storage device for boards that support it
|
|
|
|
- implement `tinygo env`
|
|
|
|
- add support for Windows (but not yet producing Windows binaries)
|
|
|
|
- add Go version to `tinygo env`
|
|
|
|
- update SVD files for up-to-date peripheral interfaces
|
|
|
|
* **compiler**
|
|
|
|
- add `//go:align` pragma
|
|
|
|
- fix bug related to type aliases
|
|
|
|
- add support for buffered channels
|
|
|
|
- remove incorrect reflect optimization
|
|
|
|
- implement copying slices in init interpretation
|
|
|
|
- add support for constant indices with a named type
|
|
|
|
- add support for recursive types like linked lists
|
|
|
|
- fix miscompile of function nil panics
|
|
|
|
- fix bug related to goroutines
|
|
|
|
* **standard library**
|
|
|
|
- `machine`: do not check for nil slices in `SPI.Tx`
|
|
|
|
- `reflectlite`: add support for Go 1.13
|
|
|
|
- `runtime`: implement `internal/bytealg.CountString`
|
|
|
|
- `sync`: properly handle nil `New` func in `sync.Pool`
|
|
|
|
* **targets**
|
|
|
|
- `arduino`: fix .bss section initialization
|
|
|
|
- `fe310`: implement `Pin.Get`
|
|
|
|
- `gameboy-advance`: support directly outputting .gba files
|
|
|
|
- `samd`: reduce code size by avoiding reflection
|
|
|
|
- `samd21`: do not hardcode pin numbers for peripherals
|
|
|
|
- `stm32f103`: avoid issue with `time.Sleep` less than 200µs
|
|
|
|
|
|
|
|
0.8.0
|
|
|
|
---
|
|
|
|
* **command line**
|
|
|
|
- fix parsing of beta Go versions
|
|
|
|
- check the major/minor installed version of Go before compiling
|
|
|
|
- validate `-target` flag better to not panic on an invalid target
|
|
|
|
* **compiler**
|
|
|
|
- implement full slice expression: `s[:2:4]`
|
|
|
|
- fix a crash when storing a linked list in an interface
|
|
|
|
- fix comparing struct types by making type IDs more unique
|
|
|
|
- fix some bugs in IR generation
|
|
|
|
- add support for linked lists in reflect data
|
|
|
|
- implement `[]rune` to string conversion
|
|
|
|
- implement support for `go` on func values
|
|
|
|
* **standard library**
|
|
|
|
- `reflect`: add support for named types
|
|
|
|
- `reflect`: add support for `t.Bits()`
|
|
|
|
- `reflect`: add basic support for `t.AssignableTo()`
|
|
|
|
- `reflect`: implement `t.Align()`
|
|
|
|
- `reflect`: add support for struct types
|
|
|
|
- `reflect`: fix bug in `v.IsNil` and `v.Pointer` for addressable values
|
|
|
|
- `reflect`: implement support for array types
|
|
|
|
- `reflect`: implement `t.Comparable()`
|
|
|
|
- `runtime`: implement stack-based scheduler
|
|
|
|
- `runtime`: fix bug in the sleep queue of the scheduler
|
|
|
|
- `runtime`: implement `memcpy` for Cortex-M
|
|
|
|
- `testing`: implement stub `testing.B` struct
|
|
|
|
- `testing`: add common test logging methods such as Errorf/Fatalf/Printf
|
|
|
|
* **targets**
|
|
|
|
- `386`: add support for linux/386 syscalls
|
|
|
|
- `atsamd21`: make SPI pins configurable so that multiple SPI ports can be
|
|
|
|
used
|
|
|
|
- `atsamd21`: correct issue with invalid first reading coming from ADC
|
|
|
|
- `atsamd21`: add support for reset-to-bootloader using 1200baud over USB-CDC
|
|
|
|
- `atsamd21`: make pin selection more flexible for peripherals
|
|
|
|
- `atsamd21`: fix minimum delay in `time.Sleep`
|
|
|
|
- `atsamd51`: fix minimum delay in `time.Sleep`
|
|
|
|
- `nrf`: improve SPI write-only speed, by making use of double buffering
|
|
|
|
- `stm32f103`: fix SPI frequency selection
|
|
|
|
- `stm32f103`: add machine.Pin.Get method for reading GPIO values
|
|
|
|
- `stm32f103`: allow board specific UART usage
|
|
|
|
- `nucleo-f103rb`: add support for NUCLEO-F103RB board
|
|
|
|
- `itsybitsy-m4`: add support for this board with a SAMD51 family chip
|
|
|
|
- `cortex-m`: add support for `arm.SystemReset()`
|
|
|
|
- `gameboy-advance`: add initial support for the GameBoy Advance
|
|
|
|
- `wasm`: add `//go:wasm-module` magic comment to set the wasm module name
|
|
|
|
- `wasm`: add syscall/js.valueSetIndex support
|
|
|
|
- `wasm`: add syscall/js.valueInvoke support
|
|
|
|
|
|
|
|
0.7.1
|
|
|
|
---
|
|
|
|
* **targets**
|
|
|
|
- `atsamd21`: add support for the `-port` flag in the flash subcommand
|
|
|
|
|
|
|
|
0.7.0
|
|
|
|
---
|
|
|
|
* **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 `-target` flag
|
|
|
|
- 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:volatile` support
|
|
|
|
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 `-tags` flag
|
|
|
|
- add support for `string` to `[]rune` conversion
|
|
|
|
- implement a portable conservative garbage collector (with support for wasm)
|
|
|
|
- add the `//go:noinline` pragma
|
|
|
|
* **standard library**
|
|
|
|
- `os`: add `os.Exit` and `syscall.Exit`
|
|
|
|
- `os`: add several stubs
|
|
|
|
- `runtime`: fix heap corruption in conservative GC
|
|
|
|
- `runtime`: add support for math intrinsics where supported, massively
|
|
|
|
speeding up some benchmarks
|
|
|
|
- `testing`: 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 board
|
|
|
|
- `hifive1`: add support for this RISC-V board
|
|
|
|
- `reelboard`: add e-paper pins
|
|
|
|
- `reelboard`: add `PowerSupplyActive` to enable voltage for on-board devices
|
|
|
|
- `wasm`: put the stack at the start of linear memory, to detect stack
|
|
|
|
overflows
|
|
|
|
|
|
|
|
0.6.0
|
|
|
|
---
|
|
|
|
* **command line**
|
|
|
|
- some portability improvements
|
|
|
|
- make `$GOROOT` more 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:inline` pragma
|
|
|
|
- add build tags for the Go stdlib version
|
|
|
|
* **cgo**
|
|
|
|
- implement `char`, `enum` and `void*` types
|
|
|
|
- support `#include` for 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 `#define` constants
|
|
|
|
- implement support for multiple CGo files in a single package
|
|
|
|
- **standard library**
|
|
|
|
- `machine`: remove microbit matrix (moved to drivers repository)
|
|
|
|
- `machine`: refactor pins to use `Pin` type instead of `GPIO`
|
|
|
|
- `runtime`: print more interface types on panic, including `error`
|
|
|
|
* **targets**
|
|
|
|
- `arm`: print an error on HardFault (including stack overflows)
|
|
|
|
- `atsamd21`: fix a bug in the ADC peripheral
|
|
|
|
- `atsamd21`: add support for I2S
|
|
|
|
- `feather-m0`: add support for this board
|
|
|
|
- `nrf51`: fix a bug in I2C
|
|
|
|
- `stm32f103xx`: fix a bug in I2C
|
|
|
|
- `syscall`: implement `Exit` on unix
|
|
|
|
- `trinket-m0`: add support for this board
|
|
|
|
- `wasm`: make _main_ example smaller
|
|
|
|
- `wasm`: don't cache wasm file in the server, for ease of debugging
|
|
|
|
- `wasm`: work around bug #41508 that caused a deadlock while linking
|
|
|
|
- `wasm`: add support for `js.FuncOf`
|
|
|
|
|
|
|
|
0.5.0
|
|
|
|
---
|
|
|
|
- **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
|
|
|
|
|
|
|
|
0.4.1
|
|
|
|
---
|
|
|
|
- **compiler**
|
|
|
|
- fix `objcopy` replacement to include the .data section in the firmware image
|
|
|
|
- use `llvm-ar-7` on Linux to fix the Docker image
|
|
|
|
|
|
|
|
0.4.0
|
|
|
|
---
|
|
|
|
- **compiler**
|
|
|
|
- switch to the hardfloat ABI on ARM, which is more widely used
|
|
|
|
- avoid a dependency on `objcopy` (`arm-none-eabi-objcopy` etc.)
|
|
|
|
- fix a bug in `make([]T, n)` where `n` is 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 pins
|
|
|
|
- `samd21`: implement SPI peripheral
|
|
|
|
- `samd21`: implement ADC peripheral
|
|
|
|
- `stm32`: fix a bug in timekeeping
|
|
|
|
- `wasm`: fix a bug in `wasm_exec.js` that caused corruption in linear memory
|
|
|
|
when running on Node.js.
|
|
|
|
|
|
|
|
0.3.0
|
|
|
|
---
|
|
|
|
- **compiler**
|
|
|
|
- remove old `-initinterp` flag
|
|
|
|
- add support for macOS
|
|
|
|
- **cgo**
|
|
|
|
- add support for bool/float/complex types
|
|
|
|
- **standard library**
|
|
|
|
- `device/arm`: add support to disable/enable hardware interrupts
|
|
|
|
- `machine`: add CPU frequency for nrf-based boards
|
|
|
|
- `syscall`: add support for darwin/amd64
|
|
|
|
- **targets**
|
|
|
|
- `circuitplay_express`: add support for this board
|
|
|
|
- `microbit`: add regular pin constants
|
|
|
|
- `samd21`: fix time function for goroutine support
|
|
|
|
- `samd21`: add support for USB-CDC (serial over USB)
|
|
|
|
- `samd21`: add support for pins in port B
|
|
|
|
- `samd21`: add support for pullup and pulldown pins
|
|
|
|
- `wasm`: add support for Safari in example
|
|
|
|
|
|
|
|
|
|
|
|
0.2.0
|
|
|
|
---
|
|
|
|
- **command line**
|
|
|
|
- add version subcommand
|
|
|
|
- **compiler**
|
|
|
|
- fix a bug in floating point comparisons with NaN values
|
|
|
|
- fix a bug when calling `panic` in package initialization code
|
|
|
|
- add support for comparing `complex64` and `complex128`
|
|
|
|
- **cgo**
|
|
|
|
- add support for external globals
|
|
|
|
- add support for pointers and function pointers
|
|
|
|
- **standard library**
|
|
|
|
- `fmt`: initial support, `fmt.Println` works
|
|
|
|
- `math`: support for most/all functions
|
|
|
|
- `os`: initial support (only stdin/stdout/stderr)
|
|
|
|
- `reflect`: initial support
|
|
|
|
- `syscall`: add support for amd64, arm, and arm64
|