Releases: tinygo-org/tinygo
0.21.0
This release brings many small changes to the TinyGo compiler toolchain. Some of the highlights are: support for building Windows binaries in TinyGo, improved goroutine support on WebAssembly using Asyncify, and many small fixes that together get 12 more standard library packages to pass the package tests. Of course, there is also a number of improvements for microcontrollers such as ESP32-C3 and the RP2040. And lastly, we've added support for the M5Stack Core2 board.
- command line
- drop support for LLVM 10
build
: drop support for LLVM targets in the -target flagbuild
: fix paths in error messages on Windowsbuild
: add -p flag to set parallelismlldb
: implementtinygo lldb
subcommandtest
: use emulator exit code instead of parsing test outputtest
: pass testing arguments to wasmtime
- compiler
- use -opt flag for optimization level in CFlags (-Os, etc)
builder
: improve accuracy of the -size=full flagbuilder
: hardcode some more frame sizes for _aeabi* functionsbuilder
: add support for -size= flag for WebAssemblycgo
: fix line/column reporting in syntax error messagescgo
: support function definitions in CGo headerscgo
: implement rudimentary C array decayingcgo
: add support for stdio in picolibc and wasi-libccgo
: run CGo parser per file, not per CGo fragmentcompiler
: fix unintentionally exported math functionscompiler
: properly implement div and rem operationscompiler
: add support for recursive function typescompiler
: add support for thego
keyword on interface methodscompiler
: add minsize attribute for -Ozcompiler
: add "target-cpu" and "target-features" attributescompiler
: fix indices into strings and arrayscompiler
: fix string compare functionsinterp
: simplify some code to avoid some errorsinterp
: support recursive globals (like linked lists) in globalsinterp
: support constant globalsinterp
: fix reverting of extractvalue/insertvalue with multiple indicestransform
: work around renamed return type after merging LLVM modules
- standard library
internal/bytealg
: fix indexing error in Compare()machine
: support Pin.Get() function when the pin is configured as outputnet
,syscall
: Reduce code duplication by switching to internal/itoa.os
: don't try to read executable path on baremetalos
: implement Getwdos
: add File.WriteString and File.WriteAtreflect
: fix type.Size() to account for struct paddingreflect
: don't construct an interface-in-interface valuereflect
: implement Value.Elem() for interface valuesreflect
: fix Value.Index() in a specific casereflect
: add support for DeepEqualruntime
: add another set of invalid unicode runes to encodeUTF8()runtime
: only initialize os.runtime_args when neededruntime
: only use CRLF on baremetal systems for printlnruntime/debug
: stubdebug.SetMaxStack
runtime/debug
: stubdebug.Stack
testing
: add a stub for t.Parallel()testing
: add support for -test.short flagtesting
: stub B.ReportAllocs()testing
: addtesting.Verbose
testing
: stubtesting.AllocsPerRun
- targets
- fix gen-device-svd to handle 64-bit values
- add CPU and Features property to all targets
- match LLVM triple to the one Clang uses
atsam
: simplify definition of SERCOM UART, I2C and SPI peripheralsatsam
: move I2S0 to machine fileesp32
: fix SPI configurationesp32c3
: add support for GDB debuggingesp32c3
: add support for CPU interruptsesp32c3
: use tasks scheduler by defaultfe310
: increase CPU frequency from 16MHz to 320MHzfe310
: add support for bit banging driverslinux
: build static binaries using musllinux
: reduce binary size by callingwrite
instead ofputchar
linux
: add support for GOARMriscv
: implement 32-bit atomic operationsriscv
: align the heap to 16 bytesriscv
: switch to tasks-based schedulerrp2040
: add CPUFrequency()rp2040
: improve I2C baud rate configurationrp2040
: add pin interrupt APIrp2040
: refactor PWM code and fix Period calculationstm32f103
: fix SPIstm32f103
: make SPI frequency selection more flexibleqemu
: signal correct exit code to QEMUwasi
: run C/C++ constructors at startupwasm
: ensure heapptr is alignedwasm
: update wasi-libc dependencywasm
: wasi: use asyncifywasm
: support-scheduler=none
windows
: add support for Windows (amd64 only for now)
- boards
feather-stm32f405
,feather-rp2040
: add I2C pin namesm5stack-core2
: add M5Stack Core2nano-33-ble
: SoftDevice s140v7 supportnano-33-ble
: add constants for more on-board pins
0.20.0
This release adds support for Go 1.17, fixes a bunch of compiler bugs (especially for WebAssembly), and adds support for a few new boards including boards based on the ESP32-C3 chip.
- command line
- add support for Go 1.17
- improve Go version detection
- add support for the Black Magic Probe (BMP)
- add a flag for creating cpu profiles
- compiler
builder:
list libraries at the end of the linker commandbuilder:
strip debug information at link time instead of at compile timebuilder:
add missing error check forioutil.TempFile()
builder:
simplify running of jobscompiler:
move LLVM math builtin support into the compilercompiler:
move math aliases from the runtime to the compilercompiler:
add aliases for many hashing packagescompiler:
add*ssa.MakeSlice
bounds testscompiler:
fix max possible slicecompiler:
add support for new language features of Go 1.17compiler:
fix equally named structs in different scopescompiler:
avoid zero-sized alloca in channel operationsinterp:
don't ignore array indices for untyped objectsinterp:
keep reverted package initializers in orderinterp:
fix bug in compiler-time/run-time package initializersloader:
fix panic in CGo files with syntax errorstransform:
improve GC stack slot pass to work around a bug
- standard library
crypto/rand
: switch toarc4random_buf
math:
fixmath.Max
andmath.Min
math/big
: fix undefined symbols errornet:
add MAC address implementationos:
implementos.Executable
os:
addSEEK_SET
,SEEK_CUR
, andSEEK_END
reflect:
add StructField.IsExported methodruntime:
reset heapptr to heapStart after preinit()runtime:
addsubsections_via_symbols
to assembly files on darwintesting:
add subset implementation of Benchmarktesting:
test testing package usingtinygo test
testing:
add support for the-test.v
flag
- targets
386:
bump minimum requirement to the Pentium 4arm:
switch to Thumb instruction set on ARMatsamd:
fix copy-paste error for atsamd21/51 calibTrim blockbaremetal
,wasm
: support command line params and environment variablescortexm:
fix stack overflow because of unaligned stacksesp32c3:
add support for the ESP32-C3 from Espressifnrf52840:
fix ram sizenxpmk66f18:
fix a suspicious bitwise operationrp2040:
add SPI supportrp2040:
add I2C supportrp2040:
add PWM implementationrp2040:
add openocd configurationstm32:
add support for PortMask* functions for WS2812 supportunix:
fix time base for time.Now()unix:
check for mmap error and act accordinglywasm:
override dlmalloc heap implementation from wasi-libcwasm:
align heap to 16 byteswasm:
add support for the crypto/rand package
- boards
- add
DefaultUART
to adafruit boards arduino-mkrwifi1010:
add board definition for Arduino MKR WiFi 1010arduino-mkrwifi1010:
fix pin definition ofNINA_RESETN
feather-nrf52:
fix pin definition of uartfeather-rp2040:
add pin name definitiongameboy-advance:
fix ROM headermdbt50qrx-uf2:
add Raytac MDBT50Q-RX Dongle with TinyUF2nano-rp2040:
defineNINA_SPI
and fix wifinina pinsteensy40:
enable hardware UART reconfiguration, fix receive watermark interrupt
- add
0.19.0
This release contains a bunch of small changes such as improvements to serial output, various compiler improvements, and the addition of TinyGo versions of the net and crypto/rand packages. The net package isn't complete, it is a work in progress and will eventually allow for plugging in different network stacks.
When it comes to board support, this release has one significant addition: the RP2040 chip developed by the Raspberry Pi foundation used on boards from some vendors. It also adds support for two new nRF52840-based boards.
- command line
- don't consider compile-only tests as failing
- add -test flag for
tinygo list
- escape commands while printing them with the -x flag
- make flash-command portable and safer to use
- use
extended-remote
instead ofremote
in GDB - detect specific serial port IDs based on USB vid/pid
- add a flag to the command line to select the serial implementation
- compiler
cgo
: improve constant parsercompiler
: support chained interrupt handlerscompiler
: add support for running a builtin in a goroutinecompiler
: do not emit nil checks for loading closure variablescompiler
: skip context parameter when starting regular goroutinecompiler
: refactor method namescompiler
: add function and global section pragmascompiler
: implementsyscall.rawSyscallNoError
in inline assemblyinterp
: ignore inline assembly in markExternalinterp
: fix a bug in pointer cast workaroundloader
: fix testing a main package
- standard library
crypto/rand
: replace this package with a TinyGo versionmachine
: make USBCDC global a pointermachine
: make UART objects pointer receiversmachine
: define Serial as the default outputnet
: add initial support for net.IPnet
: add more net compatibilityos
: add stub for os.ReadDiros
: add FileMode constants from Go 1.16os
: add stubs required for net/httpos
: implement process related functionsreflect
: implement AppendSlicereflect
: add stubs required for net/httpruntime
: make task.Data a 64-bit integer to avoid overflowruntime
: expose memory statssync
: implement NewCondsyscall
: fix int type in libc version
- targets
cortexm
: do not disable interrupts on abortcortexm
: bump default stack size to 2048 bytesnrf
: avoid heap allocation in waitForEventnrf
: don't trigger a heap allocation in SPI.Transfernrf52840
: add support for flashing with the BOSSA toolrp2040
: add support for GPIO inputrp2040
: add basic support for ADCrp2040
: gpio and adc pin definitionsrp2040
: implement UARTrp2040
: patch elf to checksum 2nd stage bootstm32
: add PWM for most chipsstm32
: add support for pin interruptsstm32f103
: add support for PinInputPullup / PinInputPulldownwasi
: remove wasm build tag
- boards
feather-rp2040
: add support for this boardfeather-nrf52840-sense
: add board definition for this boardpca10059
: support flashing from Windowsnano-rp2040
: add this boardnano-33-ble
: add support for this boardpico
: add the Raspberry Pi Pico board with the new RP2040 chipqtpy
: add pin for neopixels- all: add definition for ws2812 for supported boards
0.18.0
This release is the combination of more than two months of work, including improvements to reflection, a big change to the PWM API to make it more powerful (including support for servos!), support for command line parameters and environment variables, many improvements to SAM and STM32 chip support. It also saw the addition of various new boards.
Note that this release drops support for Go 1.11 and Go 1.12, so if you're using one of those versions please upgrade to Go 1.13 or later.
- command line
- drop support for Go 1.11 and 1.12
- throw an error when no target is specified on Windows
- improve error messages in
getDefaultPort()
, support for multiple ports - remove
-cflags
and-ldflags
flags - implement
-ldflags="-X ..."
- add
-print-allocs
flag that lets you print all heap allocations - openocd commands in tinygo command line
- add
-llvm-features
parameter - match
go test
output - discover USB ports only, this will ignore f.ex. bluetooth
- use physicmal path instead of cached GOROOT in function getGoroot
- add goroot for snap installs
- compiler
builder
: add support for-opt=0
builder
,compiler
: compile and cache packages in parallelbuilder
: run interp per packagebuilder
: cache C and assembly file outputsbuilder
: add support for-x
flag to print commandsbuilder
: add optsize attribute while building the packagebuilder
: run function passes per packagebuilder
: hard code Clang compilercompiler
: do not usellvm.GlobalContext()
compiler
: remove SimpleDCE passcompiler
: do not emit nil checks for*ssa.Alloc
instructionscompiler
: mergeruntime.typecodeID
and runtime.typeInInterfacecompiler
: do not check for impossible type assertscompiler
: fix use of global context:llvm.Int32Type()
compiler
: add interface IR testcompiler
: fix lack of method name in interface matchingcompiler
: fix "fragment covers entire variable" bugcompiler
: optimize string literals and globalscompiler
: decouple func lowering from interface type codescompiler
: add function attributes to some runtime callscompiler
: improve position information in error messagescgo
: add support for CFLAGS in .c filesinterp
: support GEP on fixed (MMIO) addressesinterp
: handle(reflect.Type).Elem()
interp
: add support for runtime.interfaceMethodinterp
: make toLLVMValue return an error instead of panickinginterp
: add support for switch statementinterp
: fix phi instructioninterp
: remove map supportinterp
: support extractvalue/insertvalue with multiple operandstransform
: optimize string comparisons against ""transform
: optimizereflect.Type
Implements()
methodtransform
: fix bug in interface lowering when signatures are renamedtransform
: don't rely on struct name ofruntime.typecodeID
transform
: use IPSCCP pass instead of the constant propagation passtransform
: fix func lowering assertion failuretransform
: do not lower zero-sized alloc to allocatransform
: split interface and reflect lowering
- standard library
runtime
: add dummy debug packagemachine
: fix data shift/mask in newUSBSetupmachine
: makemachine.I2C0
and similar objects pointersmachine
: unify usbcdc codemachine
: refactor PWM supportmachine
: avoid heap allocations in USB codereflect
: letreflect.Type
be of interface typereflect
: implement a number of stub functionsreflect
: check for access in theInterface
method callreflect
: fixAssignableTo
andImplements
methodsreflect
: implementValue.CanAddr
reflect
: implementSizeof
andAlignof
for func valuesreflect
: implementNew
functionruntime
: implement command line arguments in hosted environmentsruntime
: implement environment variables for Linuxruntime
: improve timers on nrf, and samd chips
- targets
- all: use -Qunused-arguments only for assembly files
atmega1280
: add PWM supportattiny
: remove dummy UARTatsamd21
: improve SPIatsamd51
: fix PWM support in atsamd51p20atsamd5x
: improve SPIatsamd51
,atsame5x
: unify samd51 and same5xatsamd51
,atsamd21
: fixADC.Get()
value at 8bit and 10bitatsame5x
: add support for CANavr
: remove I2C stubs from attiny supportcortexm
: check forarm-none-eabi-gdb
andgdb-multiarch
commandscortexm
: add__isr_vector
symbolcortexm
: disable FPU on Cortex-M4cortexm
: clean up Cortex-M target filesfe310
: fix SPI readgameboy-advance
: Fix RGBA color interpretationnrf52833
: add PWM supportstm32l0
: use unified UART logicstm32
: move f103 (bluepill) to common i2c codestm32
: separate altfunc selection for UART Tx/Rxstm32
: i2c implementation for F7, L5 and L4 MCUsstm32
: make SPI CLK fast to fix data issuestm32
: support SPI on L4 seriesunix
: avoid possible heap allocation with-opt=0
unix
: use conservative GC by defaultunix
: use the tasks scheduler instead of coroutineswasi
: upgrade WASI version to wasi_snapshot_preview1wasi
: darwin: support basic file io based on libcwasm
: only export explicitly exported functionswasm
: use WASI ABI for exit functionwasm
: scan globals conservatively
- boards
arduino-mega1280
: add support for the Arduino Mega 1280arduino-nano-new
: Add Arduino Nano w/ New Bootloader targetatsame54-xpro
: add initial support this boardfeather-m4-can
: add initial support for this boardgrandcentral-m4
: add board support for Adafruit Grand Central M4 (SAMD51)lgt92
: update to new UART structuremicrobit
: remove LED constantmicrobit-v2
: add support for S113 SoftDevicenucleol432
: add support for this boardnucleo-l031k6
: add this boardpca10059
: initial support for this boardqtpy
: fix msd-volume-nameqtpy
: fix i2c settingteensy40
: move txBuffer allocation to UART declarationteensy40
: add UART0 as alias for UART1
0.17.0
This is a large release of almost 3 months of work, with several improvements to the compiler, tinygo gdb
, many improvements to the machine package and finally the addition of several new boards. We've also updated TinyGo with support for LLVM 11 and Go 1.16.
- command line
- switch to LLVM 11 for static builds
- support gdb debugging with AVR
- add support for additional openocd commands
- add
-x
flag to print commands - use LLVM 11 by default when linking LLVM dynamically
- update go-llvm to use LLVM 11 on macOS
- bump go.bug.st/serial to version 1.1.2
- do not build LLVM with libxml to work around a bugo on macOS
- add support for Go 1.16
- support gdb daemonization on Windows
- remove support for LLVM 9, to fix CI
- kill OpenOCD if it does not exit with a regular quit signal
- support
-ocd-output
on Windows
- compiler
builder
: parallelize most of the buildbuilder
: remove unused cacheKey parameterbuilder
: add -mcpu flag while building librariesbuilder
: wait for running jobs to finishcgo
: add support for variadic functionscompiler
: fix undefined behavior in wordpackcompiler
: fix incorrect "exported function" paniccompiler
: fix non-int integer constants (fixing a crash)compiler
: refactor and add testscompiler
: emit a nil check when slicing an array pointercompiler
: saturate float-to-int conversionscompiler
: test float to int conversions and fix upper-bound calculationcompiler
: support all kinds of deferred builtinscompiler
: remove ir packagecompiler
: remove unnecessary main.main call workaroundcompiler
: move the setting of attributes to getFunctioncompiler
: create runtime types lazily when neededcompiler
: move settings to a separate Config structcompiler
: work around an ARM backend bug in LLVMinterp
: rewrite entire packageinterp
: fix alignment of untyped globalsloader
: use name "main" for the main packageloader
: support imports from vendor directoriesstacksize
: add support for DW_CFA_offset_extendedtransform
: show better error message in coroutines lowering
- standard library
machine
: accept configuration struct for ADC parametersmachine
: make I2C.Configure signature consistentreflect
: implement PtrToruntime
: refactor to simplify stack switchingruntime
: put metadata at the top end of the heap
- targets
atsam
: add a length check to findPinPadMappingatsam
: improve USBCDCatsam
: avoid infinite loop when USBCDC is disconnectedavr
: add SPI support for Atmega based chipsavr
: use Clang for compiling C and assembly filesesp32
: implement task based scheduleresp32
: enable the FPUesp8266
: implement task based scheduleresp
: add compiler-rt libraryesp
: add picolibcnrf
: refactor code a bit to reduce duplicationnrf
: use SPIM peripheral instead of the legacy SPI peripheralnrf
: update nrfx submodule to latest commitnrf52840
: ensure that USB CDC interface is only initialized oncenrf52840
: improve USBCDCstm32
: use stm32-rs SVDs which are of much higher qualitystm32
: harmonization of UART logicstm32
: replace I2C addressable interface with simpler typestm32
: fix i2c and add stm32f407 i2cstm32
: revert change that adds support for channels in interruptswasm
: implement a growable heapwasm
: fix typo in wasm_exec.js, syscall/js.valueLoadString()wasm
: Namespaced Wasm Imports so they don't conflict across modules, or reserved LLVM IRwasi
: support env variables based on libcwasi
: specify wasi-libc in a different way, to improve error message
- boards
matrixportal-m4
: add support for board Adafruit Matrix Portal M4mkr1000
: add this boardnucleo-f722ze
: add this boardclue
: correct volume name and add alias for release version of Adafruit Clue boardp1am-100
: add support for the P1AM-100 (similar to Arduino MKR)microbit-v2
: add initial support based on work done by @alankrantas thank you!lgt92
: support for STM32L0 MCUs and Dragino LGT92 devicenicenano
: nice!nano board supportcircuitplay-bluefruit
: correct internal I2C pin mappingclue
: correct for lack of low frequency crystaldigispark
: split off attiny85 targetnucleo-l552ze
: implementation with CLOCK, LED, and UARTnrf52840-mdk-usb-dongle
: add this board
0.16.0
This is the next release of TinyGo, this time featuring the addition of the Teensy 4.0 and the addition of initial WASI support, apart from numerous fixes and improvements (such as improved tinygo test
support). See the full changelog below.
- command-line
- add initial support for LLVM 11
- make lib64 clang include path check more robust
build
: improve support for GOARCH=386 and add testsgdb
: add support for qemu-user targetstest
: support non-host teststest
: add support for -c and -o flagstest
: implement some benchmark stubs
- compiler
builder
: improve detection of clang on Fedoracompiler
: fix floating point comparison bugscompiler
: implement negate for complex numbersloader
: fix linkname in test binariestransform
: add missing return pointer restore for regular coroutine tail calls
- standard library
machine
: switch default frequency to 4MHzmachine
: clarify caller's responsibility inSetInterrupt
os
: addLookupEnv()
stubreflect
: implementSwapper
runtime
: fix UTF-8 decodingruntime
: gc: use raw stack access whenever possibleruntime
: use dedicated printfloat32runtime
: allow ranging over a nil mapruntime
: avoid device/nxp dependency in HardFault handlertesting
: implement dummy Helper methodtesting
: add Run method
- targets
arm64
: add support for SVCall intrinsicatsamd51
: avoid panic when configuring SPI with SDI=NoPinavr
: properly support the.rodata
sectionesp8266
: implementPin.Get
functionnintendoswitch
: fix crash when printing long lines (> 120)nintendoswitch
: add env parser and removed unused stuffnrf
: add I2C error checkingnrf
: give more flexibility in picking SPI speedsnrf
: fix nrf52832 flash sizestm32f103
: support wakeups from interruptsstm32f405
: add SPI supportstm32f405
: add I2C supportwasi
: add support for this targetwasi
: use 'generic' ABI by defaultwasi
: remove --no-threads flag from wasm-ldwasm
: add instanceof support for WebAssemblywasm
: use fixed length buffer for putchar
- boards
d1mini
: add this ESP8266 based boardesp32
: use board definitions instead of chip namesqtpy
: add board definition for Adafruit QTPyteensy40
: add this board
0.15.0
This is a very major release that adds some long-awaited capabilities to TinyGo, like support for Bluetooth Low Energy via the Nordic Semiconductor nRF51/nRF52. and also support for the Espressif ESP32/ESP8266.
- command-line
- add cached GOROOT to info subcommand
- embed git-hash in tinygo-dev executable
- implement tinygo targets to list usable targets
- use simpler file copy instead of file renaming to avoid issues on nrf52840 UF2 bootloaders
- use ToSlash() to specify program path
- support flashing esp32/esp8266 directly from tinygo
- when flashing call PortReset only on other than openocd
- compiler
compileopts
: add support for custom binary formatscompiler
: improve display of goroutine wrappersinterp
: don't panic in the Store methodinterp
: replace some panics with error messagesinterp
: show error line in first line of the tracebackloader
: be more robust when creating the cached GOROOTloader
: rewrite/refactor much of the code to use go list directlyloader
: use ioutil.TempDir to create a temporary directorystacksize
: deal with DW_CFA_advance_loc1
- standard library
runtime
: use waitForEvents when appropriate
- wasm
wasm
: Remove --no-threads from wasm-ld calls.wasm
: update wasi-libc dependency
- targets
arduino-mega2560
: fix flashing on Windowsarm
: automatically determine stack sizesarm64
: make dynamic loader structs and constants privateavr
: configure emulator in board filescortexm
: fix stack size calculation with interruptsflash
: add openocd settings to atsamd21 / atsamd51flash
: add openocd settings to nrf5microbit
: reelboard: flash using OpenOCD when needednintendoswitch
: Add dynamic loader for runtime loading PIE sectionsnintendoswitch
: fix import cycle on dynamic_arm64.gonintendoswitch
: Fix invalid memory read / write in print callsnintendoswitch
: simplified assembly codenintendoswitch
: support outputting .nro files directly
- boards
arduino-zero
: Adding support for the Arduino Zero (#1365)atsamd2x
: fix BAUD valueatsamd5x
: fix BAUD valuebluepill
: Enable stm32's USART2 for the board and map it to UART1 tinygo's devicedevice/atsamd51x
: add all remaining bitfield values for PCHCTRLm Mappingesp32
: add libgcc ROM functions to linker scriptesp32
: add SPI supportesp32
: add support for basic GPIOesp32
: add support for the Espressif ESP32 chipesp32
: configure the I/O matrix for GPIO pinsesp32
: export machine.PortMask* for bitbanging implementationsesp8266
: add support for this chipmachine/atsamd51x,runtime/atsamd51x
: fixes needed for full support for all PWM pins. Also adds some useful constants to clarify peripheral clock usagemachine/itsybitsy-nrf52840
: add support for Adafruit Itsybitsy nrf52840 (#1243)machine/stm32f4
: refactor common code and add new build tag stm32f4 (#1332)nrf
: add SoftDevice support for the Circuit Playground Bluefruitnrf
: call sd_app_evt_wait when the SoftDevice is enablednrf52840
: add build tags for SoftDevice supportnrf52840
: use higher priority for USB-CDC coderuntime/atsamd51x
: use PCHCTRL_GCLK_SERCOMX_SLOW for setting clocks on all SERCOM portsstm32f405
: add basic UART handlerstm32f405
: add STM32F405 machine/runtime, and new board/target feather-stm32f405
- build
all
: run test binaries in the correct directorybuild
: Fix arch release jobci
: runtinygo test
for known-working packagesci
: set git-fetch-depth to 1docker
: fix the problem with the wasm build (#1357)Makefile
: check whether submodules have been downloaded in some common cases
- docs
- add ESP32, ESP8266, and Adafruit Feather STM32F405 to list of supported boards
Release 0.14.1
This is a patch release specifically for compatibility with Go 1.15.
- command-line
- support for Go 1.15
- compiler
- loader: work around Windows symlink limitation
Release 0.14.0
This is a big release with lots of small improvements. Some of the highlights include Go module support and the support for channel operations in interrupts for a few chips. This release also includes support for a number of new boards: the Adafruit Feather nRF52840 Express, the Adafruit PyGamer, the Sipeed MAix BiT with a 64-bit RISC-V MCU, the Teensy 3.6, the Seed WioTerminal, and the Seeed Xiao. Perhaps more interesting, it includes initial support for the Nintendo Switch.
- 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
[]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 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.Cond
sync
: 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
Release 0.13.1
This is a patch release that fixes a few bugs in the previous 0.13.0 release related to the GC and in support for the GameBoy Advance.
- 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