mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-07-26 06:38:42 +00:00
a4f9c9d1b6
Signed-off-by: deadprogram <ron@hybridgroup.com>
2775 lines
126 KiB
Markdown
2775 lines
126 KiB
Markdown
0.41.1
|
|
---
|
|
* **machine**
|
|
- esp32c3: correct pin interrupt setup call that was overlooked from #5320
|
|
* **runtime**
|
|
- esp32s3: wait for TIMG0 update register to clear before reading timer registers
|
|
* **net**
|
|
- update net module to a version that is backwards compatible with Go 1.25.x to fix #5332
|
|
|
|
0.41.0
|
|
---
|
|
* **general**
|
|
- go.mod, compiler: bump minimum Go version to 1.23
|
|
- builder: support Go 1.26 now
|
|
- feat: add inheritable-only field to filter processor-level targets (#5270)
|
|
- feature: add esp32flash flash method for esp32s3/esp32c3/esp32/esp8266
|
|
- flashing: introduce flash method 'esp32jtag' for esp32c3/esp32s3 targets
|
|
- fashing: add "adb" flash method using Android Debug Bridge
|
|
- main: auto-use best available flashing options on esp32
|
|
- espflasher: update to espflasher 0.6.0
|
|
* **compiler**
|
|
- implement method-set based AssignableTo and Implements (#5304)
|
|
- simplify createObjectLayout
|
|
- implement copy directly
|
|
- fix min/max on floats by using intrinsics
|
|
- add element layout to sliceAppend
|
|
- add intrinsic for crypto/internal/constanttime.boolToUint8
|
|
- fix SyscallN handling for Windows on Go 1.26+
|
|
* **core**
|
|
- reflect: add TypeAssert
|
|
- reflect: fix TypeAssert for structs
|
|
- sync: add WaitGroup.Go
|
|
- os: add UserCacheDir and UserConfigDir
|
|
- os: implement Lchown function for changing file ownership (#5161)
|
|
- testing: add b.ReportMetric()
|
|
- errors: add errors package to passing list
|
|
- internal/gclayout: use correct lengths
|
|
- internal/abi: add EscapeNonString, EscapeToResultNonString
|
|
- internal, runtime: add internal fips bool
|
|
- internal/itoa: resurrect from Go stdlib
|
|
- internal/syscall/unix: implement GetRandom for WASI targets
|
|
- interp: make ptrtoint size mismatch a recoverable error
|
|
- loader: support "all:" prefix in //go:embed patterns
|
|
- loader, crypto/internal/entropy: fix 32 MiB RAM overflow on microcontrollers
|
|
- loader, unicode/utf8: fix hiBits overflow on 16-bit AVR targets
|
|
- builder: order embedded files deterministically
|
|
- builder: fix panic in findPackagePath when using -size short
|
|
- builder: fix SIGSEGV when stripping duplicate function definitions
|
|
- builder, runtime: fix duplicate symbol error with Go 1.26+ on Windows
|
|
- builder: use target-specific -march for RISC-V library compilation
|
|
- transform: modify output format from the -print-allocs flag to match the go coverage tool format
|
|
- cgo: allow for changes to 'short-enums' flag
|
|
- wasm: add more stubbed file operations
|
|
* **machine**
|
|
- esp32c3: implement BlockDevice for esp32c3 flash
|
|
- esp32c3: clear GPIO STATUS before dispatching pin callbacks
|
|
- esp32c3: implement USBDevice using interrupts
|
|
- esp32c3: add Enable stub for QEMU test target
|
|
- esp32c3: fix interrupt disable handling
|
|
- esp32c3: clear MCAUSE after handling interrupt
|
|
- esp32c3: map missing IRAM sections in linker script
|
|
- esp32c3: fix to use PROVIDE() for WiFi/BLE ROM function addresses to allow blob overrides
|
|
- esp32c3: add WiFi/BLE ROM linker support
|
|
- esp32c3: use TIMG0 alarm interrupt for sleepTicks instead of busy-waiting
|
|
- esp32s3: implement Pin.SetInterrupt for GPIO pin change interrupts
|
|
- esp32s3: use edge-triggered CPU interrupt for GPIO pin interrupts
|
|
- esp32s3: add interrupt support (#5244)
|
|
- esp32s3: switch USB implementation to use interrupts instead of polling
|
|
- esp32s3: replace inline ISR with full interrupt vector handler
|
|
- esp32s3: use TIMG0 alarm interrupt for sleepTicks
|
|
- esp32s3: improve exception handlers, add procPin/procUnpin, and linker wrap flags
|
|
- esp32s3: fix Xtensa register window spill using recursive call4 in task switching
|
|
- esp32s3: update linker script and boot assembly for multi-page flash XIP mapping
|
|
- esp32s3: add flash XIP boot assembly with cache/MMU init
|
|
- esp32s3: implement SPI (#5169)
|
|
- esp32s3: implement I2C interface (#5210)
|
|
- esp32s3: implement RNG based on onboard hardware random number generator
|
|
- esp32s3,esp32c3: add USB serial support
|
|
- esp32s3,esp32c3: add txStalled flag to skip USB serial spin when no host
|
|
- esp32s3,esp32c3: make USB Serial/JTAG writes non-blocking when FIFO is full
|
|
- esp32c3/esp32s3: refactor ADC implementation to reduce code duplication
|
|
- esp32s3,esp32c3: add ADC support (#5231)
|
|
- esp32s3,esp32c3: add PWM support (#5215)
|
|
- esp32c3/esp32s3: refactoring and corrections for SPI implementation
|
|
- esp32xx: add WASM simulator support for ESP32-C3/ESP32-S3 targets
|
|
- esp32: default SPI CS pin to NoPin when unset
|
|
- esp: fix tinygo_scanCurrentStack to spill register windows
|
|
- stm32: fix UART interrupt storm caused by uncleared overrun error
|
|
- stm32: fix PWM problem due to register shifting
|
|
- stm32: add STM32U585 target definition and runtime
|
|
- stm32: add STM32U5 GPIO, pin interrupts, and UART support
|
|
- stm32: add STM32U5 I2C support
|
|
- stm32: add STM32U5 SPI support
|
|
- stm32u585: implement ADC
|
|
- stm32g0b1: add support (#5150)
|
|
- stm32g0b1: add Watchdog + ADC support (#5158)
|
|
- stm32l0: add flash support
|
|
- stm32l0x1,l0x2: TIM: adapt to 32-bit register access
|
|
- stm32g0: sync with updated stm32 device files
|
|
- attiny85: add USI-based SPI support (#5181)
|
|
- attiny85: add PWM support (#5171)
|
|
- rp: add Close function to UART to allow for removing all system resources/power usage
|
|
- rp: use blockReset() and unresetBlockWait() helper functions for peripheral reset/unreset
|
|
- rp2: prevent PWM Period method overflow
|
|
- rp2: add per-byte timeout budget for I2C (#5189)
|
|
- feather-m0: export UART0 and pins
|
|
- usb/cdc: better ring buffer implementation (#5209)
|
|
- fix: replace ! with ~ for register mask
|
|
- atmega328p_simulator: add correct build tag for arduino_uno after renaming
|
|
* **net**
|
|
- update to Go 1.26.2 net package with UDP and JS improvements
|
|
* **runtime**
|
|
- implement fminimum/fmaximum
|
|
- make timeoffset atomic
|
|
- add MemStats.HeapObjects
|
|
- handle GODEBUG on wasip2 (#5312)
|
|
- fix Darwin syscall return value truncation and lost arguments
|
|
- add syscall.runtimeClearenv for Go 1.26
|
|
- split syscall functions for darwin changes for 1.26
|
|
- fix: init heap before random number seed on wasm platforms
|
|
* **targets**
|
|
- add esp32s3-supermini board target
|
|
- add support for Seeedstudio Xiao-RP2350 board
|
|
- add Shrike Lite board (#5170)
|
|
- rename arduino target to arduino-uno
|
|
- add pins/setup for Arduino UNO Q board QWIIC connector
|
|
- correct pin mapping for Arduino UNO Q STM32 MCU
|
|
- add stm32u585 openocd commands for flashing on Arduino UNO Q
|
|
- correct name/tag use for esp32s3-wroom1 board
|
|
- modify esp32, esp32s3, esp32c3, & esp8266 targets to use built-in esp32flash
|
|
- switch rp2040/rp2350 to default to tasks scheduler
|
|
- change default stack size for esp32c3 and esp32s3 to 8196
|
|
- swan: rename group build tag stm32l4x5 => stm32l4y5 to avoid clash with stm32 device name
|
|
- nucleo-f722ze: add build-tag stm32f722
|
|
- fix: set stm32u5x clock rate to default
|
|
- create generic targets for esp32 boards
|
|
* **libs**
|
|
- stm32-svd: update submodule
|
|
- update tools/gen-device-svd for recent changes to stm32-svd file structure (#5212)
|
|
* **build/test**
|
|
- build: use Golang 1.26 for all builds
|
|
- build: actually use the version of llvm we are supposed to be testing by using brew link command
|
|
- build: let scoop run updates to resolve binaryen install failures on Windows
|
|
- ci: don't double zip release artifacts
|
|
- test: increase default timeout from 1 to 2 minutes to prevent spurious CI fails
|
|
- testdata: fix flaky timers test by draining ticker channel after Stop
|
|
- testdata: more corpus entries (#5182)
|
|
- add soypat/lneto to corpus
|
|
- GNUmakefile: add context and expvar to stdlib tests
|
|
- GNUmakefile: add encoding/xml to stdlib tests on Linux
|
|
- main (test): skip mipsle test if the emulator is missing
|
|
- make: remove machine without board from smoketest
|
|
- stm32: add Arduino UNO Q to smoketests
|
|
- flake: bump to nixpkgs 25.11
|
|
- chore: update all github actions to latest versions
|
|
- fix: use external 7zip for scoop installs on Windows
|
|
|
|
0.40.1
|
|
---
|
|
* **machine**
|
|
- nrf: fix flash writes when SoftDevice is enabled
|
|
* **runtime**
|
|
- runtime: avoid fixed math/rand sequence on RP2040/RP2350 (#5124)
|
|
- runtime: add calls to initRand() during run() for all schedulers
|
|
- runtime: call initRand() before initHeap() during initialization
|
|
- runtime: use rand_hwrng hardwareRand for RP2040/RP2350 (#5135)
|
|
* **libs**
|
|
- picolibc: use updated location for git repo
|
|
|
|
0.40.0
|
|
---
|
|
* **general**
|
|
- all: add full LLVM 20 support
|
|
- core: feat: enable //go:linkname pragma for globals
|
|
- core: feature: Add flag to ignore go compatibility matrix (#5078)
|
|
- chore: update version for 0.40 development cycle
|
|
* **compiler**
|
|
- emit an error when the actual arch doesn't match GOARCH
|
|
- mark string parameters as readonly
|
|
- use Tarjan's SCC algorithm to detect loops for defer
|
|
- lower "large stack" limit to 16kb
|
|
* **core**
|
|
- shrink bdwgc library
|
|
- Fix linker errors for runtime.vgetrandom and crypto/internal/sysrand.fatal
|
|
- fix: add TryLock to sync.RWMutex
|
|
- fix: correct linter issues exposed by the fix in #4679
|
|
- fix: don't hardcode success return state
|
|
- fix: expand RTT debugger compatibility
|
|
- internal/task (threads): save stack bounds instead of scanning under a lock
|
|
- internal/task: create detached threads and fix error handling
|
|
- interp: better errors when debugging interp
|
|
- transform (gc): create stack slots in callers of external functions
|
|
- internal/task: prevent semaphore resource leak for threads scheduler
|
|
* **machine**
|
|
- cortexm: optimize code size for the HardFault_Handler
|
|
- fe310: add I2C pins for the HiFive1b
|
|
- clarify WriteAt semantics of BlockDevice
|
|
- fix deprecated AsmFull comment (#5005)
|
|
- make sure DMA buffers do not escape unnecessarily
|
|
- only enable USB-CDC when needed
|
|
- use larger SPI MAXCNT on nrf52833 and nrf52840
|
|
- fix: update m.queuedBytes when clamping output to avoid corrupting sentBytes
|
|
- fix: use int64 in ReadTemperature to avoid overflow
|
|
- fix(rp2): disable DBGPAUSE on startup
|
|
- fix(rp2): possible integer overflow while computing factors for SPI baudrate
|
|
- fix(rp2): reset spinlocks at startup
|
|
- fix(rp2): switch spinlock busy loop to wfe
|
|
- fix(rp2): use side-effect-free spinlocks
|
|
- nrf: add ADC_VDDH which is an ADC pin for VDDH
|
|
- nrf: don't block SPI transfer
|
|
- nrf: don't set PSELN, it's ignored in single ended mode anyway
|
|
- nrf: fix typo in ADC configuration
|
|
- nrf: refactor SoftDevice enabled check
|
|
- nrf: rename pwmPin to adcPin
|
|
- nrf: support flash operations while the SoftDevice is enabled
|
|
- rp2040: allow writing to the UART inside interrupts
|
|
- machine,nrf528: stop the bus only once on I2C bus error and ensures the first error is returned
|
|
* **net**
|
|
- update submodule to latest commits
|
|
* **runtime**
|
|
- (avr): fix infinite longjmp loop if stack is aligned to 256 bytes
|
|
- (gc_blocks.go): clear full size of allocation
|
|
- (gc_blocks.go): make sweep branchless
|
|
- (gc_blocks.go): simplify scanning logic
|
|
- (gc_blocks.go): use a linked stack to scan marked objects
|
|
- (gc_blocks.go): use best-fit allocation
|
|
- (gc_boehm.go): fix world already stopped check
|
|
- (wasm): scan the system stack
|
|
- fix sleep duration for long sleeps
|
|
- remove copied code for nrf52840
|
|
- src/syscall: update src buffer after write
|
|
- wasm: fix C realloc and optimize it a bit
|
|
* **targets**
|
|
- add xiao-esp32s3 board target
|
|
- Add ESP32-S3 support (#5091)
|
|
- Added Gopher ARCADE board
|
|
- Create "pico2-ice" target board (#5062)
|
|
* **build/test**
|
|
- Add testing.T.Context() and testing.B.Context()
|
|
- create separate go.mod file for testing dependencies for wasm tests that use Chromium headless browser to avoid use of older incompatible version.
|
|
- go back to normal scheduler instead of tasks scheduler for macos CI
|
|
- update CI to use Go 1.25.5
|
|
- update macOS GH actions builds to handle sunset of macOS 13
|
|
- use task scheduler on macOS builds to avoid test race condition lockups
|
|
- update all CI builds to use latest stable Go release. Also update some of the actions to their latest releases.
|
|
- update GH actions builds to use Go 1.25.4
|
|
- uninstall cmake before install
|
|
- fix: point the submodule for musl-lib to a mirror in the TinyGo GitHub org
|
|
- fix: remove macOS 15 from CI build matrix (conflicts with macOS 14 build)
|
|
- fix: separate host expected bytes from device intended bytes
|
|
- fix/typo: makeESPFirmwareImage
|
|
- make: GNUmakefile: shrink TinyGo binaries on Linux
|
|
- move the directory list into a variable
|
|
- several improvements to the macOS GH actions build
|
|
- Fix for #4678: top-level 'make lint' wasn't working
|
|
- fix: increase the timeout for chromedp to connect to the headless browser used for running the wasm tests.
|
|
- testdata: some more packages for the test corpus
|
|
|
|
0.39.0
|
|
---
|
|
* **general**
|
|
- all: add Go 1.25 support
|
|
- net: update to latest tinygo net package
|
|
- docs: clarify build verification step for macOS users
|
|
- Add flag to skip Renesas SVD builds
|
|
* **build**
|
|
- Makefile: install missing dlmalloc files
|
|
- flash: add -o flag support to save built binary (Fixes #4937) (#4942)
|
|
- fix: update version of clang to 17 to accommodate latest Go 1.25 docker base image
|
|
* **ci**
|
|
- chore: update all CI builds to test Go 1.25 release
|
|
- fix: disable test-newest since CircleCI seems unable to download due to rate-limits on Dockerhub
|
|
- ci: rename some jobs to avoid churn on every Go/LLVM version bump
|
|
- ci: make the goroutines test less racy
|
|
- tests: de-flake goroutines test
|
|
* **compiler**
|
|
- compiler: implement internal/abi.Escape
|
|
* **main**
|
|
- main: show the compiler error (if any) for `tinygo test -c`
|
|
- chore: correct GOOS=js name in error messages for WASM
|
|
* **machine**
|
|
- machine: add international keys
|
|
- machine: remove some unnecessary "// peripherals:" comments
|
|
- machine: add I2C pin comments
|
|
- machine: standardize I2C errors with "i2c:" prefix
|
|
- machine: make I2C usable in the simulator
|
|
- fix: add SPI and I2C to teensy 4.1 (#4943)
|
|
- `rp2`: use the correct channel mask for rp2350 ADC; hold lock during read (#4938)
|
|
- `rp2`: disable digital input for analog inputs
|
|
* **runtime**
|
|
- runtime: ensure time.Sleep(d) sleeps at least d
|
|
- runtime: stub out weak pointer support
|
|
- runtime: implement dummy AddCleanup
|
|
- runtime: enable multi-core scheduler for rp2350
|
|
- `internal/task`: use -stack-size flag when starting a new thread
|
|
- `internal/task`: add SA_RESTART flag to GC interrupts
|
|
- `internal/task`: a few small correctness fixes
|
|
- `internal/gclayout`: make gclayout values constants
|
|
- darwin: add threading support and use it by default
|
|
* **standard library**
|
|
- `sync`: implement sync.Swap
|
|
- `reflect`: implement Method.IsExported
|
|
* **testing**
|
|
- testing: stub out testing.B.Loop
|
|
* **targets**
|
|
- `stm32`: add support for the STM32L031G6U6
|
|
- add metro-rp2350 board definition (#4989)
|
|
- `rp2040/rp2350`: set the default stack size to 8k for rp2040/rp2350 based boards where this was not already the case
|
|
|
|
|
|
0.38.0
|
|
---
|
|
* **general**
|
|
- `go.*`: upgrade `golang.org/x/tools` to v0.30.0
|
|
- `all`: add support for LLVM 20
|
|
* **build**
|
|
- go back to using MinoruSekine/setup-scoop for Windows CI builds
|
|
- `flake.*`: upgrade to nixpkgs 25.05, LLVM 20
|
|
- `Makefile`: only detect ccache command when needed
|
|
- `Makefile`: create random filename inside rule
|
|
- `Makefile`: don't set GOROOT
|
|
- `Makefile`: call uname at most once
|
|
- `Makefile`: only read NodeJS version when it is needed
|
|
* **compiler**
|
|
- add support for `GODEBUG=gotypesalias=1`
|
|
- `interp`: fix `copy()` from/to external buffers
|
|
- add `-nobounds` (similar to `-gcflags=-B`)
|
|
- `compileopts`: add library version to cached library path
|
|
- `builder`: build wasi-libc inside TinyGo
|
|
- `builder`: simplify bdwgc libc dependency
|
|
- `builder`: don't use precompiled libraries
|
|
- `compileopts`: enable support for `GOARCH=wasm` in `tinygo test`
|
|
* **fixes**
|
|
- `rp2350`: Fix DMA to SPI transmits on RP2350 (#4903)
|
|
- `microbit v2`: use OpenOCD flash method on microbit v2 when using Nordic Semi SoftDevice
|
|
- `main`: display all of the current GC options for the `-gc` flag
|
|
- Remove duplicated error handling
|
|
- `sync`: fix `TestMutexConcurrent` test
|
|
- fix race condition in `testdata/goroutines.go`
|
|
- fix build warnings on Windows ARM
|
|
* **machine**
|
|
- `usb`: add USB mass storage class support
|
|
- implement usb receive message throttling
|
|
- declare usb endpoints per-platform
|
|
- `samd21`: implement watchdog
|
|
- `samd51`: write to flash memory in 512 byte long chunks
|
|
- `samd21`: write to flash memory in 64 byte long chunks
|
|
- don't inline RTT `WriteByte` everywhere
|
|
- `rp2`: unexport machine-specific errors
|
|
- `rp2`: discount scheduling delays in I2C timeouts (#4876)
|
|
- use pointer receiver in simulated PWM peripherals
|
|
- add simulated PWM/timer peripherals
|
|
- `rp2`: expose usb endpoint stall handling
|
|
- `arm`: clear pending interrupts before enabling them
|
|
- `rp2`: merge common usb code (#4856)
|
|
* **main**
|
|
- add "cores" and "threads" schedulers to help text
|
|
- add `StartPos` and `EndPos` to `-json` build output
|
|
- change `-json` flag to match upstream Go
|
|
* **runtime**
|
|
- don't lock the print output inside interrupts
|
|
- don't try to interrupt other cores before they are started
|
|
- implement `NumCPU` for the multicore scheduler
|
|
- add support for multicore scheduler
|
|
- refactor obtaining the system stack
|
|
- `interrupt`: add `Checkpoint` type
|
|
- add `exportedFuncPtr`
|
|
- avoid an allocation in `(*time.Timer).Reset`
|
|
- stub runtime signal functions for `os/signal` on wasip1
|
|
- move `timeUnit` to a single place
|
|
- implement `NumCPU` for `-scheduler=threads`
|
|
- move `mainExited` boolean
|
|
- `internal/task`: rename `tinygo_pause` to `tinygo_task_exit`
|
|
- map every goroutine to a new OS thread
|
|
- refactor `timerQueue`
|
|
- make conservative and precise GC MT-safe
|
|
- `internal/task`: implement atomic primitives for preemptive scheduling
|
|
- Use diskutil on macOS to extract volume name and path for FAT mounts #4928
|
|
* **standard library**
|
|
- `net`: update submodule to latest commits
|
|
- `runtime/debug`: add GC related stubs
|
|
- `metrics`: flesh out some of the metric types
|
|
- `reflect`: Chan related stubs
|
|
- `os`: handle relative and abs paths in `Executable()`
|
|
- `os`: add `os.Executable()` for Darwin
|
|
- `sync`: implement `RWMutex` using futexes
|
|
- `reflect`: Add `SliceOf`, `ArrayOf`, `StructOf`, `MapOf`, `FuncOf`
|
|
* **targets**
|
|
- `rp2040`: add multicore support
|
|
- `riscv32`: use `gdb` binary as a fallback
|
|
- add target for Microbit v2 with SoftDevice S140 support for both peripheral and central
|
|
- `windows`: use MSVCRT.DLL instead of UCRT on i386
|
|
- `windows`: add windows/386 support
|
|
- `arm64`: remove unnecessary `.section` directive
|
|
- `riscv-qemu`: actually sleep in `time.Sleep()`
|
|
- `riscv`: define CSR constants and use them where possible
|
|
- `darwin`: support Boehm GC (and use by default)
|
|
- `windows`: add support for the Boehm-Demers-Weiser GC
|
|
- `windows`: fix wrong register for first parameter
|
|
* **wasm**
|
|
- add Boehm GC support
|
|
- refactor/modify stub signal handling
|
|
- don't block `//go:wasmexport` because of running goroutines
|
|
- use `int64` instead of `float64` for the `timeUnit`
|
|
* **boards**
|
|
- Add board support for BigTreeTech SKR Pico (#4842)
|
|
|
|
|
|
0.37.0
|
|
---
|
|
* **general**
|
|
- add the Boehm-Demers-Weiser GC on Linux
|
|
* **ci**
|
|
- add more tests for wasm and baremetal
|
|
* **compiler**
|
|
- crypto/internal/sysrand is allowed to use unsafe signatures
|
|
* **examples**
|
|
- add goroutine benchmark to examples
|
|
* **fixes**
|
|
- ensure use of pointers for SPI interface on atsam21/atsam51 and other machines/boards that were missing implementation (#4798)
|
|
- replace loop counter with hw timer for USB SetAddressReq on rp2040 (#4796)
|
|
* **internal**
|
|
- update to go.bytecodealliance.org@v0.6.2 in GNUmakefile and internal/wasm-tools
|
|
- exclude certain files when copying package in internal/cm
|
|
- update to go.bytecodealliance.org/cm@v0.2.2 in internal/cm
|
|
- remove old reflect.go in internal/reflectlite
|
|
* **loader**
|
|
- use build tags for package iter and iter methods on reflect.Value in loader, iter, reflect
|
|
- add shim for go1.22 and earlier in loader, iter
|
|
* **machine**
|
|
- bump rp2040 to 200MHz (#4768)
|
|
- correct register address for Pin.SetInterrupt for rp2350 (#4782)
|
|
- don't block the rp2xxx UART interrupt handler
|
|
- fix RP2040 Pico board on the playground
|
|
- add flash support for rp2350 (#4803)
|
|
* **os**
|
|
- add stub Symlink for wasm
|
|
* **refactor**
|
|
- use *SPI everywhere to make consistent for implementations. Fixes #4663 "in reverse" by making SPI a pointer everywhere, as discussed in the comments.
|
|
* **reflect**
|
|
- add Value.SetIter{Key,Value} and MapIter.Reset in reflect, internal/reflectlite
|
|
- embed reflectlite types into reflect types in reflect, internal/reflectlite
|
|
- add Go 1.24 iter.Seq[2] methods
|
|
- copy reflect iter tests from upstream Go
|
|
- panic on Type.CanSeq[2] instead of returning false
|
|
- remove strconv.go
|
|
- remove unused go:linkname functions
|
|
* **riscv-qemu**
|
|
- add VirtIO RNG device
|
|
- increase stack size
|
|
* **runtime**
|
|
- only allocate heap memory when needed
|
|
- remove unused file func.go
|
|
- use package reflectlite
|
|
* **transform**
|
|
- cherry-pick from #4774
|
|
|
|
|
|
0.36.0
|
|
---
|
|
* **general**
|
|
- add initial Go 1.24 support
|
|
- add support for LLVM 19
|
|
- update license for 2025
|
|
- make small corrections for README regarding wasm
|
|
- use GOOS and GOARCH for building wasm simulated boards
|
|
- only infer target for wasm when GOOS and GOARCH are set correctly, not just based on file extension
|
|
- add test-corpus-wasip2
|
|
- use older image for cross-compiling builds
|
|
- update Linux builds to run on ubuntu-latest since 20.04 is being retired
|
|
- ensure build output directory is created
|
|
- add NoSandbox flag to chrome headless that is run during WASM tests, since this is now required for Ubuntu 23+ and we are using Ubuntu 24+ when running Github Actions
|
|
- update wasmtime used for CI to 29.0.1 to fix issue with install during CI tests
|
|
- update to use `Get-CimInstance` as `wmic` is being deprecated on WIndows
|
|
- remove unnecessary executable permissions
|
|
- `goenv`: update to new v0.36.0 development version
|
|
* **compiler**
|
|
- `builder`: fix parsing of external ld.lld error messages
|
|
- `cgo`: mangle identifier names
|
|
- `interp`: correctly mark functions as modifying memory
|
|
- add buildmode=wasi-legacy to support existing base of users who expected the older behavior for wasi modules to not return an exit code as if they were reactors
|
|
* **standard library**
|
|
- `crypto/tls`: add Dialer.DialContext() to fix websocket client
|
|
- `crypto/tls`: add VersionTLS constants and VersionName(version uint16) method that turns it into a string, copied from big go
|
|
- `internal/syscall/unix`: use our own version of this package
|
|
- `machine`: replace hard-coded cpu frequencies on rp2xxx
|
|
- `machine`: bump rp2350 CPUFrequency to 150 MHz
|
|
- `machine`: compute rp2 clock dividers from crystal and target frequency
|
|
- `machine`: remove bytes package dependency in flash code
|
|
- `machine/usb/descriptor`: avoid bytes package
|
|
- `net`: update to latest submodule with httptest subpackage and ResolveIPAddress implementation
|
|
- `os`: add File.Chdir support
|
|
- `os`: implement stub Chdir for non-OS systems
|
|
- `os/file`: add file.Chmod
|
|
- `reflect`: implement Value.Equal
|
|
- `runtime`: add FIPS helper functions
|
|
- `runtime`: manually initialize xorshift state
|
|
- `sync`: move Mutex to internal/task
|
|
- `syscall`: add wasip1 RandomGet
|
|
- `testing`: add Chdir
|
|
- `wasip2`: add stubs to get internal/syscall/unix to work
|
|
* **fixes**
|
|
- correctly handle calls for GetRNG() when being made from nrf devices with SoftDevice enabled
|
|
- fix stm32f103 ADC
|
|
- `wasm`: correctly handle id lookup for finalizeRef call
|
|
- `wasm`: avoid total failure on wasm finalizer call
|
|
- `wasm`: convert offset as signed int into unsigned int in syscall/js.stringVal in wasm_exec.js
|
|
* **targets**
|
|
- rp2350: add pll generalized solution; fix ADC handles; pwm period fix
|
|
- rp2350: extending support to include the rp2350b
|
|
- rp2350: cleanup: unexport internal USB and clock package variable, consts and types
|
|
- nrf: make ADC resolution changeable
|
|
- turn on GC for TKey1 device, since it does in fact work
|
|
- match Pico2 stack size to Pico
|
|
* **boards**
|
|
- add support for Pimoroni Pico Plus2
|
|
- add target for pico2-w board
|
|
- add comboat_fw tag for elecrow W5 boards with Combo-AT Wifi firmware
|
|
- add support for Elecrow Pico rp2350 W5 boards
|
|
- add support for Elecrow Pico rp2040 W5 boards
|
|
- add support for NRF51 HW-651
|
|
- add support for esp32c3-supermini
|
|
- add support for waveshare-rp2040-tiny
|
|
* **examples**
|
|
- add naive debouncing for pininterrupt example
|
|
|
|
|
|
0.35.0
|
|
---
|
|
* **general**
|
|
- update cmsis-svd library
|
|
- use default UART settings in the echo example
|
|
- `goenv`: also show git hash with custom build of TinyGo
|
|
- `goenv`: support parsing development versions of Go
|
|
- `main`: parse extldflags early so we can report the error message
|
|
* **compiler**
|
|
- `builder`: whitelist temporary directory env var for Clang invocation to fix Windows bug
|
|
- `builder`: fix cache paths in `-size=full` output
|
|
- `builder`: work around incorrectly escaped DWARF paths on Windows (Clang bug)
|
|
- `builder`: fix wasi-libc path names on Windows with `-size=full`
|
|
- `builder`: write HTML size report
|
|
- `cgo`: support C identifiers only referred to from within macros
|
|
- `cgo`: support function-like macros
|
|
- `cgo`: support errno value as second return parameter
|
|
- `cgo`: add support for `#cgo noescape` lines
|
|
- `compiler`: fix bug in interrupt lowering
|
|
- `compiler`: allow panic directly in `defer`
|
|
- `compiler`: fix wasmimport -> wasmexport in error message
|
|
- `compiler`: support `//go:noescape` pragma
|
|
- `compiler`: report error instead of crashing when instantiating a generic function without body
|
|
- `interp`: align created globals
|
|
* **standard library**
|
|
- `machine`: modify i2s interface/implementation to better match specification
|
|
- `os`: implement `StartProcess`
|
|
- `reflect`: add `Value.Clear`
|
|
- `reflect`: add interface support to `NumMethods`
|
|
- `reflect`: fix `AssignableTo` for named + non-named types
|
|
- `reflect`: implement `CanConvert`
|
|
- `reflect`: handle more cases in `Convert`
|
|
- `reflect`: fix Copy of non-pointer array with size > 64bits
|
|
- `runtime`: don't call sleepTicks with a negative duration
|
|
- `runtime`: optimize GC scanning (findHead)
|
|
- `runtime`: move constants into shared package
|
|
- `runtime`: add `runtime.fcntl` function for internal/syscall/unix
|
|
- `runtime`: heapptr only needs to be initialized once
|
|
- `runtime`: refactor scheduler (this fixes a few bugs with `-scheduler=none`)
|
|
- `runtime`: rewrite channel implementation to be smaller and more flexible
|
|
- `runtime`: use `SA_RESTART` when registering a signal for os/signal
|
|
- `runtime`: implement race-free signals using futexes
|
|
- `runtime`: run deferred functions in `Goexit`
|
|
- `runtime`: remove `Cond` which seems to be unused
|
|
- `runtime`: properly handle unix read on directory
|
|
- `runtime/trace`: stub all public methods
|
|
- `sync`: don't use volatile in `Mutex`
|
|
- `sync`: implement `WaitGroup` using a (pseudo)futex
|
|
- `sync`: make `Cond` parallelism-safe
|
|
- `syscall`: use wasi-libc tables for wasm/js target
|
|
* **targets**
|
|
- `mips`: fix a bug when scanning the stack
|
|
- `nintendoswitch`: get this target to compile again
|
|
- `rp2350`: add support for the new RP2350
|
|
- `rp2040/rp2350` : make I2C implementation shared for rp2040/rp2350
|
|
- `rp2040/rp2350` : make SPI implementation shared for rp2040/rp2350
|
|
- `rp2040/rp2350` : make RNG implementation shared for rp2040/rp2350
|
|
- `wasm`: revise and simplify wasmtime argument handling
|
|
- `wasm`: support `//go:wasmexport` functions after a call to `time.Sleep`
|
|
- `wasm`: correctly return from run() in wasm_exec.js
|
|
- `wasm`: call process.exit() when go.run() returns
|
|
- `windows`: don't return, exit via exit(0) instead to flush stdout buffer
|
|
* **boards**
|
|
- add support for the Tillitis TKey
|
|
- add support for the Raspberry Pi Pico2 (based on the RP2040)
|
|
- add support for Pimoroni Tiny2350
|
|
|
|
|
|
0.34.0
|
|
---
|
|
* **general**
|
|
- fix `GOOS=wasip1` for `tinygo test`
|
|
- add `-C DIR` flag
|
|
- add initial documentation for project governance
|
|
- add `-ldflags='-extldflags=...'` support
|
|
- improve usage message with `tinygo help` and when passing invalid parameters
|
|
* **compiler**
|
|
- `builder`: remove environment variables when invoking Clang, to avoid the environment changing the behavior
|
|
- `builder`: check for the Go toolchain version used to compile TinyGo
|
|
- `cgo`: add `C.CBytes` implementation
|
|
- `compiler`: fix passing weirdly-padded structs as parameters to new goroutines
|
|
- `compiler`: support pragmas on generic functions
|
|
- `compiler`: do not let the slice buffer escape when casting a `[]byte` or `[]rune` to a string, to help escape analysis
|
|
- `compiler`: conform to the latest iteration of the wasm types proposal
|
|
- `loader`: don't panic when main package is not named 'main'
|
|
- `loader`: make sure we always return type checker errors even without type errors
|
|
- `transform`: optimize range over `[]byte(string)`
|
|
* **standard library**
|
|
- `crypto/x509`: add package stub to build crypto/x509 on macOS
|
|
- `machine/usb/adc/midi`: fix `PitchBend`
|
|
- `os`: add `Truncate` stub for baremetal
|
|
- `os`: add stubs for `os.File` deadlines
|
|
- `os`: add internal `net.newUnixFile` for the net package
|
|
- `runtime`: stub runtime_{Before,After}Exec for linkage
|
|
- `runtime`: randomize map accesses
|
|
- `runtime`: support `maps.Clone`
|
|
- `runtime`: add more fields to `MemStats`
|
|
- `runtime`: implement newcoro, coroswitch to support package iter
|
|
- `runtime`: disallow defer in interrupts
|
|
- `runtime`: add support for os/signal on Linux and MacOS
|
|
- `runtime`: add gc layout info for some basic types to help the precise GC
|
|
- `runtime`: bump GC mark stack size to avoid excessive heap rescans
|
|
* **targets**
|
|
- `darwin`: use Go standard library syscall package instead of a custom one
|
|
- `fe310`: support GPIO `PinInput`
|
|
- `mips`: fix compiler crash with GOMIPS=softfloat and defer
|
|
- `mips`: add big-endian (GOARCH=mips) support
|
|
- `mips`: use MIPS32 (instead of MIPS32R2) as the instruction set for wider compatibility
|
|
- `wasi`: add relative and absolute --dir options to wasmtime args
|
|
- `wasip2`: add wasmtime -S args to support network interfaces
|
|
- `wasm`: add `//go:wasmexport` support (for all WebAssembly targets)
|
|
- `wasm`: use precise instead of conservative GC for WebAssembly (including WASI)
|
|
- `wasm-unknown`: add bulk memory flags since basically every runtime has it now
|
|
* **boards**
|
|
- add RAKwireless RAK4631
|
|
- add WaveShare ESP-C3-32S-Kit
|
|
|
|
|
|
0.33.0
|
|
---
|
|
|
|
* **general**
|
|
- use latest version of x/tools
|
|
- add chromeos 9p support for flashing
|
|
- sort compiler error messages by source position in a package
|
|
- don't include prebuilt libraries in the release to simplify packaging and reduce the release tarball size
|
|
- show runtime panic addresses for `tinygo run`
|
|
- support Go 1.23 (including all new language features)
|
|
- `test`: support GOOS/GOARCH pairs in the `-target` flag
|
|
- `test`: remove message after test binary built
|
|
* **compiler**
|
|
- remove unused registers for x86_64 linux syscalls
|
|
- remove old atomics workaround for AVR (not necessary in modern LLVM versions)
|
|
- support `golang.org/x/sys/unix` syscalls
|
|
- `builder`: remove workaround for generics race condition
|
|
- `builder`: add package ID to compiler and optimization error messages
|
|
- `builder`: show better error messages for some common linker errors
|
|
- `cgo`: support preprocessor macros passed on the command line
|
|
- `cgo`: use absolute paths for error messages
|
|
- `cgo`: add support for printf
|
|
- `loader`: handle `go list` errors inside TinyGo (for better error messages)
|
|
- `transform`: fix incorrect alignment of heap-to-stack transform
|
|
- `transform`: use thinlto-pre-link passes (instead of the full pipeline) to speed up compilation speed slightly
|
|
* **standard library**
|
|
- `crypto/tls`: add CipherSuiteName and some extra fields to ConnectionSTate
|
|
- `internal/abi`: implement initial version of this package
|
|
- `machine`: use new `internal/binary` package
|
|
- `machine`: rewrite Reply() to fix sending long replies in I2C Target Mode
|
|
- `machine/usb/descriptor`: Reset joystick physical
|
|
- `machine/usb/descriptor`: Drop second joystick hat
|
|
- `machine/usb/descriptor`: Add more HID... functions
|
|
- `machine/usb/descriptor`: Fix encoding of values
|
|
- `machine/usb/hid/joystick`: Allow more hat switches
|
|
- `os`: add `Chown`, `Truncate`
|
|
- `os/user`: use stdlib version of this package
|
|
- `reflect`: return correct name for the `unsafe.Pointer` type
|
|
- `reflect`: implement `Type.Overflow*` functions
|
|
- `runtime`: implement dummy `getAuxv` to satisfy golang.org/x/sys/
|
|
- `runtime`: don't zero out new allocations for `-gc=leaking` when they are already zeroed
|
|
- `runtime`: simplify slice growing/appending code
|
|
- `runtime`: print a message when a fatal signal like SIGSEGV happens
|
|
- `runtime/debug`: add `GoVersion` to `debug.BuildInfo`
|
|
- `sync`: add `Map.Clear()`
|
|
- `sync/atomic`: add And* and Or* compiler intrinsics needed for Go 1.23
|
|
- `syscall`: add `Fork` and `Execve`
|
|
- `syscall`: add all MacOS errno values
|
|
- `testing`: stub out `T.Deadline`
|
|
- `unique`: implement custom (naive) version of the unique package
|
|
* **targets**
|
|
- `arm`: support `GOARM=*,softfloat` (softfloat support for ARM v5, v6, and v7)
|
|
- `mips`: add linux/mipsle (and experimental linux/mips) support
|
|
- `mips`: add `GOMIPS=softfloat` support
|
|
- `wasip2`: add WASI preview 2 support
|
|
- `wasm/js`: add `node:` prefix in `require()` call of wasm_exec.js
|
|
- `wasm-unknown`: make sure the `os` package can be imported
|
|
- `wasm-unknown`: remove import-memory flag
|
|
|
|
|
|
0.32.0
|
|
---
|
|
|
|
* **general**
|
|
- fix wasi-libc include headers on Nix
|
|
- apply OpenOCD commands after target configuration
|
|
- fix a minor race condition when determining the build tags
|
|
- support UF2 drives with a space in their name on Linux
|
|
- add LLVM 18 support
|
|
- drop support for Go 1.18 to be able to stay up to date
|
|
|
|
* **compiler**
|
|
- move `-panic=trap` support to the compiler/runtime
|
|
- fix symbol table index for WebAssembly archives
|
|
- fix ed25519 build errors by adjusting the alias names
|
|
- add aliases to generic AES functions
|
|
- fix race condition by temporarily applying a proposed patch
|
|
- `builder`: keep un-wasm-opt'd .wasm if -work was passed
|
|
- `builder`: make sure wasm-opt command line is printed if asked
|
|
- `cgo`: implement shift operations in preprocessor macros
|
|
- `interp`: checking for methodset existence
|
|
|
|
* **standard library**
|
|
- `machine`: add `__tinygo_spi_tx` function to simulator
|
|
- `machine`: fix simulator I2C support
|
|
- `machine`: add GetRNG support to simulator
|
|
- `machine`: add `TxFifoFreeLevel` for CAN
|
|
- `os`: add `Link`
|
|
- `os`: add `FindProcess` for posix
|
|
- `os`: add `Process.Release` for unix
|
|
- `os`: add `SetReadDeadline` stub
|
|
- `os`, `os/signal`: add signal stubs
|
|
- `os/user`: add stubs for `Lookup{,Group}` and `Group`
|
|
- `reflect`: use int in `StringHeader` and `SliceHeader` on non-AVR platforms
|
|
- `reflect`: fix `NumMethods` for Interface type
|
|
- `runtime`: skip negative sleep durations in sleepTicks
|
|
|
|
* **targets**
|
|
- `esp32`: add I2C support
|
|
- `rp2040`: move UART0 and UART1 to common file
|
|
- `rp2040`: make all RP2040 boards available for simulation
|
|
- `rp2040`: fix timeUnit type
|
|
- `stm32`: add i2c `Frequency` and `SetBaudRate` function for chips that were missing implementation
|
|
- `wasm-unknown`: add math and memory builtins that LLVM needs
|
|
- `wasip1`: replace existing `-target=wasi` support with wasip1 as supported in Go 1.21+
|
|
|
|
* **boards**
|
|
- `adafruit-esp32-feather-v2`: add the Adafruit ESP32 Feather V2
|
|
- `badger2040-w`: add support for the Badger2040 W
|
|
- `feather-nrf52840-sense`: fix lack of LXFO
|
|
- `m5paper`: add support for the M5 Paper
|
|
- `mksnanov3`: limit programming speed to 1800 kHz
|
|
- `nucleol476rg`: add stm32 nucleol476rg support
|
|
- `pico-w`: add the Pico W (which is near-idential to the pico target)
|
|
- `thingplus-rp2040`, `waveshare-rp2040-zero`: add WS2812 definition
|
|
- `pca10059-s140v7`: add this variant to the PCA10059 board
|
|
|
|
|
|
0.31.2
|
|
---
|
|
|
|
* **general**
|
|
* update the `net` submodule to updated version with `Buffers` implementation
|
|
|
|
* **compiler**
|
|
* `syscall`: add wasm_unknown tag to some additional files so it can compile more code
|
|
|
|
* **standard library**
|
|
* `runtime`: add Frame.Entry field
|
|
|
|
|
|
0.31.1
|
|
---
|
|
|
|
* **general**
|
|
* fix Binaryen build in make task
|
|
* update final build stage of Docker `dev` image to go1.22
|
|
* only use GHA cache for building Docker `dev` image
|
|
* update the `net` submodule to latest version
|
|
|
|
* **compiler**
|
|
* `interp`: make getelementptr offsets signed
|
|
* `interp`: return a proper error message when indexing out of range
|
|
|
|
|
|
0.31.0
|
|
---
|
|
|
|
* **general**
|
|
* remove LLVM 14 support
|
|
* add LLVM 17 support, and use it by default
|
|
* add Nix flake support
|
|
* update bundled Binaryen to version 116
|
|
* add `ports` subcommand that lists available serial ports for `-port` and `-monitor`
|
|
* support wasmtime version 14
|
|
* add `-serial=rtt` for serial output over SWD
|
|
* add Go 1.22 support and use it by default
|
|
* change minimum Node.js version from 16 to 18
|
|
* **compiler**
|
|
* use the new LLVM pass manager
|
|
* allow systems with more stack space to allocate larger values on the stack
|
|
* `build`: fix a crash due to sharing GlobalValues between build instances
|
|
* `cgo`: add `C._Bool` type
|
|
* `cgo`: fix calling CGo callback inside generic function
|
|
* `compileopts`: set `purego` build tag by default so that more packages can be built
|
|
* `compileopts`: force-enable CGo to avoid build issues
|
|
* `compiler`: fix crash on type assert on interfaces with no methods
|
|
* `interp`: print LLVM instruction in traceback
|
|
* `interp`: support runtime times by running them at runtime
|
|
* `loader`: enforce Go language version in the type checker (this may break existing programs with an incorrect Go version in go.mod)
|
|
* `transform`: fix bug in StringToBytes optimization pass
|
|
* **standard library**
|
|
* `crypto/tls`: stub out a lot of functions
|
|
* `internal/task`, `machine`: make TinyGo code usable with "big Go" CGo
|
|
* `machine`: implement `I2C.SetBaudRate` consistently across chips
|
|
* `machine`: implement `SPI.Configure` consistently across chips
|
|
* `machine`: add `DeviceID` for nrf, rp2040, sam, stm32
|
|
* `machine`: use smaller UART buffer size on atmega chips
|
|
* `machine/usb`: allow setting a serial number using a linker flag
|
|
* `math`: support more math functions on baremetal (picolibc) systems
|
|
* `net`: replace entire net package with a new one based on the netdev driver
|
|
* `os/user`: add bare-bones implementation of this package
|
|
* `reflect`: stub `CallSlice` and `FuncOf`
|
|
* `reflect`: add `TypeFor[T]`
|
|
* `reflect`: update `IsZero` to Go 1.22 semantics
|
|
* `reflect`: move indirect values into interface when setting interfaces
|
|
* `runtime`: stub `Breakpoint`
|
|
* `sync`: implement trylock
|
|
* **targets**
|
|
* `atmega`: use UART double speed mode for fewer errors and higher throughput
|
|
* `atmega328pb`: refactor to enable extra uart
|
|
* `avr`: don't compile large parts of picolibc (math, stdio) for LLVM 17 support
|
|
* `esp32`: switch over to the official SVD file
|
|
* `esp32c3`: implement USB_SERIAL for USBCDC communication
|
|
* `esp32c3`: implement I2C
|
|
* `esp32c3`: implement RNG
|
|
* `esp32c3`: add more ROM functions and update linker script for the in-progress wifi support
|
|
* `esp32c3`: update to newer SVD files
|
|
* `rp2040`: add support for UART hardware flow control
|
|
* `rp2040`: add definition for `machine.PinToggle`
|
|
* `rp2040`: set XOSC startup delay multiplier
|
|
* `samd21`: add support for UART hardware flow control
|
|
* `samd51`: add support for UART hardware flow control
|
|
* `wasm`: increase default stack size to 64k for wasi/wasm targets
|
|
* `wasm`: bump wasi-libc version to SDK 20
|
|
* `wasm`: remove line of dead code in wasm_exec.js
|
|
* **new targets/boards**
|
|
* `qtpy-esp32c3`: add Adafruit QT Py ESP32-C3 board
|
|
* `mksnanov3`: add support for the MKS Robin Nano V3.x
|
|
* `nrf52840-generic`: add generic nrf52840 chip support
|
|
* `thumby`: add support for Thumby
|
|
* `wasm`: add new `wasm-unknown` target that doesn't depend on WASI or a browser
|
|
* **boards**
|
|
* `arduino-mkrwifi1010`, `arduino-nano33`, `nano-rp2040`, `matrixportal-m4`, `metro-m4-airlift`, `pybadge`, `pyportal`: add `ninafw` build tag and some constants for BLE support
|
|
* `gopher-badge`: fix typo in USB product name
|
|
* `nano-rp2040`: add UART1 and correct mappings for NINA via UART
|
|
* `pico`: bump default stack size from 2kB to 8kB
|
|
* `wioterminal`: expose UART4
|
|
|
|
|
|
0.30.0
|
|
---
|
|
|
|
* **general**
|
|
- add LLVM 16 support, use it by default
|
|
* **compiler**
|
|
- `build`: work around a race condition by building Go SSA serially
|
|
- `compiler`: fix a crash by not using the LLVM global context types
|
|
- `interp`: don't copy unknown values in `runtime.sliceCopy` to fix miscompile
|
|
- `interp`: fix crash in error report by not returning raw LLVM values
|
|
* **standard library**
|
|
- `machine/usb/adc/midi`: various improvements and API changes
|
|
- `reflect`: add support for `[...]T` → `[]T` in reflect
|
|
* **targets**
|
|
- `atsamd21`, `atsamd51`: add support for USB INTERRUPT OUT
|
|
- `rp2040`: always use the USB device enumeration fix, even in chips that supposedly have the HW fix
|
|
- `wasm`: increase default stack size to 32k for wasi/wasm
|
|
* **boards**
|
|
- `gobadge`: add GoBadge target as alias for PyBadge :)
|
|
- `gemma-m0`: add support for the Adafruit Gemma M0
|
|
|
|
|
|
0.29.0
|
|
---
|
|
|
|
* **general**
|
|
- Go 1.21 support
|
|
- use https for renesas submodule #3856
|
|
- ci: rename release-double-zipped to something more useful
|
|
- ci: update Node.js from version 14 to version 16
|
|
- ci: switch GH actions builds to use Go 1.21 final release
|
|
- docker: update clang to version 15
|
|
- docker: use Go 1.21 for Docker dev container build
|
|
- `main`: add target JSON file in `tinygo info` output
|
|
- `main`: improve detection of filesystems
|
|
- `main`: use `go env` instead of doing all detection manually
|
|
- make: add make task to generate Renesas device wrappers
|
|
- make: add task to check NodeJS version before running tests
|
|
- add submodule for Renesas SVD file mirror repo
|
|
- update to go-serial package v1.6.0
|
|
- `testing`: add Testing function
|
|
- `tools/gen-device-svd`: small changes needed for Renesas MCUs
|
|
* **compiler**
|
|
- `builder`: update message for max supported Go version
|
|
- `compiler,reflect`: NumMethods reports exported methods only
|
|
- `compiler`: add compiler-rt and wasm symbols to table
|
|
- `compiler`: add compiler-rt to wasm.json
|
|
- `compiler`: add min and max builtin support
|
|
- `compiler`: implement clear builtin for maps
|
|
- `compiler`: implement clear builtin for slices
|
|
- `compiler`: improve panic message when a runtime call is unavailable
|
|
- `compiler`: update .ll test output
|
|
- `loader`: merge go.env file which is now required starting in Go 1.21 to correctly get required packages
|
|
* **standard library**
|
|
- `os`: define ErrNoDeadline
|
|
- `reflect`: Add FieldByNameFunc
|
|
- `reflect`: add SetZero
|
|
- `reflect`: fix iterating over maps with interface{} keys
|
|
- `reflect`: implement Value.Grow
|
|
- `reflect`: remove unnecessary heap allocations
|
|
- `reflect`: use .key() instead of a type assert
|
|
- `sync`: add implementation from upstream Go for OnceFunc, OnceValue, and OnceValues
|
|
* **targets**
|
|
- `machine`: UART refactor (#3832)
|
|
- `machine/avr`: pin change interrupt
|
|
- `machine/macropad_rp2040`: add machine.BUTTON
|
|
- `machine/nrf`: add I2C timeout
|
|
- `machine/nrf`: wait for stop condition after reading from the I2C bus
|
|
- `machine/nRF52`: set SPI TX/RX lengths even data is empty. Fixes #3868 (#3877)
|
|
- `machine/rp2040`: add missing suffix to CMD_READ_STATUS
|
|
- `machine/rp2040`: add NoPin support
|
|
- `machine/rp2040`: move flash related functions into separate file from C imports for correct - LSP. Fixes #3852
|
|
- `machine/rp2040`: wait for 1000 us after flash reset to avoid issues with busy USB bus
|
|
- `machine/samd51,rp2040,nrf528xx,stm32`: implement watchdog
|
|
- `machine/samd51`: fix i2cTimeout was decreasing due to cache activation
|
|
- `machine/usb`: Add support for HID Keyboard LEDs
|
|
- `machine/usb`: allow USB Endpoint settings to be changed externally
|
|
- `machine/usb`: refactor endpoint configuration
|
|
- `machine/usb`: remove usbDescriptorConfig
|
|
- `machine/usb/hid,joystick`: fix hidreport (3) (#3802)
|
|
- `machine/usb/hid`: add RxHandler interface
|
|
- `machine/usb/hid`: rename Handler() to TxHandler()
|
|
- `wasi`: allow zero inodes when reading directories
|
|
- `wasm`: add support for GOOS=wasip1
|
|
- `wasm`: fix functions exported through //export
|
|
- `wasm`: remove i64 workaround, use BigInt instead
|
|
- `example`: adjust time offset
|
|
- `example`: simplify pininterrupt
|
|
* **boards**
|
|
- `targets`: add AKIZUKI DENSHI AE-RP2040
|
|
- `targets`: adding new uf2 target for PCA10056 (#3765)
|
|
|
|
|
|
0.28.0
|
|
---
|
|
|
|
* **general**
|
|
- fix parallelism in the compiler on Windows by building LLVM with thread support
|
|
- support qemu-user debugging
|
|
- make target JSON msd-volume-name an array
|
|
- print source location when a panic happens in -monitor
|
|
- `test`: don't print `ok` for a successful compile-only
|
|
* **compiler**
|
|
- `builder`: remove non-ThinLTO build mode
|
|
- `builder`: fail earlier if Go is not available
|
|
- `builder`: improve `-size=full` in a number of ways
|
|
- `builder`: implement Nordic DFU file writer in Go
|
|
- `cgo`: allow `LDFLAGS: --export=...`
|
|
- `compiler`: support recursive slice types
|
|
- `compiler`: zero struct padding during map operations
|
|
- `compiler`: add llvm.ident metadata
|
|
- `compiler`: remove `unsafe.Pointer(uintptr(v) + idx)` optimization (use `unsafe.Add` instead)
|
|
- `compiler`: add debug info to `//go:embed` data structures for better `-size` output
|
|
- `compiler`: add debug info to string constants
|
|
- `compiler`: fix a minor race condition
|
|
- `compiler`: emit correct alignment in debug info for global variables
|
|
- `compiler`: correctly generate reflect data for local named types
|
|
- `compiler`: add alloc attributes to `runtime.alloc`, reducing flash usage slightly
|
|
- `compiler`: for interface maps, use the original named type if available
|
|
- `compiler`: implement most math/bits functions as LLVM intrinsics
|
|
- `compiler`: ensure all defers have been seen before creating rundefers
|
|
* **standard library**
|
|
- `internal/task`: disallow blocking inside an interrupt
|
|
- `machine`: add `CPUReset`
|
|
- `machine/usb/hid`: add MediaKey support
|
|
- `machine/usb/hid/joystick`: move joystick under HID
|
|
- `machine/usb/hid/joystick`: allow joystick settings override
|
|
- `machine/usb/hid/joystick`: handle case where we cannot find the correct HID descriptor
|
|
- `machine/usb/hid/mouse`: add support for mouse back and forward
|
|
- `machine/usb`: add ability to override default VID, PID, manufacturer name, and product name
|
|
- `net`: added missing `TCPAddr` and `UDPAddr` implementations
|
|
- `os`: add IsTimeout function
|
|
- `os`: fix resource leak in `(*File).Close`
|
|
- `os`: add `(*File).Sync`
|
|
- `os`: implement `(*File).ReadDir` for wasi
|
|
- `os`: implement `(*File).WriteAt`
|
|
- `reflect`: make sure null bytes are supported in tags
|
|
- `reflect`: refactor this package to enable many new features
|
|
- `reflect`: add map type methods: `Elem` and `Key`
|
|
- `reflect`: add map methods: `MapIndex`, `MapRange`/`MapIter`, `SetMapIndex`, `MakeMap`, `MapKeys`
|
|
- `reflect`: add slice methods: `Append`, `MakeSlice`, `Slice`, `Slice3`, `Copy`, `Bytes`, `SetLen`
|
|
- `reflect`: add misc methods: `Zero`, `Addr`, `UnsafeAddr`, `OverflowFloat`, `OverflowInt`, `OverflowUint`, `SetBytes`, `Convert`, `CanInt`, `CanFloat`, `CanComplex`, `Comparable`
|
|
- `reflect`: add type methods: `String`, `PkgPath`, `FieldByName`, `FieldByIndex`, `NumMethod`
|
|
- `reflect`: add stubs for `Type.Method`, `CanConvert`, `ArrayOf`, `StructOf`, `MapOf`
|
|
- `reflect`: add stubs for channel select routines/types
|
|
- `reflect`: allow nil rawType to call Kind()
|
|
- `reflect`: ensure all ValueError panics have Kind fields
|
|
- `reflect`: add support for named types
|
|
- `reflect`: improve `Value.String()`
|
|
- `reflect`: set `Index` and `PkgPath` field in `Type.Field`
|
|
- `reflect`: `Type.AssignableTo`: you can assign anything to `interface{}`
|
|
- `reflect`: add type check to `Value.Field`
|
|
- `reflect`: let `TypeOf(nil)` return nil
|
|
- `reflect`: move `StructField.Anonymous` field to match upstream location
|
|
- `reflect`: add `UnsafePointer` for Func types
|
|
- `reflect`: `MapIter.Next` needs to allocate new keys/values every time
|
|
- `reflect`: fix `IsNil` for interfaces
|
|
- `reflect`: fix `Type.Name` to return an empty string for non-named types
|
|
- `reflect`: add `VisibleFields`
|
|
- `reflect`: properly handle embedded structs
|
|
- `reflect`: make sure `PointerTo` works for named types
|
|
- `reflect`: `Set`: convert non-interface to interface
|
|
- `reflect`: `Set`: fix direction of assignment check
|
|
- `reflect`: support channel directions
|
|
- `reflect`: print struct tags in Type.String()
|
|
- `reflect`: properly handle read-only values
|
|
- `runtime`: allow custom-gc SetFinalizer and clarify KeepAlive
|
|
- `runtime`: implement KeepAlive using inline assembly
|
|
- `runtime`: check for heap allocations inside interrupts
|
|
- `runtime`: properly turn pointer into empty interface when hashing
|
|
- `runtime`: improve map size hint usage
|
|
- `runtime`: zero map key/value on deletion to so GC doesn't see them
|
|
- `runtime`: print the address where a panic happened
|
|
- `runtime/debug`: stub `SetGCPercent`, `BuildInfo.Settings`
|
|
- `runtime/metrics`: add this package as a stub
|
|
- `syscall`: `Stat_t` timespec fields are Atimespec on darwin
|
|
- `syscall`: add `Timespec.Unix()` for wasi
|
|
- `syscall`: add fsync using libc
|
|
- `testing`: support -test.count
|
|
- `testing`: make test output unbuffered when verbose
|
|
- `testing`: add -test.skip
|
|
- `testing`: move runtime.GC() call to runN to match upstream
|
|
- `testing`: add -test.shuffle to order randomize test and benchmark order
|
|
* **targets**
|
|
- `arm64`: fix register save/restore to include vector registers
|
|
- `attiny1616`: add support for this chip
|
|
- `cortexm`: refactor EnableInterrupts and DisableInterrupts to avoid `arm.AsmFull`
|
|
- `cortexm`: enable functions in RAM for go & cgo
|
|
- `cortexm`: convert SystemStack from `AsmFull` to C inline assembly
|
|
- `cortexm`: fix crash due to wrong stack size offset
|
|
- `nrf`: samd21, stm32: add flash API
|
|
- `nrf`: fix memory issue in ADC read
|
|
- `nrf`: new peripheral type for nrf528xx chips
|
|
- `nrf`: implement target mode
|
|
- `nrf`: improve ADC and add oversampling, longer sample time, and reference voltage
|
|
- `rp2040`: change calling order for device enumeration fix to do first
|
|
- `rp2040`: rtc delayed interrupt
|
|
- `rp2040`: provide better errors for invalid pins on I2C and SPI
|
|
- `rp2040`: change uart to allow for a single pin
|
|
- `rp2040`: implement Flash interface
|
|
- `rp2040`: remove SPI `DataBits` property
|
|
- `rp2040`: unify all linker scripts using LDFLAGS
|
|
- `rp2040`: remove SPI deadline for improved performance
|
|
- `rp2040`: use 4MHz as default frequency for SPI
|
|
- `rp2040`: implement target mode
|
|
- `rp2040`: use DMA for send-only SPI transfers
|
|
- `samd21`: rearrange switch case for get pin cfg
|
|
- `samd21`: fix issue with WS2812 driver by making pin accesses faster
|
|
- `samd51`: enable CMCC cache for greatly improved performance
|
|
- `samd51`: remove extra BK0RDY clear
|
|
- `samd51`: implement Flash interface
|
|
- `samd51`: use correct SPI frequency
|
|
- `samd51`: remove extra BK0RDY clear
|
|
- `samd51`: fix ADC multisampling
|
|
- `wasi`: allow users to set the `runtime_memhash_tsip` or `runtime_memhash_fnv` build tags
|
|
- `wasi`: set `WASMTIME_BACKTRACE_DETAILS` when running in wasmtime.
|
|
- `wasm`: implement the `//go:wasmimport` directive
|
|
* **boards**
|
|
- `gameboy-advance`: switch to use register definitions in device/gba
|
|
- `gameboy-advance`: rename display and make pointer receivers
|
|
- `gopher-badge`: Added Gopher Badge support
|
|
- `lorae5`: add needed definition for UART2
|
|
- `lorae5`: correct mapping for I2C bus, add pin mapping to enable power
|
|
- `pinetime`: update the target file (rename from pinetime-devkit0)
|
|
- `qtpy`: fix bad pin assignment
|
|
- `wioterminal`: fix pin definition of BCM13
|
|
- `xiao`: Pins D4 & D5 are I2C1. Use pins D2 & D3 for I2C0.
|
|
- `xiao`: add DefaultUART
|
|
|
|
|
|
0.27.0
|
|
---
|
|
|
|
* **general**
|
|
- all: update musl
|
|
- all: remove "acm:"` prefix for USB vid/pid pair
|
|
- all: add support for LLVM 15
|
|
- all: use DWARF version 4
|
|
- all: add initial (incomplete) support for Go 1.20
|
|
- all: add `-gc=custom` option
|
|
- `main`: print ldflags including ThinLTO flags with -x
|
|
- `main`: fix error message when a serial port can't be accessed
|
|
- `main`: add `-timeout` flag to allow setting how long TinyGo will try looking for a MSD volume for flashing
|
|
- `test`: print PASS on pass when running standalone test binaries
|
|
- `test`: fix printing of benchmark output
|
|
- `test`: print package name when compilation failed (not just when the test failed)
|
|
* **compiler**
|
|
- refactor to support LLVM 15
|
|
- `builder`: print compiler commands while building a library
|
|
- `compiler`: fix stack overflow when creating recursive pointer types (fix for LLVM 15+ only)
|
|
- `compiler`: allow map keys and values of ≥256 bytes
|
|
- `cgo`: add support for `C.float` and `C.double`
|
|
- `cgo`: support anonymous enums included in multiple Go files
|
|
- `cgo`: add support for bitwise operators
|
|
- `interp`: add support for constant icmp instructions
|
|
- `transform`: fix memory corruption issues
|
|
* **standard library**
|
|
- `machine/usb`: remove allocs in USB ISR
|
|
- `machine/usb`: add `Port()` and deprecate `New()` to have the API better match the singleton that is actually being returned
|
|
- `machine/usb`: change HID usage-maximum to 0xFF
|
|
- `machine/usb`: add USB HID joystick support
|
|
- `machine/usb`: change to not send before endpoint initialization
|
|
- `net`: implement `Pipe`
|
|
- `os`: add stub for `os.Chtimes`
|
|
- `reflect`: stub out `Type.FieldByIndex`
|
|
- `reflect`: add `Value.IsZero` method
|
|
- `reflect`: fix bug in `.Field` method when the field fits in a pointer but the parent doesn't
|
|
- `runtime`: switch some `panic()` calls in the gc to `runtimePanic()` for consistency
|
|
- `runtime`: add xorshift-based fastrand64
|
|
- `runtime`: fix alignment for arm64, arm, xtensa, riscv
|
|
- `runtime`: implement precise GC
|
|
- `runtime/debug`: stub `PrintStack`
|
|
- `sync`: implement simple pooling in `sync.Pool`
|
|
- `syscall`: stubbed `Setuid`, Exec and friends
|
|
- `syscall`: add more stubs as needed for Go 1.20 support
|
|
- `testing`: implement `t.Setenv`
|
|
- `unsafe`: add support for Go 1.20 slice/string functions
|
|
* **targets**
|
|
- `all`: do not set stack size per board
|
|
- `all`: update picolibc to v1.7.9
|
|
- `atsame5x`: fix CAN extendedID handling
|
|
- `atsame5x`: reduce heap allocation
|
|
- `avr`: drop GNU toolchain dependency
|
|
- `avr`: fix .data initialization for binaries over 64kB
|
|
- `avr`: support ThinLTO
|
|
- `baremetal`: implements calloc
|
|
- `darwin`: fix `syscall.Open` on darwin/arm64
|
|
- `darwin`: fix error with `tinygo lldb`
|
|
- `esp`: use LLVM Xtensa linker instead of Espressif toolchain
|
|
- `esp`: use ThinLTO for Xtensa
|
|
- `esp32c3`: add SPI support
|
|
- `linux`: include musl `getpagesize` function in release
|
|
- `nrf51`: add ADC implementation
|
|
- `nrf52840`: add PDM support
|
|
- `riscv`: add "target-abi" metadata flag
|
|
- `rp2040`: remove mem allocation in GPIO ISR
|
|
- `rp2040`: avoid allocating clock on heap
|
|
- `rp2040`: add basic GPIO support for PIO
|
|
- `rp2040`: fix USB interrupt issue
|
|
- `rp2040`: fix RP2040-E5 USB errata
|
|
- `stm32`: always set ADC pins to pullups floating
|
|
- `stm32f1`, `stm32f4`: fix ADC by clearing the correct bit for rank after each read
|
|
- `stm32wl`: Fix incomplete RNG initialisation
|
|
- `stm32wlx`: change order for init so clock speeds are set before peripheral start
|
|
- `wasi`: makes wasmtime "run" explicit
|
|
- `wasm`: fix GC scanning of allocas
|
|
- `wasm`: allow custom malloc implementation
|
|
- `wasm`: remove `-wasm-abi=` flag (use `-target` instead)
|
|
- `wasm`: fix scanning of the stack
|
|
- `wasm`: fix panic when allocating 0 bytes using malloc
|
|
- `wasm`: always run wasm-opt even with `-scheduler=none`
|
|
- `wasm`: avoid miscompile with ThinLTO
|
|
- `wasm`: allow the emulator to expand `{tmpDir}`
|
|
- `wasm`: support ThinLTO
|
|
- `windows`: update mingw-w64 version to avoid linker warning
|
|
- `windows`: add ARM64 support
|
|
* **boards**
|
|
- Add Waveshare RP2040 Zero
|
|
- Add Arduino Leonardo support
|
|
- Add Adafruit KB2040
|
|
- Add Adafruit Feather M0 Express
|
|
- Add Makerfabs ESP32C3SPI35 TFT Touchscreen board
|
|
- Add Espressif ESP32-C3-DevKit-RUST-1 board
|
|
- `lgt92`: fix OpenOCD configuration
|
|
- `xiao-rp2040`: fix D9 and D10 constants
|
|
- `xiao-rp2040`: add pin definitions
|
|
|
|
0.26.0
|
|
---
|
|
|
|
* **general**
|
|
- remove support for LLVM 13
|
|
- remove calls to deprecated ioutil package
|
|
- move from `os.IsFoo` to `errors.Is(err, ErrFoo)`
|
|
- fix for builds using an Android host
|
|
- make interp timeout configurable from command line
|
|
- ignore ports with VID/PID if there is no candidates
|
|
- drop support for Go 1.16 and Go 1.17
|
|
- update serial package to v1.3.5 for latest bugfixes
|
|
- remove GOARM from `tinygo info`
|
|
- add flag for setting the goroutine stack size
|
|
- add serial port monitoring functionality
|
|
* **compiler**
|
|
- `cgo`: implement support for static functions
|
|
- `cgo`: fix panic when FuncType.Results is nil
|
|
- `compiler`: add aliases for `edwards25519/field.feMul` and `field.feSquare`
|
|
- `compiler`: fix incorrect DWARF type in some generic parameters
|
|
- `compiler`: use LLVM math builtins everywhere
|
|
- `compiler`: replace some math operation bodies with LLVM intrinsics
|
|
- `compiler`: replace math aliases with intrinsics
|
|
- `compiler`: fix `unsafe.Sizeof` for chan and map values
|
|
- `compileopts`: use tags parser from buildutil
|
|
- `compileopts`: use backticks for regexp to avoid extra escapes
|
|
- `compileopts`: fail fast on duplicate values in target field slices
|
|
- `compileopts`: fix windows/arm target triple
|
|
- `compileopts`: improve error handling when loading target/*.json
|
|
- `compileopts`: add support for stlink-dap programmer
|
|
- `compileopts`: do not complain about `-no-debug` on MacOS
|
|
- `goenv`: support `GOOS=android`
|
|
- `interp`: fix reading from external global
|
|
- `loader`: fix link error for `crypto/internal/boring/sig.StandardCrypto`
|
|
* **standard library**
|
|
- rename assembly files to .S extension
|
|
- `machine`: add PWM peripheral comments to pins
|
|
- `machine`: improve UARTParity slightly
|
|
- `machine`: do not export DFU_MAGIC_* constants on nrf52840
|
|
- `machine`: rename `PinInputPullUp`/`PinInputPullDown`
|
|
- `machine`: add `KHz`, `MHz`, `GHz` constants, deprecate `TWI_FREQ_*` constants
|
|
- `machine`: remove level triggered pin interrupts
|
|
- `machine`: do not expose `RESET_MAGIC_VALUE`
|
|
- `machine`: use `NoPin` constant where appropriate (instead of `0` for example)
|
|
- `net`: sync net.go with Go 1.18 stdlib
|
|
- `os`: add `SyscallError.Timeout`
|
|
- `os`: add `ErrProcessDone` error
|
|
- `reflect`: implement `CanInterface` and fix string `Index`
|
|
- `runtime`: make `MemStats` available to leaking collector
|
|
- `runtime`: add `MemStats.TotalAlloc`
|
|
- `runtime`: add `MemStats.Mallocs` and `Frees`
|
|
- `runtime`: add support for `time.NewTimer` and `time.NewTicker`
|
|
- `runtime`: implement `resetTimer`
|
|
- `runtime`: ensure some headroom for the GC to run
|
|
- `runtime`: make gc and scheduler asserts settable with build tags
|
|
- `runtime/pprof`: add `WriteHeapProfile`
|
|
- `runtime/pprof`: `runtime/trace`: stub some additional functions
|
|
- `sync`: implement `Map.LoadAndDelete`
|
|
- `syscall`: group WASI consts by purpose
|
|
- `syscall`: add WASI `{D,R}SYNC`, `NONBLOCK` FD flags
|
|
- `syscall`: add ENOTCONN on darwin
|
|
- `testing`: add support for -benchmem
|
|
* **targets**
|
|
- remove USB vid/pid pair of bootloader
|
|
- `esp32c3`: remove unused `UARTStopBits` constants
|
|
- `nrf`: implement `GetRNG` function
|
|
- `nrf`: `rp2040`: add `machine.ReadTemperature`
|
|
- `nrf52`: cleanup s140v6 and s140v7 uf2 targets
|
|
- `rp2040`: implement semi-random RNG based on ROSC based on pico-sdk
|
|
- `wasm`: add summary of wasm examples and fix callback bug
|
|
- `wasm`: do not allow undefined symbols (`--allow-undefined`)
|
|
- `wasm`: make sure buffers returned by `malloc` are kept until `free` is called
|
|
- `windows`: save and restore xmm registers when switching goroutines
|
|
* **boards**
|
|
- add Pimoroni's Tufty2040
|
|
- add XIAO ESP32C3
|
|
- add Adafruit QT2040
|
|
- add Adafruit QT Py RP2040
|
|
- `esp32c3-12f`: `matrixportal-m4`: `p1am-100`: remove duplicate build tags
|
|
- `hifive1-qemu`: remove this emulated board
|
|
- `wioterminal`: add UART3 for RTL8720DN
|
|
- `xiao-ble`: fix usbpid
|
|
|
|
|
|
0.25.0
|
|
---
|
|
|
|
* **command line**
|
|
- change to ignore PortReset failures
|
|
* **compiler**
|
|
- `compiler`: darwin/arm64 is aarch64, not arm
|
|
- `compiler`: don't clobber X18 and FP registers on darwin/arm64
|
|
- `compiler`: fix issue with methods on generic structs
|
|
- `compiler`: do not try to build generic functions
|
|
- `compiler`: fix type names for generic named structs
|
|
- `compiler`: fix multiple defined function issue for generic functions
|
|
- `compiler`: implement `unsafe.Alignof` and `unsafe.Sizeof` for generic code
|
|
* **standard library**
|
|
- `machine`: add DTR and RTS to Serialer interface
|
|
- `machine`: reorder pin definitions to improve pin list on tinygo.org
|
|
- `machine/usb`: add support for MIDI
|
|
- `machine/usb`: adjust buffer alignment (samd21, samd51, nrf52840)
|
|
- `machine/usb/midi`: add `NoteOn`, `NoteOff`, and `SendCC` methods
|
|
- `machine/usb/midi`: add definition of MIDI note number
|
|
- `runtime`: add benchmarks for memhash
|
|
- `runtime`: add support for printing slices via print/println
|
|
* **targets**
|
|
- `avr`: fix some apparent mistake in atmega1280/atmega2560 pin constants
|
|
- `esp32`: provide hardware pin constants
|
|
- `esp32`: fix WDT reset on the MCH2022 badge
|
|
- `esp32`: optimize SPI transmit
|
|
- `esp32c3`: provide hardware pin constants
|
|
- `esp8266`: provide hardware pin constants like `GPIO2`
|
|
- `nrf51`: define and use `P0_xx` constants
|
|
- `nrf52840`, `samd21`, `samd51`: unify bootloader entry process
|
|
- `nrf52840`, `samd21`, `samd51`: change usbSetup and sendZlp to public
|
|
- `nrf52840`, `samd21`, `samd51`: refactor handleStandardSetup and initEndpoint
|
|
- `nrf52840`, `samd21`, `samd51`: improve usb-device initialization
|
|
- `nrf52840`, `samd21`, `samd51`: move usbcdc to machine/usb/cdc
|
|
- `rp2040`: add usb serial vendor/product ID
|
|
- `rp2040`: add support for usb
|
|
- `rp2040`: change default for serial to usb
|
|
- `rp2040`: add support for `machine.EnterBootloader`
|
|
- `rp2040`: turn off pullup/down when input type is not specified
|
|
- `rp2040`: make picoprobe default openocd interface
|
|
- `samd51`: add support for `DAC1`
|
|
- `samd51`: improve TRNG
|
|
- `wasm`: stub `runtime.buffered`, `runtime.getchar`
|
|
- `wasi`: make leveldb runtime hash the default
|
|
* **boards**
|
|
- add Challenger RP2040 LoRa
|
|
- add MCH2022 badge
|
|
- add XIAO RP2040
|
|
- `clue`: remove pins `D21`..`D28`
|
|
- `feather-rp2040`, `macropad-rp2040`: fix qspi-flash settings
|
|
- `xiao-ble`: add support for flash-1200-bps-reset
|
|
- `gopherbot`, `gopherbot2`: add these aliases to simplify for newer users
|
|
|
|
|
|
0.24.0
|
|
---
|
|
|
|
* **command line**
|
|
- remove support for go 1.15
|
|
- remove support for LLVM 11 and LLVM 12
|
|
- add initial Go 1.19 beta support
|
|
- `test`: fix package/... syntax
|
|
* **compiler**
|
|
- add support for the embed package
|
|
- `builder`: improve error message for "command not found"
|
|
- `builder`: add support for ThinLTO on MacOS and Windows
|
|
- `builder`: free LLVM objects after use, to reduce memory leaking
|
|
- `builder`: improve `-no-debug` error messages
|
|
- `cgo`: be more strict: CGo now requires every Go file to import the headers it needs
|
|
- `compiler`: alignof(func) is 1 pointer, not 2
|
|
- `compiler`: add support for type parameters (aka generics)
|
|
- `compiler`: implement `recover()` built-in function
|
|
- `compiler`: support atomic, volatile, and LLVM memcpy-like functions in defer
|
|
- `compiler`: drop support for macos syscalls via inline assembly
|
|
- `interp`: do not try to interpret past task.Pause()
|
|
- `interp`: fix some buggy localValue handling
|
|
- `interp`: do not unroll loops
|
|
- `transform`: fix MakeGCStackSlots that caused a possible GC bug on WebAssembly
|
|
* **standard library**
|
|
- `os`: enable os.Stdin for baremetal target
|
|
- `reflect`: add `Value.UnsafePointer` method
|
|
- `runtime`: scan GC globals conservatively on Windows, MacOS, Linux and Nintendo Switch
|
|
- `runtime`: add per-map hash seeds
|
|
- `runtime`: handle nil map write panics
|
|
- `runtime`: add stronger hash functions
|
|
- `syscall`: implement `Getpagesize`
|
|
* **targets**
|
|
- `atmega2560`: support UART1-3 + example for uart
|
|
- `avr`: use compiler-rt for improved float64 support
|
|
- `avr`: simplify timer-based time
|
|
- `avr`: fix race condition in stack write
|
|
- `darwin`: add support for `GOARCH=arm64` (aka Apple Silicon)
|
|
- `darwin`: support `-size=short` and `-size=full` flag
|
|
- `rp2040`: replace sleep 'busy loop' with timer alarm
|
|
- `rp2040`: align api for `PortMaskSet`, `PortMaskClear`
|
|
- `rp2040`: fix GPIO interrupts
|
|
- `samd21`, `samd51`, `nrf52840`: add support for USBHID (keyboard / mouse)
|
|
- `wasm`: update wasi-libc version
|
|
- `wasm`: use newer WebAssembly features
|
|
* **boards**
|
|
- add Badger 2040
|
|
- `matrixportal-m4`: attach USB DP to the correct pin
|
|
- `teensy40`: add I2C support
|
|
- `wioterminal`: fix I2C definition
|
|
|
|
|
|
0.23.0
|
|
---
|
|
|
|
* **command line**
|
|
- add `-work` flag
|
|
- add Go 1.18 support
|
|
- add LLVM 14 support
|
|
- `run`: add support for command-line parameters
|
|
- `build`: calculate default output path if `-o` is not specified
|
|
- `build`: add JSON output
|
|
- `test`: support multiple test binaries with `-c`
|
|
- `test`: support flags like `-v` on all targets (including emulated firmware)
|
|
* **compiler**
|
|
- add support for ThinLTO
|
|
- use compiler-rt from LLVM
|
|
- `builder`: prefer GNU build ID over Go build ID for caching
|
|
- `builder`: add support for cross compiling to Darwin
|
|
- `builder`: support machine outlining pass in stacksize calculation
|
|
- `builder`: disable asynchronous unwind tables
|
|
- `compileopts`: fix emulator configuration on non-amd64 Linux architectures
|
|
- `compiler`: move allocations > 256 bytes to the heap
|
|
- `compiler`: fix incorrect `unsafe.Alignof` on some 32-bit architectures
|
|
- `compiler`: accept alias for slice `cap` builtin
|
|
- `compiler`: allow slices of empty structs
|
|
- `compiler`: fix difference in aliases in interface methods
|
|
- `compiler`: make `RawSyscall` an alias for `Syscall`
|
|
- `compiler`: remove support for memory references in `AsmFull`
|
|
- `loader`: only add Clang header path for CGo
|
|
- `transform`: fix poison value in heap-to-stack transform
|
|
* **standard library**
|
|
- `internal/fuzz`: add this package as a shim
|
|
- `os`: implement readdir for darwin and linux
|
|
- `os`: add `DirFS`, which is used by many programs to access readdir.
|
|
- `os`: isWine: be compatible with older versions of wine, too
|
|
- `os`: implement `RemoveAll`
|
|
- `os`: Use a `uintptr` for `NewFile`
|
|
- `os`: add stubs for `exec.ExitError` and `ProcessState.ExitCode`
|
|
- `os`: export correct values for `DevNull` for each OS
|
|
- `os`: improve support for `Signal` by fixing various bugs
|
|
- `os`: implement `File.Fd` method
|
|
- `os`: implement `UserHomeDir`
|
|
- `os`: add `exec.ProcessState` stub
|
|
- `os`: implement `Pipe` for darwin
|
|
- `os`: define stub `ErrDeadlineExceeded`
|
|
- `reflect`: add stubs for more missing methods
|
|
- `reflect`: rename `reflect.Ptr` to `reflect.Pointer`
|
|
- `reflect`: add `Value.FieldByIndexErr` stub
|
|
- `runtime`: fix various small GC bugs
|
|
- `runtime`: use memzero for leaking collector instead of manually zeroing objects
|
|
- `runtime`: implement `memhash`
|
|
- `runtime`: implement `fastrand`
|
|
- `runtime`: add stub for `debug.ReadBuildInfo`
|
|
- `runtime`: add stub for `NumCPU`
|
|
- `runtime`: don't inline `runtime.alloc` with `-gc=leaking`
|
|
- `runtime`: add `Version`
|
|
- `runtime`: add stubs for `NumCgoCall` and `NumGoroutine`
|
|
- `runtime`: stub {Lock,Unlock}OSThread on Windows
|
|
- `runtime`: be able to deal with a very small heap
|
|
- `syscall`: make `Environ` return a copy of the environment
|
|
- `syscall`: implement getpagesize and munmap
|
|
- `syscall`: `wasi`: define `MAP_SHARED` and `PROT_READ`
|
|
- `syscall`: stub mmap(), munmap(), MAP_SHARED, PROT_READ, SIGBUS, etc. on nonhosted targets
|
|
- `syscall`: darwin: more complete list of signals
|
|
- `syscall`: `wasi`: more complete list of signals
|
|
- `syscall`: stub `WaitStatus`
|
|
- `syscall/js`: allow copyBytesTo(Go|JS) to use `Uint8ClampedArray`
|
|
- `testing`: implement `TempDir`
|
|
- `testing`: nudge type TB closer to upstream; should be a no-op change.
|
|
- `testing`: on baremetal platforms, use simpler test matcher
|
|
* **targets**
|
|
- `atsamd`: fix usbcdc initialization when `-serial=uart`
|
|
- `atsamd51`: allow higher frequency when using SPI
|
|
- `esp`: support CGo
|
|
- `esp32c3`: add support for input pin
|
|
- `esp32c3`: add support for GPIO interrupts
|
|
- `esp32c3`: add support to receive UART data
|
|
- `rp2040`: fix PWM bug at high frequency
|
|
- `rp2040`: fix some minor I2C bugs
|
|
- `rp2040`: fix incorrect inline assembly
|
|
- `rp2040`: fix spurious i2c STOP during write+read transaction
|
|
- `rp2040`: improve ADC support
|
|
- `wasi`: remove `--export-dynamic` linker flag
|
|
- `wasm`: remove heap allocator from wasi-libc
|
|
* **boards**
|
|
- `circuitplay-bluefruit`: move pin mappings so board can be compiled for WASM use in Playground
|
|
- `esp32-c3-12f`: add the ESP32-C3-12f Kit
|
|
- `m5stamp-c3`: add pin setting of UART
|
|
- `macropad-rp2040`: add the Adafruit MacroPad RP2040 board
|
|
- `nano-33-ble`: typo in LPS22HB peripheral definition and documentation (#2579)
|
|
- `teensy41`: add the Teensy 4.1 board
|
|
- `teensy40`: add ADC support
|
|
- `teensy40`: add SPI support
|
|
- `thingplus-rp2040`: add the SparkFun Thing Plus RP2040 board
|
|
- `wioterminal`: add DefaultUART
|
|
- `wioterminal`: verify written data when flashing through OpenOCD
|
|
- `xiao-ble`: add XIAO BLE nRF52840 support
|
|
|
|
|
|
0.22.0
|
|
---
|
|
|
|
* **command line**
|
|
- add asyncify to scheduler flag help
|
|
- support -run for tests
|
|
- remove FreeBSD target support
|
|
- add LLVM 12 and LLVM 13 support, use LLVM 13 by default
|
|
- add support for ARM64 MacOS
|
|
- improve help
|
|
- check /run/media as well as /media on Linux for non-debian-based distros
|
|
- `test`: set cmd.Dir even when running emulators
|
|
- `info`: add JSON output using the `-json` flag
|
|
* **compiler**
|
|
- `builder`: fix off-by-one in size calculation
|
|
- `builder`: handle concurrent library header rename
|
|
- `builder`: use flock to avoid double-compiles
|
|
- `builder`: use build ID as cache key
|
|
- `builder`: add -fno-stack-protector to musl build
|
|
- `builder`: update clang header search path to look in /usr/lib
|
|
- `builder`: explicitly disable unwind tables for ARM
|
|
- `cgo`: add support for `C.CString` and related functions
|
|
- `compiler`: fix ranging over maps with particular map types
|
|
- `compiler`: add correct debug location to init instructions
|
|
- `compiler`: fix emission of large object layouts
|
|
- `compiler`: work around AVR atomics bugs
|
|
- `compiler`: predeclare runtime.trackPointer
|
|
- `interp`: work around AVR function pointers in globals
|
|
- `interp`: run goroutine starts and checks at runtime
|
|
- `interp`: always run atomic and volatile loads/stores at runtime
|
|
- `interp`: bump timeout to 180 seconds
|
|
- `interp`: handle type assertions on nil interfaces
|
|
- `loader`: eliminate goroot cache inconsistency
|
|
- `loader`: respect $GOROOT when running `go list`
|
|
- `transform`: allocate the correct amount of bytes in an alloca
|
|
- `transform`: remove switched func lowering
|
|
* **standard library**
|
|
- `crypto/rand`: show error if platform has no rng
|
|
- `device/*`: add `*_Msk` field for each bit field and avoid duplicates
|
|
- `device/*`: provide Set/Get for each register field described in the SVD files
|
|
- `internal/task`: swap stack chain when switching goroutines
|
|
- `internal/task`: remove `-scheduler=coroutines`
|
|
- `machine`: add `Device` string constant
|
|
- `net`: add bare Interface implementation
|
|
- `net`: add net.Buffers
|
|
- `os`: stub out support for some features
|
|
- `os`: obey TMPDIR on unix, TMP on Windows, etc
|
|
- `os`: implement `ReadAt`, `Mkdir`, `Remove`, `Stat`, `Lstat`, `CreateTemp`, `MkdirAll`, `Chdir`, `Chmod`, `Clearenv`, `Unsetenv`, `Setenv`, `MkdirTemp`, `Rename`, `Seek`, `ExpandEnv`, `Symlink`, `Readlink`
|
|
- `os`: implement `File.Stat`
|
|
- `os`: fix `IsNotExist` on nonexistent path
|
|
- `os`: fix opening files on WASI in read-only mode
|
|
- `os`: work around lack of `syscall.seek` on 386 and arm
|
|
- `reflect`: make sure indirect pointers are handled correctly
|
|
- `runtime`: allow comparing interfaces
|
|
- `runtime`: use LLVM intrinsic to read the stack pointer
|
|
- `runtime`: strengthen hashmap hash function for structs and arrays
|
|
- `runtime`: fix float/complex hashing
|
|
- `runtime`: fix nil map dereference
|
|
- `runtime`: add realloc implementation to GCs
|
|
- `runtime`: handle negative sleep times
|
|
- `runtime`: correct GC scan bounds
|
|
- `runtime`: remove extalloc GC
|
|
- `rumtime`: implement `__sync` libcalls as critical sections for most microcontrollers
|
|
- `runtime`: add stubs for `Func.FileLine` and `Frame.PC`
|
|
- `sync`: fix concurrent read-lock on write-locked RWMutex
|
|
- `sync`: add a package doc
|
|
- `sync`: add tests
|
|
- `syscall`: add support for `Mmap` and `Mprotect`
|
|
- `syscall`: fix array size for mmap slice creation
|
|
- `syscall`: enable `Getwd` in wasi
|
|
- `testing`: add a stub for `CoverMode`
|
|
- `testing`: support -bench option to run benchmarks matching the given pattern.
|
|
- `testing`: support b.SetBytes(); implement sub-benchmarks.
|
|
- `testing`: replace spaces with underscores in test/benchmark names, as upstream does
|
|
- `testing`: implement testing.Cleanup
|
|
- `testing`: allow filtering subbenchmarks with the `-bench` flag
|
|
- `testing`: implement `-benchtime` flag
|
|
- `testing`: print duration
|
|
- `testing`: allow filtering of subtests using `-run`
|
|
* **targets**
|
|
- `all`: change LLVM features to match vanilla Clang
|
|
- `avr`: use interrupt-based timer which is much more accurate
|
|
- `nrf`: fix races in I2C
|
|
- `samd51`: implement TRNG for randomness
|
|
- `stm32`: pull-up on I2C lines
|
|
- `stm32`: fix timeout for i2c comms
|
|
- `stm32f4`, `stm32f103`: initial implementation for ADC
|
|
- `stm32f4`, `stm32f7`, `stm32l0x2`, `stm32l4`, `stm32l5`, `stm32wl`: TRNG implementation in crypto/rand
|
|
- `stm32wl`: add I2C support
|
|
- `windows`: add support for the `-size=` flag
|
|
- `wasm`: add support for `tinygo test`
|
|
- `wasi`, `wasm`: raise default stack size to 16 KiB
|
|
* **boards**
|
|
- add M5Stack
|
|
- add lorae5 (stm32wle) support
|
|
- add Generic Node Sensor Edition
|
|
- add STM32F469 Discovery
|
|
- add M5Stamp C3
|
|
- add Blues Wireless Swan
|
|
- `bluepill`: add definitions for ADC pins
|
|
- `stm32f4disco`: add definitions for ADC pins
|
|
- `stm32l552ze`: use supported stlink interface
|
|
- `microbit-v2`: add some pin definitions
|
|
|
|
|
|
0.21.0
|
|
---
|
|
|
|
* **command line**
|
|
- drop support for LLVM 10
|
|
- `build`: drop support for LLVM targets in the -target flag
|
|
- `build`: fix paths in error messages on Windows
|
|
- `build`: add -p flag to set parallelism
|
|
- `lldb`: implement `tinygo lldb` subcommand
|
|
- `test`: use emulator exit code instead of parsing test output
|
|
- `test`: pass testing arguments to wasmtime
|
|
* **compiler**
|
|
- use -opt flag for optimization level in CFlags (-Os, etc)
|
|
- `builder`: improve accuracy of the -size=full flag
|
|
- `builder`: hardcode some more frame sizes for __aeabi_* functions
|
|
- `builder`: add support for -size= flag for WebAssembly
|
|
- `cgo`: fix line/column reporting in syntax error messages
|
|
- `cgo`: support function definitions in CGo headers
|
|
- `cgo`: implement rudimentary C array decaying
|
|
- `cgo`: add support for stdio in picolibc and wasi-libc
|
|
- `cgo`: run CGo parser per file, not per CGo fragment
|
|
- `compiler`: fix unintentionally exported math functions
|
|
- `compiler`: properly implement div and rem operations
|
|
- `compiler`: add support for recursive function types
|
|
- `compiler`: add support for the `go` keyword on interface methods
|
|
- `compiler`: add minsize attribute for -Oz
|
|
- `compiler`: add "target-cpu" and "target-features" attributes
|
|
- `compiler`: fix indices into strings and arrays
|
|
- `compiler`: fix string compare functions
|
|
- `interp`: simplify some code to avoid some errors
|
|
- `interp`: support recursive globals (like linked lists) in globals
|
|
- `interp`: support constant globals
|
|
- `interp`: fix reverting of extractvalue/insertvalue with multiple indices
|
|
- `transform`: 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 output
|
|
- `net`, `syscall`: Reduce code duplication by switching to internal/itoa.
|
|
- `os`: don't try to read executable path on baremetal
|
|
- `os`: implement Getwd
|
|
- `os`: add File.WriteString and File.WriteAt
|
|
- `reflect`: fix type.Size() to account for struct padding
|
|
- `reflect`: don't construct an interface-in-interface value
|
|
- `reflect`: implement Value.Elem() for interface values
|
|
- `reflect`: fix Value.Index() in a specific case
|
|
- `reflect`: add support for DeepEqual
|
|
- `runtime`: add another set of invalid unicode runes to encodeUTF8()
|
|
- `runtime`: only initialize os.runtime_args when needed
|
|
- `runtime`: only use CRLF on baremetal systems for println
|
|
- `runtime/debug`: stub `debug.SetMaxStack`
|
|
- `runtime/debug`: stub `debug.Stack`
|
|
- `testing`: add a stub for t.Parallel()
|
|
- `testing`: add support for -test.short flag
|
|
- `testing`: stub B.ReportAllocs()
|
|
- `testing`: add `testing.Verbose`
|
|
- `testing`: stub `testing.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 peripherals
|
|
- `atsam`: move I2S0 to machine file
|
|
- `esp32`: fix SPI configuration
|
|
- `esp32c3`: add support for GDB debugging
|
|
- `esp32c3`: add support for CPU interrupts
|
|
- `esp32c3`: use tasks scheduler by default
|
|
- `fe310`: increase CPU frequency from 16MHz to 320MHz
|
|
- `fe310`: add support for bit banging drivers
|
|
- `linux`: build static binaries using musl
|
|
- `linux`: reduce binary size by calling `write` instead of `putchar`
|
|
- `linux`: add support for GOARM
|
|
- `riscv`: implement 32-bit atomic operations
|
|
- `riscv`: align the heap to 16 bytes
|
|
- `riscv`: switch to tasks-based scheduler
|
|
- `rp2040`: add CPUFrequency()
|
|
- `rp2040`: improve I2C baud rate configuration
|
|
- `rp2040`: add pin interrupt API
|
|
- `rp2040`: refactor PWM code and fix Period calculation
|
|
- `stm32f103`: fix SPI
|
|
- `stm32f103`: make SPI frequency selection more flexible
|
|
- `qemu`: signal correct exit code to QEMU
|
|
- `wasi`: run C/C++ constructors at startup
|
|
- `wasm`: ensure heapptr is aligned
|
|
- `wasm`: update wasi-libc dependency
|
|
- `wasm`: wasi: use asyncify
|
|
- `wasm`: support `-scheduler=none`
|
|
- `windows`: add support for Windows (amd64 only for now)
|
|
* **boards**
|
|
- `feather-stm32f405`, `feather-rp2040`: add I2C pin names
|
|
- `m5stack-core2`: add M5Stack Core2
|
|
- `nano-33-ble`: SoftDevice s140v7 support
|
|
- `nano-33-ble`: add constants for more on-board pins
|
|
|
|
|
|
0.20.0
|
|
---
|
|
|
|
* **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 command
|
|
- `builder:` strip debug information at link time instead of at compile time
|
|
- `builder:` add missing error check for `ioutil.TempFile()`
|
|
- `builder:` simplify running of jobs
|
|
- `compiler:` move LLVM math builtin support into the compiler
|
|
- `compiler:` move math aliases from the runtime to the compiler
|
|
- `compiler:` add aliases for many hashing packages
|
|
- `compiler:` add `*ssa.MakeSlice` bounds tests
|
|
- `compiler:` fix max possible slice
|
|
- `compiler:` add support for new language features of Go 1.17
|
|
- `compiler:` fix equally named structs in different scopes
|
|
- `compiler:` avoid zero-sized alloca in channel operations
|
|
- `interp:` don't ignore array indices for untyped objects
|
|
- `interp:` keep reverted package initializers in order
|
|
- `interp:` fix bug in compiler-time/run-time package initializers
|
|
- `loader:` fix panic in CGo files with syntax errors
|
|
- `transform:` improve GC stack slot pass to work around a bug
|
|
* **standard library**
|
|
- `crypto/rand`: switch to `arc4random_buf`
|
|
- `math:` fix `math.Max` and `math.Min`
|
|
- `math/big`: fix undefined symbols error
|
|
- `net:` add MAC address implementation
|
|
- `os:` implement `os.Executable`
|
|
- `os:` add `SEEK_SET`, `SEEK_CUR`, and `SEEK_END`
|
|
- `reflect:` add StructField.IsExported method
|
|
- `runtime:` reset heapptr to heapStart after preinit()
|
|
- `runtime:` add `subsections_via_symbols` to assembly files on darwin
|
|
- `testing:` add subset implementation of Benchmark
|
|
- `testing:` test testing package using `tinygo test`
|
|
- `testing:` add support for the `-test.v` flag
|
|
* **targets**
|
|
- `386:` bump minimum requirement to the Pentium 4
|
|
- `arm:` switch to Thumb instruction set on ARM
|
|
- `atsamd:` fix copy-paste error for atsamd21/51 calibTrim block
|
|
- `baremetal`,`wasm`: support command line params and environment variables
|
|
- `cortexm:` fix stack overflow because of unaligned stacks
|
|
- `esp32c3:` add support for the ESP32-C3 from Espressif
|
|
- `nrf52840:` fix ram size
|
|
- `nxpmk66f18:` fix a suspicious bitwise operation
|
|
- `rp2040:` add SPI support
|
|
- `rp2040:` add I2C support
|
|
- `rp2040:` add PWM implementation
|
|
- `rp2040:` add openocd configuration
|
|
- `stm32:` add support for PortMask* functions for WS2812 support
|
|
- `unix:` fix time base for time.Now()
|
|
- `unix:` check for mmap error and act accordingly
|
|
- `wasm:` override dlmalloc heap implementation from wasi-libc
|
|
- `wasm:` align heap to 16 bytes
|
|
- `wasm:` add support for the crypto/rand package
|
|
* **boards**
|
|
- add `DefaultUART` to adafruit boards
|
|
- `arduino-mkrwifi1010:` add board definition for Arduino MKR WiFi 1010
|
|
- `arduino-mkrwifi1010:` fix pin definition of `NINA_RESETN`
|
|
- `feather-nrf52:` fix pin definition of uart
|
|
- `feather-rp2040:` add pin name definition
|
|
- `gameboy-advance:` fix ROM header
|
|
- `mdbt50qrx-uf2:` add Raytac MDBT50Q-RX Dongle with TinyUF2
|
|
- `nano-rp2040:` define `NINA_SPI` and fix wifinina pins
|
|
- `teensy40:` enable hardware UART reconfiguration, fix receive watermark interrupt
|
|
|
|
|
|
0.19.0
|
|
---
|
|
|
|
* **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 of `remote` 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 parser
|
|
- `compiler`: support chained interrupt handlers
|
|
- `compiler`: add support for running a builtin in a goroutine
|
|
- `compiler`: do not emit nil checks for loading closure variables
|
|
- `compiler`: skip context parameter when starting regular goroutine
|
|
- `compiler`: refactor method names
|
|
- `compiler`: add function and global section pragmas
|
|
- `compiler`: implement `syscall.rawSyscallNoError` in inline assembly
|
|
- `interp`: ignore inline assembly in markExternal
|
|
- `interp`: fix a bug in pointer cast workaround
|
|
- `loader`: fix testing a main package
|
|
* **standard library**
|
|
- `crypto/rand`: replace this package with a TinyGo version
|
|
- `machine`: make USBCDC global a pointer
|
|
- `machine`: make UART objects pointer receivers
|
|
- `machine`: define Serial as the default output
|
|
- `net`: add initial support for net.IP
|
|
- `net`: add more net compatibility
|
|
- `os`: add stub for os.ReadDir
|
|
- `os`: add FileMode constants from Go 1.16
|
|
- `os`: add stubs required for net/http
|
|
- `os`: implement process related functions
|
|
- `reflect`: implement AppendSlice
|
|
- `reflect`: add stubs required for net/http
|
|
- `runtime`: make task.Data a 64-bit integer to avoid overflow
|
|
- `runtime`: expose memory stats
|
|
- `sync`: implement NewCond
|
|
- `syscall`: fix int type in libc version
|
|
* **targets**
|
|
- `cortexm`: do not disable interrupts on abort
|
|
- `cortexm`: bump default stack size to 2048 bytes
|
|
- `nrf`: avoid heap allocation in waitForEvent
|
|
- `nrf`: don't trigger a heap allocation in SPI.Transfer
|
|
- `nrf52840`: add support for flashing with the BOSSA tool
|
|
- `rp2040`: add support for GPIO input
|
|
- `rp2040`: add basic support for ADC
|
|
- `rp2040`: gpio and adc pin definitions
|
|
- `rp2040`: implement UART
|
|
- `rp2040`: patch elf to checksum 2nd stage boot
|
|
- `stm32`: add PWM for most chips
|
|
- `stm32`: add support for pin interrupts
|
|
- `stm32f103`: add support for PinInputPullup / PinInputPulldown
|
|
- `wasi`: remove wasm build tag
|
|
* **boards**
|
|
- `feather-rp2040`: add support for this board
|
|
- `feather-nrf52840-sense`: add board definition for this board
|
|
- `pca10059`: support flashing from Windows
|
|
- `nano-rp2040`: add this board
|
|
- `nano-33-ble`: add support for this board
|
|
- `pico`: add the Raspberry Pi Pico board with the new RP2040 chip
|
|
- `qtpy`: add pin for neopixels
|
|
- all: add definition for ws2812 for supported boards
|
|
|
|
|
|
0.18.0
|
|
---
|
|
|
|
* **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 parallel
|
|
- `builder`: run interp per package
|
|
- `builder`: cache C and assembly file outputs
|
|
- `builder`: add support for `-x` flag to print commands
|
|
- `builder`: add optsize attribute while building the package
|
|
- `builder`: run function passes per package
|
|
- `builder`: hard code Clang compiler
|
|
- `compiler`: do not use `llvm.GlobalContext()`
|
|
- `compiler`: remove SimpleDCE pass
|
|
- `compiler`: do not emit nil checks for `*ssa.Alloc` instructions
|
|
- `compiler`: merge `runtime.typecodeID` and runtime.typeInInterface
|
|
- `compiler`: do not check for impossible type asserts
|
|
- `compiler`: fix use of global context: `llvm.Int32Type()`
|
|
- `compiler`: add interface IR test
|
|
- `compiler`: fix lack of method name in interface matching
|
|
- `compiler`: fix "fragment covers entire variable" bug
|
|
- `compiler`: optimize string literals and globals
|
|
- `compiler`: decouple func lowering from interface type codes
|
|
- `compiler`: add function attributes to some runtime calls
|
|
- `compiler`: improve position information in error messages
|
|
- `cgo`: add support for CFLAGS in .c files
|
|
- `interp`: support GEP on fixed (MMIO) addresses
|
|
- `interp`: handle `(reflect.Type).Elem()`
|
|
- `interp`: add support for runtime.interfaceMethod
|
|
- `interp`: make toLLVMValue return an error instead of panicking
|
|
- `interp`: add support for switch statement
|
|
- `interp`: fix phi instruction
|
|
- `interp`: remove map support
|
|
- `interp`: support extractvalue/insertvalue with multiple operands
|
|
- `transform`: optimize string comparisons against ""
|
|
- `transform`: optimize `reflect.Type` `Implements()` method
|
|
- `transform`: fix bug in interface lowering when signatures are renamed
|
|
- `transform`: don't rely on struct name of `runtime.typecodeID`
|
|
- `transform`: use IPSCCP pass instead of the constant propagation pass
|
|
- `transform`: fix func lowering assertion failure
|
|
- `transform`: do not lower zero-sized alloc to alloca
|
|
- `transform`: split interface and reflect lowering
|
|
* **standard library**
|
|
- `runtime`: add dummy debug package
|
|
- `machine`: fix data shift/mask in newUSBSetup
|
|
- `machine`: make `machine.I2C0` and similar objects pointers
|
|
- `machine`: unify usbcdc code
|
|
- `machine`: refactor PWM support
|
|
- `machine`: avoid heap allocations in USB code
|
|
- `reflect`: let `reflect.Type` be of interface type
|
|
- `reflect`: implement a number of stub functions
|
|
- `reflect`: check for access in the `Interface` method call
|
|
- `reflect`: fix `AssignableTo` and `Implements` methods
|
|
- `reflect`: implement `Value.CanAddr`
|
|
- `reflect`: implement `Sizeof` and `Alignof` for func values
|
|
- `reflect`: implement `New` function
|
|
- `runtime`: implement command line arguments in hosted environments
|
|
- `runtime`: implement environment variables for Linux
|
|
- `runtime`: improve timers on nrf, and samd chips
|
|
* **targets**
|
|
- all: use -Qunused-arguments only for assembly files
|
|
- `atmega1280`: add PWM support
|
|
- `attiny`: remove dummy UART
|
|
- `atsamd21`: improve SPI
|
|
- `atsamd51`: fix PWM support in atsamd51p20
|
|
- `atsamd5x`: improve SPI
|
|
- `atsamd51`, `atsame5x`: unify samd51 and same5x
|
|
- `atsamd51`, `atsamd21`: fix `ADC.Get()` value at 8bit and 10bit
|
|
- `atsame5x`: add support for CAN
|
|
- `avr`: remove I2C stubs from attiny support
|
|
- `cortexm`: check for `arm-none-eabi-gdb` and `gdb-multiarch` commands
|
|
- `cortexm`: add `__isr_vector` symbol
|
|
- `cortexm`: disable FPU on Cortex-M4
|
|
- `cortexm`: clean up Cortex-M target files
|
|
- `fe310`: fix SPI read
|
|
- `gameboy-advance`: Fix RGBA color interpretation
|
|
- `nrf52833`: add PWM support
|
|
- `stm32l0`: use unified UART logic
|
|
- `stm32`: move f103 (bluepill) to common i2c code
|
|
- `stm32`: separate altfunc selection for UART Tx/Rx
|
|
- `stm32`: i2c implementation for F7, L5 and L4 MCUs
|
|
- `stm32`: make SPI CLK fast to fix data issue
|
|
- `stm32`: support SPI on L4 series
|
|
- `unix`: avoid possible heap allocation with `-opt=0`
|
|
- `unix`: use conservative GC by default
|
|
- `unix`: use the tasks scheduler instead of coroutines
|
|
- `wasi`: upgrade WASI version to wasi_snapshot_preview1
|
|
- `wasi`: darwin: support basic file io based on libc
|
|
- `wasm`: only export explicitly exported functions
|
|
- `wasm`: use WASI ABI for exit function
|
|
- `wasm`: scan globals conservatively
|
|
* **boards**
|
|
- `arduino-mega1280`: add support for the Arduino Mega 1280
|
|
- `arduino-nano-new`: Add Arduino Nano w/ New Bootloader target
|
|
- `atsame54-xpro`: add initial support this board
|
|
- `feather-m4-can`: add initial support for this board
|
|
- `grandcentral-m4`: add board support for Adafruit Grand Central M4 (SAMD51)
|
|
- `lgt92`: update to new UART structure
|
|
- `microbit`: remove LED constant
|
|
- `microbit-v2`: add support for S113 SoftDevice
|
|
- `nucleol432`: add support for this board
|
|
- `nucleo-l031k6`: add this board
|
|
- `pca10059`: initial support for this board
|
|
- `qtpy`: fix msd-volume-name
|
|
- `qtpy`: fix i2c setting
|
|
- `teensy40`: move txBuffer allocation to UART declaration
|
|
- `teensy40`: add UART0 as alias for UART1
|
|
|
|
|
|
0.17.0
|
|
|
|
---
|
|
* **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 build
|
|
- `builder`: remove unused cacheKey parameter
|
|
- `builder`: add -mcpu flag while building libraries
|
|
- `builder`: wait for running jobs to finish
|
|
- `cgo`: add support for variadic functions
|
|
- `compiler`: fix undefined behavior in wordpack
|
|
- `compiler`: fix incorrect "exported function" panic
|
|
- `compiler`: fix non-int integer constants (fixing a crash)
|
|
- `compiler`: refactor and add tests
|
|
- `compiler`: emit a nil check when slicing an array pointer
|
|
- `compiler`: saturate float-to-int conversions
|
|
- `compiler`: test float to int conversions and fix upper-bound calculation
|
|
- `compiler`: support all kinds of deferred builtins
|
|
- `compiler`: remove ir package
|
|
- `compiler`: remove unnecessary main.main call workaround
|
|
- `compiler`: move the setting of attributes to getFunction
|
|
- `compiler`: create runtime types lazily when needed
|
|
- `compiler`: move settings to a separate Config struct
|
|
- `compiler`: work around an ARM backend bug in LLVM
|
|
- `interp`: rewrite entire package
|
|
- `interp`: fix alignment of untyped globals
|
|
- `loader`: use name "main" for the main package
|
|
- `loader`: support imports from vendor directories
|
|
- `stacksize`: add support for DW_CFA_offset_extended
|
|
- `transform`: show better error message in coroutines lowering
|
|
* **standard library**
|
|
- `machine`: accept configuration struct for ADC parameters
|
|
- `machine`: make I2C.Configure signature consistent
|
|
- `reflect`: implement PtrTo
|
|
- `runtime`: refactor to simplify stack switching
|
|
- `runtime`: put metadata at the top end of the heap
|
|
* **targets**
|
|
- `atsam`: add a length check to findPinPadMapping
|
|
- `atsam`: improve USBCDC
|
|
- `atsam`: avoid infinite loop when USBCDC is disconnected
|
|
- `avr`: add SPI support for Atmega based chips
|
|
- `avr`: use Clang for compiling C and assembly files
|
|
- `esp32`: implement task based scheduler
|
|
- `esp32`: enable the FPU
|
|
- `esp8266`: implement task based scheduler
|
|
- `esp`: add compiler-rt library
|
|
- `esp`: add picolibc
|
|
- `nrf`: refactor code a bit to reduce duplication
|
|
- `nrf`: use SPIM peripheral instead of the legacy SPI peripheral
|
|
- `nrf`: update nrfx submodule to latest commit
|
|
- `nrf52840`: ensure that USB CDC interface is only initialized once
|
|
- `nrf52840`: improve USBCDC
|
|
- `stm32`: use stm32-rs SVDs which are of much higher quality
|
|
- `stm32`: harmonization of UART logic
|
|
- `stm32`: replace I2C addressable interface with simpler type
|
|
- `stm32`: fix i2c and add stm32f407 i2c
|
|
- `stm32`: revert change that adds support for channels in interrupts
|
|
- `wasm`: implement a growable heap
|
|
- `wasm`: fix typo in wasm_exec.js, syscall/js.valueLoadString()
|
|
- `wasm`: Namespaced Wasm Imports so they don't conflict across modules, or reserved LLVM IR
|
|
- `wasi`: support env variables based on libc
|
|
- `wasi`: specify wasi-libc in a different way, to improve error message
|
|
* **boards**
|
|
- `matrixportal-m4`: add support for board Adafruit Matrix Portal M4
|
|
- `mkr1000`: add this board
|
|
- `nucleo-f722ze`: add this board
|
|
- `clue`: correct volume name and add alias for release version of Adafruit Clue board
|
|
- `p1am-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 device
|
|
- `nicenano`: nice!nano board support
|
|
- `circuitplay-bluefruit`: correct internal I2C pin mapping
|
|
- `clue`: correct for lack of low frequency crystal
|
|
- `digispark`: split off attiny85 target
|
|
- `nucleo-l552ze`: implementation with CLOCK, LED, and UART
|
|
- `nrf52840-mdk-usb-dongle`: add this board
|
|
|
|
0.16.0
|
|
---
|
|
|
|
* **command-line**
|
|
- add initial support for LLVM 11
|
|
- make lib64 clang include path check more robust
|
|
- `build`: improve support for GOARCH=386 and add tests
|
|
- `gdb`: add support for qemu-user targets
|
|
- `test`: support non-host tests
|
|
- `test`: add support for -c and -o flags
|
|
- `test`: implement some benchmark stubs
|
|
* **compiler**
|
|
- `builder`: improve detection of clang on Fedora
|
|
- `compiler`: fix floating point comparison bugs
|
|
- `compiler`: implement negate for complex numbers
|
|
- `loader`: fix linkname in test binaries
|
|
- `transform`: add missing return pointer restore for regular coroutine tail
|
|
calls
|
|
* **standard library**
|
|
- `machine`: switch default frequency to 4MHz
|
|
- `machine`: clarify caller's responsibility in `SetInterrupt`
|
|
- `os`: add `LookupEnv()` stub
|
|
- `reflect`: implement `Swapper`
|
|
- `runtime`: fix UTF-8 decoding
|
|
- `runtime`: gc: use raw stack access whenever possible
|
|
- `runtime`: use dedicated printfloat32
|
|
- `runtime`: allow ranging over a nil map
|
|
- `runtime`: avoid device/nxp dependency in HardFault handler
|
|
- `testing`: implement dummy Helper method
|
|
- `testing`: add Run method
|
|
* **targets**
|
|
- `arm64`: add support for SVCall intrinsic
|
|
- `atsamd51`: avoid panic when configuring SPI with SDI=NoPin
|
|
- `avr`: properly support the `.rodata` section
|
|
- `esp8266`: implement `Pin.Get` function
|
|
- `nintendoswitch`: fix crash when printing long lines (> 120)
|
|
- `nintendoswitch`: add env parser and removed unused stuff
|
|
- `nrf`: add I2C error checking
|
|
- `nrf`: give more flexibility in picking SPI speeds
|
|
- `nrf`: fix nrf52832 flash size
|
|
- `stm32f103`: support wakeups from interrupts
|
|
- `stm32f405`: add SPI support
|
|
- `stm32f405`: add I2C support
|
|
- `wasi`: add support for this target
|
|
- `wasi`: use 'generic' ABI by default
|
|
- `wasi`: remove --no-threads flag from wasm-ld
|
|
- `wasm`: add instanceof support for WebAssembly
|
|
- `wasm`: use fixed length buffer for putchar
|
|
* **boards**
|
|
- `d1mini`: add this ESP8266 based board
|
|
- `esp32`: use board definitions instead of chip names
|
|
- `qtpy`: add board definition for Adafruit QTPy
|
|
- `teensy40`: add this board
|
|
|
|
0.15.0
|
|
---
|
|
|
|
* **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 formats
|
|
- `compiler`: improve display of goroutine wrappers
|
|
- `interp`: don't panic in the Store method
|
|
- `interp`: replace some panics with error messages
|
|
- `interp`: show error line in first line of the traceback
|
|
- `loader`: be more robust when creating the cached GOROOT
|
|
- `loader`: rewrite/refactor much of the code to use go list directly
|
|
- `loader`: use ioutil.TempDir to create a temporary directory
|
|
- `stacksize`: 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 Windows
|
|
- `arm`: automatically determine stack sizes
|
|
- `arm64`: make dynamic loader structs and constants private
|
|
- `avr`: configure emulator in board files
|
|
- `cortexm`: fix stack size calculation with interrupts
|
|
- `flash`: add openocd settings to atsamd21 / atsamd51
|
|
- `flash`: add openocd settings to nrf5
|
|
- `microbit`: reelboard: flash using OpenOCD when needed
|
|
- `nintendoswitch`: Add dynamic loader for runtime loading PIE sections
|
|
- `nintendoswitch`: fix import cycle on dynamic_arm64.go
|
|
- `nintendoswitch`: Fix invalid memory read / write in print calls
|
|
- `nintendoswitch`: simplified assembly code
|
|
- `nintendoswitch`: support outputting .nro files directly
|
|
* **boards**
|
|
- `arduino-zero`: Adding support for the Arduino Zero (#1365)
|
|
- `atsamd2x`: fix BAUD value
|
|
- `atsamd5x`: fix BAUD value
|
|
- `bluepill`: Enable stm32's USART2 for the board and map it to UART1 tinygo's device
|
|
- `device/atsamd51x`: add all remaining bitfield values for PCHCTRLm Mapping
|
|
- `esp32`: add libgcc ROM functions to linker script
|
|
- `esp32`: add SPI support
|
|
- `esp32`: add support for basic GPIO
|
|
- `esp32`: add support for the Espressif ESP32 chip
|
|
- `esp32`: configure the I/O matrix for GPIO pins
|
|
- `esp32`: export machine.PortMask* for bitbanging implementations
|
|
- `esp8266`: add support for this chip
|
|
- `machine/atsamd51x,runtime/atsamd51x`: fixes needed for full support for all PWM pins. Also adds some useful constants to clarify peripheral clock usage
|
|
- `machine/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 Bluefruit
|
|
- `nrf`: call sd_app_evt_wait when the SoftDevice is enabled
|
|
- `nrf52840`: add build tags for SoftDevice support
|
|
- `nrf52840`: use higher priority for USB-CDC code
|
|
- `runtime/atsamd51x`: use PCHCTRL_GCLK_SERCOMX_SLOW for setting clocks on all SERCOM ports
|
|
- `stm32f405`: add basic UART handler
|
|
- `stm32f405`: add STM32F405 machine/runtime, and new board/target feather-stm32f405
|
|
* **build**
|
|
- `all`: run test binaries in the correct directory
|
|
- `build`: Fix arch release job
|
|
- `ci`: run `tinygo test` for known-working packages
|
|
- `ci`: set git-fetch-depth to 1
|
|
- `docker`: 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
|
|
|
|
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 configuration 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 support
|
|
- `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 pointers 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
|