You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

7.6 KiB

0.7.1

  • targets
    • atsamd21: add support for the -port flag in the flash subcommand

0.7.0

  • command line
    • try more locations to find Clang built-in headers
    • add support for tinygo test
    • build current directory if no package is specified
    • support custom .json target spec with -target flag
    • use zversion.go to detect version of GOROOT version
    • make initial heap size configurable for some targets (currently WebAssembly only)
  • cgo
    • add support for bitfields using generated getters and setters
    • add support for anonymous structs
  • compiler
    • show an error instead of panicking on duplicate function definitions
    • allow packages like github.com/tinygo-org/tinygo/src/* by aliasing it
    • remove //go:volatile support
      It has been replaced with the runtime/volatile package.
    • allow poiners in map keys
    • support non-constant syscall numbers
    • implement non-blocking selects
    • add support for the -tags flag
    • add support for string to []rune conversion
    • implement a portable conservative garbage collector (with support for wasm)
    • add the //go:noinline pragma
  • standard library
    • os: add os.Exit and syscall.Exit
    • os: add several stubs
    • runtime: fix heap corruption in conservative GC
    • runtime: add support for math intrinsics where supported, massively speeding up some benchmarks
    • testing: add basic support for testing
  • targets
    • add support for a generic target that calls __tinygo_* functions for peripheral access
    • arduino-nano33: add support for this board
    • hifive1: add support for this RISC-V board
    • reelboard: add e-paper pins
    • reelboard: add PowerSupplyActive to enable voltage for on-board devices
    • wasm: put the stack at the start of linear memory, to detect stack overflows

0.6.0

  • command line
    • some portability improvements
    • make $GOROOT more robust and configurable
    • check for Clang at the Homebrew install location as fallback
  • compiler driver
    • support multiple variations of LLVM commands, for non-Debian distributions
  • compiler
    • improve code quality in multiple ways
    • make panic configurable, adding trap on panic
    • refactor many internal parts of the compiler
    • print all errors encountered during compilation
    • implement calling function values of a named type
    • implement returning values from blocking functions
    • allow larger-than-int values to be sent across a channel
    • implement complex arithmetic
    • improve hashmap support
    • add debuginfo for function arguments
    • insert nil checks on stores (increasing code size)
    • implement volatile operations as compiler builtins
    • add //go:inline pragma
    • add build tags for the Go stdlib version
  • cgo
    • implement char, enum and void* types
    • support #include for builtin headers
    • improve typedef/struct/enum support
    • only include symbols that are necessary, for broader support
    • mark external function args as nocapture
    • implement support for some #define constants
    • implement support for multiple CGo files in a single package
  • standard library
    • machine: remove microbit matrix (moved to drivers repository)
    • machine: refactor pins to use Pin type instead of GPIO
    • runtime: print more interface types on panic, including error
  • targets
    • arm: print an error on HardFault (including stack overflows)
    • atsamd21: fix a bug in the ADC peripheral
    • atsamd21: add support for I2S
    • feather-m0: add support for this board
    • nrf51: fix a bug in I2C
    • stm32f103xx: fix a bug in I2C
    • syscall: implement Exit on unix
    • trinket-m0: add support for this board
    • wasm: make main example smaller
    • wasm: don't cache wasm file in the server, for ease of debugging
    • wasm: work around bug #41508 that caused a deadlock while linking
    • wasm: add support for js.FuncOf

0.5.0

  • compiler driver
    • use wasm-ld instead of wasm-ld-8 on macOS
    • drop dependency on llvm-ar
    • fix linker script includes when running outside TINYGOROOT
  • compiler
    • switch to LLVM 8
    • add support for the Go 1.12 standard library (Go 1.11 is still supported)
    • work around lack of escape analysis due to nil checks
    • implement casting named structs and pointers to them
    • fix int casting to use the source signedness
    • fix some bugs around make([]T, …) with uncommon index types
    • some other optimizations
    • support interface asserts in interp for "math/rand" support
    • resolve all func value targets at compile time (wasm-only at the moment)
  • cgo
    • improve diagnostics
    • implement C struct, union, and arrays
    • fix CGo-related crash in libclang
    • implement C.struct_ types
  • targets
    • all baremetal: pretend to be linux/arm instead of js/wasm
    • avr: improve uintptr support
    • cortexm: implement memmove intrinsic generated by LLVM
    • cortexm: use the lld linker instead of arm-none-eabi-ld
    • darwin: use custom syscall package that links to libSystem.dylib
    • microbit: add blink example
    • samd21: support I2C1
    • samd21: machine/atsamd21: correct pad/pin handling when using both UART and USBCDC interfaces at same time
    • stm32f4discovery: add support for this board
    • wasm: support async func values
    • wasm: improve documentation and add extra example

0.4.1

  • compiler
    • fix objcopy replacement to include the .data section in the firmware image
    • use llvm-ar-7 on Linux to fix the Docker image

0.4.0

  • compiler
    • switch to the hardfloat ABI on ARM, which is more widely used
    • avoid a dependency on objcopy (arm-none-eabi-objcopy etc.)
    • fix a bug in make([]T, n) where n is 64-bits on a 32-bit platform
    • adapt to a change in the AVR backend in LLVM 8
    • directly support the .uf2 firmware format as used on Adafruit boards
    • fix a bug when calling panic() at init time outside of the main package
    • implement nil checks, which results in a ~5% increase in code size
    • inline slice bounds checking, which results in a ~1% decrease in code size
  • targets
    • samd21: fix a bug in port B pins
    • samd21: implement SPI peripheral
    • samd21: implement ADC peripheral
    • stm32: fix a bug in timekeeping
    • wasm: fix a bug in wasm_exec.js that caused corruption in linear memory when running on Node.js.

0.3.0

  • compiler
    • remove old -initinterp flag
    • add support for macOS
  • cgo
    • add support for bool/float/complex types
  • standard library
    • device/arm: add support to disable/enable hardware interrupts
    • machine: add CPU frequency for nrf-based boards
    • syscall: add support for darwin/amd64
  • targets
    • circuitplay_express: add support for this board
    • microbit: add regular pin constants
    • samd21: fix time function for goroutine support
    • samd21: add support for USB-CDC (serial over USB)
    • samd21: add support for pins in port B
    • samd21: add support for pullup and pulldown pins
    • wasm: add support for Safari in example

0.2.0

  • command line
    • add version subcommand
  • compiler
    • fix a bug in floating point comparisons with NaN values
    • fix a bug when calling panic in package initialization code
    • add support for comparing complex64 and complex128
  • cgo
    • add support for external globals
    • add support for pointers and function pointers
  • standard library
    • fmt: initial support, fmt.Println works
    • math: support for most/all functions
    • os: initial support (only stdin/stdout/stderr)
    • reflect: initial support
    • syscall: add support for amd64, arm, and arm64