Function default [src]

The default VersionRange represents the range that the Zig Standard Library bases its abstractions on.

Prototype

pub fn default(arch: Cpu.Arch, tag: Tag, abi: Abi) VersionRange

Parameters

arch: Cpu.Archtag: Tagabi: Abi

Source

pub fn default(arch: Cpu.Arch, tag: Tag, abi: Abi) VersionRange { return switch (tag) { .freestanding, .other, .managarm, .haiku, .plan9, .serenity, .illumos, .ps3, .ps4, .ps5, .emscripten, .mesa3d, => .{ .none = {} }, .contiki => .{ .semver = .{ .min = .{ .major = 4, .minor = 0, .patch = 0 }, .max = .{ .major = 5, .minor = 0, .patch = 0 }, }, }, .fuchsia => .{ .semver = .{ .min = .{ .major = 1, .minor = 0, .patch = 0 }, .max = .{ .major = 27, .minor = 0, .patch = 0 }, }, }, .hermit => .{ .semver = .{ .min = .{ .major = 0, .minor = 5, .patch = 0 }, .max = .{ .major = 0, .minor = 11, .patch = 0 }, }, }, .aix => .{ .semver = .{ .min = .{ .major = 7, .minor = 2, .patch = 5 }, .max = .{ .major = 7, .minor = 3, .patch = 3 }, }, }, .hurd => .{ .hurd = .{ .range = .{ .min = .{ .major = 0, .minor = 9, .patch = 0 }, .max = .{ .major = 0, .minor = 9, .patch = 0 }, }, .glibc = .{ .major = 2, .minor = 28, .patch = 0 }, }, }, .linux => .{ .linux = .{ .range = .{ .min = blk: { const default_min: std.SemanticVersion = .{ .major = 5, .minor = 10, .patch = 0 }; for (std.zig.target.available_libcs) |libc| { if (libc.arch != arch or libc.os != tag or libc.abi != abi) continue; if (libc.os_ver) |min| { if (min.order(default_min) == .gt) break :blk min; } } break :blk default_min; }, .max = .{ .major = 6, .minor = 16, .patch = 0 }, }, .glibc = blk: { // For 32-bit targets that traditionally used 32-bit time, we require // glibc 2.34 for full 64-bit time support. For everything else, we only // require glibc 2.31. const default_min: std.SemanticVersion = switch (arch) { .arm, .armeb, .csky, .m68k, .mips, .mipsel, .powerpc, .sparc, .x86, => .{ .major = 2, .minor = 34, .patch = 0 }, .mips64, .mips64el, => if (abi == .gnuabin32) .{ .major = 2, .minor = 34, .patch = 0 } else .{ .major = 2, .minor = 31, .patch = 0 }, else => .{ .major = 2, .minor = 31, .patch = 0 }, }; for (std.zig.target.available_libcs) |libc| { if (libc.os != tag or libc.arch != arch or libc.abi != abi) continue; if (libc.glibc_min) |min| { if (min.order(default_min) == .gt) break :blk min; } } break :blk default_min; }, .android = 29, }, }, .rtems => .{ .semver = .{ .min = .{ .major = 5, .minor = 1, .patch = 0 }, .max = .{ .major = 6, .minor = 1, .patch = 0 }, }, }, .zos => .{ .semver = .{ .min = .{ .major = 2, .minor = 5, .patch = 0 }, .max = .{ .major = 3, .minor = 1, .patch = 0 }, }, }, .dragonfly => .{ .semver = .{ .min = .{ .major = 6, .minor = 0, .patch = 0 }, .max = .{ .major = 6, .minor = 4, .patch = 1 }, }, }, .freebsd => .{ .semver = .{ .min = blk: { const default_min: std.SemanticVersion = .{ .major = 14, .minor = 0, .patch = 0 }; for (std.zig.target.available_libcs) |libc| { if (libc.arch != arch or libc.os != tag or libc.abi != abi) continue; if (libc.os_ver) |min| { if (min.order(default_min) == .gt) break :blk min; } } break :blk default_min; }, .max = .{ .major = 14, .minor = 3, .patch = 0 }, }, }, .netbsd => .{ .semver = .{ .min = blk: { const default_min: std.SemanticVersion = .{ .major = 10, .minor = 1, .patch = 0 }; for (std.zig.target.available_libcs) |libc| { if (libc.arch != arch or libc.os != tag or libc.abi != abi) continue; if (libc.os_ver) |min| { if (min.order(default_min) == .gt) break :blk min; } } break :blk default_min; }, .max = .{ .major = 10, .minor = 1, .patch = 0 }, }, }, .openbsd => .{ .semver = .{ .min = .{ .major = 7, .minor = 6, .patch = 0 }, .max = .{ .major = 7, .minor = 7, .patch = 0 }, }, }, .driverkit => .{ .semver = .{ .min = .{ .major = 20, .minor = 0, .patch = 0 }, .max = .{ .major = 25, .minor = 0, .patch = 0 }, }, }, .macos => .{ .semver = .{ .min = .{ .major = 13, .minor = 0, .patch = 0 }, .max = .{ .major = 15, .minor = 6, .patch = 0 }, }, }, .ios => .{ .semver = .{ .min = .{ .major = 15, .minor = 0, .patch = 0 }, .max = .{ .major = 18, .minor = 6, .patch = 0 }, }, }, .tvos => .{ .semver = .{ .min = .{ .major = 15, .minor = 0, .patch = 0 }, .max = .{ .major = 18, .minor = 5, .patch = 0 }, }, }, .visionos => .{ .semver = .{ .min = .{ .major = 1, .minor = 0, .patch = 0 }, .max = .{ .major = 2, .minor = 5, .patch = 0 }, }, }, .watchos => .{ .semver = .{ .min = .{ .major = 8, .minor = 0, .patch = 0 }, .max = .{ .major = 11, .minor = 6, .patch = 0 }, }, }, .solaris => .{ .semver = .{ .min = .{ .major = 11, .minor = 0, .patch = 0 }, .max = .{ .major = 11, .minor = 4, .patch = 0 }, }, }, .windows => .{ .windows = .{ .min = .win10, .max = WindowsVersion.latest, }, }, .uefi => .{ .semver = .{ .min = .{ .major = 2, .minor = 0, .patch = 0 }, .max = .{ .major = 2, .minor = 11, .patch = 0 }, }, }, .@"3ds" => .{ .semver = .{ // These signify release versions (https://www.3dbrew.org/wiki/NCCH/Extended_Header#ARM11_Kernel_Capabilities) // which are different from user-facing system versions (https://www.3dbrew.org/wiki/Home_Menu#System_Versions_List). // // Multiple system versions could refer to the same release version. // The comment indicates the system version that release version was introduced (for minimum) and the latest (for maximum). .min = .{ .major = 2, .minor = 27, .patch = 0 }, // 1.0.0-0 .max = .{ .major = 2, .minor = 58, .patch = 0 }, // 11.17.0-50 }, }, .vita => .{ .semver = .{ // 1.3 is the first public release .min = .{ .major = 1, .minor = 3, .patch = 0 }, .max = .{ .major = 3, .minor = 60, .patch = 0 }, }, }, .wasi => .{ .semver = .{ .min = .{ .major = 0, .minor = 1, .patch = 0 }, .max = .{ .major = 0, .minor = 2, .patch = 2 }, }, }, .amdhsa => .{ .semver = .{ .min = .{ .major = 5, .minor = 0, .patch = 0 }, .max = .{ .major = 6, .minor = 4, .patch = 2 }, }, }, .amdpal => .{ .semver = .{ .min = .{ .major = 1, .minor = 1, .patch = 0 }, .max = .{ .major = 3, .minor = 5, .patch = 0 }, }, }, .cuda => .{ .semver = .{ .min = .{ .major = 11, .minor = 0, .patch = 1 }, .max = .{ .major = 12, .minor = 9, .patch = 1 }, }, }, .nvcl, .opencl, => .{ .semver = .{ .min = .{ .major = 2, .minor = 2, .patch = 0 }, .max = .{ .major = 3, .minor = 0, .patch = 17 }, }, }, .opengl => .{ .semver = .{ .min = .{ .major = 4, .minor = 5, .patch = 0 }, .max = .{ .major = 4, .minor = 6, .patch = 0 }, }, }, .vulkan => .{ .semver = .{ .min = .{ .major = 1, .minor = 2, .patch = 0 }, .max = .{ .major = 1, .minor = 4, .patch = 321 }, }, }, }; }