Zig SDK & Zig Toolsets Progress Report - January 2024 #100
alexrp
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
This is part of a series of progress reports that are posted with a monthly-ish cadence when there's notable progress made on the project.
Zig Toolsets v0.11.0.1 Release
Since #72, Zig 0.11.0 has been released. Accordingly, v0.11.0.1 toolset packages were published.
Some notable changes happened with this release:
win-x86packaging is currently disabled due to an upstream issue zig-toolsets#15 being resolved.We decided to publish the
linux-ppc64leandlinux-riscv64toolsets because significant work has been done on these architectures in .NET recently. For the former, see dotnet/runtime#10055, and for the latter, see dotnet/runtime#84834. Note that there's still work needed in Zig (ziglang/zig#4456) for RISC-V to be usable in practice.Zig SDK v4.0.154 Release
After being stuck on Zig 0.9.1 for over a year due to 0.10.0 and 0.10.1 having blocker issues (#46), v4.0.154 finally saw us updating to Zig 0.11.0. To be fair, 0.10.0 saw the introduction of the self-hosted Zig compiler, so some temporary breakage was very much to be expected. We anticipate that things will be smoother from here on out.
Another major change in this release was the addition of
linux-arm,osx-arm64, andwin-arm64to the defaultRuntimeIdentifiersvalue. This was done because they're all major supported .NET platforms and Zig's support for these platforms has improved considerably, especially when cross-compiling.In this release, we also fixed a bug where our optimization levels for C/C++ projects didn't match Zig projects. In particular:
Configuration=Debugwas changed from-Ogto-O0.Configuration=Release+ReleaseMode=Fastwas changed from-O3to-O2.Configuration=Release+ReleaseMode=Safewas left unchanged as-O2 -fsanitize=undefined.Configuration=Release+ReleaseMode=Smallwas changed from-Ozto-Os.Some housekeeping was also done in this release:
TargetSystemVersionvalue for macOS to11.7in accordance with Zig support policy.TargetSystemVersionvalue for Windows towin10in accordance with .NET 6 support policy.HostAbi/TargetAbivalues for macOS fromgnutononeto match a corresponding change in Zig.HostArchitecture/TargetArchitecturevalue for 32-bit x86 fromi386tox86to match a corresponding change in Zig.netstandard2.0, instead ofnet472andnet6.0.Zig SDK v4.0.164 Release
This release fixed the aforementioned mistake when changing
TargetSystemVersionfor Windows. The .NET 6 support policy in fact included Windows Server 2012 still, which is very roughly equivalent to Windows 8. So the value was changed towin8.Additionally,
CoreCompilewas changed to give a friendly error message if a project contains no source files (see #86 for why the previous UX was quite bad).Zig SDK v4.1.3 Release
v4.1.3 added support for
linux-ppc64le, taking advantage of the aforementioned toolset packages. Note that this RID is not yet part of the defaultRuntimeIdentifiersvalue, and whether it ever will be remains to be seen as this is a fairly niche platform.Tracking .NET Releases
Starting with v5.0, we will support .NET LTS releases going forward. This, for example, means that .NET 8 will be supported until November 10, 2026.
Future Plans
The major planned features for v4.2 are:
--subsystemlinker flag #43--allow-shlib-undefinedlinker flag #80--stacklinker flag #102--image-baselinker flag #103--dynamicbaselinker flag #104The planned issues for v5.0 are:
Languageproperty appropriately #108compile_commands.jsonis invalid on Unix systems #121-municodefor Windows #127The major planned features for v6.0 are:
.objcproj) and Objective-C++ (.objcxxproj) #93All other features are attached to the Future milestone, which basically just means they haven't been included in the working set for a particular version yet.
Note that some of this planning may well be switched up depending on when Zig 0.12.0 releases, and on whether we run into any blocking issues with that version. For example, if Zig 0.12.0 releases with no blocker issues before v4.2 has been finalized, we may decide to move some (or all) of the v4.2 features to v5.0. In general, our planning is always somewhat tied to Zig's release schedule.
Beta Was this translation helpful? Give feedback.
All reactions