Releases of Zig done every 2 weeks.
Use this list if you want to use/support a newer version of Zig than the latest release.
Goals:
help projects coordinate what version of Zig to support and when to update
provide a summary of what's going on with Zig development
The summary for each release will prioritize "breaking" and "bigger" public facing
changes at the top.
Date
Version
The Gist
2023-04-30
0.11.0-dev.2892+fd6200eda summary
@memcpy
/@memset
now work with slices
2023-04-16
0.11.0-dev.2619+bd3e248c7 summary
HTTP Server added to std
2023-04-02
0.11.0-dev.2336+5b82b4004 summary
2023-03-18
0.11.0-dev.2157+f56f3c582 summary
zig build parallelism
2023-03-04
0.11.0-dev.1862+e7f128c20 summary
new for-loop syntax
2023-02-18
0.11.0-dev.1639+438b71155 summary
build API refactored
2023-02-01
0.11.0-dev.1507+6f13a725a
last version before the build API was changed
0.11.0-dev.2892+fd6200eda Summary
@memcpy
and @memset
now support slices
@inComptime
builtin added
options added to CompileStep init, "link_libc", "single_threaded", "use_llvm", "use_lld"
GeneralPuproseAllocator.deinit
now returns Check
enum with ok
or leak
instead of a bool
std.json.parse
now supports @Vector
std.net.StreamServer.Options
added reuse_port
std.Build.RunStep
return type of captureStdOut
fixed to be FileSource
std.http.Client
added redirect
errors updated
basic proxy support added
std.http.Server
errors updated
fixed reading chunked bodies
deinit
added to Response
std.http.Field
added
std.http.Headers
, added some clear*
methods
std.math
added lerp function
sigevent added to supported platforms
std.os.linux
, new CAP
constants added, io_uring_{probe/restriction}
fixed
std.c.darwin
, added subset of libproc api
std.c.freebsd
added reallocf
, getentropy
, (cpuset/sched)_(get/set)affinity
, mincore
and elf_aux_info
functions
added mcontext layout for x86
std.c.netbsd
, added pthread and cpu affinity api
Windows
use NtSetInformationFile in DeleteFile to avoid silent failures and improved error handling
leaks fixed if LockFile
fails after opening a file handle
stack traces during crashes fixed
WASM
no longer uses simplified start.zig
logic
cmpxchg{weak/strong}
, @atomicLoad
, @atomicRmw
and @fence
implemented
cmp_lt_errors_len
instruction implemented
more runtime safety checks
Haiku, added find_path
decl and implemented selfExePath
option exposed to produce 64-bit DWARF format
translate-c: support brace-closed string initializers
some fixes inside std.Thread implementation
more work to x86_64 backend
more work to various linkers
more work to C backend
more work to autodoc
0.11.0-dev.2619+bd3e248c7 Summary
std.http.Server added
std.Build.CompileStep
removed run and install functions (big breaking change)
removed redundant dest_builder field (already know as step.owner)
deleted install_step field
output_dir removed, use FileSource abstraction instead
setName, setFilter and setTestRunner removed, pass as options instead
std.Build.RunStep no longer closes stdin
Update to LLVM16
GeneralPurposeAllocator: catch invalid frees
new objcopy options, --strip-debug, --strip-all, -add-gnu-debuglink, --only-keep-debug
std.MultiArrayList support for tagged unions
std.math.log10 added
some backwards compatibility added to glibc headers
now possible to use fcntl
with glibc 2.27 or older and
the res_{,n}{search,query,querydomain}
functions with glibc 2.33 or older.
os_log/signpost/subset of Apple's QOS api added to srd.c.darwin
madvise flags and procctl added to std.c.freebsd
mincore syscall added for linux
termios constants added to std.c.netbsd
std.json.strigify now uses inferred error so it can support more error than @TypeOf(out_stream_.Error)
std.mem.reverseIterator: accepts pointer to array and added nextPtr
std.os.sendto now uses ws2_32 on Windows
c_char type added
support for the spirv target
zig cc handle the -r flag
linker -wrap flag added
macos libc SDK updated to 13.3
updated YAML parser (used for MacOS linker)
more work to various linkers
more work to x86_64 backend
0.11.0-dev.2336+5b82b4004 Summary
io_uring_prep_provide_buffers argument order changed
some public "wrapper stuff" moved from ntdll to std.os.windows
new builtins: @workItemId
, @workGroupId
, @workGroupSize
@export
now supports arbitrary values (not just declarations)
std.MultiArrayList: set/get added to Slice
std.enums: IndexedSet added initOne and initMany
std.json: stringify supports [*:0]const u8
std.os:
ptrace wrapper added for darwin/linux
std.json:
coff:
linker work
dynamicbase default is now true (matches lld)
wasm:
__wasm_init_memory implemented
atomics added
linker work
libc:
mach linker work, hot code swapping PIC
lots of work to x86_64 backend
crypto:
Gimli and Xoodoo removed from std to be maintained outside it
Default to ChaCha instead of AES on CPUs without AES support
0.11.0-dev.2157+f56f3c582 Summary
zig build parallelism, improved APIs and improved output
DeviceBusy
and InvalidArgument
added to std.os.WriteError
ability added to import dependencies from build.zig
added std.Thread.Pool
and std.Thread.WaitGroup
added std.heap.ThreadSafeAllocator
, wraps any allocator to make it thread safe
std.fifo
added toOwnedSlice
Hot Code Swapping POC
C Backend, more big integer/vector support
std.os.linux
added ptrace
posix_spawnp declaration and usage eliminated from std, it's trash
ArrayList.insertAssumeCapacity
added
added std.fmt.bytesToHex
std.http
: connection pooling/keep-alive, compression, relative redirects
Crypto:
Kyber post-quantum key encapsulation mechanism added
Configurable side-channel mitigations
std.crypto.hash.sha3
added TurboSHAKE
lots of x86_64
backend work
0.11.0-dev.1862+e7f128c20 Summary
New for-loop syntax! (Big Breaking Change)
zig fmt will autofix the old syntax
--pkg-begin [name] [path] [sub_packages] --pkg-end
replaced with --mod [name]:[deps]:[src]
and --deps [dep],[dep],...
, which define modules in a "flat" manner, i.e.
--pkg-begin foo foo.zig --pkg-begin bar bar.zig --pgk-end --pkg-end `
Now becomes:
--deps foo --mod foo:bar:foo.zig --mod bar::bar.zig
@trap
builtin added
std.compress.zstd
added
std.io.poll
added, abstraction for reading from mulitple Files in a single thread
std.RingBuffer
added
added std.os.fchmodat
, use std.fs.has_executable_bit
for conditional compilation
std.process.Child
added an Id
abstraction to represent a PID on posix or a HANDLE on Windows
for Zig executables, SIGPIPE will now be set to a no-op handler by default.
Add keep_sigpipe = true
to root.std_options
to disable this.
zig cc
will now fail hard on unsupported linker flags instead of ignoring them
support --no-undefined, -z undefs
support --sort-section
, ignore --sort-common
detect linker color diagnostic flags
-z<arg>
equivalent to -z
<arg>
build changes
modules with the same name are now reused
InstallRawStep
renamed to ObjCopyStep
--build-runner
option added to zig build
std.Build.addModule
now returns the created module
crypto
Keccak permutation is now public
crypto.hash.sha3 has added SHAKE in PR #14756
0.11.0-dev.1639+438b71155 Summary
build API refactored
https://devlog.hexops.com/2023/zig-0-11-breaking-build-changes/
old "package" terminology renamed to "module"
combine std.build and std.build.Builder into std.Build
new std.Build.addModule API introduced
remove setPreferredReleaseMode and standardReleaseOptions in favor of
standardOptimizeOption which has a future-proof options parameter.
setting target/optimize_mode moved to create function
LibExeObjStep deprecated, renamed to CompileStep
support for generated C headers with std.Build.addConfigHeader
std.Build.Cache now available in std library
move src.type.CType to std lib, use it from std.Build, this helps with populating config.h files.
@embedFile
now supports module-mapped names the same way as @import
added LZMA decoder
ZON "Zig Object Notation" introduced, use build.zig.zon instead of build.zig.ini
std.crypto: add the Ascon permutation and AES-CMAC
@constCast
and @volatileCast
added