aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-10-18ci: bump unit test timeoutsMatthew Lugg
i am in purgatory as a punishment bestowed upon me for daring to question the sanctity of windows' scheduler
2025-10-18compiler: rename `--test-timeout-ms` to `--test-timeout`Matthew Lugg
The unit can now be specified in the argument.
2025-10-18ci: add unit test timeouts to loongarch and x86_64-freebsdMatthew Lugg
2025-10-18std: split up ecdsa testsMatthew Lugg
2025-10-18crypto.ecdsa: trim the number of tests we performFrank Denis
The Wycheproof test suite is extensive, but takes a long time to complete on CI. Keep only the most relevant ones and take it as an opportunity to describe what they are. The remaining ones are still available for manual testing when required.
2025-10-18ci: bump unit test timeoutsmlugg
2025-10-18std: make RwLock test less intensivemlugg
This test called `yield` 80,000 times, which is nothing on a system with little load, but murder on a CI system. macOS' scheduler in particular doesn't seem to deal with this very well. The `yield` calls also weren't even necessarily doing what they were meant to: if the optimizer could figure out that it doesn't clobber some memory, then it could happily reorder around the `yield`s anyway! The test has been simplified and made to work better, and the number of yields have been reduced. The number of overall iterations has also been reduced, because with the `yield` calls making races very likely, we don't really need to run too many iterations to be confident that the implementation is race-free.
2025-10-18tweak tests to avoid timeoutsmlugg
2025-10-18std.Build: do not expect server protocol for tests using immature backendsmlugg
For instance, when running a Zig test using the self-hosted aarch64 backend, this logic was previously expecting `std.zig.Server` to be used, but the default test runner intentionally does not do this because the backend is too immature to handle it. On 'master', this is causing sporadic failures; on this branch, they became consistent failures.
2025-10-18ci: set unit test timeoutsmlugg
2025-10-18build runner: final tweaks to outputmlugg
2025-10-18build runner: remove `--prominent-compile-errors`, introduce `--error-style`mlugg
The new `--error-style` option decides how build failures are printed. The default mode "verbose" prints all context including the step graph fragment and the failed command (if any). The alternative mode "minimal" prints only the failed step itself, and does not print the failed command. There are also "verbose_clear" and "minimal_clear" modes, which have the distinction that the output is cleared (through ANSI escape codes) between updates, preventing different updates from being confused in the output. If `--error-style` is not specified, the environment variable `ZIG_BUILD_ERROR_STYLE` is checked before falling back to the default of "verbose"; this means the value can effectively be chosen system-wide since it is generally a personal preference. Also introduced is a `--multiline-errors` option which decides how to print errors which span multiple lines. By default, non-initial lines are indented to align with the first. Alternatively, a leading newline can be printed to align everyting on the first column, or no special treatment can be applied, resulting in misaligned output. Again, there is an environment variable (`ZIG_BUILD_MULTILINE_ERRORS`) to specify a preferred default if the option is not explicitly provided. Resolves: #23472
2025-10-18std.Build: separate errors from failed commandsmlugg
Recording the command in a separate field will give the build runner more freedom to choose how and when the command should be printed.
2025-10-18std.Build.Step.Run: many enhancementsmlugg
This is a major refactor to `Step.Run` which adds new functionality, primarily to the execution of Zig tests. * All tests are run, even if a test crashes. This happens through the same mechanism as timeouts where the test processes is repeatedly respawned as needed. * The build status output is more precise. For each unit test, it differentiates pass, skip, fail, crash, and timeout. Memory leaks are reported separately, as they do not indicate a test's "status", but are rather an additional property (a test with leaks may still pass!). * The number of memory leaks is tracked and reported, both per-test and for a whole `Run` step. * Reporting is made clearer when a step is failed solely due to error logs (`std.log.err`) where every unit test passed.
2025-10-18std.Build: implement unit test timeoutsmlugg
For now, there is a flag to `zig build` called `--test-timeout-ms` which accepts a value in milliseconds. If the execution time of any individual unit test exceeds that number of milliseconds, the test is terminated and marked as timed out. In the future, we may want to increase the granularity of this feature by allowing timeouts to be specified per-step or even per-test. However, a global option is actually very useful. In particular, it can be used in CI scripts to ensure that no individual unit test exceeds some reasonable limit (e.g. 60 seconds) without having to assign limits to every individual test step in the build script. Also, individual unit test durations are now shown in the time report web interface -- this was fairly trivial to add since we're timing tests (to check for timeouts) anyway. This commit makes progress on #19821, but does not close it, because that proposal includes a more sophisticated mechanism for setting timeouts. Co-Authored-By: David Rubin <david@vortan.dev>
2025-10-17std.Uri: test file URIs without an authority fieldJon Parise
Some environments (such as KDE) form file URIs without an authority field (e.g. file:/etc/fstab). Also test this case for completeness.
2025-10-18os.linux.timeval: use same field names as std.cBrandon Black
Otherwise, the field names in std.posix.timeval vary by target os. I think this was an accidental change during the work of #25610
2025-10-18Merge pull request #25617 from alexrp/libcxx-libunwind-backportsAlex Rønne Petersen
`libcxx`, `libunwind`: backport llvm/llvm-project#162867, llvm/llvm-project#160182, llvm/llvm-project#158347
2025-10-18std.debug.cpu_context.Sparc: fix bad use of call delay slotAlex Rønne Petersen
2025-10-18std.debug.cpu_context: let the compiler deal with clobbersAlex Rønne Petersen
Otherwise we might be restoring registers we don't even need to.
2025-10-18std.debug.cpu_context: sort context decls according to switch prongs (NFC)Alex Rønne Petersen
2025-10-18std.debug: add CPU context and DWARF mappings for arcAlex Rønne Petersen
2025-10-18std.debug: add CPU context and DWARF mappings for m68kAlex Rønne Petersen
2025-10-18std.debug: add CPU context and DWARF mappings for or1kAlex Rønne Petersen
2025-10-18std.debug: add CPU context and DWARF mappings for cskyAlex Rønne Petersen
2025-10-18std.debug: add CPU context and DWARF mappings for lanaiAlex Rønne Petersen
2025-10-18std.debug: add CPU context and DWARF mappings for veAlex Rønne Petersen
2025-10-18std.debug: FP-based unwinding is impossible on avr, csky, msp430, and xcoreAlex Rønne Petersen
The ABIs do not define a frame pointer register, nor do they define a guaranteed and fixed area on the stack where one might find saved registers such as a frame pointer or return address.
2025-10-17langref: Bump 0.15.1 to 0.15.2Ryan Liptak
2025-10-17libcxx: backport llvm/llvm-project#158347Alex Rønne Petersen
https://github.com/llvm/llvm-project/pull/158347
2025-10-17libcxx: backport llvm/llvm-project#160182Alex Rønne Petersen
https://github.com/llvm/llvm-project/pull/160182
2025-10-17libunwind: backport llvm/llvm-project#162867Alex Rønne Petersen
https://github.com/llvm/llvm-project/pull/162867
2025-10-17Merge pull request #25610 from alexrp/std-os-linux-cleanupAlex Rønne Petersen
`std.os.linux`: some miscellaneous cleanup in arch bits
2025-10-17Merge pull request #25609 from alexrp/test-targetsAlex Rønne Petersen
`test`: put some niche targets behind `-Dtest-extra-targets`
2025-10-17Merge pull request #25607 from alexrp/hexagonAlex Rønne Petersen
Some `hexagon-linux` fixes + enable std tests in CI
2025-10-17windows: Always try using POSIX_SEMANTICS/etc for rename/deleteRyan Liptak
The compile-time check against the minimum version here wasn't appropriate, since it still makes sense to try using FILE_RENAME_INFORMATION_EX even if the minimum version is something like `xp`, since that doesn't rule out the possibility of the compiled code running on Windows 10/11. This compile-time check was doubly bad since the default minimum windows version (`.win10`) was below the `.win10_rs5` that was checked for, so when providing a target like `x86_64-windows-gnu` it'd always rule out using this syscall. After this commit, we always try using FILE_RENAME_INFORMATION_EX and then let the operating system tell us when some aspect of it is not supported. This allows us to get the benefits of these new syscalls/flags whenever it's actually possible. The possible error returns were validated experimentally: - INVALID_PARAMETER is returned when the underlying filesystem is FAT32 - INVALID_INFO_CLASS is returned on Windows 7 when trying to use FileRenameInformationEx/FileDispositionInformationEx - NOT_SUPPORTED is returned on Windows 10 >= .win10_rs5 when setting a bogus flag value (I used `0x1000`)
2025-10-17windows: make FILE_DISPOSITION_ constants pubRyan Liptak
2025-10-17std.os.linux.tls: don't unnecessarily use std.posixAlex Rønne Petersen
2025-10-17test: put soft float powerpc targets behind -Dtest-extra-targetsAlex Rønne Petersen
2025-10-17test: put all n32 and x32 targets behind -Dtest-extra-targetsAlex Rønne Petersen
2025-10-17test: put all dynamic musl targets behind -Dtest-extra-targetsAlex Rønne Petersen
2025-10-17std.os.linux: add incomplete x32 arch bits fileAlex Rønne Petersen
This is very likely full of wrong stuff. It's effectively just a copy of the x86_64 file - needed because the former stopped using usize/isize. To be clear, this is no more broken than the old situation was; this just makes the brokenness explicit.
2025-10-17std.os.linux: add incomplete mipsn32 arch bits fileAlex Rønne Petersen
This is very likely full of wrong stuff. It's effectively just a copy of the mips64 file - needed because the former stopped using usize/isize. To be clear, this is no more broken than the old situation was; this just makes the brokenness explicit.
2025-10-17std.os.linux: clean up a bunch of dead constsAlex Rønne Petersen
2025-10-17std.os.linux: retranslate F_* constants and Flock struct, and move out of ↵Alex Rønne Petersen
arch bits Flock is now equivalent to struct flock64, and the related F.* constants map to the 64-bit variants on 32-bit systems.
2025-10-17std.os.linux: replace usize/isize in arch bits with fixed types for clarityAlex Rønne Petersen
2025-10-17std.os.linux: move some generic decls out of the arch bitsAlex Rønne Petersen
2025-10-16std.os.linux.thumb: remove some @setRuntimeSafety(false) with no clear purposeAlex Rønne Petersen
2025-10-16std.os.linux: remove some pointless asm clobbers in naked fnsAlex Rønne Petersen
2025-10-16test: enable std tests for hexagonAlex Rønne Petersen