Go 1.25.3

Skip go build. Ship a binary.

Write a numeric kernel in Go. zlow compiles it to a native binary, no go build, no gccgo, no gollvm. If we can't compile it correctly, we refuse it.

Faster than go

1.4 ms to run the recursive kernel. go (gc) took 9.1 ms on the same source.

A real binary

The compile path is Go source to native. No go build, no gccgo, no gollvm.

Checked against go

72/72 fixtures agree with pinned go (gc) 1.25.3, or are refused by name.

Small on purpose

v0 is float64, bool, and control flow. Keep the rest of the app in Go.

Callable from your app

Compile the kernel to a shared library and load it through the generated binding.

1.4 ms

to run the kernel

6.7×

faster than go

Lightning fast

Same kernel. The gc binary walks the call chain; the LLVM binary just runs it.

zlowup to 6.7× faster than go
1.4 msentry()
go
9.1 msentry()

What's in v0

A kernel, not a rewrite of the Go compiler. Keep the app in Go; compile the hot path.

You can write

  • float64 and bool top-level func
  • var, if, for (while-form), break/continue
  • arithmetic, comparisons, and boolean ops
  • calls between functions in the same project

Not this

  • goroutines, channels, and defer
  • structs, interfaces, slices, and maps
  • for range, switch, and the standard library
  • go build, go.mod, and the module graph

Fully featured

Compile the hot path to native. Keep writing Go.

Try it

Install the CLI, add a project file, then compile from that folder.

Terminal
npm install @zlow/cli
zlow native .

More Go commands