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