Lobsters - 02 Oct 2026

Page 4 of 4

Furthermore, starting with Zig 0.18.0, instead of distributing third party WASI libc code, Zig will provide libc for WASI targets via zig libc. For more information, see:

In libc.txt files, the gcc_dir field has been renamed to cc_dir

to reflect the reality that it is not specific to GCC. The old name will still be accepted for now, but

users are encouraged to migrate their libc.txt to the new name (#36951).

Additionally, cc_dir is now required on Linux targets. Note that, because Android and OpenHarmony

store the relevant object files in an unusual location, users of these targets will likely want to set

cc_dir to the same path as crt_dir.

zig cc and zig c++ are now based on Clang 22.1.8.

This was a requirement for snapshot testing, as well as aiding in developing the COFF Linker.

Supported features:

Usage: zig objdump [options] file

Options:

-h, --help Print this help and exit

--all-headers Alias for --file-headers --linker-member=2 --member-headers --section-headers --relocs --symbols

--exports[=sort] Display exported symbols.

In the case of COFF import libraries, displays the symbol list and import headers.

Specify =sort to optionally sort the import headers by symbol name.

--file-headers Display file-format specific headers

--imports Display imported symbols

--linker-member[=1|2|longnames] (Coff) Display contents of the specified archive linker member (default 2)

--member-headers Display archive member headers

--elements=[e1],[e2],-[e3],... Select which formatting elements are displayed. Intended for snapshot testing.

file-type File type summary

header-name Name that precedes a header block

member-path Display full member paths. If removed, only basenames will be used.

newlines Newlines between output sections

table-header Table headers with column names

all (default) All of the above

--only-member=[name] Only consider archive members names that contain [name]. Can be specified multiple times.

--only-section=[name] Only consider section names that contain [name]. Can be specified multiple times.

--only-symbol=[name] Only consider symbol names that contain [name]. Can be specified multiple times.

--redact=[kind] Redact the specified field kind. Intended for snapshot testing.

rva Relative virtual addresses

va Virtual addresses and file offsets

ord Symbol ordinals / hints

size Sizes and lengths

all All of the above

--relocs Display relocations

-s, --snapshot Alias for --redact=all --elements=-all

--section-headers Display section headers

--strings Display string tables

--symbols Display symbol tables

--tls Display TLS information

Some example output:

zig objdump mathtest-dync-exe-no-llvm.dll --all-headers

mathtest-dync-exe-no-llvm.dll: PE/COFF image

COFF Header:

8664 machine (AMD64)

7 number_of_sections

6a08670a time_date_stamp

0 pointer_to_symbol_table

0 number_of_symbols

f0 size_of_optional_header

2022 flags

| EXECUTABLE_IMAGE

| LARGE_ADDRESS_AWARE

| DLL

COFF Optional Header:

20b magic (PE32+)

14.00 linker_version

14a400 size_of_code

84e00 size_of_initialized_data

0 size_of_uninitialized_data

1000 address_of_entry_point ( 180001000)

1000 base_of_code ( 180001000)

180000000 image_base

1000 section_alignment

200 file_alignment

6.00 operating_system_version

1.00 image_version

6.00 subsystem_version

0 win32_version_value

1d6000 size_of_image

400 size_of_headers

0 checksum

2 subsystem (WINDOWS_GUI)

160 dll_flags

| HIGH_ENTROPY_VA

| DYNAMIC_BASE

| NX_COMPAT

100000 size_of_stack_reserve

1000 size_of_stack_commit

100000 size_of_heap_reserve

1000 size_of_heap_commit

0 loader_flags

10 number_of_rva_and_sizes

Data Directories:

1b48d0 54 EXPORT

1b4924 8c IMPORT

0 0 RESOURCE

1cc000 633c EXCEPTION

0 0 SECURITY

1d4000 1280 BASERELOC

1bc000 1c DEBUG

0 0 ARCHITECTURE

0 0 GLOBALPTR

1aebc8 28 TLS

0 0 LOAD_CONFIG

0 0 BOUND_IMPORT

1b4c80 2d0 IAT

0 0 DELAY_IMPORT

0 0 COM_DESCRIPTOR

0 0 RESERVED

Sections in 'mathtest-dync-exe-no-llvm.dll':

Num Name RVA Virt Size Data Size & Data & Relocs & Lines # Relocs # Lines Flags

1 .text 1000 14a346 14a400 400 0 0 0 0 60000020 | CNT_CODE MEM_EXECUTE MEM_READ

2 .rdata 14c000 6fe3c 70000 14a800 0 0 0 0 40000040 | CNT_INITIALIZED_DATA MEM_READ

3 .buildid 1bc000 52 200 1ba800 0 0 0 0 40000040 | CNT_INITIALIZED_DATA MEM_READ

4 .data 1bd000 e2a0 d200 1baa00 0 0 0 0 c0000040 | CNT_INITIALIZED_DATA MEM_READ MEM_WRITE

5 .pdata 1cc000 633c 6400 1c7c00 0 0 0 0 40000040 | CNT_INITIALIZED_DATA MEM_READ

6 .tls 1d3000 20 200 1ce000 0 0 0 0 c0000040 | CNT_INITIALIZED_DATA MEM_READ MEM_WRITE

7 .reloc 1d4000 1280 1400 1ce200 0 0 0 0 42000040 | CNT_INITIALIZED_DATA MEM_DISCARDABLE MEM_READ

No symbol table found

If this output was used for a snapshot test that wanted to test the presence of a particular export:

zig objdump mathtest-dync-exe-no-llvm.dll --exports --only-symbol=add --redact=rva --elements=-all

Export directory:

0 flags

0 time_date_stamp

0.00 version

xxxxxxxxxxxxxxxx name_rva

1 ordinal_base

1 number_of_entries

1 number_of_names

xxxxxxxxxxxxxxxx export_address_table_rva

xxxxxxxxxxxxxxxx name_pointer_table_rva

xxxxxxxxxxxxxxxx ordinal_table_rva

1 0 xxxxxxxx | add

The redaction (--redact=) and element removal (--elements=) functionality is used to remove parts of

the output that don't matter for the particular test, as to not cause spurious failures if say, an RVA for

a symbol changes due to some unrelated change to the linker. -s is shorthand which enables all the

redacts and removes all extra output elements, but particular tests may not use this if they do care about

specific values.

Windows resource script

compilation will be moved out of the compiler and into an official-but-external build system

package in the next release. As such, the corresponding std.Build functions and fields

(Build.Module.addWin32ResourceFile, etc) have been marked as deprecated in this release.

The zig rc subcommand will remain after this change in order to continue supporting the use

case of using the Zig toolchain with other build systems.

--complexity Flag

It's a simple tool for counting tokens and AST nodes, which can be used to share how an edit to a source file increases or reduces complexity with a heuristic that is more insightful than line count.

For example, running it on old ELF linker directory:

info: src/link/Elf/gc.zig: tokens=1538 nodes=770

info: src/link/Elf/Atom.zig: tokens=15576 nodes=7768

info: src/link/Elf/Merge.zig: tokens=2288 nodes=1092

info: src/link/Elf/Thunk.zig: tokens=1128 nodes=519

info: src/link/Elf/SharedObject.zig: tokens=4566 nodes=2236

info: src/link/Elf/eh_frame.zig: tokens=4840 nodes=2335

info: src/link/Elf/Symbol.zig: tokens=3770 nodes=1872

info: src/link/Elf/synthetic_sections.zig: tokens=13287 nodes=6375

info: src/link/Elf/Object.zig: tokens=13903 nodes=6842

info: src/link/Elf/LinkerDefined.zig: tokens=4140 nodes=2091

info: src/link/Elf/relocatable.zig: tokens=3598 nodes=1848

info: src/link/Elf/Archive.zig: tokens=2176 nodes=1028

info: src/link/Elf/ZigObject.zig: tokens=20783 nodes=10274

info: src/link/Elf/AtomList.zig: tokens=1819 nodes=933

info: src/link/Elf/relocation.zig: tokens=1289 nodes=551

info: src/link/Elf/file.zig: tokens=2330 nodes=1087

info: total: tokens=97031 nodes=47621

Another example is after editing Lld.zig to use

arena.print rather than std.fmt.allocPrint. The

line count is roughly the same but --complexity tells a different story:

- before: tokens=11929 nodes=5900

- after: tokens=11832 nodes=5852 (1% reduction in source complexity)

In the future this metric may be helpful for an automatic import organizer to determine whether to create an import alias or not.

- Work with ZLS team to enhance Build Server Protocol to the point where satisfies all their use cases.

- Complete Windows support in the x86_64 backend so that it can be enabled by default.

- Complete and stabilize the language.

- Complete the aarch64 Backend and make it the default backend for debug mode.

- Enhance the Linker implementations, eliminating dependency on LLD and support Incremental Compilation.

- Enhance the integrated Fuzzer to be competitive with AFL and other state-of-the-art fuzzers.

- Transition from a library dependency on LLVM to a process dependency on Clang (#16270).

- Complete the Build System, in particular Package Management features.

- Audit the Standard Library (#1629).

Here are all the people who landed at least one contribution into this release:

- Alex Rnne Petersen

- Andrew Kelley

- Matthew Lugg

- Casey Banner

- Jacob Young

- Frank Denis

- Ali Chraghi

- Isaac Freund

- Pavel Verigo

- Ryan Liptak

- Techatrix

- Justus Klausecker

- Linus Groh

- xtex

- rpkak

- David Rubin

- Elaine Gibson

- David Senoner

- K4

- fardragon

- pentuppup

- Krzysztof Wolicki

- Mason Remaley

- Meghan Denny

- Christophe Delage

- Robbie Lyman

- Lukas Lalinsky

- Brandon Black

- Kendall Condon

- hemisputnik

- whatisaphone

- Ben Anderman

- GasInfinity

- Huang Zhichao

- Jakub Konka

- Jari Vetoniemi

- Kleshzz

- Mick Sayson

- Mikoaj Rosowski

- Ryan Mehri

- Sertonix

- jeffkdev

- lg

- Carl Astholm

- EJ

- Hila Friedman

- Quint Daenen

- Saurabh Mishra

- Stephen Gregoratto

- Subo2002

- Ten Eugene

- zacoons

- Arthur Teixeira

- Ben Burkert

- Bernard Assan

- CursedByTheVoid

- Daniel Kareh

- Ennui Langeweile

- Igor Anic

- Janne Hellsten

- Jay Petacat

- Nguyen Gia Phong

- Ragul R

- Rue04

- Ryan Mehri

- Sam Connelly

- Scott Redig

- Theo Fabi

- Vitor Fernandes

- c-kappel

- gero3

- glowsquid

- taoqy

- teflate

- xeondev

- AI Xin

- ARandomOSDever

- Acid Bong

- Adria Arrufat

- Akshay Trivedi

- Alan Cocanour

- Alex Kladov

- Amilia MacIntyre

- Anders Stenberg

- Andrew Kraevskiii

- Anshul Gupta

- Anthon van der Neut

- Ari Becker

- Ashley (holtowd)

- C19

- Carter Snook

- Chadwain Holness

- Chloe Vulquin

- Chris Boesch

- Christoffer Lerno

- Corentin Kerisit

- David

- Devin J. Pohly

- Diego Pena y Lillo

- Dmitry Mostovenko

- Eric Joldasov

- Erik Schlyter

- FalsePattern

- Fitti

- Gabriel Sa

- Gereon V

- Giuseppe Cesarano

- Gota7

- GrimTyr

- Guillaume Wenzek

- Guy Fischman

- Henry Kupty

- Ignacio Ibarra

- Jan Prochazka

- Jan200101

- Jeff Fowler

- Jeremy Linton

- John Benediktsson

- Jonathan Marler

- Joseph Lyncheski

- Josh Megnauth

- Kirk Scheibelhut

- Leon Lombar

- Leonid Emar-Kar

- Mai-Lapyst

- Manlio Perillo

- Marcel W. Wysocki

- Mark Rushakoff

- Mathieu Suen

- Matthew Knight

- Matthias Portzel

- Michael Farber Brodsky

- Milos Kozak

- Nguyen Gia Huy

- Nico Elbers

- Noam Rothschild

- Nurul Huda (Apon)

- Paul Anderson

- Paulo Duarte

- Perry Fraser

- Pivok

- Preeternal

- Prokop Randacek

- RadsammyT

- Rayan Halder

- Richalsu

- Richard Levitte

- Rue04

- Ryan Davis

- Ryan King

- Sage Hane

- Samuel Hunter

- Sawyer X

- Siddharth Sinha

- Steve

- Tapir

- Thibault Leclercq

- Yasin Gorgij

- Zhalkhas

- abdessalem

- agave

- ahwayakchih

- akbarhusain

- arshidkv12

- avalyn0x45

- badayvedat

- binarycraft007

- brianferri

- brkzlr

- carmooo

- cheesecakecatttt

- conmaster2112

- drex_vk

- gDator

- gemmaro

- gubbu

- ilovapples

- jmcaine

- johan0A

- jpk68

- krystiann

- kubashi

- l1yefeng

- levinqua

- llogick

- marximimus

- mihael

- mlugg

- nash1111

- ndjenks

- nekogirl

- nyx-xyn

- pancelor

- skdishansachin

- sphaerophoria

- squidy239

- sstochi

- vlkrs

- zirunis

- Omer Faruk IRMAK

- Zscheile

- (Leo Cheng)

Special thanks to those who sponsor Zig. Because of diverse, recurring donations, Zig is driven by the open source community, rather than the goal of making profit. In particular, those below sponsored Zig for an average of $50/month or more during this release cycle using our preferred donation platform:

- Sergey M

- Mitchell Kember

- David Vanderson

- Thomas Manner

- Kirk Scheibelhut

- Kazuhiro Kondo

- Merlyn Morgan-Graham

- Freddi Linse

- Numan Sachwani

- Aurelien Cibrario

- Erik Dunteman

- Ondra Voves

- Mitchell Gayner

- Dylan Conway

- Trevor John

- Jason Watson

- Greg Clark

- Benjamin Crist

- Alexander Weavers

- Natalie Vais

- Stevie Hryciw

- Kyle Hill

- Felix Queiner

- Srinivasan Balram

- Peter Ronnquist

- Lajos Nagy

- Gauthier Voron

- Andrew Mangogna

- Alex Kladov

- Jacob Sandlund

- Jordan Lucier

- Wolfgang Sanyer

- Matthew Knight

- Nick Macholl

- Ceri Elenbaas

- Michael Keathley

- Daniele Cocca

- Bartosz Bogacz

- James Cox-Morton

- William Canan

- Fabio Arnold

- Johannes Meyer

- Silver van Koten

- Flavius Gruian

- Daniel MacDougall

- Karrick McDermott

- Dan Mack

- Caleb Hearon

- Richard Levitte

- Ingimar Johannesson

- David Fendley

- Aaron Cross

- Jeremiah Oard

- Simon Ekstrom

- Jorge De Leon

- Saurabh Mishra

- Rob Green

- Kytezign q

- Mykhailo Tsiuptsiun

- Paul Sargent

- Erik Mallberg

- Igor Anic

- Fawzi Mohamed

- David Jones

- Magnus Holm

- Nicholas Woolmer

- Samarth Kishor

- Charles Haws

- Shlomi Atar

- Robbie Lyman

- Andrius Bentkus

- Jean-Luc Geering

- Aaron Mady

- coleman broaddus

- Trace Andreason

- Jim Calabro

- Chris Baldwin

- Ian Johnson

- Brandon Black

- Michael Lynch

- O Y

- Francesco Gualazzi

- David Sugar

- Malcolm Still

- Jeff Fowler

- Yaroslav Zhavoronkov

- Miles McGruder

- Alvaro Justen

- FELIPE SOARES GONCALVES SA ROSA

- Noah Betzen

- Manuel Barkhau

- Rikard Karlsen

- Frank Ittermann

- Eli Janssen

- Peter Snelgrove

- Will Pragnell

- Pete Dietl

- Vaughn Spielman

- Michael Kato

- Daniel Dubecky Hodan

- Dan Boykis

- Richard Feldman

- Markus Ort

- Peyman Mortazavi

- Wilson Bilkovich

- Kev Burns

- Francisco Nevitt Goncalves

- Mark Banhidi

- Kristoffer Strom

- Carl Distefano

- Alexander Reustle

- Martin Hovda Haugsand

- Lexa Tang

- Lennart Tuijnder

- Enver Bisevac

- Jameson York

- Hong Shick Pak

- Travis Staloch

- Clover Caruso

- Matthew Chavez

- Daniel Gregoire

- Jose M Rico

- Xavier Cochran

- Nas Denkov

- Pavel Rychly

- papa leromi

- Ronald Zielaznicki

- Tommi Komulainen

- Matthew Jee

- Johan Forsberg

- ukasz Mroz

- Fabio Leimgruber

- Maurice van Veen

- Dean Simmons

- Pierre Marc Levasseur

- Sebastian Appler

- Sam Windell

- Aksel Hjerpbakk

- Jonathan Helland

- Karl Fleischmann

- Erik Hansen

- Chris Boesch

- Pablo Alvarez

- Jacob Hooper

- Avinash Lakshman

- Joshua Park

- Nicholas Clark

- Ryan Higgins

- Jeffrey Ollie

- Adam Goertz

- David Nowotny

- Gus Louw

- David Francoeur

- David Sparby

- Tyler Bender

- Mark Halonen

- Reinis Taukulis

- Nancy Remaley

- Isaac F

- Kjell Hoffhenke

- Vlad Panazan

- Jordan Rowland

- Jay Van Der Wall

- Jean-Philippe Quenord

- Jakob Kulzer

- Varun Pramanik

- Benjamin Edwards

- Andreas Herrmann

- Adam Nilsson

- Joseph Ruiz

- Anthony Nguyen

- Marcin Wolcendorf

- Tobias Lahrmann Hansen

- Pat Smuk

- Martin Weber

- Jordan Kardon

- Benjamin LE BERRE

- John Goen

- Sebastian Ahlman

- Anthony Hernandez

- Shail Patel

- Alexander Genaud

- Morten Dalfoss

- Jason Dubaniewicz

- Mark Hayes

- Eivind Rovik

- Renan Silva

- Isak Kallman

- Ladislav Bohm

- LeRoyce Pearson

- Rowan Saunders

- Joshua Masci

- Raymond Imber

- Daniel Worley

- Owen Cabalceta

- Erez Shomron

- Max Grosse

- Ehden Sinai

- Christopher Redden

- Antoine Balaine

- Chris Durkin

- Dave Wallace

- Aura Birb

- Andy Armstrong

- Spencer Brower

- Simon Clavet

- Guido Schmidt

- Peter McGaughey

- Callum McArthur

- David Lei

- David Brotz

- Matti Hanninen

- Joseph Chan

- Vincent Weber

- Jeremy McAdams

- Morgan Gallant

- Brett Pechiney

- Thilina Jayanath Nenathunga Liyanage

- Kevin Bockelandt

- Gunnar Zotl

Special thanks also to TigerBeetle, Synadia Communications, and ZML for substantial contributions.

Previous page | More Lobsters | Headlines

Original: https://ziglang.org/download/0.17.0/release-notes.html