Commit Graph

37916 Commits

Author SHA1 Message Date
Pavel Verigo 22945fbbdc stage2-wasm: vector, std tests 2026-04-22 00:19:46 +02:00
Pavel Verigo 36faf76fe1 AstGen: add missing addRestoreErrRetIndex calls when handling for/while expr
Fixes #30912
2026-04-22 00:17:52 +02:00
Andrew Kelley d4cac43d30 Merge pull request 'libc: add common implementations of pthread_spin_*' (#31990) from GasInfinity/zig:pthread-spin into master
Reviewed-on: https://codeberg.org/ziglang/zig/pulls/31990
Reviewed-by: Andrew Kelley <andrew@ziglang.org>
2026-04-21 22:29:33 +02:00
Ryan Liptak cfde9303ff Fetch: Fix zip fetching when cache directory doesn't have tmp dir
Fixes #31964
2026-04-21 18:07:36 +02:00
Andrew Kelley b5d8966e05 Merge pull request 'package fetching fixes and enhancements' (#31992) from fetch-enhancements into master
Reviewed-on: https://codeberg.org/ziglang/zig/pulls/31992
2026-04-21 18:06:13 +02:00
GasInfinity f8e9593851 fix: wasm requires strict function prototypes
* `pthread_mutex_*` and friends are also invalid then but they're not
  currently tested (and there's no wasi prong in `pthread_mutex_t`)
2026-04-21 14:45:24 +02:00
GasInfinity a2a91199d7 fix: add pthread_spin_* definitions for the BSDs in std.c
* each BSD has a different one
2026-04-21 10:31:47 +02:00
GasInfinity 61cd38e8ac feat(libzigc): add common implementations of pthread_spin_*
* and remove their mingw, musl and wasi implementations
2026-04-21 09:03:06 +02:00
Andrew Kelley 74b56501b3 fetch: fix the check against package paths escaping root 2026-04-20 21:45:12 -07:00
Andrew Kelley 4636a761cb fetch: fix "unable to open" error message 2026-04-20 19:59:17 -07:00
Andrew Kelley bc9fabcc3f zig fetch: add --debug-log [scope] arg 2026-04-20 19:58:39 -07:00
Andrew Kelley 3a9b16db44 zig fetch: detect global vs local mode via --save
Makes `zig fetch` only fetch globally, just like it used to. However, if
`--save` (or any variant) is used, then it also fetches locally.

When fetching by path, the hash is always computed, recompressed tarball
is always created, always overwrites any existing global cache entry.

closes #31818
closes #31866 (only requires build.zig file when --save is passed)
2026-04-20 18:45:16 -07:00
Ryan Liptak 3252a05531 Prefer <err> => |e| return e over <err> => return <err>
Avoids the potential for a typo on the `return <err>` side of the prong
2026-04-20 18:03:14 -07:00
Andrew Kelley f887bea4d3 fix overridden pkg dir path
the previous code made it relative to the build directory

also add a corresponding env var and logic for build command
2026-04-20 16:38:05 -07:00
Jan200101 5586a1f4ee zig fetch: add option to overwrite the package directory 2026-04-20 16:38:05 -07:00
Frank Denis 98cc059622 crypto.asn1.Oid: Reject empty OID encodings (#31983)
The DER decoder accepted zero-length OID payloads producing an Oid value that would panic later.

Co-authored-by: Frank Denis <github@pureftpd.org>
Reviewed-on: https://codeberg.org/ziglang/zig/pulls/31983
Reviewed-by: Andrew Kelley <andrew@ziglang.org>
Co-authored-by: Frank Denis <jedisct1@noreply.codeberg.org>
Co-committed-by: Frank Denis <jedisct1@noreply.codeberg.org>
2026-04-20 21:54:04 +02:00
Frank Denis 98ddebc380 std.crypto.Certificate: fix UTCTime year interpretation
UTCTime years in the range 50-99 must map to 1950-1999, but the
parser unconditionally added 2000, producing dates 100 years in the
future.

This caused verify() to accept certificates whose validity actually
expired decades ago.

Change that to match what OpenSSL, BoringSSL, etc. do
2026-04-20 21:45:08 +02:00
Frank Denis 525aff6048 std.crypto.ascon: fix streaming XOF/CXOF
AsconXof128 and AsconCxof128 were applying the padding in update()
calls. That was totally fine for one-shot hashing, but not for
streaming (multiple update() calls before finalization).
2026-04-20 18:29:46 +02:00
Frank Denis 3a07f50dab std.crypto.ml_kem tests: simplify incV
We don't need to reimplement 16-byte subtraction, just use a
u128. As a bonus, that handles the theoretical case of an all-0xff
value properly.
2026-04-20 18:27:22 +02:00
Frank Denis 858d7eda65 Merge pull request 'io: make toClock compile' (#31966) from sinon/zig:fix-io-clock into master
Reviewed-on: https://codeberg.org/ziglang/zig/pulls/31966
Reviewed-by: Andrew Kelley <andrew@ziglang.org>
2026-04-20 16:58:12 +02:00
Frank Denis c51e26887e Merge pull request 'tls.Client: reject empty TLS 1.3 inner plaintext and short records' (#31972) from jedisct1/zig:empty-plaintext-underflows-content-type-parsing into master
Reviewed-on: https://codeberg.org/ziglang/zig/pulls/31972
Reviewed-by: Andrew Kelley <andrew@ziglang.org>
2026-04-20 16:57:41 +02:00
nektro 259e4cf9fd std.ArrayHashMap: this workaround is no longer necessary 2026-04-20 16:49:52 +02:00
Frank Denis ac7e895df0 tls.Client: reject empty TLS 1.3 inner plaintext and short records
After decryption, TLS 1.3 plaintext is trimmed of zero padding, then
the last byte is read as the content type.

But when the plaintext was entirely zero padding, we got a
"thread panic: integer overflow at msg.len - 1" error. That could be
triggered by any server to crash the client.
2026-04-20 12:07:51 +02:00
Andrew Kelley 4e2147d14e Merge pull request 'Fix uefi (un)installMultipleProtocolInterfaces' (#31934) from mrosowski/zig:uefi-fix-install-multiple into master
Reviewed-on: https://codeberg.org/ziglang/zig/pulls/31934
Reviewed-by: linus <mail@linusgroh.de>
2026-04-20 07:05:35 +02:00
Andrew Kelley 6067a8b1a0 Merge pull request 'std.Io.Dir: fix incorrect return types in setFileOwner and setTimestampsNow' (#31940) from lukasl/zig:fix-dir-setfileowner-error-type into master
Reviewed-on: https://codeberg.org/ziglang/zig/pulls/31940
Reviewed-by: Andrew Kelley <andrew@ziglang.org>
2026-04-20 02:23:17 +02:00
David Rubin a0a36bf92e io: make toClock compile 2026-04-19 16:58:12 -07:00
Alex Kladov 76174e1bce fuzz: don't err if .zig-cache/tmp doesn't exist
If we have just created cache_dir_path, then there's no `tmp` dir
there, and

    cache_dir.createFile(io, "tmp/libfuzzer.log", .{ .truncate = false })

fails.

Tested via

    $ zig version
    0.16.0
    $ zig build --zig-lib-dir ~/p/zig/lib/ --fuzz
2026-04-20 01:20:52 +02:00
Pavel Verigo d840583458 remove AIR .bool_or/.bool_and 2026-04-19 21:49:51 +02:00
Andrew Kelley dea6914aaa bootstrap.c: fix zig2 version
This should have been part of the "start the release cycle" commit.
2026-04-19 11:25:59 -07:00
Andrew Kelley b0f6889d12 Merge pull request 'docs: langref: Clear up terminology used for top-level doc comments' (#31920) into master
Reviewed-on: https://codeberg.org/ziglang/zig/pulls/31920
Reviewed-by: Andrew Kelley <andrew@ziglang.org>
2026-04-19 10:38:24 -07:00
Andrew Kelley 571388a93d langref: use the word "namespace" instead of "container" 2026-04-19 10:38:01 -07:00
Sage Hane f0649e7709 langref: Clear up terminology used for top-level doc comments 2026-04-19 10:12:22 -07:00
Andrew Kelley 50f96d2ca1 std.Io.Dir: add type checking for those two functions 2026-04-19 10:08:23 -07:00
Lukas Lalinsky 52e06ce4f6 std.Io.Dir: fix incorrect return types in setFileOwner and setTimestampsNow
`setFileOwner` declared `SetOwnerError!void` but its vtable method
returns the wider `SetFileOwnerError!void` (adds `NameTooLong` and
`BadPathName`), so any call through the wrapper fails to compile.

`setTimestampsNow` dispatched to `io.vtable.fileSetTimestamps` with
`(Dir, []const u8, Dir.SetTimestampsOptions)`, but that vtable entry
takes `(File, File.SetTimestampsOptions)`. The intended target is
`dirSetTimestamps`, whose signature matches the call site.
2026-04-19 10:07:44 -07:00
Andrew Kelley 9b177a7d21 Merge pull request 'Rework StackFallbackAllocator' (#31841) into master
Reviewed-on: https://codeberg.org/ziglang/zig/pulls/31841
Reviewed-by: Andrew Kelley <andrew@ziglang.org>
2026-04-18 14:52:12 -07:00
Mason Remaley e2c3920fb1 Renames buffer first allocator in compiler and std 2026-04-18 14:51:49 -07:00
Mason Remaley 6d40d374d8 Merges together the two buffer first allocator implementations 2026-04-18 14:51:49 -07:00
Mason Remaley 8c96487bb9 Updates all uses of StackFallbackAllocator 2026-04-18 14:51:49 -07:00
Mason Remaley a4d8e9608e Reworks the stack fallback allocator
The previous approach had a few downsides:

1. You couldn't set the alignment of the internal buffer. Many callers in
   the standard library trying to use this for a small vec style
   optimization worked around this by setting the alignment for
   the struct itself, this ends up very verbose and also assumes a
   specific layout for the struct which isn't guaranteed.

2. It was generic over the size of the buffer. This type is used a lot in
   std with various sizes.

3. It has an awkward API where you had to call get which mutated the type
   unlike all other allocators, and then had a runtime check to make sure
   you didn't get this wrong.

The new approach resolves all of these issues by just taking the buf as
an argument.

This is particularly amenable to smallvec style optimizations: you can
just declare the buf as an array of the item you want to allocate to get
the exact minimum size.
2026-04-18 14:51:49 -07:00
jmcaine 73ecc6333f std: implement heap.StackFirstAllocator
second attempt
2026-04-18 14:51:25 -07:00
Andrew Kelley 0346aef2da Merge pull request 'limb64: make fixLastLimb endian aware' (#31910) from pavelverigo/zig:limb64-be-fixes into master
Reviewed-on: https://codeberg.org/ziglang/zig/pulls/31910
Reviewed-by: Andrew Kelley <andrew@ziglang.org>
2026-04-18 23:46:34 +02:00
Pavel Verigo 2c5f2d67c1 Revert "compiler-rt: disable some limb64 tests on some big-endian targets"
This reverts commit 9125e24909.
2026-04-18 18:47:29 +02:00
Pavel Verigo 70c4b2424b limb64: make fixLastLimb endian aware 2026-04-18 18:47:17 +02:00
Meghan Denny 9636d76b6d std.os.linux: getdents accepts a c_uint length (#31825)
https://github.com/torvalds/linux/blob/e774d5f1bc27a85f858bce7688509e866f8e8a4e/include/linux/syscalls.h#L1100-L1102
https://github.com/torvalds/linux/blob/e774d5f1bc27a85f858bce7688509e866f8e8a4e/include/linux/syscalls.h#L477-L479
Reviewed-on: https://codeberg.org/ziglang/zig/pulls/31825
Reviewed-by: Andrew Kelley <andrew@ziglang.org>
Co-authored-by: Meghan Denny <hello@nektro.net>
Co-committed-by: Meghan Denny <hello@nektro.net>
2026-04-18 07:34:32 +02:00
David Senoner 21914c7c01 ziglibc: migrate tee linux syscall (#31911)
Add the Linux syscall wrapper for `tee`.

Migrate the `tee` syscall from musl libc to zig libc.

langref: note `ssize_t` and `isize`  are ABI compatible

Reviewed-on: https://codeberg.org/ziglang/zig/pulls/31911
Reviewed-by: Andrew Kelley <andrew@ziglang.org>
Co-authored-by: David Senoner <seda18@rolmail.net>
Co-committed-by: David Senoner <seda18@rolmail.net>
2026-04-18 07:30:43 +02:00
Josh Megnauth ff612334fa libzigc: dup2 and dup3
This commit adds `dup2` and `dup3` based on musl. Zig already has
wrappers for the syscalls, but musl's implementation checks for a rare,
temporary race condition with dup2/3 and `open`. Like musl, this
implementation adds a fallback for dup3 if the syscall isn't available.

Contributes to: #30978
2026-04-17 23:13:39 +02:00
Mikołaj Rosowski 7020c9e4a9 std.os.uefi: pass null terminator in (un)installMultipleProtocolInterfaces 2026-04-17 22:33:17 +02:00
Mikołaj Rosowski 0473ddb1a7 std.os.uefi: fix _(un)installMultipleProtocolInterface signatures 2026-04-17 22:33:17 +02:00
Mikołaj Rosowski a3a1dd1d91 std.os.uefi: use uefi callconv for _(un)installMultipleProtocolInterfaces 2026-04-17 22:33:17 +02:00
Mikołaj Rosowski 1d7c8108b1 std.os.uefi: fix comptime idx 2026-04-17 22:33:17 +02:00