@zigc/lib 0.17.0-dev.644 → 0.17.0-dev.657
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/compiler/Maker/ScannedConfig.zig +4 -3
- package/compiler/Maker/Step/FindProgram.zig +2 -2
- package/compiler/Maker/Watch/FsEvents.zig +3 -2
- package/compiler/aro/aro/Attribute.zig +52 -51
- package/compiler/aro/aro/Compilation.zig +5 -5
- package/compiler/aro/aro/Diagnostics.zig +7 -7
- package/compiler/aro/aro/Parser.zig +2 -2
- package/compiler/aro/aro/Tree.zig +11 -11
- package/compiler/aro/aro/features.zig +4 -4
- package/compiler/aro/aro/text_literal.zig +2 -2
- package/compiler/aro/backend/Interner.zig +14 -13
- package/compiler/configurer.zig +2 -2
- package/compiler/resinator/bmp.zig +3 -2
- package/compiler/resinator/code_pages.zig +14 -12
- package/compiler/resinator/cvtres.zig +11 -10
- package/compiler/resinator/errors.zig +18 -22
- package/compiler/resinator/lang.zig +7 -7
- package/compiler/resinator/parse.zig +1 -1
- package/compiler/translate-c/ast.zig +6 -6
- package/docs/wasm/markdown/Document.zig +3 -3
- package/docs/wasm/markdown/Parser.zig +3 -3
- package/package.json +1 -1
- package/std/Build/Cache.zig +2 -2
- package/std/Build/Configuration.zig +19 -16
- package/std/Build/Step/ConfigHeader.zig +3 -2
- package/std/Build/Step/Options.zig +28 -22
- package/std/Build.zig +52 -53
- package/std/Io/Kqueue.zig +2 -2
- package/std/Io/Reader.zig +1 -1
- package/std/Io/Threaded.zig +18 -15
- package/std/Io/Uring.zig +2 -2
- package/std/Io/Writer.zig +18 -18
- package/std/Io/net.zig +3 -1
- package/std/Io.zig +7 -6
- package/std/Progress.zig +2 -2
- package/std/Target/aarch64.zig +2 -2
- package/std/Target/alpha.zig +2 -2
- package/std/Target/amdgcn.zig +2 -2
- package/std/Target/arc.zig +2 -2
- package/std/Target/arm.zig +2 -2
- package/std/Target/avr.zig +2 -2
- package/std/Target/bpf.zig +2 -2
- package/std/Target/csky.zig +2 -2
- package/std/Target/hexagon.zig +2 -2
- package/std/Target/hppa.zig +2 -2
- package/std/Target/kvx.zig +2 -2
- package/std/Target/lanai.zig +2 -2
- package/std/Target/loongarch.zig +2 -2
- package/std/Target/m68k.zig +2 -2
- package/std/Target/mips.zig +2 -2
- package/std/Target/msp430.zig +2 -2
- package/std/Target/nvptx.zig +2 -2
- package/std/Target/powerpc.zig +2 -2
- package/std/Target/propeller.zig +2 -2
- package/std/Target/riscv.zig +2 -2
- package/std/Target/s390x.zig +2 -2
- package/std/Target/sparc.zig +2 -2
- package/std/Target/spirv.zig +2 -2
- package/std/Target/ve.zig +2 -2
- package/std/Target/wasm.zig +2 -2
- package/std/Target/x86.zig +2 -2
- package/std/Target/xcore.zig +2 -2
- package/std/Target/xtensa.zig +2 -2
- package/std/Target.zig +4 -4
- package/std/c/darwin.zig +1 -1
- package/std/coff.zig +1 -1
- package/std/crypto/codecs/asn1/Oid.zig +8 -8
- package/std/crypto/codecs/asn1/der/Decoder.zig +7 -7
- package/std/crypto/codecs/asn1/der/Encoder.zig +10 -8
- package/std/crypto/phc_encoding.zig +23 -20
- package/std/crypto/timing_safe.zig +1 -1
- package/std/crypto/tls/Client.zig +3 -3
- package/std/crypto/tls.zig +1 -1
- package/std/debug/Dwarf/Unwind/VirtualMachine.zig +11 -5
- package/std/debug/ElfFile.zig +12 -8
- package/std/debug/MachOFile.zig +2 -2
- package/std/debug/SelfInfo/MachO.zig +2 -2
- package/std/debug/SelfInfo/Windows.zig +2 -2
- package/std/elf.zig +7 -7
- package/std/enums.zig +66 -67
- package/std/gpu.zig +1 -1
- package/std/hash/auto_hash.zig +8 -8
- package/std/hash/verify.zig +3 -3
- package/std/http/Client.zig +2 -2
- package/std/json/Stringify.zig +14 -14
- package/std/json/static.zig +47 -31
- package/std/lang.zig +65 -97
- package/std/math.zig +2 -2
- package/std/mem/Allocator.zig +9 -9
- package/std/mem.zig +86 -102
- package/std/meta/trailer_flags.zig +26 -19
- package/std/meta.zig +131 -171
- package/std/multi_array_list.zig +49 -57
- package/std/os/uefi/protocol/device_path.zig +8 -7
- package/std/os/uefi/tables/boot_services.zig +1 -1
- package/std/os/windows.zig +9 -15
- package/std/start.zig +6 -6
- package/std/testing/Smith.zig +35 -21
- package/std/testing.zig +15 -15
- package/std/zig/Ast.zig +4 -4
- package/std/zig/AstGen.zig +42 -42
- package/std/zig/ErrorBundle.zig +16 -13
- package/std/zig/LibCInstallation.zig +11 -11
- package/std/zig/Parse.zig +6 -6
- package/std/zig/Zir.zig +10 -10
- package/std/zig/c_translation/helpers.zig +2 -2
- package/std/zig/llvm/BitcodeReader.zig +3 -3
- package/std/zig/llvm/Builder.zig +124 -93
- package/std/zig/llvm/bitcode_writer.zig +4 -4
- package/std/zig/system/windows.zig +11 -11
- package/std/zig/system.zig +4 -4
- package/std/zig.zig +4 -4
- package/std/zon/Serializer.zig +28 -23
- package/std/zon/parse.zig +58 -61
package/std/Build.zig
CHANGED
|
@@ -389,9 +389,10 @@ fn createChild(
|
|
|
389
389
|
|
|
390
390
|
fn userInputOptionsFromArgs(arena: Allocator, args: anytype) UserInputOptionsMap {
|
|
391
391
|
var map = UserInputOptionsMap.init(arena);
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
392
|
+
const args_info = @typeInfo(@TypeOf(args)).@"struct";
|
|
393
|
+
inline for (args_info.field_names, args_info.field_types) |field_name, field_type| {
|
|
394
|
+
if (field_type == @TypeOf(null)) continue;
|
|
395
|
+
addUserInputOptionFromArg(arena, &map, field_name, field_type, @field(args, field_name));
|
|
395
396
|
}
|
|
396
397
|
return map;
|
|
397
398
|
}
|
|
@@ -399,15 +400,15 @@ fn userInputOptionsFromArgs(arena: Allocator, args: anytype) UserInputOptionsMap
|
|
|
399
400
|
fn addUserInputOptionFromArg(
|
|
400
401
|
arena: Allocator,
|
|
401
402
|
map: *UserInputOptionsMap,
|
|
402
|
-
|
|
403
|
+
field_name: [:0]const u8,
|
|
403
404
|
comptime T: type,
|
|
404
405
|
/// If null, the value won't be added, but `T` will still be type-checked.
|
|
405
406
|
maybe_value: ?T,
|
|
406
407
|
) void {
|
|
407
408
|
switch (T) {
|
|
408
409
|
Target.Query => return if (maybe_value) |v| {
|
|
409
|
-
map.put(
|
|
410
|
-
.name =
|
|
410
|
+
map.put(field_name, .{
|
|
411
|
+
.name = field_name,
|
|
411
412
|
.value = .{ .scalar = v.zigTriple(arena) catch @panic("OOM") },
|
|
412
413
|
.used = false,
|
|
413
414
|
}) catch @panic("OOM");
|
|
@@ -418,8 +419,8 @@ fn addUserInputOptionFromArg(
|
|
|
418
419
|
}) catch @panic("OOM");
|
|
419
420
|
},
|
|
420
421
|
ResolvedTarget => return if (maybe_value) |v| {
|
|
421
|
-
map.put(
|
|
422
|
-
.name =
|
|
422
|
+
map.put(field_name, .{
|
|
423
|
+
.name = field_name,
|
|
423
424
|
.value = .{ .scalar = v.query.zigTriple(arena) catch @panic("OOM") },
|
|
424
425
|
.used = false,
|
|
425
426
|
}) catch @panic("OOM");
|
|
@@ -430,15 +431,15 @@ fn addUserInputOptionFromArg(
|
|
|
430
431
|
}) catch @panic("OOM");
|
|
431
432
|
},
|
|
432
433
|
std.zig.BuildId => return if (maybe_value) |v| {
|
|
433
|
-
map.put(
|
|
434
|
-
.name =
|
|
434
|
+
map.put(field_name, .{
|
|
435
|
+
.name = field_name,
|
|
435
436
|
.value = .{ .scalar = std.fmt.allocPrint(arena, "{f}", .{v}) catch @panic("OOM") },
|
|
436
437
|
.used = false,
|
|
437
438
|
}) catch @panic("OOM");
|
|
438
439
|
},
|
|
439
440
|
LazyPath => return if (maybe_value) |v| {
|
|
440
|
-
map.put(
|
|
441
|
-
.name =
|
|
441
|
+
map.put(field_name, .{
|
|
442
|
+
.name = field_name,
|
|
442
443
|
.value = .{ .lazy_path = v.dupeInner(arena) },
|
|
443
444
|
.used = false,
|
|
444
445
|
}) catch @panic("OOM");
|
|
@@ -446,15 +447,15 @@ fn addUserInputOptionFromArg(
|
|
|
446
447
|
[]const LazyPath => return if (maybe_value) |v| {
|
|
447
448
|
var list = std.array_list.Managed(LazyPath).initCapacity(arena, v.len) catch @panic("OOM");
|
|
448
449
|
for (v) |lp| list.appendAssumeCapacity(lp.dupeInner(arena));
|
|
449
|
-
map.put(
|
|
450
|
-
.name =
|
|
450
|
+
map.put(field_name, .{
|
|
451
|
+
.name = field_name,
|
|
451
452
|
.value = .{ .lazy_path_list = list },
|
|
452
453
|
.used = false,
|
|
453
454
|
}) catch @panic("OOM");
|
|
454
455
|
},
|
|
455
456
|
[]const u8 => return if (maybe_value) |v| {
|
|
456
|
-
map.put(
|
|
457
|
-
.name =
|
|
457
|
+
map.put(field_name, .{
|
|
458
|
+
.name = field_name,
|
|
458
459
|
.value = .{ .scalar = arena.dupe(u8, v) catch @panic("OOM") },
|
|
459
460
|
.used = false,
|
|
460
461
|
}) catch @panic("OOM");
|
|
@@ -462,37 +463,37 @@ fn addUserInputOptionFromArg(
|
|
|
462
463
|
[]const []const u8 => return if (maybe_value) |v| {
|
|
463
464
|
var list = std.array_list.Managed([]const u8).initCapacity(arena, v.len) catch @panic("OOM");
|
|
464
465
|
for (v) |s| list.appendAssumeCapacity(arena.dupe(u8, s) catch @panic("OOM"));
|
|
465
|
-
map.put(
|
|
466
|
-
.name =
|
|
466
|
+
map.put(field_name, .{
|
|
467
|
+
.name = field_name,
|
|
467
468
|
.value = .{ .list = list },
|
|
468
469
|
.used = false,
|
|
469
470
|
}) catch @panic("OOM");
|
|
470
471
|
},
|
|
471
472
|
else => switch (@typeInfo(T)) {
|
|
472
473
|
.bool => return if (maybe_value) |v| {
|
|
473
|
-
map.put(
|
|
474
|
-
.name =
|
|
474
|
+
map.put(field_name, .{
|
|
475
|
+
.name = field_name,
|
|
475
476
|
.value = .{ .scalar = if (v) "true" else "false" },
|
|
476
477
|
.used = false,
|
|
477
478
|
}) catch @panic("OOM");
|
|
478
479
|
},
|
|
479
480
|
.@"enum", .enum_literal => return if (maybe_value) |v| {
|
|
480
|
-
map.put(
|
|
481
|
-
.name =
|
|
481
|
+
map.put(field_name, .{
|
|
482
|
+
.name = field_name,
|
|
482
483
|
.value = .{ .scalar = @tagName(v) },
|
|
483
484
|
.used = false,
|
|
484
485
|
}) catch @panic("OOM");
|
|
485
486
|
},
|
|
486
487
|
.comptime_int, .int => return if (maybe_value) |v| {
|
|
487
|
-
map.put(
|
|
488
|
-
.name =
|
|
488
|
+
map.put(field_name, .{
|
|
489
|
+
.name = field_name,
|
|
489
490
|
.value = .{ .scalar = std.fmt.allocPrint(arena, "{d}", .{v}) catch @panic("OOM") },
|
|
490
491
|
.used = false,
|
|
491
492
|
}) catch @panic("OOM");
|
|
492
493
|
},
|
|
493
494
|
.comptime_float, .float => return if (maybe_value) |v| {
|
|
494
|
-
map.put(
|
|
495
|
-
.name =
|
|
495
|
+
map.put(field_name, .{
|
|
496
|
+
.name = field_name,
|
|
496
497
|
.value = .{ .scalar = std.fmt.allocPrint(arena, "{x}", .{v}) catch @panic("OOM") },
|
|
497
498
|
.used = false,
|
|
498
499
|
}) catch @panic("OOM");
|
|
@@ -503,7 +504,7 @@ fn addUserInputOptionFromArg(
|
|
|
503
504
|
addUserInputOptionFromArg(
|
|
504
505
|
arena,
|
|
505
506
|
map,
|
|
506
|
-
|
|
507
|
+
field_name,
|
|
507
508
|
@Pointer(.slice, .{ .@"const" = true }, array_info.child, null),
|
|
508
509
|
maybe_value orelse null,
|
|
509
510
|
);
|
|
@@ -515,8 +516,8 @@ fn addUserInputOptionFromArg(
|
|
|
515
516
|
.@"enum" => return if (maybe_value) |v| {
|
|
516
517
|
var list = std.array_list.Managed([]const u8).initCapacity(arena, v.len) catch @panic("OOM");
|
|
517
518
|
for (v) |tag| list.appendAssumeCapacity(@tagName(tag));
|
|
518
|
-
map.put(
|
|
519
|
-
.name =
|
|
519
|
+
map.put(field_name, .{
|
|
520
|
+
.name = field_name,
|
|
520
521
|
.value = .{ .list = list },
|
|
521
522
|
.used = false,
|
|
522
523
|
}) catch @panic("OOM");
|
|
@@ -525,7 +526,7 @@ fn addUserInputOptionFromArg(
|
|
|
525
526
|
addUserInputOptionFromArg(
|
|
526
527
|
arena,
|
|
527
528
|
map,
|
|
528
|
-
|
|
529
|
+
field_name,
|
|
529
530
|
@Pointer(ptr_info.size, .{ .@"const" = true }, ptr_info.child, null),
|
|
530
531
|
maybe_value orelse null,
|
|
531
532
|
);
|
|
@@ -541,7 +542,7 @@ fn addUserInputOptionFromArg(
|
|
|
541
542
|
addUserInputOptionFromArg(
|
|
542
543
|
arena,
|
|
543
544
|
map,
|
|
544
|
-
|
|
545
|
+
field_name,
|
|
545
546
|
info.child,
|
|
546
547
|
maybe_value orelse null,
|
|
547
548
|
);
|
|
@@ -551,7 +552,7 @@ fn addUserInputOptionFromArg(
|
|
|
551
552
|
else => {},
|
|
552
553
|
},
|
|
553
554
|
}
|
|
554
|
-
@compileError("option '" ++
|
|
555
|
+
@compileError("option '" ++ field_name ++ "' has unsupported type: " ++ @typeName(T));
|
|
555
556
|
}
|
|
556
557
|
|
|
557
558
|
const OrderedUserValue = union(enum) {
|
|
@@ -1114,11 +1115,11 @@ pub fn option(b: *Build, comptime T: type, name_raw: []const u8, description_raw
|
|
|
1114
1115
|
const type_id = comptime typeToEnum(T);
|
|
1115
1116
|
const enum_options = if (type_id == .@"enum" or type_id == .enum_list) blk: {
|
|
1116
1117
|
const EnumType = if (type_id == .enum_list) @typeInfo(T).pointer.child else T;
|
|
1117
|
-
const
|
|
1118
|
-
var options = std.array_list.Managed([]const u8).initCapacity(
|
|
1118
|
+
const field_names = comptime std.meta.fieldNames(EnumType);
|
|
1119
|
+
var options = std.array_list.Managed([]const u8).initCapacity(b.allocator, field_names.len) catch @panic("OOM");
|
|
1119
1120
|
|
|
1120
|
-
inline for (
|
|
1121
|
-
options.appendAssumeCapacity(
|
|
1121
|
+
inline for (field_names) |field_name| {
|
|
1122
|
+
options.appendAssumeCapacity(field_name);
|
|
1122
1123
|
}
|
|
1123
1124
|
|
|
1124
1125
|
break :blk options.toOwnedSlice() catch @panic("OOM");
|
|
@@ -1407,8 +1408,8 @@ pub fn parseTargetQuery(options: std.Target.Query.ParseOptions) error{ParseFaile
|
|
|
1407
1408
|
\\available operating systems:
|
|
1408
1409
|
\\
|
|
1409
1410
|
, .{diags.os_name.?});
|
|
1410
|
-
inline for (std.meta.
|
|
1411
|
-
std.debug.print(" {s}\n", .{
|
|
1411
|
+
inline for (comptime std.meta.fieldNames(Target.Os.Tag)) |field_name| {
|
|
1412
|
+
std.debug.print(" {s}\n", .{field_name});
|
|
1412
1413
|
}
|
|
1413
1414
|
return error.ParseFailed;
|
|
1414
1415
|
},
|
|
@@ -1811,8 +1812,8 @@ pub fn findProgram(b: *Build, options: FindProgramOptions) ?[]const u8 {
|
|
|
1811
1812
|
}
|
|
1812
1813
|
|
|
1813
1814
|
fn supportedWindowsProgramExtension(ext: []const u8) bool {
|
|
1814
|
-
inline for (@typeInfo(std.process.WindowsExtension).@"enum".
|
|
1815
|
-
if (std.ascii.eqlIgnoreCase(ext, "." ++
|
|
1815
|
+
inline for (@typeInfo(std.process.WindowsExtension).@"enum".field_names) |field_name| {
|
|
1816
|
+
if (std.ascii.eqlIgnoreCase(ext, "." ++ field_name)) return true;
|
|
1816
1817
|
}
|
|
1817
1818
|
return false;
|
|
1818
1819
|
}
|
|
@@ -2072,8 +2073,7 @@ inline fn findImportPkgHashOrFatal(b: *Build, comptime asking_build_zig: type, c
|
|
|
2072
2073
|
const deps = build_runner.dependencies;
|
|
2073
2074
|
const arena = b.graph.arena;
|
|
2074
2075
|
|
|
2075
|
-
const b_pkg_hash, const b_pkg_deps = comptime for (@typeInfo(deps.packages).@"struct".
|
|
2076
|
-
const pkg_hash = decl.name;
|
|
2076
|
+
const b_pkg_hash, const b_pkg_deps = comptime for (@typeInfo(deps.packages).@"struct".decl_names) |pkg_hash| {
|
|
2077
2077
|
const pkg = @field(deps.packages, pkg_hash);
|
|
2078
2078
|
if (@hasDecl(pkg, "build_zig") and pkg.build_zig == asking_build_zig) break .{ pkg_hash, pkg.deps };
|
|
2079
2079
|
} else .{ "", deps.root_deps };
|
|
@@ -2116,9 +2116,9 @@ pub fn lazyDependency(b: *Build, name: []const u8, args: anytype) ?*Dependency {
|
|
|
2116
2116
|
const deps = build_runner.dependencies;
|
|
2117
2117
|
const pkg_hash = findPkgHashOrFatal(b, name);
|
|
2118
2118
|
|
|
2119
|
-
inline for (@typeInfo(deps.packages).@"struct".
|
|
2120
|
-
if (mem.eql(u8,
|
|
2121
|
-
const pkg = @field(deps.packages,
|
|
2119
|
+
inline for (@typeInfo(deps.packages).@"struct".decl_names) |decl_name| {
|
|
2120
|
+
if (mem.eql(u8, decl_name, pkg_hash)) {
|
|
2121
|
+
const pkg = @field(deps.packages, decl_name);
|
|
2122
2122
|
const available = !@hasDecl(pkg, "available") or pkg.available;
|
|
2123
2123
|
if (!available) {
|
|
2124
2124
|
markNeededLazyDep(b, pkg_hash);
|
|
@@ -2136,9 +2136,9 @@ pub fn dependency(b: *Build, name: []const u8, args: anytype) *Dependency {
|
|
|
2136
2136
|
const deps = build_runner.dependencies;
|
|
2137
2137
|
const pkg_hash = findPkgHashOrFatal(b, name);
|
|
2138
2138
|
|
|
2139
|
-
inline for (@typeInfo(deps.packages).@"struct".
|
|
2140
|
-
if (mem.eql(u8,
|
|
2141
|
-
const pkg = @field(deps.packages,
|
|
2139
|
+
inline for (@typeInfo(deps.packages).@"struct".decl_names) |decl_name| {
|
|
2140
|
+
if (mem.eql(u8, decl_name, pkg_hash)) {
|
|
2141
|
+
const pkg = @field(deps.packages, decl_name);
|
|
2142
2142
|
if (@hasDecl(pkg, "available")) {
|
|
2143
2143
|
panic("dependency '{s}{s}' is marked as lazy in build.zig.zon which means it must use the lazyDependency function instead", .{ b.dep_prefix, name });
|
|
2144
2144
|
}
|
|
@@ -2166,9 +2166,9 @@ pub inline fn lazyImport(
|
|
|
2166
2166
|
const deps = build_runner.dependencies;
|
|
2167
2167
|
const pkg_hash = findImportPkgHashOrFatal(b, asking_build_zig, dep_name);
|
|
2168
2168
|
|
|
2169
|
-
inline for (@typeInfo(deps.packages).@"struct".
|
|
2170
|
-
if (comptime mem.eql(u8,
|
|
2171
|
-
const pkg = @field(deps.packages,
|
|
2169
|
+
inline for (@typeInfo(deps.packages).@"struct".decl_names) |decl_name| {
|
|
2170
|
+
if (comptime mem.eql(u8, decl_name, pkg_hash)) {
|
|
2171
|
+
const pkg = @field(deps.packages, decl_name);
|
|
2172
2172
|
const available = !@hasDecl(pkg, "available") or pkg.available;
|
|
2173
2173
|
if (!available) {
|
|
2174
2174
|
markNeededLazyDep(b, pkg_hash);
|
|
@@ -2197,8 +2197,7 @@ pub fn dependencyFromBuildZig(
|
|
|
2197
2197
|
const arena = graph.arena;
|
|
2198
2198
|
|
|
2199
2199
|
find_dep: {
|
|
2200
|
-
const pkg, const pkg_hash = inline for (@typeInfo(deps.packages).@"struct".
|
|
2201
|
-
const pkg_hash = decl.name;
|
|
2200
|
+
const pkg, const pkg_hash = inline for (@typeInfo(deps.packages).@"struct".decl_names) |pkg_hash| {
|
|
2202
2201
|
const pkg = @field(deps.packages, pkg_hash);
|
|
2203
2202
|
if (@hasDecl(pkg, "build_zig") and pkg.build_zig == build_zig) break .{ pkg, pkg_hash };
|
|
2204
2203
|
} else break :find_dep;
|
package/std/Io/Kqueue.zig
CHANGED
|
@@ -1401,9 +1401,9 @@ fn openSocketPosix(
|
|
|
1401
1401
|
};
|
|
1402
1402
|
errdefer closeFd(socket_fd);
|
|
1403
1403
|
|
|
1404
|
-
if (options.ip6_only) {
|
|
1404
|
+
if (options.ip6_only) |ip6_only| {
|
|
1405
1405
|
if (posix.IPV6 == void) return error.OptionUnsupported;
|
|
1406
|
-
try setSocketOption(k, socket_fd, posix.IPPROTO.IPV6, posix.IPV6.V6ONLY,
|
|
1406
|
+
try setSocketOption(k, socket_fd, posix.IPPROTO.IPV6, posix.IPV6.V6ONLY, @intFromBool(ip6_only));
|
|
1407
1407
|
}
|
|
1408
1408
|
|
|
1409
1409
|
return socket_fd;
|
package/std/Io/Reader.zig
CHANGED
|
@@ -1277,7 +1277,7 @@ pub fn takeEnum(r: *Reader, comptime Enum: type, endian: std.builtin.Endian) Tak
|
|
|
1277
1277
|
/// Asserts the buffer was initialized with a capacity at least `@sizeOf(Enum)`.
|
|
1278
1278
|
pub fn takeEnumNonexhaustive(r: *Reader, comptime Enum: type, endian: std.builtin.Endian) Error!Enum {
|
|
1279
1279
|
const info = @typeInfo(Enum).@"enum";
|
|
1280
|
-
comptime assert(
|
|
1280
|
+
comptime assert(info.mode != .exhaustive);
|
|
1281
1281
|
comptime assert(@bitSizeOf(info.tag_type) == @sizeOf(info.tag_type) * 8);
|
|
1282
1282
|
return takeEnum(r, Enum, endian) catch |err| switch (err) {
|
|
1283
1283
|
error.InvalidEnumTag => unreachable,
|
package/std/Io/Threaded.zig
CHANGED
|
@@ -332,8 +332,8 @@ pub const Environ = struct {
|
|
|
332
332
|
.flags = .{ .nonblocking = true },
|
|
333
333
|
};
|
|
334
334
|
};
|
|
335
|
-
} else inline for (@typeInfo(String).@"struct".
|
|
336
|
-
if (std.mem.eql(u8, key,
|
|
335
|
+
} else inline for (@typeInfo(String).@"struct".field_names) |field_name| {
|
|
336
|
+
if (std.mem.eql(u8, key, field_name)) @field(environ.string, field_name) = value;
|
|
337
337
|
}
|
|
338
338
|
}
|
|
339
339
|
}
|
|
@@ -11785,8 +11785,8 @@ fn sleepWasi(t: *Threaded, timeout: Io.Timeout) Io.Cancelable!void {
|
|
|
11785
11785
|
|
|
11786
11786
|
fn sleepNanosleep(t: *Threaded, timeout: Io.Timeout) Io.Cancelable!void {
|
|
11787
11787
|
const t_io = io(t);
|
|
11788
|
-
const sec_type = @typeInfo(posix.timespec).@"struct".
|
|
11789
|
-
const nsec_type = @typeInfo(posix.timespec).@"struct".
|
|
11788
|
+
const sec_type = @typeInfo(posix.timespec).@"struct".field_types[0];
|
|
11789
|
+
const nsec_type = @typeInfo(posix.timespec).@"struct".field_types[1];
|
|
11790
11790
|
|
|
11791
11791
|
var timespec: posix.timespec = t: {
|
|
11792
11792
|
const d = timeout.toDurationFromNow(t_io) orelse break :t .{
|
|
@@ -12407,9 +12407,9 @@ fn openSocketPosix(
|
|
|
12407
12407
|
};
|
|
12408
12408
|
errdefer closeFd(socket_fd);
|
|
12409
12409
|
|
|
12410
|
-
if (options.ip6_only) {
|
|
12410
|
+
if (options.ip6_only) |ip6_only| {
|
|
12411
12411
|
if (posix.IPV6 == void) return error.OptionUnsupported;
|
|
12412
|
-
try setSocketOptionPosix(socket_fd, posix.IPPROTO.IPV6, posix.IPV6.V6ONLY,
|
|
12412
|
+
try setSocketOptionPosix(socket_fd, posix.IPPROTO.IPV6, posix.IPV6.V6ONLY, @intFromBool(ip6_only));
|
|
12413
12413
|
}
|
|
12414
12414
|
|
|
12415
12415
|
return socket_fd;
|
|
@@ -13627,12 +13627,15 @@ fn netLookupFallible(
|
|
|
13627
13627
|
|
|
13628
13628
|
// On Linux, glibc provides getaddrinfo_a which is capable of supporting our semantics.
|
|
13629
13629
|
// However, musl's POSIX-compliant getaddrinfo is not, so we bypass it.
|
|
13630
|
+
const is_glibc = builtin.link_libc and builtin.target.isGnuLibC();
|
|
13630
13631
|
|
|
13631
|
-
if (
|
|
13632
|
+
if (is_glibc) {
|
|
13632
13633
|
// TODO use getaddrinfo_a / gai_cancel
|
|
13633
13634
|
}
|
|
13634
13635
|
|
|
13635
|
-
|
|
13636
|
+
// On Linux, we have to go through glibc because of the Name Service Switch feature.
|
|
13637
|
+
const non_glibc_linux = native_os == .linux and !is_glibc;
|
|
13638
|
+
if (non_glibc_linux or is_windows) {
|
|
13636
13639
|
if (IpAddress.parseIp6(name, options.port)) |addr| {
|
|
13637
13640
|
if (options.family == .ip4) return error.UnknownHostName;
|
|
13638
13641
|
if (copyCanon(options.canonical_name_buffer, name)) |canon| {
|
|
@@ -14493,7 +14496,7 @@ fn lookupDns(
|
|
|
14493
14496
|
var socket = s: {
|
|
14494
14497
|
if (any_ip6) ip6: {
|
|
14495
14498
|
const ip6_addr: IpAddress = .{ .ip6 = .unspecified(0) };
|
|
14496
|
-
const socket = ip6_addr.bind(t_io, .{ .ip6_only =
|
|
14499
|
+
const socket = ip6_addr.bind(t_io, .{ .ip6_only = false, .mode = .dgram }) catch |err| switch (err) {
|
|
14497
14500
|
error.AddressFamilyUnsupported => break :ip6,
|
|
14498
14501
|
else => |e| return e,
|
|
14499
14502
|
};
|
|
@@ -14923,9 +14926,9 @@ const WindowsEnvironStrings = struct {
|
|
|
14923
14926
|
|
|
14924
14927
|
i += 1; // skip over null byte
|
|
14925
14928
|
|
|
14926
|
-
inline for (@typeInfo(WindowsEnvironStrings).@"struct".
|
|
14927
|
-
const field_name_w = comptime std.unicode.wtf8ToWtf16LeStringLiteral(
|
|
14928
|
-
if (windows.eqlIgnoreCaseWtf16(key_w, field_name_w)) @field(result,
|
|
14929
|
+
inline for (@typeInfo(WindowsEnvironStrings).@"struct".field_names) |field_name| {
|
|
14930
|
+
const field_name_w = comptime std.unicode.wtf8ToWtf16LeStringLiteral(field_name);
|
|
14931
|
+
if (windows.eqlIgnoreCaseWtf16(key_w, field_name_w)) @field(result, field_name) = value_w;
|
|
14929
14932
|
}
|
|
14930
14933
|
}
|
|
14931
14934
|
|
|
@@ -16190,7 +16193,7 @@ fn windowsCreateProcessPathExt(
|
|
|
16190
16193
|
}
|
|
16191
16194
|
var io_status: windows.IO_STATUS_BLOCK = undefined;
|
|
16192
16195
|
|
|
16193
|
-
const num_supported_pathext = @typeInfo(process.WindowsExtension).@"enum".
|
|
16196
|
+
const num_supported_pathext = @typeInfo(process.WindowsExtension).@"enum".field_names.len;
|
|
16194
16197
|
var pathext_seen: [num_supported_pathext]bool = @splat(false);
|
|
16195
16198
|
var any_pathext_seen = false;
|
|
16196
16199
|
var unappended_exists = false;
|
|
@@ -16435,8 +16438,8 @@ fn windowsCreateProcess(
|
|
|
16435
16438
|
fn windowsCreateProcessSupportsExtension(ext: []const u16) ?process.WindowsExtension {
|
|
16436
16439
|
comptime {
|
|
16437
16440
|
// Ensures keeping this function in sync with the enum.
|
|
16438
|
-
const
|
|
16439
|
-
assert(
|
|
16441
|
+
const field_names = @typeInfo(process.WindowsExtension).@"enum".field_names;
|
|
16442
|
+
assert(field_names.len == 4);
|
|
16440
16443
|
assert(@intFromEnum(process.WindowsExtension.bat) == 0);
|
|
16441
16444
|
assert(@intFromEnum(process.WindowsExtension.cmd) == 1);
|
|
16442
16445
|
assert(@intFromEnum(process.WindowsExtension.com) == 2);
|
package/std/Io/Uring.zig
CHANGED
|
@@ -5984,9 +5984,9 @@ fn socket(
|
|
|
5984
5984
|
};
|
|
5985
5985
|
errdefer ev.closeAsync(socket_fd);
|
|
5986
5986
|
|
|
5987
|
-
if (options.ip6_only) {
|
|
5987
|
+
if (options.ip6_only) |ip6_only| {
|
|
5988
5988
|
if (linux.IPV6 == void) return error.OptionUnsupported;
|
|
5989
|
-
try ev.setsockopt(cancel_region, socket_fd, linux.IPPROTO.IPV6, linux.IPV6.V6ONLY,
|
|
5989
|
+
try ev.setsockopt(cancel_region, socket_fd, linux.IPPROTO.IPV6, linux.IPV6.V6ONLY, @intFromBool(ip6_only));
|
|
5990
5990
|
}
|
|
5991
5991
|
|
|
5992
5992
|
return socket_fd;
|
package/std/Io/Writer.zig
CHANGED
|
@@ -620,14 +620,14 @@ pub fn print(w: *Writer, comptime fmt: []const u8, args: anytype) Error!void {
|
|
|
620
620
|
@compileError("expected tuple or struct argument, found " ++ @typeName(ArgsType));
|
|
621
621
|
}
|
|
622
622
|
|
|
623
|
-
const
|
|
623
|
+
const field_names = args_type_info.@"struct".field_names;
|
|
624
624
|
const max_format_args = @typeInfo(std.fmt.ArgSetType).int.bits;
|
|
625
|
-
if (
|
|
625
|
+
if (field_names.len > max_format_args) {
|
|
626
626
|
@compileError("32 arguments max are supported per format call");
|
|
627
627
|
}
|
|
628
628
|
|
|
629
629
|
@setEvalBranchQuota(@as(comptime_int, fmt.len) * 1000); // NOTE: We're upcasting as 16-bit usize overflows.
|
|
630
|
-
comptime var arg_state: std.fmt.ArgState = .{ .args_len =
|
|
630
|
+
comptime var arg_state: std.fmt.ArgState = .{ .args_len = field_names.len };
|
|
631
631
|
comptime var i = 0;
|
|
632
632
|
comptime var literal: []const u8 = "";
|
|
633
633
|
inline while (true) {
|
|
@@ -728,7 +728,7 @@ pub fn print(w: *Writer, comptime fmt: []const u8, args: anytype) Error!void {
|
|
|
728
728
|
.width = width,
|
|
729
729
|
.precision = precision,
|
|
730
730
|
},
|
|
731
|
-
@field(args,
|
|
731
|
+
@field(args, field_names[arg_to_print]),
|
|
732
732
|
std.options.fmt_max_depth,
|
|
733
733
|
);
|
|
734
734
|
}
|
|
@@ -1290,7 +1290,7 @@ pub fn printValue(
|
|
|
1290
1290
|
.@"enum" => |info| {
|
|
1291
1291
|
if (!is_any and fmt.len != 0) invalidFmtError(fmt, value);
|
|
1292
1292
|
optionsForbidden(options);
|
|
1293
|
-
if (info.
|
|
1293
|
+
if (info.mode == .exhaustive) {
|
|
1294
1294
|
return printEnumExhaustive(w, value);
|
|
1295
1295
|
} else {
|
|
1296
1296
|
return printEnumNonexhaustive(w, value);
|
|
@@ -1309,9 +1309,9 @@ pub fn printValue(
|
|
|
1309
1309
|
try w.writeAll(".{ .");
|
|
1310
1310
|
try w.writeAll(@tagName(@as(UnionTagType, value)));
|
|
1311
1311
|
try w.writeAll(" = ");
|
|
1312
|
-
inline for (info.
|
|
1313
|
-
if (value == @field(UnionTagType,
|
|
1314
|
-
try w.printValue(ANY, options, @field(value,
|
|
1312
|
+
inline for (info.field_names) |u_field_name| {
|
|
1313
|
+
if (value == @field(UnionTagType, u_field_name)) {
|
|
1314
|
+
try w.printValue(ANY, options, @field(value, u_field_name), max_depth - 1);
|
|
1315
1315
|
}
|
|
1316
1316
|
}
|
|
1317
1317
|
try w.writeAll(" }");
|
|
@@ -1320,14 +1320,14 @@ pub fn printValue(
|
|
|
1320
1320
|
return w.writeAll(".{ ... }");
|
|
1321
1321
|
},
|
|
1322
1322
|
.@"extern", .@"packed" => {
|
|
1323
|
-
if (info.
|
|
1323
|
+
if (info.field_names.len == 0) return w.writeAll(".{}");
|
|
1324
1324
|
try w.writeAll(".{ ");
|
|
1325
|
-
inline for (info.
|
|
1325
|
+
inline for (info.field_names, 1..) |field_name, i| {
|
|
1326
1326
|
try w.writeByte('.');
|
|
1327
|
-
try w.writeAll(
|
|
1327
|
+
try w.writeAll(field_name);
|
|
1328
1328
|
try w.writeAll(" = ");
|
|
1329
|
-
try w.printValue(ANY, options, @field(value,
|
|
1330
|
-
try w.writeAll(if (i < info.
|
|
1329
|
+
try w.printValue(ANY, options, @field(value, field_name), max_depth - 1);
|
|
1330
|
+
try w.writeAll(if (i < info.field_names.len) ", " else " }");
|
|
1331
1331
|
}
|
|
1332
1332
|
},
|
|
1333
1333
|
}
|
|
@@ -1344,13 +1344,13 @@ pub fn printValue(
|
|
|
1344
1344
|
return;
|
|
1345
1345
|
}
|
|
1346
1346
|
try w.writeAll(".{");
|
|
1347
|
-
inline for (info.
|
|
1347
|
+
inline for (info.field_names, 0..) |f_name, i| {
|
|
1348
1348
|
if (i == 0) {
|
|
1349
1349
|
try w.writeAll(" ");
|
|
1350
1350
|
} else {
|
|
1351
1351
|
try w.writeAll(", ");
|
|
1352
1352
|
}
|
|
1353
|
-
try w.printValue(ANY, options, @field(value,
|
|
1353
|
+
try w.printValue(ANY, options, @field(value, f_name), max_depth - 1);
|
|
1354
1354
|
}
|
|
1355
1355
|
try w.writeAll(" }");
|
|
1356
1356
|
return;
|
|
@@ -1360,15 +1360,15 @@ pub fn printValue(
|
|
|
1360
1360
|
return;
|
|
1361
1361
|
}
|
|
1362
1362
|
try w.writeAll(".{");
|
|
1363
|
-
inline for (info.
|
|
1363
|
+
inline for (info.field_names, 0..) |f_name, i| {
|
|
1364
1364
|
if (i == 0) {
|
|
1365
1365
|
try w.writeAll(" .");
|
|
1366
1366
|
} else {
|
|
1367
1367
|
try w.writeAll(", .");
|
|
1368
1368
|
}
|
|
1369
|
-
try w.writeAll(
|
|
1369
|
+
try w.writeAll(f_name);
|
|
1370
1370
|
try w.writeAll(" = ");
|
|
1371
|
-
try w.printValue(ANY, options, @field(value,
|
|
1371
|
+
try w.printValue(ANY, options, @field(value, f_name), max_depth - 1);
|
|
1372
1372
|
}
|
|
1373
1373
|
try w.writeAll(" }");
|
|
1374
1374
|
},
|
package/std/Io/net.zig
CHANGED
|
@@ -281,7 +281,9 @@ pub const IpAddress = union(enum) {
|
|
|
281
281
|
/// The socket is restricted to sending and receiving IPv6 packets only.
|
|
282
282
|
/// In this case, an IPv4 and an IPv6 application can bind to a single port
|
|
283
283
|
/// at the same time.
|
|
284
|
-
|
|
284
|
+
///
|
|
285
|
+
/// The default is determined by system configuration.
|
|
286
|
+
ip6_only: ?bool = null,
|
|
285
287
|
/// Allow the socket to send datagrams to broadcast addresses.
|
|
286
288
|
/// When not enabled any attempt to send datagrams to a broadcast address
|
|
287
289
|
/// will fail with `error.AccessDenied`
|
package/std/Io.zig
CHANGED
|
@@ -396,12 +396,13 @@ pub const Operation = union(enum) {
|
|
|
396
396
|
};
|
|
397
397
|
|
|
398
398
|
pub const Result = Result: {
|
|
399
|
-
const
|
|
400
|
-
|
|
401
|
-
var
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
399
|
+
const operation_info = @typeInfo(Operation).@"union";
|
|
400
|
+
const operation_count = operation_info.field_names.len;
|
|
401
|
+
var field_names: [operation_count][]const u8 = undefined;
|
|
402
|
+
var field_types: [operation_count]type = undefined;
|
|
403
|
+
for (operation_info.field_names, operation_info.field_types, &field_names, &field_types) |f_name, f_type, *field_name, *field_type| {
|
|
404
|
+
field_name.* = f_name;
|
|
405
|
+
field_type.* = if (f_type == noreturn) noreturn else f_type.Result;
|
|
405
406
|
}
|
|
406
407
|
break :Result @Union(.auto, Tag, &field_names, &field_types, &@splat(.{}));
|
|
407
408
|
};
|
package/std/Progress.zig
CHANGED
|
@@ -867,8 +867,8 @@ const TreeSymbol = enum {
|
|
|
867
867
|
|
|
868
868
|
fn maxByteLen(symbol: TreeSymbol) usize {
|
|
869
869
|
var max: usize = 0;
|
|
870
|
-
inline for (@typeInfo(Encoding).@"enum".
|
|
871
|
-
const len = symbol.bytes(@field(Encoding,
|
|
870
|
+
inline for (@typeInfo(Encoding).@"enum".field_names) |field_name| {
|
|
871
|
+
const len = symbol.bytes(@field(Encoding, field_name)).len;
|
|
872
872
|
max = @max(max, len);
|
|
873
873
|
}
|
|
874
874
|
return max;
|
package/std/Target/aarch64.zig
CHANGED
|
@@ -291,7 +291,7 @@ pub const featureSetHasAll = CpuFeature.FeatureSetFns(Feature).featureSetHasAll;
|
|
|
291
291
|
|
|
292
292
|
pub const all_features = blk: {
|
|
293
293
|
@setEvalBranchQuota(2000);
|
|
294
|
-
const len = @typeInfo(Feature).@"enum".
|
|
294
|
+
const len = @typeInfo(Feature).@"enum".field_names.len;
|
|
295
295
|
std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
|
|
296
296
|
var result: [len]CpuFeature = undefined;
|
|
297
297
|
result[@intFromEnum(Feature.a320)] = .{
|
|
@@ -2019,7 +2019,7 @@ pub const all_features = blk: {
|
|
|
2019
2019
|
const ti = @typeInfo(Feature);
|
|
2020
2020
|
for (&result, 0..) |*elem, i| {
|
|
2021
2021
|
elem.index = i;
|
|
2022
|
-
elem.name = ti.@"enum".
|
|
2022
|
+
elem.name = ti.@"enum".field_names[i];
|
|
2023
2023
|
}
|
|
2024
2024
|
break :blk result;
|
|
2025
2025
|
};
|
package/std/Target/alpha.zig
CHANGED
|
@@ -17,7 +17,7 @@ pub const featureSetHasAny = CpuFeature.FeatureSetFns(Feature).featureSetHasAny;
|
|
|
17
17
|
pub const featureSetHasAll = CpuFeature.FeatureSetFns(Feature).featureSetHasAll;
|
|
18
18
|
|
|
19
19
|
pub const all_features = blk: {
|
|
20
|
-
const len = @typeInfo(Feature).@"enum".
|
|
20
|
+
const len = @typeInfo(Feature).@"enum".field_names.len;
|
|
21
21
|
std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
|
|
22
22
|
var result: [len]CpuFeature = undefined;
|
|
23
23
|
result[@intFromEnum(Feature.bwx)] = .{
|
|
@@ -43,7 +43,7 @@ pub const all_features = blk: {
|
|
|
43
43
|
const ti = @typeInfo(Feature);
|
|
44
44
|
for (&result, 0..) |*elem, i| {
|
|
45
45
|
elem.index = i;
|
|
46
|
-
elem.name = ti.@"enum".
|
|
46
|
+
elem.name = ti.@"enum".field_names[i];
|
|
47
47
|
}
|
|
48
48
|
break :blk result;
|
|
49
49
|
};
|
package/std/Target/amdgcn.zig
CHANGED
|
@@ -268,7 +268,7 @@ pub const featureSetHasAll = CpuFeature.FeatureSetFns(Feature).featureSetHasAll;
|
|
|
268
268
|
|
|
269
269
|
pub const all_features = blk: {
|
|
270
270
|
@setEvalBranchQuota(2000);
|
|
271
|
-
const len = @typeInfo(Feature).@"enum".
|
|
271
|
+
const len = @typeInfo(Feature).@"enum".field_names.len;
|
|
272
272
|
std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
|
|
273
273
|
var result: [len]CpuFeature = undefined;
|
|
274
274
|
result[@intFromEnum(Feature.@"1024_addressable_vgprs")] = .{
|
|
@@ -1877,7 +1877,7 @@ pub const all_features = blk: {
|
|
|
1877
1877
|
const ti = @typeInfo(Feature);
|
|
1878
1878
|
for (&result, 0..) |*elem, i| {
|
|
1879
1879
|
elem.index = i;
|
|
1880
|
-
elem.name = ti.@"enum".
|
|
1880
|
+
elem.name = ti.@"enum".field_names[i];
|
|
1881
1881
|
}
|
|
1882
1882
|
break :blk result;
|
|
1883
1883
|
};
|
package/std/Target/arc.zig
CHANGED
|
@@ -14,7 +14,7 @@ pub const featureSetHasAny = CpuFeature.FeatureSetFns(Feature).featureSetHasAny;
|
|
|
14
14
|
pub const featureSetHasAll = CpuFeature.FeatureSetFns(Feature).featureSetHasAll;
|
|
15
15
|
|
|
16
16
|
pub const all_features = blk: {
|
|
17
|
-
const len = @typeInfo(Feature).@"enum".
|
|
17
|
+
const len = @typeInfo(Feature).@"enum".field_names.len;
|
|
18
18
|
std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
|
|
19
19
|
var result: [len]CpuFeature = undefined;
|
|
20
20
|
result[@intFromEnum(Feature.norm)] = .{
|
|
@@ -25,7 +25,7 @@ pub const all_features = blk: {
|
|
|
25
25
|
const ti = @typeInfo(Feature);
|
|
26
26
|
for (&result, 0..) |*elem, i| {
|
|
27
27
|
elem.index = i;
|
|
28
|
-
elem.name = ti.@"enum".
|
|
28
|
+
elem.name = ti.@"enum".field_names[i];
|
|
29
29
|
}
|
|
30
30
|
break :blk result;
|
|
31
31
|
};
|
package/std/Target/arm.zig
CHANGED
|
@@ -215,7 +215,7 @@ pub const featureSetHasAll = CpuFeature.FeatureSetFns(Feature).featureSetHasAll;
|
|
|
215
215
|
|
|
216
216
|
pub const all_features = blk: {
|
|
217
217
|
@setEvalBranchQuota(10000);
|
|
218
|
-
const len = @typeInfo(Feature).@"enum".
|
|
218
|
+
const len = @typeInfo(Feature).@"enum".field_names.len;
|
|
219
219
|
std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
|
|
220
220
|
var result: [len]CpuFeature = undefined;
|
|
221
221
|
result[@intFromEnum(Feature.@"32bit")] = .{
|
|
@@ -1736,7 +1736,7 @@ pub const all_features = blk: {
|
|
|
1736
1736
|
const ti = @typeInfo(Feature);
|
|
1737
1737
|
for (&result, 0..) |*elem, i| {
|
|
1738
1738
|
elem.index = i;
|
|
1739
|
-
elem.name = ti.@"enum".
|
|
1739
|
+
elem.name = ti.@"enum".field_names[i];
|
|
1740
1740
|
}
|
|
1741
1741
|
break :blk result;
|
|
1742
1742
|
};
|