版本发布 8
* Bumped default `ZigVersion` from `0.14.0` to `0.14.1`. * Added `TargetSystemVersion` value `0.1.0` for `wasi-wasm`. * Changed `LinkTimeOptimization` to be `false` by default. * Some targets still have subtle LTO bugs, and Zig will soon stop supporting LTO due to dropping its LLD dependency anyway.
* Bumped default `ZigVersion` from `0.13.0` to `0.14.0`. * Bumped `TargetSystemVersion` for `linux-ppc64el` from `3.10` to `3.14`. * Linux does not support this target in prior versions. * Added support for `linux-loongarch64`, `linux-riscv64`, and `linux-s390x`. * Note that `linux-loongarch64` and `linux-s390x` do not yet have native toolset packages. * Added more RIDs to the default `RuntimeIdentifiers`. * `linux-loongarch64` * `linux-ppc64le` * `linux-riscv64` * `linux-s390x` * `linux-musl-loongarch64` * `linux-musl-ppc64le` * `linux-musl-riscv64` * `linux-musl-s390x`
* Added support for `wasi-wasm`. * Note that there is no support for building static libraries yet. * Added a `NoEntryPoint` property to allow building executables without an entry point. * Added an `ExecutionModel` property to control the execution model for WebAssembly executables (`Command` or `Reactor`). * Fixed QEMU detection to use `qemu-ppc64le` instead of `qemu-ppc64`. * Added support for using Wasmtime as a WebAssembly emulator.
* Changed `UnicodeEnvironment` to also control the `_UNICODE` macro (in addition to `UNICODE`). * Changed `TargetFramework` property from `netstandard1.0` to `netstandard2.0` to address a `NETSDK1215` warning in .NET 9. * This should not cause any functional changes as the target framework is irrelevant for projects using the Zig SDK.
* Bumped default `ZigVersion` from `0.11.0` to `0.13.0`. * Changed default `LanguageStandard` for C projects from `gnu2x` to `gnu23`. * Changed default `LanguageStandard` for C++ projects from `gnu++2c` to `gnu++23`. * Removed the `CompilerMode` property. * Instead, the SDK now sets the `Language` property (`Zig`, `C`, `Cxx`) based on project file extension (`.zigproj`, `.cproj`, `.cxxproj`). * Bumped `TargetLibraryVersion` for `linux-ppc64el` from `2.17` to `2.19`. * glibc does not support this target in prior versions. * Changed `LinkTimeOptimization` to be `true` by default. * Added a `UnicodeEnvironment` property to control the `UNICODE` macro and `wmain`/`wWinMain` usage on Windows. * Added a `BufferAnalysis` property to control `-Wunsafe-buffer-usage`. * Enabled `-Winvalid-utf8` by default at `WarningLevel=1` and above. * Enabled `-Wincompatible-function-pointer-types-strict` by default at `WarningLevel=4` and above. * Removed the `ZIG_GLOBAL_CACHE_DIR` workaround as the bug it was working around appears to have been fixed. * This should result in noticeably faster builds in general. * Fixed `EditorSupport` logic to produce correct JSON on Unix systems.
* Bumped default `ZigVersion` from `0.11.0` to `0.13.0`. * Changed default `LanguageStandard` for C projects from `gnu2x` to `gnu23`. * Changed default `LanguageStandard` for C++ projects from `gnu++2c` to `gnu++23`. * Removed the `CompilerMode` property. * Instead, the SDK now sets the `Language` property (`Zig`, `C`, `Cxx`) based on project file extension (`.zigproj`, `.cproj`, `.cxxproj`). * Bumped `TargetLibraryVersion` for `linux-ppc64el` from `2.17` to `2.19`. * glibc does not support this target in prior versions. * Changed `LinkTimeOptimization` to be `true` by default. * Added a `UnicodeEnvironment` property to control the `UNICODE` macro and `wmain`/`wWinMain` usage on Windows. * Added a `BufferAnalysis` property to control `-Wunsafe-buffer-usage`. * Enabled `-Winvalid-utf8` by default at `WarningLevel=1` and above. * Enabled `-Wincompatible-function-pointer-types-strict` by default at `WarningLevel=4` and above. * Removed the `ZIG_GLOBAL_CACHE_DIR` workaround as the bug it was working around appears to have been fixed. * This should result in noticeably faster builds in general. * Fixed `EditorSupport` logic to produce correct JSON on Unix systems.
* Changed `OutputType` to accept `WinExe` in addition to `Exe` and `Library`. * Added support for setting the executable subsystem based on `OutputType` when targeting Windows. * Added `ImageBase` and `DynamicImageBase` properties to control load location on Windows. * Added `StackSize` property for controlling the main thread's stack size. * Added `AllowUndefinedSymbols` property for controlling whether libraries are allowed to have undefined references. * This is particularly useful when building plugins. * Added `AsyncExceptions` property that controls whether standard C++ `try`/`catch` statements can catch SEH exceptions on Windows. * Fixed `Pack` not working correctly when a `RuntimeIdentifier` was explicitly set (turning the build into an inner build). * This will now create a package with artifacts for just the single RID. * Fixed a number of bugs and shortcomings related to emulator detection. * Fixed QEMU detection to use `qemu-i386` instead of `qemu-x86`. * Fixed QEMU detection to use `qemu-ppc64` instead of `qemu-powerpc64le`. * Fixed WSL/QEMU detection logic when the host architecture is 64-bit Arm. * Fixed Wine detection incorrectly using `wine64` instead of `wine` for 64-bit. * Changed Wine detection to only use Wine if the host and target architectures are the exact same. * Fixed Darling detection to only use Darling when the host architecture is 64-bit x86. * Changed Darling detection to allow using Darling when the target architecture is 32-bit x86. * Added support for using Rosetta 2 to run 64-bit x86 binaries on 64-bit Arm. * Added informative `IsOuterBuild` property (set by the SDK) indicating whether the current build is an outer or inner build. * An outer build is one that is going to dispatch multiple builds for all `RuntimeIdentifiers`. * An inner build is one that is building for a specific `RuntimeIdentifier`. * This applies to `Build`, `Clean`, and `Publish`. * Exposed target extension points `OuterBuild`/`InnerBuild`, `OuterClean`/`InnerClean`, and `OuterPublish`/`InnerPublish`.
* Added support for `linux-ppc64le`. * Note that it is not yet part of the default `RuntimeIdentifiers`.