aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-09-20Sema: fix accessing ptr field of double array pointer with sentinelAndrew Kelley
2025-09-20compiler: require comptime vector indexesAndrew Kelley
2025-09-20llvm backend: remove canElideLoad mechanismAndrew Kelley
2025-09-20Reader.defaultReadVec: Workaround bad `r.end += r.vtable.stream()` behaviorRyan Liptak
If `r.end` is updated in the `stream` implementation, then it's possible that `r.end += ...` will behave unexpectedly. What seems to happen is that it reverts back to its value before the function call and then the increment happens. Here's a reproduction: ```zig test "fill when stream modifies `end` and returns 0" { var buf: [3]u8 = undefined; var zero_reader = infiniteZeroes(&buf); _ = try zero_reader.fill(1); try std.testing.expectEqual(buf.len, zero_reader.end); } pub fn infiniteZeroes(buf: []u8) std.Io.Reader { return .{ .vtable = &.{ .stream = stream, }, .buffer = buf, .end = 0, .seek = 0, }; } fn stream(r: *std.Io.Reader, _: *std.Io.Writer, _: std.Io.Limit) std.Io.Reader.StreamError!usize { @memset(r.buffer[r.seek..], 0); r.end = r.buffer.len; return 0; } ``` When `fill` is called, it will call into `vtable.readVec` which in this case is `defaultReadVec`. In `defaultReadVec`: - Before the `r.end += r.vtable.stream` line, `r.end` will be 0 - In `r.vtable.stream`, `r.end` is modified to 3 and it returns 0 - After the `r.end += r.vtable.stream` line, `r.end` will be 0 instead of the expected 3 Separating the `r.end += stream();` into two lines fixes the problem (and this separation is done elsewhere in `Reader` so it seems possible that this class of bug has been encountered before). Potentially related issues: - https://github.com/ziglang/zig/issues/4021 - https://github.com/ziglang/zig/issues/12064
2025-09-20add behavior test: return undefined pointer from functionAndrew Kelley
This clarifies that it is legal to return an invalid pointer from a function, provided that such pointer is not dereferenced. This matches current status quo of the language. Any change to this should be a proposal that argues for different semantics. It is also legal in C to return a pointer to a local. The C backend lowers such thing directly, so the corresponding warning in C must be disabled (`-Wno-return-stack-address`).
2025-09-20std.json: delete test tightly coupled to ArrayList growthAndrew Kelley
This test works by assuming that std.ArrayList will grow with a specific capacity increasing pattern, which is an invalid assumption. Delete the offending test.
2025-09-20std: remove loop from growCapacityAndrew Kelley
I measured this against master branch and found no statistical difference. Since this code is simpler and logically superior due to always leaving sufficient unused capacity when growing, it is preferred over status quo.
2025-09-20Merge pull request #25298 from ziglang/SegmentedList-orphaned-againAndrew Kelley
std: delete SegmentedList again
2025-09-20std.c: add MSG support for dragonflyJohn Benediktsson
2025-09-20std.crypto.ascon: disable Ascon-AEAD128 test on RISC-V with V supportAlex Rønne Petersen
2025-09-20std.c: adjust shm_open to be variadic on darwinJohn Benediktsson
2025-09-19std.Build.Step.Run: Enable passing (generated) file content as argsJustus Klausecker
Adds `addFileContentArg` and `addPrefixedFileContentArg` to pass the content of a file with a lazy path as an argument to a `std.Build.Step.Run`. This enables replicating shell `$()` / cmake `execute_process` with `OUTPUT_VARIABLE` as an input to another `execute_process` in conjuction with `captureStdOut`/`captureStdErr`. To also be able to replicate `$()` automatically trimming trailing newlines and cmake `OUTPUT_STRIP_TRAILING_WHITESPACE`, this patch adds an `options` arg to those functions which allows specifying the desired handling of surrounding whitespace. The `options` arg also allows to specify a custom `basename` for the output. e.g. to add a file extension (concrete use case: Zig `@import()` requires files to have a `.zig`/`.zon` extension to recognize them as valid source files).
2025-09-19std: delete SegmentedList againAndrew Kelley
The data structure was originally added in 41e1cd185b82a518c58c92544c45f0348c03ef74 and then removed in 50a336fff899ebd8a687c453ec6beb18a5a9baf9, but brought back in 711bf55eaa643c3d05640bebbf3e4315477b8ed8 for Decl in the compiler frontend, and then the last reference to it was eliminated in 548a087fafeda5b07d2237d5137906b8d07da699 which removed Decl in favor of Nav and Cau.
2025-09-19tools: eliminate dependency on std.SegmentedListAndrew Kelley
2025-09-19Merge pull request #23416 from gooncreeper/improved-fuzzerAndrew Kelley
greatly improve capabilities of the fuzzer
2025-09-19Fix duplicate LC_RPATH entries on macOS TahoeFrank Denis
When building on macOS Tahoe, binaries were getting duplicate LC_RPATH load commands which caused dyld to refuse to run them with a "duplicate LC_RPATH" error that has become a hard error. The duplicates occurred when library directories were being added to rpath_list twice: - from lib_directories - from native system paths detection which includes the same dirs
2025-09-19Merge pull request #25268 from alexrp/loongarchAlex Rønne Petersen
Miscellaneous LoongArch work to prepare for CI
2025-09-18Remove usages of deprecatedWriterandrewkraevskii
2025-09-19std.fmt: migrate bufPrintZ to bufPrintSentinel (#25260)John Benediktsson
2025-09-19std.simd: suggest more sensible vector sizes across the boardAlex Rønne Petersen
2025-09-18fuzzer: remove rodata load tracingKendall Condon
This can be re-evaluated at a later time, but at the moment the performance and stability concerns hold it back. Additionally, it promotes a non-smithing approach to fuzz tests.
2025-09-18add some new fuzz testsKendall Condon
2025-09-18greatly improve capabilities of the fuzzerKendall Condon
This PR significantly improves the capabilities of the fuzzer. The changes made to the fuzzer to accomplish this feat mostly include tracking memory reads from .rodata to determine fresh inputs, new mutations (especially the ones that insert const values from .rodata reads and __sanitizer_conv_const_cmp), and minimizing found inputs. Additionally, the runs per second has greatly been increased due to generating smaller inputs and avoiding clearing the 8-bit pc counters. An additional feature added is that the length of the input file is now stored and the old input file is rerun upon start. Other changes made to the fuzzer include more logical initialization, using one shared file `in` for inputs, creating corpus files with proper sizes, and using hexadecimal-numbered corpus files for simplicity. Furthermore, I added several new fuzz tests to gauge the fuzzer's efficiency. I also tried to add a test for zstandard decompression, which it crashed within 60,000 runs (less than a second.) Bug fixes include: * Fixed a race conditions when multiple fuzzer processes needed to use the same coverage file. * Web interface stats now update even when unique runs is not changing. * Fixed tokenizer.testPropertiesUpheld to allow stray carriage returns since they are valid whitespace.
2025-09-18zig fmt help: mention that the argument can be a directoryFrank Denis
I’ve been typing `zig fmt **/.zig` for a long time, until I discovered that the argument can actually be a directory. Mention this feature explicitly in the help message.
2025-09-18ci: add loongarch64-linux scriptsAlex Rønne Petersen
2025-09-18stage1: update zig1.wasmAlex Rønne Petersen
Needed due to LoongArch CPU model changes. Signed-off-by: Alex Rønne Petersen <alex@alexrp.com>
2025-09-18std.Target: adjustments to LoongArch CPU modelsAlex Rønne Petersen
* Remove the generic model; we already have generic_la32 and generic_la64 and pick appropriately based on bitness. * Remove the loongarch64 model. We used this as our baseline for 64-bit, but it's actually pretty misleading and useless; it doesn't represent any real CPU and has less features than generic_la64. * Add la64v1_0 and la64v1_1 models. * Change our baseline CPU model for 64-bit to be la64v1_0, thus adding LSX to the baseline feature set.
2025-09-18std.zig.system: implement native CPU detection for LoongArchAlex Rønne Petersen
ref #4591
2025-09-18test: disable some SIMD ABI tests on LoongArchAlex Rønne Petersen
2025-09-18test: disable some vector ctz/clz behavior tests on LoongArch with LSXAlex Rønne Petersen
https://github.com/llvm/llvm-project/issues/159529
2025-09-18std.math.modf: disable vector test on LoongArch with LSXAlex Rønne Petersen
https://github.com/llvm/llvm-project/issues/159529
2025-09-18std.crypto.ml_kem: disable some Kyber tests on LoongArch with LSXAlex Rønne Petersen
LLVM miscompiles these.
2025-09-18test: respect -Dskip-translate-c in test-standaloneAlex Rønne Petersen
2025-09-18test: remove unnecessary @cImport usage in some standalone testsAlex Rønne Petersen
2025-09-18test: skip dumpCurrentStackTrace test on architectures with no unwind supportAlex Rønne Petersen
2025-09-18test: re-enable test-std for loongarch64-linuxAlex Rønne Petersen
2025-09-18test: skip `alternative constraints` behavior test on LoongArchAlex Rønne Petersen
https://github.com/llvm/llvm-project/issues/159200
2025-09-18std.mem: work around LoongArch inline asm bug in doNotOptimizeAway()Alex Rønne Petersen
https://github.com/llvm/llvm-project/issues/159200
2025-09-18langref: runtime_shrExact_overflow does not work as expected on LoongArchAlex Rønne Petersen
https://github.com/ziglang/zig/issues/24304
2025-09-17Merge pull request #25195 from blblack/netdefsAndrew Kelley
std: Add several sockopt-related constants and structs
2025-09-17fix handling of comptime-only union fields in `Type.getUnionLayout` (#25182)Silver
Fixes #25180
2025-09-17Merge pull request #25197 from rootbeer/24380-flaky-sigset-testAndrew Kelley
Re-enable std.posix "sigset_t bits" test
2025-09-17Elf: implement `linksection`Jacob Young
Closes #24330
2025-09-17Merge pull request #25201 from jacobly0/x86_64-addsatAndrew Kelley
x86_64: fix strictness edge cases in `+|`
2025-09-17Merge pull request #25217 from blblack/setsiderrAndrew Kelley
std.os.linux.setsid(): return raw syscall0 result
2025-09-17Merge pull request #25225 from Justus2308/darwin-fixesAndrew Kelley
std.*.ptrace: support more platforms and features more correctly
2025-09-17mem.replace: Document that input/output cannot overlapRyan Liptak
2025-09-17langref: mention union support of `@fieldParentPtr`rohlem
2025-09-17Merge pull request #25249 from jedisct1/sivAndrew Kelley
std.crypto: add AES-SIV and AES-GCM-SIV
2025-09-17std.crypto: add Ascon-AEAD, Ascon-Hash, Ascon-CHash (#25239)Frank Denis
Ascon is the family of cryptographic constructions standardized by NIST for lightweight cryptography. The Zig standard library already included the Ascon permutation itself, but higher-level constructions built on top of it were intentionally postponed until NIST released the final specification. That specification has now been published as NIST SP 800-232: https://csrc.nist.gov/pubs/sp/800/232/final With this publication, we can now confidently include these constructions in the standard library.