Skip to content

v1.0.0

Latest

Choose a tag to compare

@xushiwei xushiwei released this 24 Aug 20:13
· 49 commits to main since this release
68e2038

Go support

LLGo v1.0 is compatible with Go 1.20+ source code and supports the complete Go 1.26 language syntax, as well as cgo.

Compatibility is checked against applicable upstream GOROOT/test cases using pinned Go 1.25 and Go 1.26 toolchains. Remaining applicable differences are recorded in xfail.yaml; gc-specific mechanisms outside LLGo's compatibility goals are documented in notapplicable.yaml.

Runtime

LLGo uses a different runtime from the standard Go toolchain. Native goroutines map 1:1 to OS threads with fixed native stacks, so direct C calls require no Go-to-C stack or scheduler transition, avoiding the cgo overhead that makes frequent C calls costly in standard Go.

The default garbage collector is conservative BDWGC (also known as libgc). Bare-metal embedded targets instead use a TinyGo-derived conservative mark-and-sweep collector.

Garbage collection can be disabled with the nogc build tag. For example:

llgo run -tags nogc .

Standard libraries

LLGo fully supports the Go standard library on supported native platforms. CI requires compatibility coverage for every public package and exported symbol in the primary Go toolchain, and runs test/std with both supported toolchains.

Other targets may not provide every OS service or implementation-specific runtime behavior.

Target Current coverage
Native Linux amd64/arm64 and macOS amd64/arm64 release artifacts; primary CI on Linux amd64 and macOS arm64
WebAssembly js/wasm and wasip1/wasm builds; WASI and Emscripten CI coverage
Embedded -target configurations for supported boards and MCUs, with selected QEMU/emulator smoke tests

What's Changed

Full Changelog: v0.13.0...v1.0.0