mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-07-26 06:38:42 +00:00
26a0819119
Signed-off-by: deadprogram <ron@hybridgroup.com>
26 KiB
26 KiB
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
- fix
- 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
[]byteslice 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 Gointernal/task: fix nil panic in (*internal/task.Stack).Popos: add Args and stub it with mock dataos: implement virtual filesystem supportreflect: add Cap and Len support for map and chanruntime: fix return address in scheduler on RISC-Vruntime: avoid recursion in printuint64 functionruntime: replace ReadRegister with AsmFull inline assemblyruntime: fix compilation errors when using gc.extallocruntime: add cap and len support for chansruntime: refactor time handling (improving accuracy)runtime: make channels work in interruptsruntime/interrupt: add cross-chip disable/restore interrupt supportsync: implementsync.Condsync: add WaitGroup
- targets
arm: allow nesting in DisableInterrupts and EnableInterruptsarm: make FPU configuraton consistentarm: do not mask fault handlers in critical sectionsatmega2560: fix pin mapping for pins D2, D5 and the L portatsamd: return an error when an incorrect PWM pin is usedatsamd: add support for pin change interruptsatsamd: add DAC supportatsamd21: add more ADC pinsatsamd51: fix ROM / RAM size on atsamd51j20atsamd51: add more pinsatsamd51: add more ADC pinsatsamd51: add pin change interrupt settingsatsamd51: extend pinPadMappingarduino-nano33: use (U)SB flag to ensure that device can be found when not on default portarduino-nano33: remove (d)ebug flag to reduce console noise when flashingavr: use standard pin numberingavr: unify GPIO pin/port codeavr: add support for PinInputPullupavr: work around codegen bug in LLVM 10avr: fix target triplefe310: remove extra println left in by mistakefeather-nrf52840: add support for the Feather nRF52840maixbit: add board definition and dummy runtimenintendoswitch: Add experimental Nintendo Switch support without CRTnrf: expose the RAM base addressnrf: add support for pin change interruptsnrf: add microbit-s110v8 targetnrf: fix bug in SPI.Txnrf: support debugging the PCA10056pygamer: add Adafruit PyGamer suportriscv: fix interrupt configuration bugriscv: disable linker relaxations during gp initstm32f4disco: add new target with ST-Link v2.1 debuggerteensy36: add Teensy 3.6 supportwasm: fix event handlingwasm: add --no-demangle linker optionwioterminal: add support for the Seeed Wio Terminalxiao: add support for the Seeed XIAO
0.13.1
- standard library
runtime: do not put scheduler and GC code in the same sectionruntime: copy stack scan assembly for GBA
- boards
gameboy-advance: always use ARM mode instead of Thumb mode
0.13.0
- command line
- use
gdb-multiarchfor debugging Cortex-M chips - support
tinygo runwith simavr - support LLVM 10
- support Go 1.14
- retry 3 times when attempting to do a 1200-baud reset
- use
- compiler
- mark the
abortfunction 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_nullattribute to pointer parameters - do not perform nil checking when indexing slices and on
unsafe.Pointer - remove
runtime.isnilhack - use LLVM builtins for runtime
memcpy/memmove/memzerofunctions - 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-enumsconsistently - 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
-Iand-Lpaths absolute
- make
- standard library
machine: set the USB VID and PID to the manufacturer valuesmachine: correct USB CDC composite descriptorsmachine: moveerrors.Newcalls to globalsruntime: support operations on nil mapsruntime: fix copy builtin return value on AVRruntime: refactor goroutinesruntime: support-scheduler=noneon most platformsruntime: run package initialization in the main goroutineruntime: exportmalloc/freefor 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: includeReplaceBitsmethodsync: implement trivialsync.Map
- targets
arm: use-fomit-frame-pointeratmega1284: 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-mmcuflag 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.CopyBytesToJSwasm: 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-s140v7SoftDevice 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
- add support for symbols in
- standard library
machine: avoid bytes package in USB logicruntime: fix external address declarationsruntime: provide implementation forinternal/bytealg.IndexByte
- targets
atsamd51: fix volatile usageatsamd51: fix ADC, updating to 12-bits precisionatsamd51: refactor SPI pin configuration to only look at pin numbersatsamd51: switch UART to use new pin configurationatsamd51: fix obvious bug in I2C codeatsamd51: use only the necessary UART interruptsatsamd51: refactor I2C pin handling to auto-detect pin modeavr: use a garbage collectorfe310: use CLINT peripheral for timekeepingfe310: add support for PLIC interruptsfe310: implement UART receive interruptsriscv: support sleeping in QEMUriscv: add bare-bones interrupt supportriscv: print exception PC and codewasm: implement memcpy and memsetwasm: include wasi-libcwasm: use wasi ABI for basic startup/stdout
- boards
arduino: make avrdude command line compatible with Windowsarduino-nano: add this boardarduino-nano33: fix UART1 and UART2circuitplay-bluefruit: add this boarddigispark: add clock speed and pin mappingsgameboy-advance: include compiler-rt in buildgameboy-advance: implement interrupt handlerhifive1b: add support for gdb subcommandpyportal: add this boardpyportal: remove manual SPI pin mapping as now handled by default
0.11.0
- command line
- add support for QEMU in
gdbsubcommand - use builtin Clang when building statically, dropping the clang-9 dependency
- search for default serial port on both macOS and Linux
- windows: support
tinygo flashdirectly by using win32 wmi
- add support for QEMU in
- 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 forSPI.Tx()on play.tinygo.orgmachine: renameCPU_FREQUENCYtoCPUFrequency()
- targets
adafruit-pybadge: add Adafruit Pybadgearduino-nano33: allow simulation on play.tinygo.orgarduino-nano33: fix default SPI pin numbers to be D13/D11/D12circuitplay-express: allow simulation on play.tinygo.orghifive1-qemu: add target for testing RISC-V bare metal in QEMUriscv: fix heap corruption due to changes in LLVM 9riscv: add support for compiler-rtqemu: rename tocortex-m-qemu
0.10.0
- command line
- halt GDB after flashing with
gdbsubcommand - fix a crash when using
-ocd-output - add
infosubcommand - add
-programmerflag
- halt GDB after flashing with
- builder
- macos: use llvm@8 instead of just llvm in paths
- add
linkerscriptkey 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: storepanic - 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 usederror - 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 alignmentruntime: improve scheduler performance when no goroutines are queuedruntime: add blocking selectruntime: implement interface equality in non-trivial casesruntime: add AdjustTimeOffset to update current timeruntime: only implement CountString for required platformsruntime: use MSP/PSP registers for scheduling on Cortex-M
- targets
arm: add system timer registersatmega: add port C GPIO supportatsamd21: correct handling of pins >= 32atsamd21: i2s initialization fixesatsamd51: fix clock init codeatsamd51: correct initialization for RTCatsamd51: fix pin function selectionatsamd51: pin method cleanupatsamd51: allow setting pin mode for each of the SPI pinsatsamd51: correct channel init and pin map for ADC based on ItsyBitsy-M4feather-m4: add Adafruit Feather M4 boardhifive1b: add support for SPI1hifive1b: fix compiling in simulationlinux: fix time on arm32metro-m4: add support for Adafruit Metro M4 Express Airlift boardmetro-m4: fixes for UART2pinetime-devkit0: add support for the PineTime dev kitx9pro: add support for this smartwatchpca10040-s132v6: add support for SoftDevicepca10056-s140v7: add support for SoftDevicearduino-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:alignpragma - 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
- add
- standard library
machine: do not check for nil slices inSPI.Txreflectlite: add support for Go 1.13runtime: implementinternal/bytealg.CountStringsync: properly handle nilNewfunc insync.Pool
- targets
arduino: fix .bss section initializationfe310: implementPin.Getgameboy-advance: support directly outputting .gba filessamd: reduce code size by avoiding reflectionsamd21: do not hardcode pin numbers for peripheralsstm32f103: avoid issue withtime.Sleepless 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
-targetflag 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
[]runeto string conversion - implement support for
goon func values
- implement full slice expression:
- standard library
reflect: add support for named typesreflect: add support fort.Bits()reflect: add basic support fort.AssignableTo()reflect: implementt.Align()reflect: add support for struct typesreflect: fix bug inv.IsNilandv.Pointerfor addressable valuesreflect: implement support for array typesreflect: implementt.Comparable()runtime: implement stack-based schedulerruntime: fix bug in the sleep queue of the schedulerruntime: implementmemcpyfor Cortex-Mtesting: implement stubtesting.Bstructtesting: add common test logging methods such as Errorf/Fatalf/Printf
- targets
386: add support for linux/386 syscallsatsamd21: make SPI pins configurable so that multiple SPI ports can be usedatsamd21: correct issue with invalid first reading coming from ADCatsamd21: add support for reset-to-bootloader using 1200baud over USB-CDCatsamd21: make pin selection more flexible for peripheralsatsamd21: fix minimum delay intime.Sleepatsamd51: fix minimum delay intime.Sleepnrf: improve SPI write-only speed, by making use of double bufferingstm32f103: fix SPI frequency selectionstm32f103: add machine.Pin.Get method for reading GPIO valuesstm32f103: allow board specific UART usagenucleo-f103rb: add support for NUCLEO-F103RB boarditsybitsy-m4: add support for this board with a SAMD51 family chipcortex-m: add support forarm.SystemReset()gameboy-advance: add initial support for the GameBoy Advancewasm: add//go:wasm-modulemagic comment to set the wasm module namewasm: add syscall/js.valueSetIndex supportwasm: add syscall/js.valueInvoke support
0.7.1
- targets
atsamd21: add support for the-portflag 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
-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
0.6.0
- 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
0.5.0
- 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
0.4.1
- compiler
- fix
objcopyreplacement to include the .data section in the firmware image - use
llvm-ar-7on Linux to fix the Docker image
- fix
0.4.0
- 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.
0.3.0
- 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
0.2.0
- 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