zig 0.17: port to the 0.17.0 release master
Builds, tests, and formats on zig 0.17.0. zig build test: 365 passed, 1 skipped (the linux-only process metrics test), same as 0.16 on main. Dependencies: zat v0.6.0-alpha.2, websocket v0.2.0-alpha.2, and the 0.17 ports of rocksdb-zig and otel-zig. CI and the Dockerfile install zig 0.17.0. errdefer no longer captures the error, so the 19 traced scopes that recorded failures with `errdefer |err| trace.fail(err)` now run their covered code in a function and pass its result through Span.recordError, which fails the span on error and returns the result unchanged. Each wrapper covers exactly the scope the errdefer did, so the same errors are recorded and the surrounding defers run in the same order. Other 0.17 changes: - array repetition (`**`) becomes @splat or literals; zstd tests build their repeated strings with a comptime helper - @typeInfo enum `.fields` becomes `.field_names`; std.meta.fields is gone (enum counts, cli exposures, crashpoint parsing) - @cImport is gone: disk_space declares fstatvfs and struct statvfs for darwin, glibc, and musl - Uri.getHost is gone; host extraction reads the raw URI host, as getHost did, because HostName.fromUri rejects IPv6 literals - EnumSet initFull/initEmpty, Crc32Iscsi, and dupeZ renames - zig fmt rewrites @intFromEnum/@enumFromInt to @backingInt and @fromBackingInt zat 0.4 -> 0.6: - FetchOptions.redirect_behavior is on_redirect, response headers are captured by name - the repo export transport identifies as stream instead of the transport library's default user agent - cbor.Value gained .float (zat 0.4.2 accepts finite 64-bit floats like atmos), so the wire encoder writes it as a JSON number, and the undecodable-record hot tail test uses a 32-bit float, which is still rejected build.zig poisons the configure cache where it shells out to git: 0.17 caches the configure result, so the version command and stream_build_info kept reporting the previous commit after HEAD moved. Also fixes the bench step, which passed a removed argument to wire.encodeCommitV2 and did not compile on 0.16 either. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>