@zigc/lib 0.17.0-dev.56 → 0.17.0-dev.633

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.
Files changed (1960) hide show
  1. package/c/fcntl.zig +5 -0
  2. package/c/inttypes.zig +0 -10
  3. package/c/math.zig +25 -96
  4. package/c/pthread.zig +57 -0
  5. package/c/search.zig +1 -27
  6. package/c/stdlib/drand48.zig +0 -57
  7. package/c/stdlib.zig +31 -121
  8. package/c/string.zig +20 -7
  9. package/c/strings.zig +0 -38
  10. package/c/unistd.zig +28 -26
  11. package/c/wchar.zig +10 -0
  12. package/c.zig +2 -2
  13. package/{std/Build → compiler/Maker}/Fuzz.zig +177 -89
  14. package/compiler/Maker/Graph.zig +85 -0
  15. package/compiler/Maker/PkgConfig.zig +121 -0
  16. package/compiler/Maker/ScannedConfig.zig +370 -0
  17. package/compiler/Maker/Step/CheckFile.zig +63 -0
  18. package/compiler/Maker/Step/Compile.zig +1390 -0
  19. package/compiler/Maker/Step/ConfigHeader.zig +610 -0
  20. package/compiler/Maker/Step/FindProgram.zig +120 -0
  21. package/compiler/Maker/Step/Fmt.zig +65 -0
  22. package/compiler/Maker/Step/InstallArtifact.zig +141 -0
  23. package/compiler/Maker/Step/InstallDir.zig +99 -0
  24. package/compiler/Maker/Step/InstallFile.zig +26 -0
  25. package/compiler/Maker/Step/ObjCopy.zig +173 -0
  26. package/compiler/Maker/Step/Options.zig +104 -0
  27. package/compiler/Maker/Step/Run.zig +2375 -0
  28. package/compiler/Maker/Step/TranslateC.zig +152 -0
  29. package/compiler/Maker/Step/UpdateSourceFiles.zig +89 -0
  30. package/compiler/Maker/Step/WriteFile.zig +294 -0
  31. package/compiler/Maker/Step.zig +894 -0
  32. package/{std/Build → compiler/Maker}/Watch/FsEvents.zig +33 -24
  33. package/{std/Build → compiler/Maker}/Watch.zig +89 -68
  34. package/{std/Build → compiler/Maker}/WebServer.zig +145 -118
  35. package/compiler/Maker.zig +2061 -0
  36. package/compiler/aro/aro/CodeGen.zig +7 -8
  37. package/compiler/aro/aro/Compilation.zig +17 -17
  38. package/compiler/aro/aro/Driver.zig +18 -16
  39. package/compiler/aro/aro/Parser.zig +20 -15
  40. package/compiler/aro/aro/Pragma.zig +3 -2
  41. package/compiler/aro/aro/Preprocessor.zig +11 -8
  42. package/compiler/aro/aro/pragmas/message.zig +3 -2
  43. package/compiler/aro/aro/text_literal.zig +3 -2
  44. package/compiler/aro/assembly_backend/x86_64.zig +4 -4
  45. package/compiler/aro/backend/Ir/x86/Renderer.zig +3 -3
  46. package/compiler/configurer.zig +1402 -0
  47. package/compiler/reduce/Walk.zig +8 -13
  48. package/compiler/resinator/compile.zig +1 -1
  49. package/compiler/resinator/cvtres.zig +4 -4
  50. package/compiler/resinator/errors.zig +7 -7
  51. package/compiler/resinator/ico.zig +4 -4
  52. package/compiler/resinator/parse.zig +2 -2
  53. package/compiler/resinator/res.zig +1 -1
  54. package/compiler/std-docs.zig +17 -38
  55. package/compiler/test_runner.zig +25 -15
  56. package/compiler/translate-c/MacroTranslator.zig +1 -1
  57. package/compiler/translate-c/Translator.zig +2 -2
  58. package/compiler/translate-c/ast.zig +16 -23
  59. package/compiler/translate-c/main.zig +1 -1
  60. package/compiler_rt/addf3.zig +1 -1
  61. package/compiler_rt/arm.zig +3 -3
  62. package/compiler_rt/atomics.zig +1 -1
  63. package/compiler_rt/comparef.zig +3 -3
  64. package/compiler_rt/cos.zig +1 -1
  65. package/compiler_rt/count0bits.zig +1 -1
  66. package/compiler_rt/divdf3.zig +2 -2
  67. package/compiler_rt/divsf3.zig +1 -1
  68. package/compiler_rt/divtf3.zig +1 -1
  69. package/compiler_rt/divxf3.zig +1 -1
  70. package/compiler_rt/extendf.zig +5 -5
  71. package/compiler_rt/fabs.zig +1 -1
  72. package/compiler_rt/float_from_int.zig +4 -5
  73. package/compiler_rt/fmax.zig +1 -1
  74. package/compiler_rt/fmin.zig +1 -1
  75. package/compiler_rt/fmod.zig +2 -2
  76. package/compiler_rt/int_from_float.zig +1 -1
  77. package/compiler_rt/limb64.zig +3 -2
  78. package/compiler_rt/mulf3.zig +2 -2
  79. package/compiler_rt/rem_pio2l.zig +1 -1
  80. package/compiler_rt/sin.zig +1 -1
  81. package/compiler_rt/sincos.zig +1 -1
  82. package/compiler_rt/ssp.zig +2 -2
  83. package/compiler_rt/tan.zig +1 -1
  84. package/compiler_rt/truncf.zig +3 -3
  85. package/compiler_rt/trunctfhf2.zig +3 -0
  86. package/compiler_rt.zig +5 -26
  87. package/docs/main.js +8 -8
  88. package/docs/wasm/Walk.zig +1 -3
  89. package/docs/wasm/html_render.zig +1 -2
  90. package/docs/wasm/markdown/Parser.zig +16 -20
  91. package/fuzzer.zig +5 -3
  92. package/include/__clang_spirv_builtins.h +12 -12
  93. package/include/__float_float.h +176 -0
  94. package/include/__float_header_macro.h +12 -0
  95. package/include/__float_infinity_nan.h +20 -0
  96. package/include/amo.h +131 -0
  97. package/include/amxavx512intrin.h +215 -1
  98. package/include/amxintrin.h +0 -2
  99. package/include/arm_acle.h +37 -27
  100. package/include/arm_neon.h +218 -82
  101. package/include/arm_sme.h +8 -8
  102. package/include/arm_sve.h +4162 -3782
  103. package/include/avx10_2_512bf16intrin.h +19 -12
  104. package/include/avx10_2_512convertintrin.h +1 -1
  105. package/include/avx10_2_512niintrin.h +31 -31
  106. package/include/avx10_2_512satcvtdsintrin.h +1 -1
  107. package/include/avx10_2bf16intrin.h +54 -45
  108. package/include/avx10_2convertintrin.h +2 -2
  109. package/include/avx10_2copyintrin.h +1 -1
  110. package/include/avx10_2niintrin.h +14 -14
  111. package/include/avx10_2satcvtdsintrin.h +2 -2
  112. package/include/avx2intrin.h +275 -377
  113. package/include/avx512bf16intrin.h +25 -16
  114. package/include/avx512bitalgintrin.h +19 -30
  115. package/include/avx512bwintrin.h +386 -505
  116. package/include/avx512cdintrin.h +42 -55
  117. package/include/avx512dqintrin.h +132 -161
  118. package/include/avx512fintrin.h +1015 -1424
  119. package/include/avx512fp16intrin.h +112 -110
  120. package/include/avx512ifmaintrin.h +32 -34
  121. package/include/avx512ifmavlintrin.h +73 -46
  122. package/include/avx512vbmi2intrin.h +43 -32
  123. package/include/avx512vbmiintrin.h +19 -27
  124. package/include/avx512vbmivlintrin.h +35 -49
  125. package/include/avx512vlbf16intrin.h +32 -22
  126. package/include/avx512vlbitalgintrin.h +37 -53
  127. package/include/avx512vlbwintrin.h +470 -573
  128. package/include/avx512vlcdintrin.h +74 -102
  129. package/include/avx512vldqintrin.h +110 -127
  130. package/include/avx512vlfp16intrin.h +130 -111
  131. package/include/avx512vlintrin.h +945 -1299
  132. package/include/avx512vlvbmi2intrin.h +78 -63
  133. package/include/avx512vlvnniintrin.h +21 -18
  134. package/include/avx512vlvp2intersectintrin.h +2 -2
  135. package/include/avx512vnniintrin.h +10 -10
  136. package/include/avx512vp2intersectintrin.h +1 -2
  137. package/include/avx512vpopcntdqintrin.h +8 -10
  138. package/include/avx512vpopcntdqvlintrin.h +17 -15
  139. package/include/avxifmaintrin.h +16 -0
  140. package/include/avxintrin.h +165 -241
  141. package/include/avxvnniint16intrin.h +118 -99
  142. package/include/avxvnniint8intrin.h +56 -32
  143. package/include/avxvnniintrin.h +16 -8
  144. package/include/cpuid.h +101 -4
  145. package/include/emmintrin.h +168 -168
  146. package/include/f16cintrin.h +23 -9
  147. package/include/float.h +16 -155
  148. package/include/fma4intrin.h +98 -96
  149. package/include/fmaintrin.h +96 -66
  150. package/include/gfniintrin.h +21 -16
  151. package/include/hexagon_types.h +23 -20
  152. package/include/hvx_hexagon_protos.h +649 -860
  153. package/include/immintrin.h +0 -12
  154. package/include/intrin.h +4 -0
  155. package/include/lasxintrin.h +113 -0
  156. package/include/llvm_libc_wrappers/assert.h +3 -5
  157. package/include/llvm_libc_wrappers/ctype.h +3 -115
  158. package/include/llvm_libc_wrappers/inttypes.h +3 -5
  159. package/include/llvm_libc_wrappers/stdio.h +10 -38
  160. package/include/llvm_libc_wrappers/stdlib.h +3 -24
  161. package/include/llvm_libc_wrappers/string.h +2 -70
  162. package/include/llvm_libc_wrappers/time.h +4 -10
  163. package/include/mmintrin.h +188 -257
  164. package/include/module.modulemap +23 -4
  165. package/include/movrs_avx10_2_512intrin.h +2 -2
  166. package/include/movrs_avx10_2intrin.h +4 -4
  167. package/include/pmmintrin.h +12 -24
  168. package/include/ptrauth.h +16 -2
  169. package/include/riscv_mips.h +34 -0
  170. package/include/riscv_nds.h +89 -0
  171. package/include/sifive_vector.h +58 -2
  172. package/include/sm4evexintrin.h +2 -2
  173. package/include/smmintrin.h +77 -59
  174. package/include/spirvintrin.h +194 -0
  175. package/include/stddefer.h +19 -0
  176. package/include/tmmintrin.h +116 -147
  177. package/include/vaesintrin.h +1 -2
  178. package/include/xmmintrin.h +44 -70
  179. package/include/xopintrin.h +20 -10
  180. package/init/build.zig +1 -3
  181. package/libc/darwin/SDKSettings.json +1 -1
  182. package/libc/darwin/libSystem.tbd +88 -87
  183. package/libc/include/aarch64-linux-any/asm/hwcap.h +1 -0
  184. package/libc/include/aarch64-linux-any/asm/unistd_64.h +1 -0
  185. package/libc/include/aarch64-netbsd-none/aarch64/armreg.h +259 -22
  186. package/libc/include/aarch64-netbsd-none/aarch64/byte_swap.h +3 -2
  187. package/libc/include/aarch64-netbsd-none/aarch64/cpu.h +26 -1
  188. package/libc/include/aarch64-netbsd-none/aarch64/lwp_private.h +3 -0
  189. package/libc/include/aarch64-netbsd-none/aarch64/pmap.h +7 -33
  190. package/libc/include/aarch64-netbsd-none/aarch64/sljit_machdep.h +1 -1
  191. package/libc/include/aarch64-netbsd-none/aarch64/vmparam.h +4 -4
  192. package/libc/include/aarch64-netbsd-none/machine/armreg.h +259 -22
  193. package/libc/include/aarch64-netbsd-none/machine/byte_swap.h +3 -2
  194. package/libc/include/aarch64-netbsd-none/machine/cpu.h +26 -1
  195. package/libc/include/aarch64-netbsd-none/machine/lwp_private.h +3 -0
  196. package/libc/include/aarch64-netbsd-none/machine/pmap.h +7 -33
  197. package/libc/include/aarch64-netbsd-none/machine/sljit_machdep.h +1 -1
  198. package/libc/include/aarch64-netbsd-none/machine/vmparam.h +4 -4
  199. package/libc/include/aarch64-openbsd-none/arm64/cpu.h +7 -1
  200. package/libc/include/aarch64-openbsd-none/arm64/intr.h +9 -1
  201. package/libc/include/aarch64-openbsd-none/machine/cpu.h +7 -1
  202. package/libc/include/aarch64-openbsd-none/machine/intr.h +9 -1
  203. package/libc/include/any-darwin-any/AvailabilityInternal.h +10 -10
  204. package/libc/include/any-darwin-any/AvailabilityVersions.h +8 -0
  205. package/libc/include/any-darwin-any/mach/host_info.h +3 -1
  206. package/libc/include/any-darwin-any/mach/mach_voucher_types.h +2 -0
  207. package/libc/include/any-darwin-any/mach/vm_statistics.h +33 -2
  208. package/libc/include/any-darwin-any/spawn.h +3 -1
  209. package/libc/include/any-darwin-any/sys/_symbol_aliasing.h +12 -0
  210. package/libc/include/any-linux-any/asm-generic/errno.h +2 -0
  211. package/libc/include/any-linux-any/asm-generic/unistd.h +4 -1
  212. package/libc/include/any-linux-any/drm/amdgpu_drm.h +20 -6
  213. package/libc/include/any-linux-any/drm/amdxdna_accel.h +8 -0
  214. package/libc/include/any-linux-any/drm/drm_fourcc.h +6 -6
  215. package/libc/include/any-linux-any/drm/panfrost_drm.h +75 -1
  216. package/libc/include/any-linux-any/drm/panthor_drm.h +154 -3
  217. package/libc/include/any-linux-any/drm/rocket_accel.h +74 -24
  218. package/libc/include/any-linux-any/drm/xe_drm.h +89 -6
  219. package/libc/include/any-linux-any/linux/android/binder.h +1 -1
  220. package/libc/include/any-linux-any/linux/bpf.h +28 -0
  221. package/libc/include/any-linux-any/linux/btrfs.h +1 -0
  222. package/libc/include/any-linux-any/linux/btrfs_tree.h +32 -2
  223. package/libc/include/any-linux-any/linux/dma-buf.h +1 -0
  224. package/libc/include/any-linux-any/linux/dpll.h +1 -0
  225. package/libc/include/any-linux-any/linux/elf.h +2 -0
  226. package/libc/include/any-linux-any/linux/ethtool.h +21 -5
  227. package/libc/include/any-linux-any/linux/fs.h +1 -0
  228. package/libc/include/any-linux-any/linux/hyperv.h +1 -1
  229. package/libc/include/any-linux-any/linux/idxd.h +134 -134
  230. package/libc/include/any-linux-any/linux/if_alg.h +1 -1
  231. package/libc/include/any-linux-any/linux/if_link.h +1 -0
  232. package/libc/include/any-linux-any/linux/input-event-codes.h +4 -0
  233. package/libc/include/any-linux-any/linux/io_uring/bpf_filter.h +68 -0
  234. package/libc/include/any-linux-any/linux/io_uring/query.h +5 -1
  235. package/libc/include/any-linux-any/linux/io_uring.h +33 -2
  236. package/libc/include/any-linux-any/linux/iommufd.h +39 -0
  237. package/libc/include/any-linux-any/linux/kfd_ioctl.h +13 -3
  238. package/libc/include/any-linux-any/linux/kfd_sysfs.h +2 -1
  239. package/libc/include/any-linux-any/linux/kvm.h +30 -6
  240. package/libc/include/any-linux-any/linux/landlock.h +22 -8
  241. package/libc/include/any-linux-any/linux/magic.h +1 -0
  242. package/libc/include/any-linux-any/linux/mempolicy.h +3 -0
  243. package/libc/include/any-linux-any/linux/mount.h +11 -2
  244. package/libc/include/any-linux-any/linux/mptcp_pm.h +1 -1
  245. package/libc/include/any-linux-any/linux/mshv.h +2 -0
  246. package/libc/include/any-linux-any/linux/netfilter_bridge.h +5 -4
  247. package/libc/include/any-linux-any/linux/netfilter_ipv4.h +4 -5
  248. package/libc/include/any-linux-any/linux/netfilter_ipv6.h +3 -4
  249. package/libc/include/any-linux-any/linux/nfs.h +1 -1
  250. package/libc/include/any-linux-any/linux/nfsd_netlink.h +1 -0
  251. package/libc/include/any-linux-any/linux/nilfs2_api.h +2 -2
  252. package/libc/include/any-linux-any/linux/nilfs2_ondisk.h +97 -66
  253. package/libc/include/any-linux-any/linux/nl80211.h +104 -3
  254. package/libc/include/any-linux-any/linux/pci.h +7 -0
  255. package/libc/include/any-linux-any/linux/pci_regs.h +65 -6
  256. package/libc/include/any-linux-any/linux/pcitest.h +1 -0
  257. package/libc/include/any-linux-any/linux/perf_event.h +24 -3
  258. package/libc/include/any-linux-any/linux/pkt_sched.h +1 -0
  259. package/libc/include/any-linux-any/linux/prctl.h +30 -0
  260. package/libc/include/any-linux-any/linux/rseq.h +62 -5
  261. package/libc/include/any-linux-any/linux/shm.h +0 -1
  262. package/libc/include/any-linux-any/linux/stddef.h +4 -0
  263. package/libc/include/any-linux-any/linux/sysctl.h +1 -2
  264. package/libc/include/any-linux-any/linux/taskstats.h +12 -1
  265. package/libc/include/any-linux-any/linux/tcp.h +23 -3
  266. package/libc/include/any-linux-any/linux/typelimits.h +8 -0
  267. package/libc/include/any-linux-any/linux/ublk_cmd.h +120 -1
  268. package/libc/include/any-linux-any/linux/v4l2-controls.h +63 -0
  269. package/libc/include/any-linux-any/linux/vbox_vmmdev_types.h +2 -2
  270. package/libc/include/any-linux-any/linux/vduse.h +80 -5
  271. package/libc/include/any-linux-any/linux/version.h +3 -3
  272. package/libc/include/any-linux-any/linux/vfio.h +4 -0
  273. package/libc/include/any-linux-any/linux/videodev2.h +3 -0
  274. package/libc/include/any-linux-any/linux/virtio_ring.h +1 -2
  275. package/libc/include/any-linux-any/linux/vmclock-abi.h +20 -0
  276. package/libc/include/any-linux-any/rdma/bnxt_re-abi.h +16 -0
  277. package/libc/include/any-linux-any/rdma/ib_user_ioctl_cmds.h +16 -0
  278. package/libc/include/any-linux-any/rdma/mana-abi.h +3 -0
  279. package/libc/include/any-linux-any/scsi/scsi_bsg_ufs.h +8 -9
  280. package/libc/include/any-linux-any/sound/sof/tokens.h +6 -0
  281. package/libc/include/arc-linux-any/asm/swab.h +0 -63
  282. package/libc/include/arc-linux-any/asm/unistd_32.h +1 -0
  283. package/libc/include/arm-linux-any/asm/ptrace.h +0 -9
  284. package/libc/include/arm-linux-any/asm/unistd-eabi.h +1 -0
  285. package/libc/include/arm-linux-any/asm/unistd-oabi.h +1 -0
  286. package/libc/include/arm-netbsd-eabi/float.h +2 -1
  287. package/libc/include/arm-netbsd-eabi/machine/asm.h +48 -19
  288. package/libc/include/arm-netbsd-eabi/machine/byte_swap.h +121 -0
  289. package/libc/include/arm-netbsd-eabi/machine/cpu.h +1 -3
  290. package/libc/include/arm-netbsd-eabi/machine/float.h +2 -1
  291. package/libc/include/arm-netbsd-eabi/machine/lwp_private.h +81 -0
  292. package/libc/include/arm-netbsd-eabi/machine/mcontext.h +5 -51
  293. package/libc/include/arm-netbsd-eabi/machine/mutex.h +1 -1
  294. package/libc/include/arm-netbsd-eabi/machine/proc.h +2 -2
  295. package/libc/include/arm-netbsd-eabi/machine/profile.h +28 -96
  296. package/libc/include/arm-netbsd-eabi/machine/setjmp.h +7 -6
  297. package/libc/include/arm-netbsd-eabi/machine/sysarch.h +85 -0
  298. package/libc/include/csky-linux-any/asm/unistd_32.h +1 -0
  299. package/libc/include/generic-netbsd/altq/altq.h +2 -2
  300. package/libc/include/generic-netbsd/altq/altq_afmap.h +2 -1
  301. package/libc/include/generic-netbsd/altq/altq_classq.h +8 -6
  302. package/libc/include/generic-netbsd/altq/altq_jobs.h +37 -37
  303. package/libc/include/generic-netbsd/altq/altq_rmclass.h +8 -8
  304. package/libc/include/generic-netbsd/altq/altq_var.h +2 -2
  305. package/libc/include/generic-netbsd/arm/arm32/pmap.h +8 -32
  306. package/libc/include/generic-netbsd/arm/arm32/vmparam.h +5 -5
  307. package/libc/include/generic-netbsd/arm/asm.h +48 -19
  308. package/libc/include/generic-netbsd/arm/byte_swap.h +2 -2
  309. package/libc/include/generic-netbsd/arm/cpu.h +1 -3
  310. package/libc/include/generic-netbsd/arm/cputypes.h +12 -1
  311. package/libc/include/generic-netbsd/arm/float.h +2 -1
  312. package/libc/include/generic-netbsd/arm/lwp_private.h +81 -0
  313. package/libc/include/generic-netbsd/arm/mcontext.h +5 -51
  314. package/libc/include/generic-netbsd/arm/mutex.h +1 -1
  315. package/libc/include/generic-netbsd/arm/proc.h +2 -2
  316. package/libc/include/generic-netbsd/arm/profile.h +28 -96
  317. package/libc/include/generic-netbsd/arm/setjmp.h +7 -6
  318. package/libc/include/generic-netbsd/arpa/nameser.h +3 -3
  319. package/libc/include/generic-netbsd/arpa/nameser_compat.h +3 -3
  320. package/libc/include/generic-netbsd/assert.h +12 -22
  321. package/libc/include/generic-netbsd/bitstring.h +5 -5
  322. package/libc/include/generic-netbsd/cdbw.h +2 -2
  323. package/libc/include/generic-netbsd/crypto/cryptodev.h +99 -92
  324. package/libc/include/generic-netbsd/dev/i2c/emcfaninfo.h +234 -0
  325. package/libc/include/generic-netbsd/dev/i2c/emcfanreg.h +127 -0
  326. package/libc/include/generic-netbsd/dev/i2o/i2o.h +3 -366
  327. package/libc/include/generic-netbsd/dev/ic/hd44780var.h +3 -1
  328. package/libc/include/generic-netbsd/dev/ic/scmdreg.h +2 -2
  329. package/libc/include/generic-netbsd/dev/ic/stireg.h +777 -0
  330. package/libc/include/generic-netbsd/dev/ic/summitreg.h +214 -0
  331. package/libc/include/generic-netbsd/dev/iscsi/iscsi.h +1 -1
  332. package/libc/include/generic-netbsd/dev/pci/amrreg.h +2 -2
  333. package/libc/include/generic-netbsd/dev/pci/mlyreg.h +2 -2
  334. package/libc/include/generic-netbsd/dev/pci/pcidevs.h +177 -22
  335. package/libc/include/generic-netbsd/dev/pci/pcidevs_data.h +14971 -14588
  336. package/libc/include/generic-netbsd/dev/pci/pcireg.h +14 -14
  337. package/libc/include/generic-netbsd/dev/pckbc/pckbdreg.h +2 -1
  338. package/libc/include/generic-netbsd/dev/pcmcia/if_rayreg.h +2 -2
  339. package/libc/include/generic-netbsd/dev/raidframe/raidframeio.h +1 -1
  340. package/libc/include/generic-netbsd/dev/scsipi/scsi_disk.h +42 -7
  341. package/libc/include/generic-netbsd/dev/scsipi/scsi_spc.h +2 -2
  342. package/libc/include/generic-netbsd/dev/scsipi/scsipi_all.h +83 -2
  343. package/libc/include/generic-netbsd/dev/scsipi/scsipiconf.h +3 -1
  344. package/libc/include/generic-netbsd/dev/tc/sfbreg.h +3 -3
  345. package/libc/include/generic-netbsd/dev/tc/sticio.h +2 -2
  346. package/libc/include/generic-netbsd/dev/usb/umcpmio_hid_reports.h +499 -0
  347. package/libc/include/generic-netbsd/dev/usb/umcpmio_io.h +45 -0
  348. package/libc/include/generic-netbsd/dev/usb/usb.h +44 -6
  349. package/libc/include/generic-netbsd/dev/vndvar.h +2 -2
  350. package/libc/include/generic-netbsd/dev/wscons/wsconsio.h +19 -1
  351. package/libc/include/generic-netbsd/dev/wscons/wsksymdef.h +2 -2
  352. package/libc/include/generic-netbsd/dirent.h +1 -1
  353. package/libc/include/generic-netbsd/dlfcn.h +4 -2
  354. package/libc/include/generic-netbsd/elf.h +32 -20
  355. package/libc/include/generic-netbsd/elfdefinitions.h +1 -1
  356. package/libc/include/generic-netbsd/evbarm/intr.h +1 -1
  357. package/libc/include/generic-netbsd/evbmips/lwp_private.h +3 -0
  358. package/libc/include/generic-netbsd/execinfo.h +4 -2
  359. package/libc/include/generic-netbsd/fcntl.h +26 -2
  360. package/libc/include/generic-netbsd/float.h +58 -2
  361. package/libc/include/generic-netbsd/fmtmsg.h +2 -2
  362. package/libc/include/generic-netbsd/fs/hfs/libhfs.h +1 -1
  363. package/libc/include/generic-netbsd/fs/nilfs/nilfs_fs.h +2 -2
  364. package/libc/include/generic-netbsd/gelf.h +2 -2
  365. package/libc/include/generic-netbsd/i386/asm.h +12 -4
  366. package/libc/include/generic-netbsd/i386/byte_swap.h +2 -2
  367. package/libc/include/generic-netbsd/i386/cpu.h +15 -4
  368. package/libc/include/generic-netbsd/i386/elf_machdep.h +2 -1
  369. package/libc/include/generic-netbsd/i386/lwp_private.h +3 -0
  370. package/libc/include/generic-netbsd/i386/mcontext.h +6 -24
  371. package/libc/include/generic-netbsd/i386/param.h +9 -1
  372. package/libc/include/generic-netbsd/i386/pcb.h +6 -2
  373. package/libc/include/generic-netbsd/i386/ptrace.h +2 -2
  374. package/libc/include/generic-netbsd/i386/types.h +2 -1
  375. package/libc/include/generic-netbsd/i386/wchar_limits.h +1 -1
  376. package/libc/include/generic-netbsd/isofs/cd9660/cd9660_extern.h +6 -1
  377. package/libc/include/generic-netbsd/isofs/cd9660/cd9660_mount.h +7 -1
  378. package/libc/include/generic-netbsd/langinfo.h +2 -1
  379. package/libc/include/generic-netbsd/lauxlib.h +1 -1
  380. package/libc/include/generic-netbsd/libelf.h +6 -15
  381. package/libc/include/generic-netbsd/limits.h +1 -1
  382. package/libc/include/generic-netbsd/lua.h +1 -1
  383. package/libc/include/generic-netbsd/luaconf.h +1 -1
  384. package/libc/include/generic-netbsd/lualib.h +1 -1
  385. package/libc/include/generic-netbsd/lwp.h +1 -1
  386. package/libc/include/generic-netbsd/machine/ansi.h +2 -2
  387. package/libc/include/generic-netbsd/machine/aout_machdep.h +39 -2
  388. package/libc/include/generic-netbsd/machine/arm32/pmap.h +8 -32
  389. package/libc/include/generic-netbsd/machine/arm32/vmparam.h +5 -5
  390. package/libc/include/generic-netbsd/machine/asm.h +271 -2
  391. package/libc/include/generic-netbsd/machine/bswap.h +9 -1
  392. package/libc/include/generic-netbsd/machine/byte_swap.h +42 -64
  393. package/libc/include/generic-netbsd/machine/cdefs.h +7 -2
  394. package/libc/include/generic-netbsd/machine/cpu.h +207 -30
  395. package/libc/include/generic-netbsd/machine/cputypes.h +12 -1
  396. package/libc/include/generic-netbsd/machine/disklabel.h +41 -42
  397. package/libc/include/generic-netbsd/machine/elf_machdep.h +143 -2
  398. package/libc/include/generic-netbsd/machine/endian.h +1 -1
  399. package/libc/include/generic-netbsd/machine/fenv.h +35 -2
  400. package/libc/include/generic-netbsd/machine/float.h +58 -2
  401. package/libc/include/generic-netbsd/machine/frame.h +129 -2
  402. package/libc/include/generic-netbsd/machine/ieee.h +3 -2
  403. package/libc/include/generic-netbsd/machine/ieeefp.h +43 -2
  404. package/libc/include/generic-netbsd/machine/int_const.h +32 -2
  405. package/libc/include/generic-netbsd/machine/int_fmtio.h +380 -2
  406. package/libc/include/generic-netbsd/machine/int_limits.h +2 -2
  407. package/libc/include/generic-netbsd/machine/int_mwgwtypes.h +2 -2
  408. package/libc/include/generic-netbsd/machine/int_types.h +2 -2
  409. package/libc/include/generic-netbsd/machine/kcore.h +39 -2
  410. package/libc/include/generic-netbsd/machine/limits.h +2 -2
  411. package/libc/include/generic-netbsd/machine/lock.h +2 -2
  412. package/libc/include/generic-netbsd/machine/lwp_private.h +83 -0
  413. package/libc/include/generic-netbsd/machine/math.h +3 -2
  414. package/libc/include/generic-netbsd/machine/mcontext.h +149 -2
  415. package/libc/include/generic-netbsd/machine/mutex.h +127 -2
  416. package/libc/include/generic-netbsd/machine/param.h +90 -23
  417. package/libc/include/generic-netbsd/machine/pcb.h +54 -2
  418. package/libc/include/generic-netbsd/machine/pmap.h +262 -2
  419. package/libc/include/generic-netbsd/machine/proc.h +75 -2
  420. package/libc/include/generic-netbsd/machine/profile.h +116 -2
  421. package/libc/include/generic-netbsd/machine/psl.h +2 -2
  422. package/libc/include/generic-netbsd/machine/pte.h +346 -2
  423. package/libc/include/generic-netbsd/machine/ptrace.h +62 -2
  424. package/libc/include/generic-netbsd/machine/reg.h +124 -2
  425. package/libc/include/generic-netbsd/machine/reloc.h +2 -2
  426. package/libc/include/generic-netbsd/machine/setjmp.h +69 -2
  427. package/libc/include/generic-netbsd/machine/signal.h +39 -2
  428. package/libc/include/generic-netbsd/machine/sljit_machdep.h +1 -1
  429. package/libc/include/generic-netbsd/machine/sysarch.h +2 -84
  430. package/libc/include/generic-netbsd/machine/sysreg.h +354 -0
  431. package/libc/include/generic-netbsd/machine/trap.h +2 -2
  432. package/libc/include/generic-netbsd/machine/types.h +118 -6
  433. package/libc/include/generic-netbsd/machine/vmparam.h +235 -2
  434. package/libc/include/generic-netbsd/machine/wchar_limits.h +2 -2
  435. package/libc/include/generic-netbsd/math.h +19 -6
  436. package/libc/include/generic-netbsd/md2.h +6 -3
  437. package/libc/include/generic-netbsd/mips/asm.h +69 -17
  438. package/libc/include/generic-netbsd/mips/bswap.h +3 -1
  439. package/libc/include/generic-netbsd/mips/cpu.h +7 -7
  440. package/libc/include/generic-netbsd/mips/elf_machdep.h +2 -1
  441. package/libc/include/generic-netbsd/mips/fenv.h +2 -1
  442. package/libc/include/generic-netbsd/mips/float.h +3 -2
  443. package/libc/include/generic-netbsd/mips/frame.h +3 -2
  444. package/libc/include/generic-netbsd/mips/limits.h +4 -13
  445. package/libc/include/generic-netbsd/mips/lwp_private.h +87 -0
  446. package/libc/include/generic-netbsd/mips/mcontext.h +2 -53
  447. package/libc/include/generic-netbsd/mips/mips3_pte.h +2 -2
  448. package/libc/include/generic-netbsd/mips/mips_param.h +16 -2
  449. package/libc/include/generic-netbsd/mips/mutex.h +1 -1
  450. package/libc/include/generic-netbsd/mips/types.h +1 -1
  451. package/libc/include/generic-netbsd/mips/vmparam.h +1 -1
  452. package/libc/include/generic-netbsd/miscfs/kernfs/kernfs.h +2 -2
  453. package/libc/include/generic-netbsd/miscfs/procfs/procfs.h +33 -2
  454. package/libc/include/generic-netbsd/miscfs/specfs/specdev.h +1 -2
  455. package/libc/include/generic-netbsd/monetary.h +2 -1
  456. package/libc/include/generic-netbsd/net/agr/if_agrioctl.h +2 -2
  457. package/libc/include/generic-netbsd/net/bpf.h +11 -4
  458. package/libc/include/generic-netbsd/net/bpfdesc.h +1 -1
  459. package/libc/include/generic-netbsd/net/dlt.h +222 -48
  460. package/libc/include/generic-netbsd/net/if.h +20 -5
  461. package/libc/include/generic-netbsd/net/if_bridgevar.h +2 -3
  462. package/libc/include/generic-netbsd/net/if_ether.h +4 -3
  463. package/libc/include/generic-netbsd/net/if_lagg.h +2 -2
  464. package/libc/include/generic-netbsd/net/if_media.h +2 -2
  465. package/libc/include/generic-netbsd/net/if_ppp.h +1 -3
  466. package/libc/include/generic-netbsd/net/if_stats.h +19 -5
  467. package/libc/include/generic-netbsd/net/net_stats.h +13 -6
  468. package/libc/include/generic-netbsd/net/npf.h +33 -5
  469. package/libc/include/generic-netbsd/net/pfkeyv2.h +1 -1
  470. package/libc/include/generic-netbsd/net/route.h +4 -4
  471. package/libc/include/generic-netbsd/net80211/ieee80211_node.h +3 -2
  472. package/libc/include/generic-netbsd/net80211/ieee80211_var.h +2 -2
  473. package/libc/include/generic-netbsd/netbt/hci.h +3 -3
  474. package/libc/include/generic-netbsd/netdb.h +2 -2
  475. package/libc/include/generic-netbsd/netinet/icmp6.h +6 -2
  476. package/libc/include/generic-netbsd/netinet/in.h +17 -17
  477. package/libc/include/generic-netbsd/netinet/in_var.h +5 -9
  478. package/libc/include/generic-netbsd/netinet/ip_mroute.h +24 -28
  479. package/libc/include/generic-netbsd/netinet/ip_var.h +2 -2
  480. package/libc/include/generic-netbsd/netinet/sctp.h +4 -4
  481. package/libc/include/generic-netbsd/netinet/tcp_var.h +2 -2
  482. package/libc/include/generic-netbsd/netinet/tcp_vtw.h +2 -2
  483. package/libc/include/generic-netbsd/netinet6/in6_var.h +7 -33
  484. package/libc/include/generic-netbsd/netinet6/ip6_var.h +2 -2
  485. package/libc/include/generic-netbsd/nfs/krpc.h +9 -4
  486. package/libc/include/generic-netbsd/nfs/nfs.h +5 -3
  487. package/libc/include/generic-netbsd/nfs/nfsdiskless.h +37 -20
  488. package/libc/include/generic-netbsd/nfs/nfsm_subs.h +4 -7
  489. package/libc/include/generic-netbsd/nfs/nfsmount.h +3 -4
  490. package/libc/include/generic-netbsd/nfs/nfsnode.h +9 -6
  491. package/libc/include/generic-netbsd/nfs/nfsproto.h +5 -2
  492. package/libc/include/generic-netbsd/nfs/nfsrtt.h +8 -4
  493. package/libc/include/generic-netbsd/nfs/nfsrvcache.h +9 -3
  494. package/libc/include/generic-netbsd/nfs/rpcv2.h +5 -3
  495. package/libc/include/generic-netbsd/nfs/xdr_subs.h +6 -5
  496. package/libc/include/generic-netbsd/nl_types.h +3 -1
  497. package/libc/include/generic-netbsd/ntfs/ntfs_inode.h +2 -2
  498. package/libc/include/generic-netbsd/poll.h +8 -2
  499. package/libc/include/generic-netbsd/prop/prop_object.h +48 -3
  500. package/libc/include/generic-netbsd/protocols/talkd.h +2 -2
  501. package/libc/include/generic-netbsd/pthread.h +51 -12
  502. package/libc/include/generic-netbsd/regex.h +2 -1
  503. package/libc/include/generic-netbsd/riscv/ansi.h +3 -0
  504. package/libc/include/generic-netbsd/riscv/aout_machdep.h +40 -0
  505. package/libc/include/generic-netbsd/riscv/asm.h +272 -0
  506. package/libc/include/generic-netbsd/riscv/bswap.h +11 -0
  507. package/libc/include/generic-netbsd/riscv/byte_swap.h +99 -0
  508. package/libc/include/generic-netbsd/riscv/cdefs.h +8 -0
  509. package/libc/include/generic-netbsd/riscv/cpu.h +242 -0
  510. package/libc/include/generic-netbsd/riscv/disklabel.h +68 -0
  511. package/libc/include/generic-netbsd/riscv/elf_machdep.h +144 -0
  512. package/libc/include/generic-netbsd/riscv/endian.h +3 -0
  513. package/libc/include/generic-netbsd/riscv/endian_machdep.h +3 -0
  514. package/libc/include/generic-netbsd/riscv/fenv.h +36 -0
  515. package/libc/include/generic-netbsd/riscv/float.h +59 -0
  516. package/libc/include/generic-netbsd/riscv/ieee.h +4 -0
  517. package/libc/include/generic-netbsd/riscv/ieeefp.h +44 -0
  518. package/libc/include/generic-netbsd/riscv/int_const.h +33 -0
  519. package/libc/include/generic-netbsd/riscv/int_fmtio.h +381 -0
  520. package/libc/include/generic-netbsd/riscv/int_limits.h +3 -0
  521. package/libc/include/generic-netbsd/riscv/int_mwgwtypes.h +3 -0
  522. package/libc/include/generic-netbsd/riscv/int_types.h +3 -0
  523. package/libc/include/generic-netbsd/riscv/kcore.h +40 -0
  524. package/libc/include/generic-netbsd/riscv/limits.h +3 -0
  525. package/libc/include/generic-netbsd/riscv/lock.h +3 -0
  526. package/libc/include/generic-netbsd/riscv/lwp_private.h +83 -0
  527. package/libc/include/generic-netbsd/riscv/math.h +4 -0
  528. package/libc/include/generic-netbsd/riscv/mcontext.h +150 -0
  529. package/libc/include/generic-netbsd/riscv/mutex.h +128 -0
  530. package/libc/include/generic-netbsd/riscv/param.h +110 -0
  531. package/libc/include/generic-netbsd/riscv/pcb.h +55 -0
  532. package/libc/include/generic-netbsd/riscv/pmap.h +263 -0
  533. package/libc/include/generic-netbsd/riscv/proc.h +76 -0
  534. package/libc/include/generic-netbsd/riscv/profile.h +117 -0
  535. package/libc/include/generic-netbsd/riscv/pte.h +347 -0
  536. package/libc/include/generic-netbsd/riscv/ptrace.h +63 -0
  537. package/libc/include/generic-netbsd/riscv/reg.h +125 -0
  538. package/libc/include/generic-netbsd/riscv/rwlock.h +1 -0
  539. package/libc/include/generic-netbsd/riscv/setjmp.h +70 -0
  540. package/libc/include/generic-netbsd/riscv/signal.h +40 -0
  541. package/libc/include/generic-netbsd/riscv/sysarch.h +3 -0
  542. package/libc/include/generic-netbsd/riscv/sysreg.h +354 -0
  543. package/libc/include/generic-netbsd/riscv/types.h +123 -0
  544. package/libc/include/generic-netbsd/riscv/vmparam.h +236 -0
  545. package/libc/include/generic-netbsd/riscv/wchar_limits.h +13 -0
  546. package/libc/include/generic-netbsd/rmd160.h +3 -3
  547. package/libc/include/generic-netbsd/rpc/xdr.h +3 -3
  548. package/libc/include/generic-netbsd/rpcsvc/yp_prot.h +3 -2
  549. package/libc/include/generic-netbsd/rump/rump_namei.h +2 -2
  550. package/libc/include/generic-netbsd/rump/rump_syscalls.h +4 -4
  551. package/libc/include/generic-netbsd/rump/rumpuser.h +6 -1
  552. package/libc/include/generic-netbsd/rump/rumpvnode_if.h +2 -2
  553. package/libc/include/generic-netbsd/sha1.h +3 -3
  554. package/libc/include/generic-netbsd/sha2.h +8 -1
  555. package/libc/include/generic-netbsd/signal.h +4 -4
  556. package/libc/include/generic-netbsd/sparc/asm.h +10 -1
  557. package/libc/include/generic-netbsd/sparc/bswap.h +9 -1
  558. package/libc/include/generic-netbsd/sparc/cgtworeg.h +2 -2
  559. package/libc/include/generic-netbsd/sparc/cpu.h +1 -1
  560. package/libc/include/generic-netbsd/sparc/float.h +3 -1
  561. package/libc/include/generic-netbsd/sparc/limits.h +4 -6
  562. package/libc/include/generic-netbsd/sparc/lwp_private.h +51 -0
  563. package/libc/include/generic-netbsd/sparc/mcontext.h +4 -22
  564. package/libc/include/generic-netbsd/sparc/mutex.h +1 -1
  565. package/libc/include/generic-netbsd/sparc/param.h +4 -2
  566. package/libc/include/generic-netbsd/sparc/pmap.h +2 -2
  567. package/libc/include/generic-netbsd/sparc/psl.h +6 -3
  568. package/libc/include/generic-netbsd/sparc/types.h +2 -2
  569. package/libc/include/generic-netbsd/sparc64/bswap.h +9 -1
  570. package/libc/include/generic-netbsd/sparc64/cpu.h +2 -2
  571. package/libc/include/generic-netbsd/sparc64/ctlreg.h +8 -7
  572. package/libc/include/generic-netbsd/sparc64/intr.h +1 -1
  573. package/libc/include/generic-netbsd/sparc64/lwp_private.h +3 -0
  574. package/libc/include/generic-netbsd/sparc64/mcontext.h +4 -4
  575. package/libc/include/generic-netbsd/sparc64/mutex.h +1 -1
  576. package/libc/include/generic-netbsd/sparc64/param.h +8 -2
  577. package/libc/include/generic-netbsd/sparc64/psl.h +7 -2
  578. package/libc/include/generic-netbsd/sparc64/pte.h +2 -2
  579. package/libc/include/generic-netbsd/sparc64/vmparam.h +1 -1
  580. package/libc/include/generic-netbsd/ssp/ssp.h +16 -6
  581. package/libc/include/generic-netbsd/stdalign.h +3 -3
  582. package/libc/include/generic-netbsd/stdarg.h +2 -2
  583. package/libc/include/generic-netbsd/stddef.h +90 -12
  584. package/libc/include/generic-netbsd/stdlib.h +11 -2
  585. package/libc/include/generic-netbsd/stdnoreturn.h +2 -2
  586. package/libc/include/generic-netbsd/string.h +66 -39
  587. package/libc/include/generic-netbsd/strings.h +17 -3
  588. package/libc/include/generic-netbsd/sys/atomic.h +10 -5
  589. package/libc/include/generic-netbsd/sys/bitops.h +2 -2
  590. package/libc/include/generic-netbsd/sys/bootblock.h +13 -2
  591. package/libc/include/generic-netbsd/sys/bswap.h +46 -20
  592. package/libc/include/generic-netbsd/sys/buf.h +3 -3
  593. package/libc/include/generic-netbsd/sys/cdefs.h +44 -6
  594. package/libc/include/generic-netbsd/sys/cdefs_aout.h +8 -1
  595. package/libc/include/generic-netbsd/sys/cdefs_elf.h +9 -2
  596. package/libc/include/generic-netbsd/sys/chio.h +2 -2
  597. package/libc/include/generic-netbsd/sys/clock.h +5 -1
  598. package/libc/include/generic-netbsd/sys/common_limits.h +3 -1
  599. package/libc/include/generic-netbsd/sys/condvar.h +1 -1
  600. package/libc/include/generic-netbsd/sys/conf.h +4 -3
  601. package/libc/include/generic-netbsd/sys/container_of.h +75 -0
  602. package/libc/include/generic-netbsd/sys/device.h +20 -13
  603. package/libc/include/generic-netbsd/sys/disk.h +8 -1
  604. package/libc/include/generic-netbsd/sys/disklabel.h +2 -2
  605. package/libc/include/generic-netbsd/sys/disklabel_gpt.h +7 -1
  606. package/libc/include/generic-netbsd/sys/efiio.h +1 -1
  607. package/libc/include/generic-netbsd/sys/elfdefinitions.h +2368 -1591
  608. package/libc/include/generic-netbsd/sys/endian.h +17 -17
  609. package/libc/include/generic-netbsd/sys/evcnt.h +15 -2
  610. package/libc/include/generic-netbsd/sys/event.h +3 -2
  611. package/libc/include/generic-netbsd/sys/exec.h +2 -2
  612. package/libc/include/generic-netbsd/sys/exec_elf.h +32 -20
  613. package/libc/include/generic-netbsd/sys/fcntl.h +26 -2
  614. package/libc/include/generic-netbsd/sys/fd_set.h +3 -3
  615. package/libc/include/generic-netbsd/sys/featuretest.h +24 -6
  616. package/libc/include/generic-netbsd/sys/file.h +18 -6
  617. package/libc/include/generic-netbsd/sys/filedesc.h +8 -4
  618. package/libc/include/generic-netbsd/sys/futex.h +11 -11
  619. package/libc/include/generic-netbsd/sys/ieee754.h +2 -2
  620. package/libc/include/generic-netbsd/sys/ipc.h +2 -2
  621. package/libc/include/generic-netbsd/sys/ipmi.h +4 -2
  622. package/libc/include/generic-netbsd/sys/ksem.h +1 -1
  623. package/libc/include/generic-netbsd/sys/ktrace.h +6 -4
  624. package/libc/include/generic-netbsd/sys/lock.h +2 -2
  625. package/libc/include/generic-netbsd/sys/lua.h +1 -1
  626. package/libc/include/generic-netbsd/sys/lwp.h +25 -92
  627. package/libc/include/generic-netbsd/sys/mbuf.h +15 -13
  628. package/libc/include/generic-netbsd/sys/mman.h +11 -3
  629. package/libc/include/generic-netbsd/sys/mount.h +1 -2
  630. package/libc/include/generic-netbsd/sys/msg.h +3 -3
  631. package/libc/include/generic-netbsd/sys/mutex.h +1 -3
  632. package/libc/include/generic-netbsd/sys/namei.h +32 -17
  633. package/libc/include/generic-netbsd/sys/param.h +11 -8
  634. package/libc/include/generic-netbsd/sys/pipe.h +10 -11
  635. package/libc/include/generic-netbsd/sys/poll.h +8 -2
  636. package/libc/include/generic-netbsd/sys/proc.h +15 -15
  637. package/libc/include/generic-netbsd/sys/ptrace.h +24 -7
  638. package/libc/include/generic-netbsd/sys/ptree.h +2 -1
  639. package/libc/include/generic-netbsd/sys/queue.h +37 -37
  640. package/libc/include/generic-netbsd/sys/rbtree.h +23 -9
  641. package/libc/include/generic-netbsd/sys/resourcevar.h +2 -2
  642. package/libc/include/generic-netbsd/sys/rmd160.h +3 -3
  643. package/libc/include/generic-netbsd/sys/rndio.h +1 -1
  644. package/libc/include/generic-netbsd/sys/rwlock.h +1 -2
  645. package/libc/include/generic-netbsd/sys/sched.h +1 -1
  646. package/libc/include/generic-netbsd/sys/sdt.h +181 -111
  647. package/libc/include/generic-netbsd/sys/sem.h +7 -2
  648. package/libc/include/generic-netbsd/sys/sha1.h +3 -3
  649. package/libc/include/generic-netbsd/sys/sha2.h +8 -1
  650. package/libc/include/generic-netbsd/sys/shm.h +2 -2
  651. package/libc/include/generic-netbsd/sys/siginfo.h +5 -5
  652. package/libc/include/generic-netbsd/sys/signal.h +1 -1
  653. package/libc/include/generic-netbsd/sys/sigtypes.h +4 -4
  654. package/libc/include/generic-netbsd/sys/sleepq.h +14 -27
  655. package/libc/include/generic-netbsd/sys/socket.h +3 -1
  656. package/libc/include/generic-netbsd/sys/socketvar.h +4 -4
  657. package/libc/include/generic-netbsd/sys/stat.h +5 -5
  658. package/libc/include/generic-netbsd/sys/stdalign.h +55 -0
  659. package/libc/include/generic-netbsd/sys/stdarg.h +2 -2
  660. package/libc/include/generic-netbsd/sys/stddef.h +156 -0
  661. package/libc/include/generic-netbsd/sys/swap.h +2 -2
  662. package/libc/include/generic-netbsd/sys/syncobj.h +9 -6
  663. package/libc/include/generic-netbsd/sys/syscall.h +29 -8
  664. package/libc/include/generic-netbsd/sys/syscallargs.h +89 -12
  665. package/libc/include/generic-netbsd/sys/sysctl.h +94 -86
  666. package/libc/include/generic-netbsd/sys/syslimits.h +8 -1
  667. package/libc/include/generic-netbsd/sys/syslog.h +6 -7
  668. package/libc/include/generic-netbsd/sys/time.h +10 -8
  669. package/libc/include/generic-netbsd/sys/tree.h +13 -13
  670. package/libc/include/generic-netbsd/sys/tty.h +2 -2
  671. package/libc/include/generic-netbsd/sys/ttycom.h +7 -1
  672. package/libc/include/generic-netbsd/sys/types.h +1 -1
  673. package/libc/include/generic-netbsd/sys/ucontext.h +46 -49
  674. package/libc/include/generic-netbsd/sys/un.h +12 -4
  675. package/libc/include/generic-netbsd/sys/unistd.h +103 -102
  676. package/libc/include/generic-netbsd/sys/unpcb.h +2 -2
  677. package/libc/include/generic-netbsd/sys/vmmeter.h +1 -39
  678. package/libc/include/generic-netbsd/sys/vnode_if.h +2 -2
  679. package/libc/include/generic-netbsd/sys/vnode_impl.h +6 -3
  680. package/libc/include/generic-netbsd/sys/wapbl_replay.h +2 -2
  681. package/libc/include/generic-netbsd/sys/wchan.h +37 -0
  682. package/libc/include/generic-netbsd/syslog.h +6 -7
  683. package/libc/include/generic-netbsd/time.h +44 -8
  684. package/libc/include/generic-netbsd/tzfile.h +11 -6
  685. package/libc/include/generic-netbsd/uchar.h +1 -1
  686. package/libc/include/generic-netbsd/ucontext.h +2 -1
  687. package/libc/include/generic-netbsd/ufs/ext2fs/ext2fs.h +31 -16
  688. package/libc/include/generic-netbsd/ufs/ext2fs/ext2fs_dir.h +1 -1
  689. package/libc/include/generic-netbsd/ufs/ext2fs/ext2fs_extents.h +5 -5
  690. package/libc/include/generic-netbsd/ufs/ext2fs/ext2fs_extern.h +4 -4
  691. package/libc/include/generic-netbsd/ufs/ffs/ffs_extern.h +1 -1
  692. package/libc/include/generic-netbsd/ufs/ffs/fs.h +3 -3
  693. package/libc/include/generic-netbsd/ufs/ufs/quota2.h +2 -2
  694. package/libc/include/generic-netbsd/unistd.h +11 -5
  695. package/libc/include/generic-netbsd/unwind.h +1 -1
  696. package/libc/include/generic-netbsd/util.h +15 -1
  697. package/libc/include/generic-netbsd/uvm/uvm.h +1 -5
  698. package/libc/include/generic-netbsd/uvm/uvm_extern.h +3 -4
  699. package/libc/include/generic-netbsd/uvm/uvm_object.h +2 -2
  700. package/libc/include/generic-netbsd/uvm/uvm_param.h +1 -1
  701. package/libc/include/generic-netbsd/uvm/uvm_swap.h +14 -3
  702. package/libc/include/generic-netbsd/wchar.h +7 -2
  703. package/libc/include/generic-netbsd/x86/bootinfo.h +4 -1
  704. package/libc/include/generic-netbsd/x86/cpu.h +18 -1
  705. package/libc/include/generic-netbsd/x86/cpu_extended_state.h +3 -1
  706. package/libc/include/generic-netbsd/x86/cpuvar.h +4 -1
  707. package/libc/include/generic-netbsd/x86/float.h +24 -1
  708. package/libc/include/generic-netbsd/x86/ieee.h +11 -7
  709. package/libc/include/generic-netbsd/x86/lwp_private.h +56 -0
  710. package/libc/include/generic-netbsd/x86/mutex.h +1 -1
  711. package/libc/include/generic-netbsd/x86/specialreg.h +111 -23
  712. package/libc/include/generic-openbsd/db.h +1 -7
  713. package/libc/include/generic-openbsd/ddb/db_interface.h +2 -1
  714. package/libc/include/generic-openbsd/fnmatch.h +6 -2
  715. package/libc/include/generic-openbsd/login_cap.h +3 -1
  716. package/libc/include/generic-openbsd/miscfs/fuse/fusefs_node.h +2 -1
  717. package/libc/include/generic-openbsd/net/bpf.h +3 -1
  718. package/libc/include/generic-openbsd/net/hfsc.h +4 -4
  719. package/libc/include/generic-openbsd/net/if.h +5 -1
  720. package/libc/include/generic-openbsd/net/if_bridge.h +48 -1
  721. package/libc/include/generic-openbsd/net/if_etherbridge.h +20 -7
  722. package/libc/include/generic-openbsd/net/if_media.h +26 -1
  723. package/libc/include/generic-openbsd/net/if_pflow.h +71 -20
  724. package/libc/include/generic-openbsd/net/if_pfsync.h +2 -2
  725. package/libc/include/generic-openbsd/net/if_sppp.h +2 -1
  726. package/libc/include/generic-openbsd/net/if_trunk.h +3 -2
  727. package/libc/include/generic-openbsd/net/if_types.h +2 -2
  728. package/libc/include/generic-openbsd/net/if_var.h +34 -12
  729. package/libc/include/generic-openbsd/net/netisr.h +1 -3
  730. package/libc/include/generic-openbsd/net/pfvar.h +154 -1
  731. package/libc/include/generic-openbsd/net/pfvar_priv.h +256 -1
  732. package/libc/include/generic-openbsd/net80211/ieee80211.h +76 -4
  733. package/libc/include/generic-openbsd/net80211/ieee80211_ioctl.h +3 -2
  734. package/libc/include/generic-openbsd/net80211/ieee80211_node.h +48 -2
  735. package/libc/include/generic-openbsd/net80211/ieee80211_proto.h +4 -1
  736. package/libc/include/generic-openbsd/net80211/ieee80211_var.h +18 -2
  737. package/libc/include/generic-openbsd/netinet/if_ether.h +12 -11
  738. package/libc/include/generic-openbsd/netinet/igmp_var.h +17 -3
  739. package/libc/include/generic-openbsd/netinet/in_pcb.h +2 -1
  740. package/libc/include/generic-openbsd/netinet/in_var.h +17 -59
  741. package/libc/include/generic-openbsd/netinet/ip.h +3 -2
  742. package/libc/include/generic-openbsd/netinet/tcp_timer.h +1 -2
  743. package/libc/include/generic-openbsd/netinet6/in6_var.h +15 -29
  744. package/libc/include/generic-openbsd/netinet6/ip6_var.h +1 -2
  745. package/libc/include/generic-openbsd/netinet6/mld6_var.h +17 -4
  746. package/libc/include/generic-openbsd/netinet6/nd6.h +2 -2
  747. package/libc/include/generic-openbsd/pthread.h +2 -2
  748. package/libc/include/generic-openbsd/signal.h +2 -2
  749. package/libc/include/generic-openbsd/sndio.h +6 -12
  750. package/libc/include/generic-openbsd/strings.h +5 -1
  751. package/libc/include/generic-openbsd/sys/device.h +4 -3
  752. package/libc/include/generic-openbsd/sys/disklabel.h +17 -5
  753. package/libc/include/generic-openbsd/sys/dkio.h +3 -5
  754. package/libc/include/generic-openbsd/sys/filedesc.h +3 -2
  755. package/libc/include/generic-openbsd/sys/mbuf.h +1 -1
  756. package/libc/include/generic-openbsd/sys/mman.h +7 -2
  757. package/libc/include/generic-openbsd/sys/mutex.h +10 -7
  758. package/libc/include/generic-openbsd/sys/namei.h +8 -7
  759. package/libc/include/generic-openbsd/sys/param.h +1 -1
  760. package/libc/include/generic-openbsd/sys/pledge.h +1 -3
  761. package/libc/include/generic-openbsd/sys/protosw.h +8 -1
  762. package/libc/include/generic-openbsd/sys/ptrace.h +4 -1
  763. package/libc/include/generic-openbsd/sys/sched.h +8 -1
  764. package/libc/include/generic-openbsd/sys/signal.h +4 -2
  765. package/libc/include/generic-openbsd/sys/socketvar.h +2 -1
  766. package/libc/include/generic-openbsd/sys/sockio.h +11 -1
  767. package/libc/include/generic-openbsd/sys/syscall.h +5 -3
  768. package/libc/include/generic-openbsd/sys/syscallargs.h +9 -2
  769. package/libc/include/generic-openbsd/sys/sysctl.h +7 -4
  770. package/libc/include/generic-openbsd/sys/types.h +6 -2
  771. package/libc/include/generic-openbsd/sys/videoio.h +143 -68
  772. package/libc/include/generic-openbsd/sys/xcall.h +2 -2
  773. package/libc/include/generic-openbsd/time.h +2 -2
  774. package/libc/include/generic-openbsd/unistd.h +2 -2
  775. package/libc/include/generic-openbsd/uvm/uvm_anon.h +2 -3
  776. package/libc/include/generic-openbsd/uvm/uvm_extern.h +1 -19
  777. package/libc/include/generic-openbsd/uvm/uvm_pager.h +3 -4
  778. package/libc/include/generic-openbsd/uvm/uvm_pmemrange.h +1 -2
  779. package/libc/include/generic-openbsd/uvm/uvm_swap.h +4 -1
  780. package/libc/include/generic-openbsd/uvm/uvm_vnode.h +3 -4
  781. package/libc/include/generic-openbsd/uvm/uvmexp.h +41 -35
  782. package/libc/include/hexagon-linux-any/asm/unistd_32.h +1 -0
  783. package/libc/include/loongarch-linux-any/asm/hwcap.h +1 -0
  784. package/libc/include/loongarch-linux-any/asm/kvm.h +1 -0
  785. package/libc/include/loongarch-linux-any/asm/kvm_para.h +1 -0
  786. package/libc/include/loongarch-linux-any/asm/unistd_32.h +2 -0
  787. package/libc/include/loongarch-linux-any/asm/unistd_64.h +2 -0
  788. package/libc/include/m68k-linux-any/asm/unistd_32.h +1 -0
  789. package/libc/include/m68k-netbsd-none/m68k/asm.h +11 -2
  790. package/libc/include/m68k-netbsd-none/m68k/bus_dma.h +2 -2
  791. package/libc/include/m68k-netbsd-none/m68k/byte_swap.h +2 -2
  792. package/libc/include/m68k-netbsd-none/m68k/cacheops_30.h +2 -2
  793. package/libc/include/m68k-netbsd-none/m68k/cacheops_40.h +3 -1
  794. package/libc/include/m68k-netbsd-none/m68k/cacheops_60.h +5 -3
  795. package/libc/include/m68k-netbsd-none/m68k/cpu.h +86 -59
  796. package/libc/include/m68k-netbsd-none/m68k/cpuframe.h +5 -5
  797. package/libc/include/m68k-netbsd-none/m68k/fenv.h +6 -4
  798. package/libc/include/m68k-netbsd-none/m68k/float.h +26 -1
  799. package/libc/include/m68k-netbsd-none/m68k/frame.h +31 -19
  800. package/libc/include/m68k-netbsd-none/m68k/ieee.h +13 -8
  801. package/libc/include/m68k-netbsd-none/m68k/ieeefp.h +3 -3
  802. package/libc/include/m68k-netbsd-none/m68k/int_limits.h +2 -2
  803. package/libc/include/m68k-netbsd-none/m68k/intr.h +211 -0
  804. package/libc/include/m68k-netbsd-none/m68k/kcore.h +31 -31
  805. package/libc/include/m68k-netbsd-none/m68k/lwp_private.h +64 -0
  806. package/libc/include/m68k-netbsd-none/m68k/m68k.h +3 -7
  807. package/libc/include/m68k-netbsd-none/m68k/mcontext.h +5 -36
  808. package/libc/include/m68k-netbsd-none/m68k/mmu_30.h +105 -0
  809. package/libc/include/m68k-netbsd-none/m68k/mmu_40.h +232 -0
  810. package/libc/include/m68k-netbsd-none/m68k/mmu_51.h +273 -0
  811. package/libc/include/m68k-netbsd-none/m68k/mutex.h +1 -1
  812. package/libc/include/m68k-netbsd-none/m68k/pcb.h +2 -2
  813. package/libc/include/m68k-netbsd-none/m68k/pmap_motorola.h +32 -23
  814. package/libc/include/m68k-netbsd-none/m68k/psl.h +26 -7
  815. package/libc/include/m68k-netbsd-none/m68k/pte_motorola.h +37 -26
  816. package/libc/include/m68k-netbsd-none/m68k/trap.h +7 -7
  817. package/libc/include/m68k-netbsd-none/mac68k/cpu.h +1 -57
  818. package/libc/include/m68k-netbsd-none/mac68k/intr.h +3 -2
  819. package/libc/include/m68k-netbsd-none/mac68k/lwp_private.h +3 -0
  820. package/libc/include/m68k-netbsd-none/mac68k/pmap.h +20 -2
  821. package/libc/include/m68k-netbsd-none/mac68k/z8530var.h +2 -2
  822. package/libc/include/m68k-netbsd-none/machine/cpu.h +1 -57
  823. package/libc/include/m68k-netbsd-none/machine/intr.h +3 -2
  824. package/libc/include/m68k-netbsd-none/machine/lwp_private.h +3 -0
  825. package/libc/include/m68k-netbsd-none/machine/pmap.h +20 -2
  826. package/libc/include/m68k-netbsd-none/machine/z8530var.h +2 -2
  827. package/libc/include/mips-linux-any/asm/errno.h +2 -0
  828. package/libc/include/mips-linux-any/asm/unistd_n32.h +1 -0
  829. package/libc/include/mips-linux-any/asm/unistd_n64.h +1 -0
  830. package/libc/include/mips-linux-any/asm/unistd_o32.h +1 -0
  831. package/libc/include/mips-netbsd-eabi/machine/lwp_private.h +3 -0
  832. package/libc/include/mips64-openbsd-none/machine/octeonvar.h +1 -27
  833. package/libc/include/mips64-openbsd-none/octeon/octeonvar.h +1 -27
  834. package/libc/include/mips64el-openbsd-none/loongson/apmvar.h +1 -1
  835. package/libc/include/mips64el-openbsd-none/loongson/param.h +1 -5
  836. package/libc/include/mips64el-openbsd-none/machine/apmvar.h +1 -1
  837. package/libc/include/mips64el-openbsd-none/machine/param.h +1 -5
  838. package/libc/include/powerpc-linux-any/asm/unistd_32.h +1 -0
  839. package/libc/include/powerpc-linux-any/asm/unistd_64.h +1 -0
  840. package/libc/include/powerpc-netbsd-eabi/evbppc/lwp_private.h +3 -0
  841. package/libc/include/powerpc-netbsd-eabi/float.h +3 -0
  842. package/libc/include/powerpc-netbsd-eabi/machine/ansi.h +3 -0
  843. package/libc/include/powerpc-netbsd-eabi/machine/aout_machdep.h +3 -0
  844. package/libc/include/powerpc-netbsd-eabi/machine/asm.h +3 -0
  845. package/libc/include/powerpc-netbsd-eabi/machine/cdefs.h +3 -0
  846. package/libc/include/powerpc-netbsd-eabi/machine/cpu.h +65 -0
  847. package/libc/include/powerpc-netbsd-eabi/machine/disklabel.h +69 -0
  848. package/libc/include/powerpc-netbsd-eabi/machine/elf_machdep.h +3 -0
  849. package/libc/include/powerpc-netbsd-eabi/machine/endian.h +3 -0
  850. package/libc/include/powerpc-netbsd-eabi/machine/fenv.h +3 -0
  851. package/libc/include/powerpc-netbsd-eabi/machine/float.h +3 -0
  852. package/libc/include/powerpc-netbsd-eabi/machine/frame.h +3 -0
  853. package/libc/include/powerpc-netbsd-eabi/machine/ieee.h +3 -0
  854. package/libc/include/powerpc-netbsd-eabi/machine/ieeefp.h +3 -0
  855. package/libc/include/powerpc-netbsd-eabi/machine/int_const.h +3 -0
  856. package/libc/include/powerpc-netbsd-eabi/machine/int_fmtio.h +3 -0
  857. package/libc/include/powerpc-netbsd-eabi/machine/int_limits.h +3 -0
  858. package/libc/include/powerpc-netbsd-eabi/machine/int_mwgwtypes.h +3 -0
  859. package/libc/include/powerpc-netbsd-eabi/machine/int_types.h +3 -0
  860. package/libc/include/powerpc-netbsd-eabi/machine/kcore.h +3 -0
  861. package/libc/include/powerpc-netbsd-eabi/machine/limits.h +3 -0
  862. package/libc/include/powerpc-netbsd-eabi/machine/lock.h +3 -0
  863. package/libc/include/powerpc-netbsd-eabi/machine/lwp_private.h +3 -0
  864. package/libc/include/powerpc-netbsd-eabi/machine/math.h +3 -0
  865. package/libc/include/powerpc-netbsd-eabi/machine/mcontext.h +3 -0
  866. package/libc/include/powerpc-netbsd-eabi/machine/mutex.h +3 -0
  867. package/libc/include/powerpc-netbsd-eabi/machine/param.h +43 -0
  868. package/libc/include/powerpc-netbsd-eabi/machine/pcb.h +3 -0
  869. package/libc/include/powerpc-netbsd-eabi/machine/pmap.h +3 -0
  870. package/libc/include/powerpc-netbsd-eabi/machine/proc.h +3 -0
  871. package/libc/include/powerpc-netbsd-eabi/machine/profile.h +3 -0
  872. package/libc/include/powerpc-netbsd-eabi/machine/psl.h +3 -0
  873. package/libc/include/powerpc-netbsd-eabi/machine/pte.h +3 -0
  874. package/libc/include/powerpc-netbsd-eabi/machine/ptrace.h +3 -0
  875. package/libc/include/powerpc-netbsd-eabi/machine/reg.h +3 -0
  876. package/libc/include/powerpc-netbsd-eabi/machine/reloc.h +3 -0
  877. package/libc/include/powerpc-netbsd-eabi/machine/setjmp.h +3 -0
  878. package/libc/include/powerpc-netbsd-eabi/machine/signal.h +3 -0
  879. package/libc/include/{mips-netbsd-eabi → powerpc-netbsd-eabi}/machine/sljit_machdep.h +1 -1
  880. package/libc/include/powerpc-netbsd-eabi/machine/trap.h +3 -0
  881. package/libc/include/powerpc-netbsd-eabi/machine/types.h +11 -0
  882. package/libc/include/powerpc-netbsd-eabi/machine/vmparam.h +3 -0
  883. package/libc/include/powerpc-netbsd-eabi/machine/wchar_limits.h +3 -0
  884. package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/asm.h +12 -2
  885. package/libc/include/powerpc-netbsd-eabi/powerpc/bswap.h +14 -0
  886. package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/cpu.h +3 -3
  887. package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/fenv.h +2 -1
  888. package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/ibm4xx/pmap.h +3 -3
  889. package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/ieee.h +7 -2
  890. package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/limits.h +4 -13
  891. package/libc/include/powerpc-netbsd-eabi/powerpc/lwp_private.h +79 -0
  892. package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/mcontext.h +6 -50
  893. package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/mutex.h +1 -1
  894. package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/oea/hid.h +2 -2
  895. package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/oea/pmap.h +2 -2
  896. package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/pmap.h +1 -1
  897. package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/psl.h +2 -2
  898. package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/vmparam.h +1 -1
  899. package/libc/include/powerpc-openbsd-eabihf/powerpc/intr.h +1 -4
  900. package/libc/include/powerpc64-openbsd-none/machine/atomic.h +3 -3
  901. package/libc/include/powerpc64-openbsd-none/powerpc64/atomic.h +3 -3
  902. package/libc/include/riscv-linux-any/asm/hwprobe.h +4 -0
  903. package/libc/include/riscv-linux-any/asm/kvm.h +3 -0
  904. package/libc/include/riscv-linux-any/asm/ptrace.h +37 -0
  905. package/libc/include/riscv-linux-any/asm/sigcontext.h +1 -0
  906. package/libc/include/riscv-linux-any/asm/unistd_32.h +1 -0
  907. package/libc/include/riscv-linux-any/asm/unistd_64.h +1 -0
  908. package/libc/include/riscv32-netbsd-none/machine/bswap.h +11 -0
  909. package/libc/include/riscv32-netbsd-none/machine/endian_machdep.h +3 -0
  910. package/libc/include/riscv32-netbsd-none/machine/rwlock.h +1 -0
  911. package/libc/include/riscv32-netbsd-none/machine/wchar_limits.h +4 -0
  912. package/libc/include/riscv64-netbsd-none/machine/bswap.h +11 -0
  913. package/libc/include/riscv64-netbsd-none/machine/endian_machdep.h +3 -0
  914. package/libc/include/riscv64-netbsd-none/machine/rwlock.h +1 -0
  915. package/libc/include/riscv64-netbsd-none/machine/wchar_limits.h +4 -0
  916. package/libc/include/riscv64-openbsd-none/machine/cpu.h +4 -8
  917. package/libc/include/riscv64-openbsd-none/machine/cpufunc.h +4 -4
  918. package/libc/include/riscv64-openbsd-none/machine/pmap.h +5 -1
  919. package/libc/include/riscv64-openbsd-none/machine/pte.h +9 -1
  920. package/libc/include/riscv64-openbsd-none/riscv64/cpu.h +4 -8
  921. package/libc/include/riscv64-openbsd-none/riscv64/cpufunc.h +4 -4
  922. package/libc/include/riscv64-openbsd-none/riscv64/pmap.h +5 -1
  923. package/libc/include/riscv64-openbsd-none/riscv64/pte.h +9 -1
  924. package/libc/include/s390x-linux-any/asm/unistd_64.h +1 -0
  925. package/libc/include/sparc-linux-any/asm/errno.h +2 -0
  926. package/libc/include/sparc-linux-any/asm/ioctls.h +4 -4
  927. package/libc/include/sparc-linux-any/asm/unistd_32.h +2 -0
  928. package/libc/include/sparc-linux-any/asm/unistd_64.h +2 -0
  929. package/libc/include/sparc-netbsd-none/float.h +3 -1
  930. package/libc/include/sparc-netbsd-none/machine/asm.h +10 -1
  931. package/libc/include/sparc-netbsd-none/machine/cgtworeg.h +2 -2
  932. package/libc/include/sparc-netbsd-none/machine/cpu.h +1 -1
  933. package/libc/include/sparc-netbsd-none/machine/float.h +3 -1
  934. package/libc/include/sparc-netbsd-none/machine/limits.h +4 -6
  935. package/libc/include/sparc-netbsd-none/machine/lwp_private.h +51 -0
  936. package/libc/include/sparc-netbsd-none/machine/mcontext.h +4 -22
  937. package/libc/include/sparc-netbsd-none/machine/mutex.h +1 -1
  938. package/libc/include/sparc-netbsd-none/machine/param.h +4 -2
  939. package/libc/include/sparc-netbsd-none/machine/pmap.h +2 -2
  940. package/libc/include/sparc-netbsd-none/machine/psl.h +6 -3
  941. package/libc/include/sparc-netbsd-none/machine/sxreg.h +5 -1
  942. package/libc/include/sparc-netbsd-none/machine/types.h +2 -2
  943. package/libc/include/sparc-netbsd-none/sparc/sxreg.h +5 -1
  944. package/libc/include/sparc64-netbsd-none/machine/cpu.h +2 -2
  945. package/libc/include/sparc64-netbsd-none/machine/ctlreg.h +8 -7
  946. package/libc/include/sparc64-netbsd-none/machine/intr.h +1 -1
  947. package/libc/include/sparc64-netbsd-none/machine/lwp_private.h +3 -0
  948. package/libc/include/sparc64-netbsd-none/machine/mcontext.h +4 -4
  949. package/libc/include/sparc64-netbsd-none/machine/mutex.h +1 -1
  950. package/libc/include/sparc64-netbsd-none/machine/param.h +8 -2
  951. package/libc/include/sparc64-netbsd-none/machine/psl.h +7 -2
  952. package/libc/include/sparc64-netbsd-none/machine/pte.h +2 -2
  953. package/libc/include/sparc64-netbsd-none/machine/vmparam.h +1 -1
  954. package/libc/include/x86-linux-any/asm/auxvec.h +0 -4
  955. package/libc/include/x86-linux-any/asm/kvm.h +13 -8
  956. package/libc/include/x86-linux-any/asm/svm.h +16 -16
  957. package/libc/include/x86-linux-any/asm/unistd_32.h +1 -0
  958. package/libc/include/x86-linux-any/asm/unistd_64.h +1 -0
  959. package/libc/include/x86-linux-any/asm/unistd_x32.h +1 -0
  960. package/libc/include/x86-netbsd-none/machine/asm.h +12 -4
  961. package/libc/include/x86-netbsd-none/machine/byte_swap.h +2 -2
  962. package/libc/include/x86-netbsd-none/machine/cpu.h +15 -4
  963. package/libc/include/x86-netbsd-none/machine/elf_machdep.h +2 -1
  964. package/libc/include/x86-netbsd-none/machine/lwp_private.h +3 -0
  965. package/libc/include/x86-netbsd-none/machine/mcontext.h +6 -24
  966. package/libc/include/x86-netbsd-none/machine/param.h +9 -1
  967. package/libc/include/x86-netbsd-none/machine/pcb.h +6 -2
  968. package/libc/include/x86-netbsd-none/machine/ptrace.h +2 -2
  969. package/libc/include/x86-netbsd-none/machine/types.h +2 -1
  970. package/libc/include/x86-openbsd-none/i386/specialreg.h +3 -1
  971. package/libc/include/x86-openbsd-none/machine/specialreg.h +3 -1
  972. package/libc/include/x86_64-netbsd-none/amd64/asm.h +11 -3
  973. package/libc/include/x86_64-netbsd-none/amd64/byte_swap.h +2 -2
  974. package/libc/include/x86_64-netbsd-none/amd64/cpu.h +13 -3
  975. package/libc/include/x86_64-netbsd-none/amd64/frame.h +2 -2
  976. package/libc/include/x86_64-netbsd-none/amd64/lwp_private.h +3 -0
  977. package/libc/include/x86_64-netbsd-none/amd64/mcontext.h +5 -23
  978. package/libc/include/x86_64-netbsd-none/amd64/param.h +23 -4
  979. package/libc/include/x86_64-netbsd-none/amd64/pcb.h +14 -3
  980. package/libc/include/x86_64-netbsd-none/amd64/ptrace.h +2 -2
  981. package/libc/include/x86_64-netbsd-none/amd64/types.h +2 -1
  982. package/libc/include/x86_64-netbsd-none/machine/asm.h +11 -3
  983. package/libc/include/x86_64-netbsd-none/machine/byte_swap.h +2 -2
  984. package/libc/include/x86_64-netbsd-none/machine/cpu.h +13 -3
  985. package/libc/include/x86_64-netbsd-none/machine/frame.h +2 -2
  986. package/libc/include/x86_64-netbsd-none/machine/lwp_private.h +3 -0
  987. package/libc/include/x86_64-netbsd-none/machine/mcontext.h +5 -23
  988. package/libc/include/x86_64-netbsd-none/machine/param.h +23 -4
  989. package/libc/include/x86_64-netbsd-none/machine/pcb.h +14 -3
  990. package/libc/include/x86_64-netbsd-none/machine/ptrace.h +2 -2
  991. package/libc/include/x86_64-netbsd-none/machine/types.h +2 -1
  992. package/libc/include/x86_64-openbsd-none/amd64/conf.h +11 -2
  993. package/libc/include/x86_64-openbsd-none/amd64/cpu.h +14 -4
  994. package/libc/include/x86_64-openbsd-none/amd64/cpufunc.h +2 -3
  995. package/libc/include/x86_64-openbsd-none/amd64/ghcb.h +2 -1
  996. package/libc/include/x86_64-openbsd-none/amd64/i82489var.h +2 -4
  997. package/libc/include/x86_64-openbsd-none/amd64/i8259.h +1 -53
  998. package/libc/include/x86_64-openbsd-none/amd64/intr.h +5 -2
  999. package/libc/include/x86_64-openbsd-none/amd64/intrdefs.h +9 -7
  1000. package/libc/include/x86_64-openbsd-none/amd64/kexec.h +48 -0
  1001. package/libc/include/x86_64-openbsd-none/amd64/specialreg.h +4 -1
  1002. package/libc/include/x86_64-openbsd-none/machine/conf.h +11 -2
  1003. package/libc/include/x86_64-openbsd-none/machine/cpu.h +14 -4
  1004. package/libc/include/x86_64-openbsd-none/machine/cpufunc.h +2 -3
  1005. package/libc/include/x86_64-openbsd-none/machine/ghcb.h +2 -1
  1006. package/libc/include/x86_64-openbsd-none/machine/i82489var.h +2 -4
  1007. package/libc/include/x86_64-openbsd-none/machine/i8259.h +1 -53
  1008. package/libc/include/x86_64-openbsd-none/machine/intr.h +5 -2
  1009. package/libc/include/x86_64-openbsd-none/machine/intrdefs.h +9 -7
  1010. package/libc/include/x86_64-openbsd-none/machine/kexec.h +48 -0
  1011. package/libc/include/x86_64-openbsd-none/machine/specialreg.h +4 -1
  1012. package/libc/include/xtensa-linux-any/asm/unistd_32.h +1 -0
  1013. package/libc/netbsd/abilists +0 -0
  1014. package/libc/netbsd/lib/csu/arch/riscv/crt0.S +62 -0
  1015. package/libc/netbsd/lib/csu/common/crt0-common.c +32 -7
  1016. package/libc/netbsd/lib/csu/common/csu-common.h +2 -0
  1017. package/libc/openbsd/abilists +0 -0
  1018. package/libcxx/include/__algorithm/all_of.h +11 -5
  1019. package/libcxx/include/__algorithm/comp.h +4 -0
  1020. package/libcxx/include/__algorithm/copy.h +28 -147
  1021. package/libcxx/include/__algorithm/copy_backward.h +9 -24
  1022. package/libcxx/include/__algorithm/copy_n.h +50 -16
  1023. package/libcxx/include/__algorithm/count.h +2 -2
  1024. package/libcxx/include/__algorithm/equal.h +43 -55
  1025. package/libcxx/include/__algorithm/fill.h +26 -8
  1026. package/libcxx/include/__algorithm/fill_n.h +32 -46
  1027. package/libcxx/include/__algorithm/find.h +96 -39
  1028. package/libcxx/include/__algorithm/find_end.h +105 -0
  1029. package/libcxx/include/__algorithm/for_each.h +18 -24
  1030. package/libcxx/include/__algorithm/for_each_n.h +20 -47
  1031. package/libcxx/include/__algorithm/for_each_n_segment.h +1 -1
  1032. package/libcxx/include/__algorithm/for_each_segment.h +26 -0
  1033. package/libcxx/include/__algorithm/generate.h +4 -2
  1034. package/libcxx/include/__algorithm/generate_n.h +19 -6
  1035. package/libcxx/include/__algorithm/is_permutation.h +4 -4
  1036. package/libcxx/include/__algorithm/iterator_operations.h +3 -0
  1037. package/libcxx/include/__algorithm/lexicographical_compare.h +2 -2
  1038. package/libcxx/include/__algorithm/lexicographical_compare_three_way.h +6 -6
  1039. package/libcxx/include/__algorithm/make_heap.h +16 -4
  1040. package/libcxx/include/__algorithm/mismatch.h +2 -2
  1041. package/libcxx/include/__algorithm/move.h +8 -19
  1042. package/libcxx/include/__algorithm/move_backward.h +9 -24
  1043. package/libcxx/include/__algorithm/none_of.h +4 -4
  1044. package/libcxx/include/__algorithm/partial_sort.h +1 -1
  1045. package/libcxx/include/__algorithm/partial_sort_copy.h +1 -1
  1046. package/libcxx/include/__algorithm/pstl.h +9 -9
  1047. package/libcxx/include/__algorithm/radix_sort.h +27 -25
  1048. package/libcxx/include/__algorithm/ranges_copy_n.h +3 -26
  1049. package/libcxx/include/__algorithm/ranges_equal.h +17 -26
  1050. package/libcxx/include/__algorithm/ranges_fill.h +7 -6
  1051. package/libcxx/include/__algorithm/ranges_for_each.h +9 -1
  1052. package/libcxx/include/__algorithm/ranges_generate_n.h +2 -6
  1053. package/libcxx/include/__algorithm/ranges_search_n.h +2 -2
  1054. package/libcxx/include/__algorithm/rotate.h +27 -44
  1055. package/libcxx/include/__algorithm/search_n.h +49 -37
  1056. package/libcxx/include/__algorithm/sift_down.h +19 -18
  1057. package/libcxx/include/__algorithm/simd_utils.h +33 -4
  1058. package/libcxx/include/__algorithm/specialized_algorithms.h +54 -0
  1059. package/libcxx/include/__algorithm/stable_sort.h +1 -1
  1060. package/libcxx/include/__assertion_handler +31 -4
  1061. package/libcxx/include/__atomic/atomic.h +36 -60
  1062. package/libcxx/include/__atomic/atomic_flag.h +19 -37
  1063. package/libcxx/include/__atomic/atomic_ref.h +29 -12
  1064. package/libcxx/include/__atomic/atomic_sync.h +127 -55
  1065. package/libcxx/include/__atomic/atomic_sync_timed.h +144 -0
  1066. package/libcxx/include/__atomic/atomic_waitable_traits.h +103 -0
  1067. package/libcxx/include/__atomic/contention_t.h +27 -3
  1068. package/libcxx/include/__atomic/floating_point_helper.h +55 -0
  1069. package/libcxx/include/__bit/countl.h +1 -2
  1070. package/libcxx/include/__bit/countr.h +1 -2
  1071. package/libcxx/include/__bit/has_single_bit.h +1 -1
  1072. package/libcxx/include/__bit/popcount.h +0 -1
  1073. package/libcxx/include/__bit/rotate.h +15 -26
  1074. package/libcxx/include/__bit_reference +207 -18
  1075. package/libcxx/include/__charconv/from_chars_integral.h +1 -1
  1076. package/libcxx/include/__charconv/from_chars_result.h +1 -1
  1077. package/libcxx/include/__charconv/to_chars_integral.h +1 -0
  1078. package/libcxx/include/__charconv/to_chars_result.h +1 -1
  1079. package/libcxx/include/__charconv/traits.h +3 -24
  1080. package/libcxx/include/__chrono/day.h +11 -0
  1081. package/libcxx/include/__chrono/duration.h +58 -33
  1082. package/libcxx/include/__chrono/file_clock.h +4 -2
  1083. package/libcxx/include/__chrono/is_clock.h +72 -0
  1084. package/libcxx/include/__chrono/leap_second.h +13 -0
  1085. package/libcxx/include/__chrono/month.h +13 -0
  1086. package/libcxx/include/__chrono/month_weekday.h +22 -0
  1087. package/libcxx/include/__chrono/monthday.h +20 -0
  1088. package/libcxx/include/__chrono/steady_clock.h +1 -1
  1089. package/libcxx/include/__chrono/system_clock.h +3 -3
  1090. package/libcxx/include/__chrono/time_point.h +37 -13
  1091. package/libcxx/include/__chrono/weekday.h +25 -0
  1092. package/libcxx/include/__chrono/year.h +11 -0
  1093. package/libcxx/include/__chrono/year_month.h +13 -0
  1094. package/libcxx/include/__chrono/year_month_day.h +23 -0
  1095. package/libcxx/include/__chrono/year_month_weekday.h +26 -0
  1096. package/libcxx/include/__chrono/zoned_time.h +16 -0
  1097. package/libcxx/include/__compare/is_eq.h +6 -6
  1098. package/libcxx/include/__compare/strong_order.h +12 -30
  1099. package/libcxx/include/__compare/three_way_comparable.h +2 -2
  1100. package/libcxx/include/__concepts/comparison_common_type.h +40 -0
  1101. package/libcxx/include/__concepts/equality_comparable.h +2 -1
  1102. package/libcxx/include/__condition_variable/condition_variable.h +1 -1
  1103. package/libcxx/include/__config +63 -280
  1104. package/libcxx/include/__configuration/abi.h +14 -24
  1105. package/libcxx/include/__configuration/availability.h +65 -118
  1106. package/libcxx/include/__configuration/compiler.h +6 -6
  1107. package/libcxx/include/__configuration/experimental.h +38 -0
  1108. package/libcxx/include/__configuration/hardening.h +215 -0
  1109. package/libcxx/include/__configuration/language.h +3 -0
  1110. package/libcxx/include/__configuration/platform.h +9 -16
  1111. package/libcxx/include/__coroutine/coroutine_handle.h +9 -9
  1112. package/libcxx/include/__coroutine/noop_coroutine_handle.h +11 -13
  1113. package/libcxx/include/__debug_utils/strict_weak_ordering_check.h +1 -1
  1114. package/libcxx/include/__exception/exception.h +6 -4
  1115. package/libcxx/include/__exception/exception_ptr.h +27 -5
  1116. package/libcxx/include/__exception/nested_exception.h +2 -2
  1117. package/libcxx/include/__exception/operations.h +5 -5
  1118. package/libcxx/include/__expected/bad_expected_access.h +8 -6
  1119. package/libcxx/include/__expected/expected.h +62 -64
  1120. package/libcxx/include/__expected/unexpected.h +4 -4
  1121. package/libcxx/include/__filesystem/copy_options.h +4 -4
  1122. package/libcxx/include/__filesystem/directory_entry.h +37 -33
  1123. package/libcxx/include/__filesystem/directory_iterator.h +9 -11
  1124. package/libcxx/include/__filesystem/directory_options.h +7 -4
  1125. package/libcxx/include/__filesystem/file_status.h +3 -3
  1126. package/libcxx/include/__filesystem/filesystem_error.h +9 -10
  1127. package/libcxx/include/__filesystem/operations.h +97 -66
  1128. package/libcxx/include/__filesystem/path.h +68 -64
  1129. package/libcxx/include/__filesystem/path_iterator.h +1 -3
  1130. package/libcxx/include/__filesystem/perm_options.h +4 -4
  1131. package/libcxx/include/__filesystem/perms.h +4 -4
  1132. package/libcxx/include/__filesystem/recursive_directory_iterator.h +9 -14
  1133. package/libcxx/include/__filesystem/space_info.h +1 -1
  1134. package/libcxx/include/__filesystem/u8path.h +12 -14
  1135. package/libcxx/include/__flat_map/flat_map.h +88 -71
  1136. package/libcxx/include/__flat_map/flat_multimap.h +251 -172
  1137. package/libcxx/include/__flat_map/key_value_iterator.h +0 -1
  1138. package/libcxx/include/__flat_map/utils.h +1 -0
  1139. package/libcxx/include/__flat_set/flat_multiset.h +211 -143
  1140. package/libcxx/include/__flat_set/flat_set.h +86 -68
  1141. package/libcxx/include/__format/concepts.h +0 -14
  1142. package/libcxx/include/__format/extended_grapheme_cluster_table.h +3 -2
  1143. package/libcxx/include/__format/fmt_pair_like.h +42 -0
  1144. package/libcxx/include/__format/format_arg.h +7 -10
  1145. package/libcxx/include/__format/format_args.h +1 -1
  1146. package/libcxx/include/__format/format_context.h +5 -5
  1147. package/libcxx/include/__format/format_parse_context.h +2 -2
  1148. package/libcxx/include/__format/formatter_output.h +30 -34
  1149. package/libcxx/include/__format/indic_conjunct_break_table.h +3 -2
  1150. package/libcxx/include/__format/range_default_formatter.h +2 -41
  1151. package/libcxx/include/__format/range_format.h +71 -0
  1152. package/libcxx/include/__format/range_formatter.h +1 -0
  1153. package/libcxx/include/__format/width_estimation_table.h +4 -2
  1154. package/libcxx/include/__functional/bind.h +10 -15
  1155. package/libcxx/include/__functional/bind_back.h +1 -1
  1156. package/libcxx/include/__functional/bind_front.h +1 -1
  1157. package/libcxx/include/__functional/function.h +57 -75
  1158. package/libcxx/include/__functional/hash.h +1 -10
  1159. package/libcxx/include/__functional/identity.h +1 -1
  1160. package/libcxx/include/__functional/is_transparent.h +8 -0
  1161. package/libcxx/include/__functional/mem_fn.h +2 -1
  1162. package/libcxx/include/__functional/operations.h +18 -0
  1163. package/libcxx/include/__functional/ranges_operations.h +7 -0
  1164. package/libcxx/include/__functional/reference_wrapper.h +7 -5
  1165. package/libcxx/include/__functional/weak_result_type.h +14 -28
  1166. package/libcxx/include/__fwd/ios.h +1 -1
  1167. package/libcxx/include/__fwd/tuple.h +14 -0
  1168. package/libcxx/include/__hash_table +371 -357
  1169. package/libcxx/include/__ios/fpos.h +4 -4
  1170. package/libcxx/include/__iterator/back_insert_iterator.h +1 -7
  1171. package/libcxx/include/__iterator/bounded_iter.h +7 -8
  1172. package/libcxx/include/__iterator/concepts.h +6 -9
  1173. package/libcxx/include/__iterator/cpp17_iterator_concepts.h +13 -12
  1174. package/libcxx/include/__iterator/distance.h +40 -18
  1175. package/libcxx/include/__iterator/front_insert_iterator.h +1 -7
  1176. package/libcxx/include/__iterator/insert_iterator.h +1 -7
  1177. package/libcxx/include/__iterator/istream_iterator.h +6 -7
  1178. package/libcxx/include/__iterator/istreambuf_iterator.h +6 -7
  1179. package/libcxx/include/__iterator/iter_move.h +1 -1
  1180. package/libcxx/include/__iterator/iterator.h +13 -0
  1181. package/libcxx/include/__iterator/iterator_traits.h +13 -14
  1182. package/libcxx/include/__iterator/ostream_iterator.h +1 -7
  1183. package/libcxx/include/__iterator/ostreambuf_iterator.h +1 -7
  1184. package/libcxx/include/__iterator/reverse_iterator.h +8 -13
  1185. package/libcxx/include/__iterator/segmented_iterator.h +3 -8
  1186. package/libcxx/include/__iterator/static_bounded_iter.h +3 -3
  1187. package/libcxx/include/__iterator/wrap_iter.h +8 -6
  1188. package/libcxx/include/__locale +3 -10
  1189. package/libcxx/include/__locale_dir/locale_base_api/bsd_locale_fallbacks.h +0 -10
  1190. package/libcxx/include/__locale_dir/locale_base_api.h +5 -28
  1191. package/libcxx/include/__locale_dir/messages.h +1 -1
  1192. package/libcxx/include/__locale_dir/money.h +2 -2
  1193. package/libcxx/include/__locale_dir/num.h +190 -243
  1194. package/libcxx/include/__locale_dir/pad_and_output.h +5 -6
  1195. package/libcxx/include/__locale_dir/support/bsd_like.h +0 -20
  1196. package/libcxx/include/__locale_dir/support/fuchsia.h +0 -7
  1197. package/libcxx/include/__locale_dir/support/linux.h +0 -37
  1198. package/libcxx/include/__locale_dir/support/netbsd.h +0 -2
  1199. package/libcxx/include/__locale_dir/support/newlib.h +243 -0
  1200. package/libcxx/include/__locale_dir/support/no_locale/characters.h +0 -4
  1201. package/libcxx/include/__locale_dir/support/no_locale/strtonum.h +0 -9
  1202. package/libcxx/include/__locale_dir/support/windows.h +0 -29
  1203. package/libcxx/include/__locale_dir/time.h +3 -7
  1204. package/libcxx/include/__math/hypot.h +1 -1
  1205. package/libcxx/include/__math/logarithms.h +1 -1
  1206. package/libcxx/include/__math/traits.h +80 -11
  1207. package/libcxx/include/__mdspan/extents.h +7 -4
  1208. package/libcxx/include/__mdspan/layout_stride.h +4 -5
  1209. package/libcxx/include/__mdspan/mdspan.h +29 -23
  1210. package/libcxx/include/__memory/addressof.h +7 -5
  1211. package/libcxx/include/__memory/align.h +18 -1
  1212. package/libcxx/include/__memory/allocate_at_least.h +15 -10
  1213. package/libcxx/include/__memory/allocator.h +14 -26
  1214. package/libcxx/include/__memory/allocator_traits.h +6 -4
  1215. package/libcxx/include/__memory/compressed_pair.h +15 -9
  1216. package/libcxx/include/__memory/construct_at.h +12 -23
  1217. package/libcxx/include/__memory/inout_ptr.h +1 -1
  1218. package/libcxx/include/__memory/is_sufficiently_aligned.h +1 -1
  1219. package/libcxx/include/__memory/out_ptr.h +1 -1
  1220. package/libcxx/include/__memory/pointer_traits.h +1 -1
  1221. package/libcxx/include/__memory/raw_storage_iterator.h +3 -9
  1222. package/libcxx/include/__memory/shared_count.h +9 -30
  1223. package/libcxx/include/__memory/shared_ptr.h +100 -145
  1224. package/libcxx/include/__memory/temp_value.h +1 -2
  1225. package/libcxx/include/__memory/uninitialized_algorithms.h +44 -115
  1226. package/libcxx/include/__memory/unique_ptr.h +14 -16
  1227. package/libcxx/include/__memory/uses_allocator_construction.h +1 -0
  1228. package/libcxx/include/__memory_resource/memory_resource.h +4 -2
  1229. package/libcxx/include/__memory_resource/monotonic_buffer_resource.h +1 -1
  1230. package/libcxx/include/__memory_resource/polymorphic_allocator.h +13 -8
  1231. package/libcxx/include/__memory_resource/pool_options.h +1 -1
  1232. package/libcxx/include/__memory_resource/synchronized_pool_resource.h +4 -2
  1233. package/libcxx/include/__memory_resource/unsynchronized_pool_resource.h +1 -1
  1234. package/libcxx/include/__mutex/mutex.h +2 -2
  1235. package/libcxx/include/__mutex/once_flag.h +14 -11
  1236. package/libcxx/include/__mutex/tag_types.h +3 -3
  1237. package/libcxx/include/__mutex/unique_lock.h +8 -7
  1238. package/libcxx/include/__new/align_val_t.h +6 -0
  1239. package/libcxx/include/__new/allocate.h +1 -2
  1240. package/libcxx/include/__new/exceptions.h +8 -2
  1241. package/libcxx/include/__new/global_new_delete.h +4 -11
  1242. package/libcxx/include/__new/interference_size.h +0 -4
  1243. package/libcxx/include/__new/launder.h +3 -5
  1244. package/libcxx/include/__new/nothrow_t.h +1 -1
  1245. package/libcxx/include/__numeric/gcd_lcm.h +24 -34
  1246. package/libcxx/include/__numeric/midpoint.h +9 -14
  1247. package/libcxx/include/__numeric/pstl.h +2 -2
  1248. package/libcxx/include/__numeric/saturation_arithmetic.h +13 -5
  1249. package/libcxx/include/__ostream/basic_ostream.h +8 -8
  1250. package/libcxx/include/__pstl/backends/default.h +14 -14
  1251. package/libcxx/include/__pstl/backends/libdispatch.h +2 -2
  1252. package/libcxx/include/__pstl/cpu_algos/find_if.h +1 -1
  1253. package/libcxx/include/__pstl/cpu_algos/transform.h +5 -6
  1254. package/libcxx/include/__pstl/cpu_algos/transform_reduce.h +5 -4
  1255. package/libcxx/include/__random/binomial_distribution.h +10 -4
  1256. package/libcxx/include/__random/mersenne_twister_engine.h +50 -154
  1257. package/libcxx/include/__random/piecewise_constant_distribution.h +3 -2
  1258. package/libcxx/include/__random/piecewise_linear_distribution.h +3 -2
  1259. package/libcxx/include/__ranges/adjacent_transform_view.h +406 -0
  1260. package/libcxx/include/__ranges/adjacent_view.h +419 -0
  1261. package/libcxx/include/__ranges/as_rvalue_view.h +9 -9
  1262. package/libcxx/include/__ranges/chunk_by_view.h +6 -6
  1263. package/libcxx/include/__ranges/common_view.h +7 -7
  1264. package/libcxx/include/__ranges/drop_view.h +8 -8
  1265. package/libcxx/include/__ranges/drop_while_view.h +5 -5
  1266. package/libcxx/include/__ranges/elements_of.h +49 -0
  1267. package/libcxx/include/__ranges/empty_view.h +5 -5
  1268. package/libcxx/include/__ranges/filter_view.h +10 -10
  1269. package/libcxx/include/__ranges/iota_view.h +41 -22
  1270. package/libcxx/include/__ranges/owning_view.h +15 -15
  1271. package/libcxx/include/__ranges/ref_view.h +6 -6
  1272. package/libcxx/include/__ranges/repeat_view.h +17 -10
  1273. package/libcxx/include/__ranges/single_view.h +8 -8
  1274. package/libcxx/include/__ranges/take_view.h +9 -9
  1275. package/libcxx/include/__ranges/transform_view.h +1 -2
  1276. package/libcxx/include/__ranges/view_interface.h +10 -10
  1277. package/libcxx/include/__ranges/zip_transform_view.h +357 -0
  1278. package/libcxx/include/__ranges/zip_view.h +20 -20
  1279. package/libcxx/include/__split_buffer +612 -240
  1280. package/libcxx/include/__stop_token/atomic_unique_lock.h +1 -1
  1281. package/libcxx/include/__stop_token/stop_callback.h +2 -2
  1282. package/libcxx/include/__stop_token/stop_source.h +1 -1
  1283. package/libcxx/include/__stop_token/stop_state.h +4 -4
  1284. package/libcxx/include/__stop_token/stop_token.h +1 -1
  1285. package/libcxx/include/__string/char_traits.h +51 -31
  1286. package/libcxx/include/__string/constexpr_c_functions.h +5 -5
  1287. package/libcxx/include/__support/xlocale/__strtonum_fallback.h +0 -8
  1288. package/libcxx/include/__system_error/error_category.h +8 -8
  1289. package/libcxx/include/__system_error/error_code.h +5 -5
  1290. package/libcxx/include/__system_error/error_condition.h +4 -4
  1291. package/libcxx/include/__system_error/system_error.h +1 -1
  1292. package/libcxx/include/__thread/id.h +1 -1
  1293. package/libcxx/include/__thread/jthread.h +1 -1
  1294. package/libcxx/include/__thread/poll_with_backoff.h +27 -8
  1295. package/libcxx/include/__thread/support/c11.h +8 -8
  1296. package/libcxx/include/__thread/support/pthread.h +8 -8
  1297. package/libcxx/include/__thread/support/windows.h +8 -8
  1298. package/libcxx/include/__thread/thread.h +13 -8
  1299. package/libcxx/include/__thread/timed_backoff_policy.h +3 -2
  1300. package/libcxx/include/__tree +849 -701
  1301. package/libcxx/include/__tuple/sfinae_helpers.h +1 -44
  1302. package/libcxx/include/__tuple/tuple_element.h +0 -12
  1303. package/libcxx/include/__tuple/tuple_size.h +0 -4
  1304. package/libcxx/include/__tuple/tuple_transform.h +45 -0
  1305. package/libcxx/include/__type_traits/aligned_storage.h +13 -40
  1306. package/libcxx/include/__type_traits/desugars_to.h +4 -0
  1307. package/libcxx/include/__type_traits/invoke.h +8 -0
  1308. package/libcxx/include/__type_traits/is_allocator.h +6 -7
  1309. package/libcxx/include/__type_traits/is_array.h +26 -0
  1310. package/libcxx/include/__type_traits/is_equality_comparable.h +16 -21
  1311. package/libcxx/include/__type_traits/is_final.h +1 -1
  1312. package/libcxx/include/__type_traits/is_floating_point.h +7 -6
  1313. package/libcxx/include/__type_traits/is_generic_transparent_comparator.h +30 -0
  1314. package/libcxx/include/__type_traits/is_specialization.h +2 -6
  1315. package/libcxx/include/__type_traits/is_within_lifetime.h +29 -0
  1316. package/libcxx/include/__type_traits/make_transparent.h +52 -0
  1317. package/libcxx/include/__type_traits/reference_constructs_from_temporary.h +1 -7
  1318. package/libcxx/include/__type_traits/reference_converts_from_temporary.h +1 -1
  1319. package/libcxx/include/__utility/cmp.h +19 -7
  1320. package/libcxx/include/__utility/default_three_way_comparator.h +70 -0
  1321. package/libcxx/include/__utility/in_place.h +1 -1
  1322. package/libcxx/include/__utility/integer_sequence.h +56 -41
  1323. package/libcxx/include/__utility/lazy_synth_three_way_comparator.h +120 -0
  1324. package/libcxx/include/__utility/pair.h +22 -25
  1325. package/libcxx/include/__utility/scope_guard.h +2 -0
  1326. package/libcxx/include/__utility/try_key_extraction.h +114 -0
  1327. package/libcxx/include/__vector/vector.h +187 -160
  1328. package/libcxx/include/__vector/vector_bool.h +76 -83
  1329. package/libcxx/include/any +118 -155
  1330. package/libcxx/include/array +88 -56
  1331. package/libcxx/include/atomic +2 -0
  1332. package/libcxx/include/barrier +20 -24
  1333. package/libcxx/include/bitset +49 -30
  1334. package/libcxx/include/ccomplex +3 -11
  1335. package/libcxx/include/chrono +47 -0
  1336. package/libcxx/include/ciso646 +3 -6
  1337. package/libcxx/include/complex +77 -65
  1338. package/libcxx/include/complex.h +10 -10
  1339. package/libcxx/include/condition_variable +3 -3
  1340. package/libcxx/include/cstdalign +3 -10
  1341. package/libcxx/include/cstdbool +3 -10
  1342. package/libcxx/include/ctgmath +2 -11
  1343. package/libcxx/include/ctype.h +24 -24
  1344. package/libcxx/include/cwchar +2 -2
  1345. package/libcxx/include/deque +109 -225
  1346. package/libcxx/include/errno.h +269 -269
  1347. package/libcxx/include/exception +4 -1
  1348. package/libcxx/include/ext/hash_map +7 -48
  1349. package/libcxx/include/ext/hash_set +2 -8
  1350. package/libcxx/include/fenv.h +43 -43
  1351. package/libcxx/include/flat_map +663 -11
  1352. package/libcxx/include/flat_set +543 -8
  1353. package/libcxx/include/float.h +16 -16
  1354. package/libcxx/include/forward_list +33 -53
  1355. package/libcxx/include/fstream +57 -42
  1356. package/libcxx/include/future +41 -51
  1357. package/libcxx/include/initializer_list +9 -3
  1358. package/libcxx/include/inttypes.h +16 -16
  1359. package/libcxx/include/ios +28 -28
  1360. package/libcxx/include/istream +19 -13
  1361. package/libcxx/include/iterator +10 -0
  1362. package/libcxx/include/latch +7 -5
  1363. package/libcxx/include/limits +4 -4
  1364. package/libcxx/include/list +61 -79
  1365. package/libcxx/include/map +386 -274
  1366. package/libcxx/include/math.h +19 -0
  1367. package/libcxx/include/mdspan +1 -5
  1368. package/libcxx/include/mutex +29 -19
  1369. package/libcxx/include/optional +644 -149
  1370. package/libcxx/include/print +9 -5
  1371. package/libcxx/include/queue +39 -37
  1372. package/libcxx/include/ranges +48 -0
  1373. package/libcxx/include/regex +33 -31
  1374. package/libcxx/include/scoped_allocator +16 -11
  1375. package/libcxx/include/semaphore +15 -18
  1376. package/libcxx/include/set +220 -192
  1377. package/libcxx/include/shared_mutex +3 -8
  1378. package/libcxx/include/span +53 -37
  1379. package/libcxx/include/sstream +34 -28
  1380. package/libcxx/include/stack +13 -15
  1381. package/libcxx/include/stddef.h +10 -10
  1382. package/libcxx/include/stdexcept +2 -2
  1383. package/libcxx/include/stdio.h +20 -21
  1384. package/libcxx/include/streambuf +59 -19
  1385. package/libcxx/include/string +574 -573
  1386. package/libcxx/include/string_view +113 -89
  1387. package/libcxx/include/strstream +10 -10
  1388. package/libcxx/include/syncstream +4 -4
  1389. package/libcxx/include/tgmath.h +12 -12
  1390. package/libcxx/include/tuple +242 -212
  1391. package/libcxx/include/type_traits +8 -2
  1392. package/libcxx/include/typeindex +5 -3
  1393. package/libcxx/include/typeinfo +92 -89
  1394. package/libcxx/include/unordered_map +179 -304
  1395. package/libcxx/include/unordered_set +168 -195
  1396. package/libcxx/include/utility +12 -0
  1397. package/libcxx/include/valarray +106 -161
  1398. package/libcxx/include/variant +25 -33
  1399. package/libcxx/include/version +41 -24
  1400. package/libcxx/include/wctype.h +29 -29
  1401. package/libcxx/libc/hdr/errno_macros.h +3 -1
  1402. package/libcxx/libc/hdr/stdint_proxy.h +18 -0
  1403. package/libcxx/libc/hdr/types/wchar_t.h +23 -0
  1404. package/libcxx/libc/hdr/wchar_overlay.h +69 -0
  1405. package/libcxx/libc/include/llvm-libc-macros/cfloat128-macros.h +41 -0
  1406. package/libcxx/libc/include/llvm-libc-macros/cfloat16-macros.h +20 -0
  1407. package/libcxx/libc/include/llvm-libc-macros/wchar-macros.h +18 -0
  1408. package/libcxx/libc/include/llvm-libc-types/cfloat128.h +11 -28
  1409. package/libcxx/libc/include/llvm-libc-types/cfloat16.h +4 -7
  1410. package/libcxx/libc/include/llvm-libc-types/wint_t.h +14 -0
  1411. package/libcxx/libc/shared/libc_common.h +5 -0
  1412. package/libcxx/libc/src/__support/CPP/bit.h +50 -12
  1413. package/libcxx/libc/src/__support/CPP/type_traits/is_complex.h +7 -0
  1414. package/libcxx/libc/src/__support/CPP/type_traits/is_destructible.h +2 -1
  1415. package/libcxx/libc/src/__support/CPP/type_traits/is_unsigned.h +6 -0
  1416. package/libcxx/libc/src/__support/CPP/utility/integer_sequence.h +10 -0
  1417. package/libcxx/libc/src/__support/FPUtil/FPBits.h +6 -7
  1418. package/libcxx/libc/src/__support/FPUtil/rounding_mode.h +50 -4
  1419. package/libcxx/libc/src/__support/big_int.h +14 -14
  1420. package/libcxx/libc/src/__support/common.h +3 -2
  1421. package/libcxx/libc/src/__support/ctype_utils.h +19 -12
  1422. package/libcxx/libc/src/__support/detailed_powers_of_ten.h +1 -2
  1423. package/libcxx/libc/src/__support/high_precision_decimal.h +33 -14
  1424. package/libcxx/libc/src/__support/libc_assert.h +2 -0
  1425. package/libcxx/libc/src/__support/macros/attributes.h +44 -1
  1426. package/libcxx/libc/src/__support/macros/config.h +23 -0
  1427. package/libcxx/libc/src/__support/macros/null_check.h +1 -2
  1428. package/libcxx/libc/src/__support/macros/optimization.h +3 -0
  1429. package/libcxx/libc/src/__support/macros/properties/architectures.h +5 -1
  1430. package/libcxx/libc/src/__support/macros/properties/compiler.h +8 -3
  1431. package/libcxx/libc/src/__support/macros/properties/cpu_features.h +17 -1
  1432. package/libcxx/libc/src/__support/macros/properties/types.h +2 -3
  1433. package/libcxx/libc/src/__support/macros/sanitizer.h +0 -10
  1434. package/libcxx/libc/src/__support/math_extras.h +20 -4
  1435. package/libcxx/libc/src/__support/str_to_float.h +98 -125
  1436. package/libcxx/libc/src/__support/str_to_integer.h +39 -27
  1437. package/libcxx/libc/src/__support/wctype_utils.h +588 -0
  1438. package/libcxx/src/any.cpp +4 -0
  1439. package/libcxx/src/atomic.cpp +365 -80
  1440. package/libcxx/src/barrier.cpp +4 -3
  1441. package/libcxx/src/charconv.cpp +6 -3
  1442. package/libcxx/src/condition_variable_destructor.cpp +1 -1
  1443. package/libcxx/src/error_category.cpp +3 -1
  1444. package/libcxx/src/exception.cpp +2 -10
  1445. package/libcxx/src/experimental/time_zone.cpp +1 -1
  1446. package/libcxx/src/experimental/tzdb.cpp +4 -1
  1447. package/libcxx/src/filesystem/error.h +4 -22
  1448. package/libcxx/src/filesystem/format_string.h +9 -18
  1449. package/libcxx/src/filesystem/int128_builtins.cpp +2 -0
  1450. package/libcxx/src/filesystem/operations.cpp +2 -9
  1451. package/libcxx/src/filesystem/path.cpp +3 -1
  1452. package/libcxx/src/include/aligned_alloc.h +65 -0
  1453. package/libcxx/src/include/config_elast.h +1 -1
  1454. package/libcxx/src/include/from_chars_floating_point.h +11 -7
  1455. package/libcxx/src/include/overridable_function.h +8 -10
  1456. package/libcxx/src/iostream.cpp +56 -37
  1457. package/libcxx/src/locale.cpp +213 -196
  1458. package/libcxx/src/memory.cpp +12 -14
  1459. package/libcxx/src/mutex_destructor.cpp +1 -1
  1460. package/libcxx/src/new.cpp +5 -5
  1461. package/libcxx/src/optional.cpp +4 -0
  1462. package/libcxx/src/print.cpp +9 -1
  1463. package/libcxx/src/random.cpp +0 -26
  1464. package/libcxx/src/string.cpp +10 -25
  1465. package/libcxx/src/support/runtime/exception_fallback.ipp +2 -0
  1466. package/libcxx/src/support/runtime/exception_glibcxx.ipp +3 -0
  1467. package/libcxx/src/support/runtime/exception_libcxxabi.ipp +6 -2
  1468. package/libcxx/src/support/runtime/exception_libcxxrt.ipp +2 -0
  1469. package/libcxx/src/support/runtime/exception_msvc.ipp +2 -0
  1470. package/libcxx/src/support/runtime/exception_pointer_cxxabi.ipp +9 -10
  1471. package/libcxx/src/support/runtime/exception_pointer_glibcxx.ipp +2 -0
  1472. package/libcxx/src/support/runtime/exception_pointer_msvc.ipp +1 -0
  1473. package/libcxx/src/support/runtime/exception_pointer_unimplemented.ipp +1 -0
  1474. package/libcxx/src/support/win32/locale_win32.cpp +1 -1
  1475. package/libcxx/src/system_error.cpp +2 -0
  1476. package/libcxx/src/thread.cpp +1 -3
  1477. package/libcxx/src/valarray.cpp +1 -2
  1478. package/libcxx/src/vector.cpp +2 -2
  1479. package/libcxxabi/include/__cxxabi_config.h +42 -23
  1480. package/libcxxabi/src/cxa_exception.cpp +4 -2
  1481. package/libcxxabi/src/cxa_exception.h +16 -14
  1482. package/libcxxabi/src/cxa_personality.cpp +126 -9
  1483. package/libcxxabi/src/cxa_thread_atexit.cpp +2 -1
  1484. package/libcxxabi/src/demangle/DemangleConfig.h +4 -0
  1485. package/libcxxabi/src/demangle/ItaniumDemangle.h +9 -6
  1486. package/libcxxabi/src/demangle/Utility.h +21 -7
  1487. package/libcxxabi/src/fallback_malloc.cpp +1 -1
  1488. package/libcxxabi/src/private_typeinfo.cpp +6 -0
  1489. package/libcxxabi/src/stdlib_new_delete.cpp +5 -5
  1490. package/libtsan/LICENSE.TXT +311 -0
  1491. package/libtsan/builtins/assembly.h +41 -8
  1492. package/libtsan/interception/interception_win.cpp +4 -0
  1493. package/libtsan/sanitizer_common/sanitizer_allocator_primary32.h +1 -0
  1494. package/libtsan/sanitizer_common/sanitizer_allocator_primary64.h +18 -0
  1495. package/libtsan/sanitizer_common/sanitizer_common.h +15 -2
  1496. package/libtsan/sanitizer_common/sanitizer_common_interceptors.inc +30 -4
  1497. package/libtsan/sanitizer_common/sanitizer_common_interceptors_ioctl.inc +4 -0
  1498. package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S +2 -1
  1499. package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S +2 -0
  1500. package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S +2 -0
  1501. package/libtsan/sanitizer_common/sanitizer_common_syscalls.inc +18 -0
  1502. package/libtsan/sanitizer_common/sanitizer_file.cpp +40 -12
  1503. package/libtsan/sanitizer_common/sanitizer_file.h +3 -0
  1504. package/libtsan/sanitizer_common/sanitizer_flags.inc +7 -0
  1505. package/libtsan/sanitizer_common/sanitizer_fuchsia.cpp +30 -3
  1506. package/libtsan/sanitizer_common/sanitizer_haiku.cpp +2 -2
  1507. package/libtsan/sanitizer_common/sanitizer_internal_defs.h +1 -1
  1508. package/libtsan/sanitizer_common/sanitizer_libc.cpp +8 -0
  1509. package/libtsan/sanitizer_common/sanitizer_libc.h +1 -0
  1510. package/libtsan/sanitizer_common/sanitizer_linux.cpp +15 -7
  1511. package/libtsan/sanitizer_common/sanitizer_linux.h +3 -3
  1512. package/libtsan/sanitizer_common/sanitizer_linux_libcdep.cpp +1 -0
  1513. package/libtsan/sanitizer_common/sanitizer_mac.cpp +255 -104
  1514. package/libtsan/sanitizer_common/sanitizer_mac.h +5 -0
  1515. package/libtsan/sanitizer_common/sanitizer_netbsd.cpp +2 -2
  1516. package/libtsan/sanitizer_common/sanitizer_platform.h +27 -1
  1517. package/libtsan/sanitizer_common/sanitizer_platform_interceptors.h +5 -4
  1518. package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.cpp +15 -17
  1519. package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.h +32 -6
  1520. package/libtsan/sanitizer_common/sanitizer_posix.cpp +3 -12
  1521. package/libtsan/sanitizer_common/sanitizer_posix.h +2 -1
  1522. package/libtsan/sanitizer_common/sanitizer_posix_libcdep.cpp +19 -0
  1523. package/libtsan/sanitizer_common/sanitizer_procmaps_mac.cpp +102 -37
  1524. package/libtsan/sanitizer_common/sanitizer_redefine_builtins.h +1 -1
  1525. package/libtsan/sanitizer_common/sanitizer_signal_interceptors.inc +40 -2
  1526. package/libtsan/sanitizer_common/sanitizer_stoptheworld.h +1 -1
  1527. package/libtsan/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp +83 -12
  1528. package/libtsan/sanitizer_common/sanitizer_stoptheworld_mac.cpp +3 -3
  1529. package/libtsan/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp +7 -7
  1530. package/libtsan/sanitizer_common/sanitizer_stoptheworld_win.cpp +2 -2
  1531. package/libtsan/sanitizer_common/sanitizer_symbolizer_internal.h +5 -1
  1532. package/libtsan/sanitizer_common/sanitizer_symbolizer_libcdep.cpp +11 -1
  1533. package/libtsan/sanitizer_common/sanitizer_symbolizer_mac.cpp +86 -29
  1534. package/libtsan/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp +27 -16
  1535. package/libtsan/sanitizer_common/sanitizer_thread_registry.cpp +5 -4
  1536. package/libtsan/sanitizer_common/sanitizer_thread_registry.h +4 -4
  1537. package/libtsan/sanitizer_common/sanitizer_win.cpp +1 -3
  1538. package/libtsan/tsan_debugging.cpp +2 -2
  1539. package/libtsan/tsan_flags.cpp +37 -0
  1540. package/libtsan/tsan_flags.h +8 -0
  1541. package/libtsan/tsan_flags.inc +12 -0
  1542. package/libtsan/tsan_interceptors.h +9 -1
  1543. package/libtsan/tsan_interceptors_mac.cpp +19 -0
  1544. package/libtsan/tsan_interceptors_posix.cpp +78 -32
  1545. package/libtsan/tsan_interface.h +3 -3
  1546. package/libtsan/tsan_interface_ann.cpp +23 -9
  1547. package/libtsan/tsan_mman.cpp +18 -4
  1548. package/libtsan/tsan_platform.h +44 -7
  1549. package/libtsan/tsan_platform_linux.cpp +42 -14
  1550. package/libtsan/tsan_platform_mac.cpp +16 -3
  1551. package/libtsan/tsan_report.h +14 -1
  1552. package/libtsan/tsan_rtl.cpp +14 -0
  1553. package/libtsan/tsan_rtl.h +7 -2
  1554. package/libtsan/tsan_rtl_aarch64.S +3 -5
  1555. package/libtsan/tsan_rtl_access.cpp +8 -3
  1556. package/libtsan/tsan_rtl_amd64.S +2 -0
  1557. package/libtsan/tsan_rtl_mutex.cpp +94 -49
  1558. package/libtsan/tsan_rtl_report.cpp +132 -65
  1559. package/libtsan/tsan_rtl_thread.cpp +31 -9
  1560. package/libtsan/tsan_symbolize.cpp +1 -1
  1561. package/libtsan/tsan_symbolize.h +1 -1
  1562. package/libtsan/tsan_trace.h +1 -1
  1563. package/libunwind/include/__libunwind_config.h +11 -2
  1564. package/libunwind/include/libunwind.h +117 -11
  1565. package/libunwind/include/unwind_arm_ehabi.h +4 -1
  1566. package/libunwind/src/AddressSpace.hpp +42 -20
  1567. package/libunwind/src/CompactUnwinder.hpp +16 -5
  1568. package/libunwind/src/DwarfInstructions.hpp +24 -13
  1569. package/libunwind/src/DwarfParser.hpp +62 -23
  1570. package/libunwind/src/EHHeaderParser.hpp +7 -4
  1571. package/libunwind/src/Registers.hpp +226 -22
  1572. package/libunwind/src/Unwind-seh.cpp +6 -7
  1573. package/libunwind/src/Unwind-wasm.c +7 -7
  1574. package/libunwind/src/UnwindCursor.hpp +167 -49
  1575. package/libunwind/src/UnwindLevel1.c +46 -17
  1576. package/libunwind/src/UnwindRegistersRestore.S +46 -5
  1577. package/libunwind/src/UnwindRegistersSave.S +86 -2
  1578. package/libunwind/src/assembly.h +5 -1
  1579. package/libunwind/src/config.h +9 -0
  1580. package/libunwind/src/gcc_personality_v0.c +79 -6
  1581. package/libunwind/src/libunwind.cpp +104 -4
  1582. package/libunwind/src/libunwind_ext.h +7 -1
  1583. package/libunwind/src/shadow_stack_unwind.h +2 -2
  1584. package/lldb/pretty_printers.py +948 -0
  1585. package/package.json +1 -1
  1586. package/std/Build/Cache/Path.zig +35 -29
  1587. package/std/Build/Cache.zig +17 -7
  1588. package/std/Build/Configuration.zig +3428 -0
  1589. package/std/Build/Module.zig +99 -225
  1590. package/std/Build/Step/CheckFile.zig +17 -63
  1591. package/std/Build/Step/Compile.zig +97 -1426
  1592. package/std/Build/Step/ConfigHeader.zig +55 -944
  1593. package/std/Build/Step/Fail.zig +10 -20
  1594. package/std/Build/Step/FindProgram.zig +31 -0
  1595. package/std/Build/Step/Fmt.zig +22 -57
  1596. package/std/Build/Step/InstallArtifact.zig +26 -141
  1597. package/std/Build/Step/InstallDir.zig +14 -67
  1598. package/std/Build/Step/InstallFile.zig +12 -21
  1599. package/std/Build/Step/ObjCopy.zig +82 -199
  1600. package/std/Build/Step/Options.zig +27 -262
  1601. package/std/Build/Step/Run.zig +138 -2246
  1602. package/std/Build/Step/TranslateC.zig +55 -164
  1603. package/std/Build/Step/UpdateSourceFiles.zig +38 -91
  1604. package/std/Build/Step/WriteFile.zig +113 -328
  1605. package/std/Build/Step.zig +45 -916
  1606. package/std/Build/abi.zig +1 -1
  1607. package/std/Build.zig +644 -718
  1608. package/std/Io/Dir.zig +12 -7
  1609. package/std/Io/Dispatch.zig +5 -5
  1610. package/std/Io/File/Writer.zig +8 -6
  1611. package/std/Io/File.zig +6 -9
  1612. package/std/Io/Kqueue.zig +3 -3
  1613. package/std/Io/Reader.zig +8 -14
  1614. package/std/Io/RwLock.zig +2 -0
  1615. package/std/Io/Semaphore.zig +112 -17
  1616. package/std/Io/Terminal.zig +1 -1
  1617. package/std/Io/Threaded.zig +19 -16
  1618. package/std/Io/Uring.zig +7 -7
  1619. package/std/Io/Writer.zig +75 -10
  1620. package/std/Io/net/HostName.zig +11 -6
  1621. package/std/Io.zig +92 -28
  1622. package/std/Random/ChaCha.zig +2 -2
  1623. package/std/Random/benchmark.zig +2 -2
  1624. package/std/Random.zig +6 -6
  1625. package/std/SemanticVersion.zig +1 -1
  1626. package/std/Target/Query.zig +4 -5
  1627. package/std/Target/aarch64.zig +620 -77
  1628. package/std/Target/amdgcn.zig +421 -21
  1629. package/std/Target/arm.zig +40 -6
  1630. package/std/Target/bpf.zig +6 -0
  1631. package/std/Target/hexagon.zig +41 -6
  1632. package/std/Target/loongarch.zig +18 -0
  1633. package/std/Target/mips.zig +6 -0
  1634. package/std/Target/nvptx.zig +58 -35
  1635. package/std/Target/powerpc.zig +27 -19
  1636. package/std/Target/riscv.zig +512 -177
  1637. package/std/Target/sparc.zig +17 -0
  1638. package/std/Target/spirv.zig +1 -1
  1639. package/std/Target/wasm.zig +7 -0
  1640. package/std/Target/x86.zig +200 -31
  1641. package/std/Target/xtensa.zig +65 -0
  1642. package/std/Target.zig +97 -58
  1643. package/std/Thread.zig +17 -4
  1644. package/std/array_hash_map.zig +103 -57
  1645. package/std/array_list.zig +20 -35
  1646. package/std/ascii.zig +0 -9
  1647. package/std/atomic.zig +2 -0
  1648. package/std/base64.zig +5 -5
  1649. package/std/bit_set.zig +85 -93
  1650. package/std/c/serenity.zig +1 -6
  1651. package/std/c.zig +117 -36
  1652. package/std/compress/flate/Decompress.zig +3 -4
  1653. package/std/compress/zstd/Decompress.zig +7 -9
  1654. package/std/crypto/25519/curve25519.zig +2 -2
  1655. package/std/crypto/25519/edwards25519.zig +3 -3
  1656. package/std/crypto/25519/ristretto255.zig +2 -2
  1657. package/std/crypto/25519/scalar.zig +6 -6
  1658. package/std/crypto/25519/x25519.zig +1 -1
  1659. package/std/crypto/Certificate.zig +14 -2
  1660. package/std/crypto/Sha1.zig +1 -1
  1661. package/std/crypto/aegis.zig +45 -39
  1662. package/std/crypto/aes_ccm.zig +22 -22
  1663. package/std/crypto/aes_gcm.zig +10 -12
  1664. package/std/crypto/aes_ocb.zig +9 -9
  1665. package/std/crypto/argon2.zig +15 -15
  1666. package/std/crypto/ascon.zig +75 -35
  1667. package/std/crypto/bcrypt.zig +20 -10
  1668. package/std/crypto/benchmark.zig +7 -7
  1669. package/std/crypto/blake2.zig +100 -64
  1670. package/std/crypto/cbc_mac.zig +1 -1
  1671. package/std/crypto/chacha20.zig +10 -10
  1672. package/std/crypto/cmac.zig +3 -3
  1673. package/std/crypto/codecs/asn1/Oid.zig +12 -1
  1674. package/std/crypto/codecs/asn1/der/Encoder.zig +1 -1
  1675. package/std/crypto/codecs/asn1.zig +1 -1
  1676. package/std/crypto/codecs/base64_hex_ct.zig +3 -5
  1677. package/std/crypto/ecdsa.zig +9 -9
  1678. package/std/crypto/ff.zig +4 -5
  1679. package/std/crypto/ghash_polyval.zig +4 -4
  1680. package/std/crypto/hkdf.zig +1 -1
  1681. package/std/crypto/isap.zig +3 -3
  1682. package/std/crypto/kangarootwelve.zig +1 -1
  1683. package/std/crypto/keccak_p.zig +8 -8
  1684. package/std/crypto/md5.zig +1 -1
  1685. package/std/crypto/ml_dsa.zig +39 -39
  1686. package/std/crypto/ml_kem.zig +12 -34
  1687. package/std/crypto/modes.zig +2 -2
  1688. package/std/crypto/pbkdf2.zig +1 -1
  1689. package/std/crypto/pcurves/common.zig +4 -5
  1690. package/std/crypto/pcurves/p256/scalar.zig +3 -3
  1691. package/std/crypto/pcurves/p384/scalar.zig +2 -2
  1692. package/std/crypto/pcurves/secp256k1/scalar.zig +3 -3
  1693. package/std/crypto/pcurves/tests/p256.zig +5 -5
  1694. package/std/crypto/pcurves/tests/p384.zig +5 -5
  1695. package/std/crypto/pcurves/tests/secp256k1.zig +3 -3
  1696. package/std/crypto/salsa20.zig +8 -14
  1697. package/std/crypto/sha2.zig +2 -2
  1698. package/std/crypto/sha3.zig +2 -4
  1699. package/std/crypto/siphash.zig +1 -1
  1700. package/std/crypto/timing_safe.zig +10 -9
  1701. package/std/crypto/tls/Client.zig +89 -13
  1702. package/std/crypto/tls.zig +1 -1
  1703. package/std/crypto.zig +4 -3
  1704. package/std/debug/Dwarf.zig +21 -12
  1705. package/std/debug/Pdb.zig +86 -51
  1706. package/std/debug/SelfInfo/Elf.zig +13 -9
  1707. package/std/debug/SelfInfo/Windows.zig +3 -5
  1708. package/std/debug/cpu_context.zig +230 -38
  1709. package/std/debug.zig +16 -8
  1710. package/std/deque.zig +1 -1
  1711. package/std/elf.zig +22 -5
  1712. package/std/enums.zig +8 -20
  1713. package/std/fmt/float.zig +2 -0
  1714. package/std/fmt/parse_float/decimal.zig +1 -1
  1715. package/std/fmt/parse_float.zig +1 -1
  1716. package/std/fmt.zig +7 -8
  1717. package/std/fs/path.zig +7 -5
  1718. package/std/hash/Adler32.zig +3 -3
  1719. package/std/hash/benchmark.zig +2 -2
  1720. package/std/hash/wyhash.zig +2 -2
  1721. package/std/hash/xxhash.zig +0 -6
  1722. package/std/hash_map.zig +22 -2
  1723. package/std/heap/ArenaAllocator.zig +3 -5
  1724. package/std/heap/BufferFirstAllocator.zig +165 -0
  1725. package/std/heap/SafeAllocator.zig +2180 -0
  1726. package/std/heap/debug_allocator.zig +2 -2
  1727. package/std/heap/memory_pool.zig +34 -197
  1728. package/std/heap.zig +20 -133
  1729. package/std/http.zig +4 -5
  1730. package/std/json/Scanner.zig +2 -2
  1731. package/std/json/static.zig +2 -2
  1732. package/std/json.zig +1 -1
  1733. package/std/{builtin → lang}/assembly.zig +71 -0
  1734. package/std/{builtin.zig → lang.zig} +5 -3
  1735. package/std/leb128.zig +2 -2
  1736. package/std/math/acos.zig +6 -0
  1737. package/std/math/asin.zig +6 -0
  1738. package/std/math/atan.zig +5 -0
  1739. package/std/math/big/int.zig +5 -5
  1740. package/std/math/big.zig +4 -4
  1741. package/std/math/copysign.zig +1 -1
  1742. package/std/math/float.zig +62 -0
  1743. package/std/math/frexp.zig +4 -4
  1744. package/std/math/hypot.zig +4 -0
  1745. package/std/math/ilogb.zig +1 -1
  1746. package/std/math/isfinite.zig +1 -1
  1747. package/std/math/isinf.zig +1 -1
  1748. package/std/math/isnan.zig +1 -2
  1749. package/std/math/isnormal.zig +2 -2
  1750. package/std/math/iszero.zig +2 -2
  1751. package/std/math/ldexp.zig +2 -2
  1752. package/std/math/log10.zig +0 -2
  1753. package/std/math/modf.zig +1 -2
  1754. package/std/math/nextafter.zig +3 -4
  1755. package/std/math/pow.zig +1 -1
  1756. package/std/math/powi.zig +2 -3
  1757. package/std/math/signbit.zig +0 -1
  1758. package/std/math.zig +21 -26
  1759. package/std/mem/Allocator.zig +5 -9
  1760. package/std/mem.zig +52 -75
  1761. package/std/meta/trailer_flags.zig +1 -1
  1762. package/std/meta.zig +4 -36
  1763. package/std/multi_array_list.zig +24 -0
  1764. package/std/os/emscripten.zig +7 -6
  1765. package/std/os/linux/IoUring.zig +2 -0
  1766. package/std/os/linux/alpha.zig +358 -0
  1767. package/std/os/linux/arm.zig +0 -26
  1768. package/std/os/linux/bpf.zig +6 -0
  1769. package/std/os/linux/ioctl.zig +3 -2
  1770. package/std/os/linux/syscalls.zig +528 -1
  1771. package/std/os/linux/tls.zig +12 -1
  1772. package/std/os/linux/x86.zig +2 -2
  1773. package/std/os/linux/xtensa.zig +171 -0
  1774. package/std/os/linux.zig +794 -52
  1775. package/std/os/plan9.zig +1 -1
  1776. package/std/os/uefi/hii.zig +1 -1
  1777. package/std/os/uefi/tables/boot_services.zig +9 -8
  1778. package/std/os/uefi/tables/runtime_services.zig +1 -1
  1779. package/std/os/windows.zig +130 -1
  1780. package/std/os.zig +36 -0
  1781. package/std/pie.zig +21 -0
  1782. package/std/posix.zig +2 -2
  1783. package/std/process/Child.zig +20 -0
  1784. package/std/process/Environ.zig +28 -4
  1785. package/std/process.zig +13 -5
  1786. package/std/simd.zig +4 -21
  1787. package/std/start.zig +45 -12
  1788. package/std/std.zig +8 -1
  1789. package/std/tar/Writer.zig +39 -33
  1790. package/std/tar.zig +8 -4
  1791. package/std/testing.zig +68 -15
  1792. package/std/unicode.zig +13 -8
  1793. package/std/zig/Ast/Render.zig +6 -30
  1794. package/std/zig/Ast.zig +12 -37
  1795. package/std/zig/AstGen.zig +174 -258
  1796. package/std/zig/AstRlAnnotate.zig +1 -11
  1797. package/std/zig/AstSmith.zig +5 -11
  1798. package/std/zig/ErrorBundle.zig +6 -2
  1799. package/std/zig/LibCDirs.zig +14 -7
  1800. package/std/zig/LibCInstallation.zig +49 -14
  1801. package/std/zig/Parse.zig +11 -76
  1802. package/std/zig/PkgConfig.zig +146 -0
  1803. package/std/zig/TokenSmith.zig +0 -6
  1804. package/std/zig/WindowsSdk.zig +18 -18
  1805. package/std/zig/Zir.zig +15 -69
  1806. package/std/zig/ZonGen.zig +19 -27
  1807. package/std/zig/llvm/Builder.zig +39 -33
  1808. package/std/zig/llvm/bitcode_writer.zig +3 -3
  1809. package/std/zig/llvm/ir.zig +8 -8
  1810. package/std/zig/system/arm.zig +56 -2
  1811. package/std/zig/system/linux.zig +4 -0
  1812. package/std/zig/system/loongarch.zig +25 -9
  1813. package/std/zig/system/windows.zig +34 -1
  1814. package/std/zig/system/x86.zig +60 -16
  1815. package/std/zig/system.zig +18 -25
  1816. package/std/zig/target.zig +3 -5
  1817. package/std/zig/tokenizer.zig +4 -43
  1818. package/std/zig.zig +110 -22
  1819. package/std/zip.zig +5 -5
  1820. package/std/zon/Serializer.zig +6 -2
  1821. package/std/zon/parse.zig +1 -1
  1822. package/zig.h +24 -2
  1823. package/compiler/build_runner.zig +0 -1857
  1824. package/compiler_rt/long_double.zig +0 -37
  1825. package/include/amxbf16transposeintrin.h +0 -94
  1826. package/include/amxcomplextransposeintrin.h +0 -303
  1827. package/include/amxfp16transposeintrin.h +0 -94
  1828. package/include/amxmovrstransposeintrin.h +0 -200
  1829. package/include/amxtf32transposeintrin.h +0 -105
  1830. package/include/amxtransposeintrin.h +0 -248
  1831. package/libc/include/arm-netbsd-eabi/machine/frame.h +0 -130
  1832. package/libc/include/generic-netbsd/powerpc/bswap.h +0 -8
  1833. package/libc/include/hexagon-linux-any/asm/signal.h +0 -29
  1834. package/libc/include/mips-netbsd-eabi/machine/psl.h +0 -3
  1835. package/libc/include/mips-netbsd-eabi/machine/reloc.h +0 -3
  1836. package/libc/include/mips-netbsd-eabi/machine/trap.h +0 -3
  1837. package/libc/include/mips64el-openbsd-none/loongson/hibernate.h +0 -33
  1838. package/libc/include/mips64el-openbsd-none/loongson/hibernate_var.h +0 -39
  1839. package/libc/include/mips64el-openbsd-none/machine/hibernate.h +0 -33
  1840. package/libc/include/mips64el-openbsd-none/machine/hibernate_var.h +0 -39
  1841. package/libc/include/s390x-linux-any/asm/tape390.h +0 -103
  1842. package/libc/mingw/math/lrintl.c +0 -18
  1843. package/libc/mingw/math/rintl.c +0 -16
  1844. package/libc/mingw/winpthreads/spinlock.c +0 -82
  1845. package/libc/musl/src/linux/tee.c +0 -8
  1846. package/libc/musl/src/math/i386/lrintl.c +0 -8
  1847. package/libc/musl/src/math/i386/rintl.c +0 -7
  1848. package/libc/musl/src/math/lrintl.c +0 -36
  1849. package/libc/musl/src/math/rintl.c +0 -29
  1850. package/libc/musl/src/math/s390x/rintl.c +0 -15
  1851. package/libc/musl/src/math/x32/lrintl.s +0 -7
  1852. package/libc/musl/src/math/x32/rintl.s +0 -6
  1853. package/libc/musl/src/math/x86_64/lrintl.c +0 -8
  1854. package/libc/musl/src/math/x86_64/rintl.c +0 -7
  1855. package/libc/musl/src/string/strdup.c +0 -10
  1856. package/libc/musl/src/string/strndup.c +0 -12
  1857. package/libc/musl/src/string/wcsdup.c +0 -10
  1858. package/libc/musl/src/thread/pthread_spin_destroy.c +0 -6
  1859. package/libc/musl/src/thread/pthread_spin_init.c +0 -6
  1860. package/libc/musl/src/thread/pthread_spin_lock.c +0 -8
  1861. package/libc/musl/src/thread/pthread_spin_trylock.c +0 -7
  1862. package/libc/musl/src/thread/pthread_spin_unlock.c +0 -7
  1863. package/libc/musl/src/unistd/dup2.c +0 -20
  1864. package/libc/musl/src/unistd/dup3.c +0 -26
  1865. package/libc/wasi/thread-stub/pthread_spin_lock.c +0 -8
  1866. package/libc/wasi/thread-stub/pthread_spin_trylock.c +0 -8
  1867. package/libc/wasi/thread-stub/pthread_spin_unlock.c +0 -7
  1868. package/libtsan/sanitizer_common/sanitizer_coverage_interface.inc +0 -43
  1869. package/std/Build/Step/CheckObject.zig +0 -2764
  1870. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/ansi.h +0 -0
  1871. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/aout_machdep.h +0 -0
  1872. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/asm.h +0 -0
  1873. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/bswap.h +0 -0
  1874. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/cdefs.h +0 -0
  1875. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/cpu.h +0 -0
  1876. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/disklabel.h +0 -0
  1877. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/elf_machdep.h +0 -0
  1878. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/endian.h +0 -0
  1879. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/endian_machdep.h +0 -0
  1880. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/fenv.h +0 -0
  1881. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/float.h +0 -0
  1882. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/fpu.h +0 -0
  1883. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/frame.h +0 -0
  1884. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/ieee.h +0 -0
  1885. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/ieeefp.h +0 -0
  1886. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/int_const.h +0 -0
  1887. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/int_fmtio.h +0 -0
  1888. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/int_limits.h +0 -0
  1889. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/int_mwgwtypes.h +0 -0
  1890. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/int_types.h +0 -0
  1891. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/intr.h +0 -0
  1892. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/kcore.h +0 -0
  1893. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/limits.h +0 -0
  1894. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/lock.h +0 -0
  1895. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/math.h +0 -0
  1896. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/mcontext.h +0 -0
  1897. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/mutex.h +0 -0
  1898. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/param.h +0 -0
  1899. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/pcb.h +0 -0
  1900. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/pmap.h +0 -0
  1901. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/proc.h +0 -0
  1902. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/profile.h +0 -0
  1903. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/psl.h +0 -0
  1904. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/pte.h +0 -0
  1905. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/ptrace.h +0 -0
  1906. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/reg.h +0 -0
  1907. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/reloc.h +0 -0
  1908. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/rwlock.h +0 -0
  1909. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/setjmp.h +0 -0
  1910. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/signal.h +0 -0
  1911. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/sljit_machdep.h +0 -0
  1912. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/trap.h +0 -0
  1913. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/types.h +0 -0
  1914. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/vmparam.h +0 -0
  1915. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/evbppc/wchar_limits.h +0 -0
  1916. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/machine/fpu.h +0 -0
  1917. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/machine/intr.h +0 -0
  1918. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/ansi.h +0 -0
  1919. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/aout_machdep.h +0 -0
  1920. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/cdefs.h +0 -0
  1921. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/elf_machdep.h +0 -0
  1922. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/endian.h +0 -0
  1923. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/endian_machdep.h +0 -0
  1924. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/float.h +0 -0
  1925. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/fpu.h +0 -0
  1926. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/frame.h +0 -0
  1927. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/ibm4xx/cpu.h +0 -0
  1928. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/ibm4xx/spr.h +0 -0
  1929. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/ibm4xx/tlb.h +0 -0
  1930. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/ieeefp.h +0 -0
  1931. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/int_const.h +0 -0
  1932. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/int_fmtio.h +0 -0
  1933. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/int_limits.h +0 -0
  1934. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/int_mwgwtypes.h +0 -0
  1935. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/int_types.h +0 -0
  1936. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/kcore.h +0 -0
  1937. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/lock.h +0 -0
  1938. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/math.h +0 -0
  1939. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/oea/bat.h +0 -0
  1940. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/oea/hid_601.h +0 -0
  1941. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/oea/pte.h +0 -0
  1942. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/oea/spr.h +0 -0
  1943. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/oea/sr_601.h +0 -0
  1944. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/oea/vmparam.h +0 -0
  1945. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/param.h +0 -0
  1946. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/pcb.h +0 -0
  1947. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/proc.h +0 -0
  1948. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/profile.h +0 -0
  1949. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/pte.h +0 -0
  1950. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/ptrace.h +0 -0
  1951. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/reg.h +0 -0
  1952. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/reloc.h +0 -0
  1953. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/rwlock.h +0 -0
  1954. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/setjmp.h +0 -0
  1955. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/signal.h +0 -0
  1956. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/sljit_machdep.h +0 -0
  1957. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/spr.h +0 -0
  1958. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/trap.h +0 -0
  1959. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/types.h +0 -0
  1960. /package/libc/include/{generic-netbsd → powerpc-netbsd-eabi}/powerpc/wchar_limits.h +0 -0
package/std/Build.zig CHANGED
@@ -1,4 +1,5 @@
1
1
  const Build = @This();
2
+
2
3
  const builtin = @import("builtin");
3
4
 
4
5
  const std = @import("std.zig");
@@ -19,48 +20,23 @@ const ArrayList = std.ArrayList;
19
20
  pub const Cache = @import("Build/Cache.zig");
20
21
  pub const Step = @import("Build/Step.zig");
21
22
  pub const Module = @import("Build/Module.zig");
22
- pub const Watch = @import("Build/Watch.zig");
23
- pub const Fuzz = @import("Build/Fuzz.zig");
24
- pub const WebServer = @import("Build/WebServer.zig");
25
23
  pub const abi = @import("Build/abi.zig");
24
+ /// The serialized output of configure phase ingested by make phase.
25
+ pub const Configuration = @import("Build/Configuration.zig");
26
26
 
27
27
  /// Shared state among all Build instances.
28
28
  graph: *Graph,
29
- install_tls: TopLevelStep,
30
- uninstall_tls: TopLevelStep,
29
+ install_tls: Step.TopLevel,
30
+ uninstall_tls: Step.TopLevel,
31
31
  allocator: Allocator,
32
32
  user_input_options: UserInputOptionsMap,
33
- available_options_map: AvailableOptionsMap,
34
- available_options_list: std.array_list.Managed(AvailableOption),
35
- verbose: bool,
36
- verbose_link: bool,
37
- verbose_cc: bool,
38
- verbose_air: bool,
39
- verbose_llvm_ir: ?[]const u8,
40
- verbose_llvm_bc: ?[]const u8,
41
- verbose_llvm_cpu_features: bool,
42
- reference_trace: ?u32 = null,
33
+ available_options_map: std.array_hash_map.String(AvailableOption) = .empty,
43
34
  invalid_user_input: bool,
44
35
  default_step: *Step,
45
- top_level_steps: std.StringArrayHashMapUnmanaged(*TopLevelStep),
46
- install_prefix: []const u8,
47
- dest_dir: ?[]const u8,
48
- lib_dir: []const u8,
49
- exe_dir: []const u8,
50
- h_dir: []const u8,
51
- install_path: []const u8,
52
- sysroot: ?[]const u8 = null,
53
- search_prefixes: ArrayList([]const u8),
54
- libc_file: ?[]const u8 = null,
36
+ top_level_steps: std.StringArrayHashMapUnmanaged(*Step.TopLevel),
55
37
  /// Path to the directory containing build.zig.
56
- build_root: Cache.Directory,
57
- cache_root: Cache.Directory,
58
- pkg_config_pkg_list: ?(PkgConfigError![]const PkgConfigPkg) = null,
59
- args: ?[]const []const u8 = null,
38
+ root: Cache.Path,
60
39
  debug_log_scopes: []const []const u8 = &.{},
61
- debug_compile_errors: bool = false,
62
- debug_incremental: bool = false,
63
- debug_pkg_config: bool = false,
64
40
  /// Number of stack frames captured when a `StackTrace` is recorded for debug purposes,
65
41
  /// in particular at `Step` creation.
66
42
  /// Set to 0 to disable stack collection.
@@ -76,12 +52,6 @@ enable_rosetta: bool = false,
76
52
  enable_wasmtime: bool = false,
77
53
  /// Use system Wine installation to run cross compiled Windows build artifacts.
78
54
  enable_wine: bool = false,
79
- /// After following the steps in https://codeberg.org/ziglang/infra/src/branch/master/libc-update/glibc.md,
80
- /// this will be the directory $glibc-build-dir/install/glibcs
81
- /// Given the example of the aarch64 target, this is the directory
82
- /// that contains the path `aarch64-linux-gnu/lib/ld-linux-aarch64.so.1`.
83
- /// Also works for dynamic musl.
84
- libc_runtimes_dir: ?[]const u8 = null,
85
55
 
86
56
  dep_prefix: []const u8 = "",
87
57
 
@@ -94,10 +64,6 @@ pkg_hash: []const u8,
94
64
  /// A mapping from dependency names to package hashes.
95
65
  available_deps: AvailableDeps,
96
66
 
97
- release_mode: ReleaseMode,
98
-
99
- build_id: ?std.zig.BuildId = null,
100
-
101
67
  pub const ReleaseMode = enum {
102
68
  off,
103
69
  any,
@@ -112,33 +78,145 @@ pub const Graph = struct {
112
78
  io: Io,
113
79
  /// Process lifetime.
114
80
  arena: Allocator,
115
- system_library_options: std.StringArrayHashMapUnmanaged(SystemLibraryMode) = .empty,
81
+ system_integration_options: std.StringArrayHashMapUnmanaged(SystemLibraryMode) = .empty,
116
82
  system_package_mode: bool = false,
117
- debug_compiler_runtime_libs: ?std.builtin.OptimizeMode = null,
118
- cache: Cache,
119
- zig_exe: [:0]const u8,
83
+ zig_exe: []const u8,
120
84
  environ_map: process.Environ.Map,
121
- global_cache_root: Cache.Directory,
122
- zig_lib_directory: Cache.Directory,
123
85
  needed_lazy_dependencies: std.StringArrayHashMapUnmanaged(void) = .empty,
124
86
  /// Information about the native target. Computed before build() is invoked.
125
87
  host: ResolvedTarget,
126
- incremental: ?bool = null,
127
- random_seed: u32 = 0,
128
88
  dependency_cache: InitializedDepMap = .empty,
129
89
  allow_so_scripts: ?bool = null,
130
- /// Steps should use `io` to limit the number of jobs, however in the case of
131
- /// a single step spawning a fixed number of processes this can be used.
132
- max_jobs: ?u32 = null,
133
- time_report: bool,
90
+ time_report: bool = false,
91
+ verbose: bool = false,
134
92
  /// Similar to the `Io.Terminal.Mode` returned by `Io.lockStderr`, but also
135
93
  /// respects the '--color' flag.
136
94
  stderr_mode: ?Io.Terminal.Mode = null,
95
+ release_mode: ReleaseMode = .off,
96
+
97
+ /// Indexes correspond to `Configuration.GeneratedFileIndex`.
98
+ generated_files: std.ArrayList(*Step),
99
+ wip_configuration: Configuration.Wip,
100
+
101
+ cache_poison: CachePoison = .pure,
102
+ /// Observing this data causes cache poisoning. See `CachePoison`.
103
+ search_prefixes: std.ArrayList([]const u8) = .empty,
104
+
105
+ /// If the cache is poisoned means that the **configure logic** had side
106
+ /// effects, or otherwise did something that could not be tracked by the
107
+ /// cache system.
108
+ ///
109
+ /// This is not to be confused with whether individual steps may have side
110
+ /// effects when being evaluated; it has to do with the logic inside build.zig
111
+ /// itself. For example, a `Run` step that prints "hello world" has side
112
+ /// effects *at make time* and therefore does not warrant setting this flag,
113
+ /// while checking for the existence of `scdoc` *at configure time* in order to
114
+ /// choose the default value for a configuration option does.
115
+ ///
116
+ /// Keeping the cache pure will make `zig build` faster, bypassing the
117
+ /// configurer process when identical configuration would be generated.
118
+ ///
119
+ /// When the cache is poisoned, the maker process will delete the build
120
+ /// configuration file upon ingesting it since it cannot be reused.
121
+ pub const CachePoison = enum {
122
+ pure,
123
+ poisoned,
124
+ /// Indicates the user would like to see a stack trace if the cache
125
+ /// would become poisoned.
126
+ disallowed,
127
+ /// Indicates the user would like to ignore the cache being poisoned
128
+ /// and cache anyway, opting into cache hits on stale configuration.
129
+ ignored,
130
+ };
131
+
132
+ pub fn addGeneratedFile(graph: *Graph, owner: *Step) Configuration.GeneratedFileIndex {
133
+ graph.generated_files.append(graph.arena, owner) catch @panic("OOM");
134
+ return @enumFromInt(graph.generated_files.items.len - 1);
135
+ }
136
+
137
+ pub fn dupeString(graph: *const Graph, bytes: []const u8) []const u8 {
138
+ return graph.arena.dupe(u8, bytes) catch @panic("OOM");
139
+ }
140
+
141
+ pub fn dupePath(graph: *const Graph, bytes: []const u8) []const u8 {
142
+ return dupePathInner(graph.arena, bytes);
143
+ }
144
+
145
+ fn dupePathInner(arena: Allocator, bytes: []const u8) []const u8 {
146
+ if (builtin.os.tag != .windows) return arena.dupe(u8, bytes) catch @panic("OOM");
147
+ const the_copy = arena.dupe(u8, bytes) catch @panic("OOM");
148
+ mem.replaceScalar(u8, the_copy, '/', '\\');
149
+ return the_copy;
150
+ }
151
+
152
+ pub fn dupeStrings(graph: *const Graph, strings: []const []const u8) []const []const u8 {
153
+ const array = graph.alloc([]const u8, strings.len);
154
+ for (array, strings) |*dest, source| dest.* = dupeString(graph, source);
155
+ return array;
156
+ }
157
+
158
+ /// An absolute path or a path relative to the current working directory of
159
+ /// the build runner process.
160
+ ///
161
+ /// Use of this function indicates a dependency on the host system.
162
+ pub fn cwdRelativePath(graph: *Graph, sub_path: []const u8) LazyPath {
163
+ return @This().path(graph, .cwd, sub_path);
164
+ }
165
+
166
+ /// A path whose components and contents are known at some point during
167
+ /// `Step` resolution, relative to the provided base directory.
168
+ pub fn path(graph: *Graph, base: Configuration.Path.Base, sub_path: []const u8) LazyPath {
169
+ return .{ .relative = .{
170
+ .base = base,
171
+ .sub_path = @This().dupePath(graph, sub_path),
172
+ } };
173
+ }
174
+
175
+ /// Allocates using the global process arena, failing the build on
176
+ /// allocation failure.
177
+ pub fn alloc(graph: *const Graph, comptime T: type, n: usize) []T {
178
+ return graph.arena.allocAdvancedWithRetAddr(T, null, n, @returnAddress()) catch @panic("OOM");
179
+ }
180
+
181
+ /// Allocates using the global process arena, failing the build on
182
+ /// allocation failure.
183
+ pub fn create(graph: *const Graph, comptime T: type) *T {
184
+ return @ptrCast(graph.arena.allocBytesAligned(.of(T), @sizeOf(T), @returnAddress()) catch @panic("OOM"));
185
+ }
186
+
187
+ pub fn addBytesList(graph: *Graph, bytes_list: []const []const u8) []const Configuration.Bytes {
188
+ const result = graph.alloc(Configuration.Bytes, bytes_list.len);
189
+ for (result, bytes_list) |*d, s| d.* = addBytes(graph, s);
190
+ return result;
191
+ }
192
+
193
+ pub fn addBytes(graph: *Graph, bytes: []const u8) Configuration.Bytes {
194
+ const wc = &graph.wip_configuration;
195
+ return wc.addBytes(bytes) catch @panic("OOM");
196
+ }
197
+
198
+ pub fn addString(graph: *Graph, bytes: []const u8) Configuration.String {
199
+ const wc = &graph.wip_configuration;
200
+ return wc.addString(bytes) catch @panic("OOM");
201
+ }
202
+
203
+ /// Indicates that the **configure logic** had side effects, or otherwise
204
+ /// did something that could not be tracked by the cache system.
205
+ ///
206
+ /// See `CachePoison` documentation for more details.
207
+ pub fn poisonCache(graph: *Graph) void {
208
+ switch (graph.cache_poison) {
209
+ .pure => graph.cache_poison = .poisoned,
210
+ .poisoned => return,
211
+ .disallowed => @panic("cache poisoned"),
212
+ .ignored => log.warn("ignoring cache poisoning", .{}),
213
+ }
214
+ }
137
215
  };
138
216
 
139
217
  const AvailableDeps = []const struct { []const u8, []const u8 };
140
218
 
141
- const SystemLibraryMode = enum {
219
+ pub const SystemLibraryMode = enum {
142
220
  /// User asked for the library to be disabled.
143
221
  /// The build runner has not confirmed whether the setting is recognized yet.
144
222
  user_disabled,
@@ -187,31 +265,11 @@ const InitializedDepContext = struct {
187
265
  }
188
266
  };
189
267
 
190
- pub const RunError = error{
191
- ReadFailure,
192
- ExitCodeFailure,
193
- ProcessTerminated,
194
- ExecNotSupported,
195
- } || std.process.SpawnError;
196
-
197
- pub const PkgConfigError = error{
198
- PkgConfigCrashed,
199
- PkgConfigFailed,
200
- PkgConfigNotInstalled,
201
- PkgConfigInvalidOutput,
202
- };
203
-
204
- pub const PkgConfigPkg = struct {
205
- name: []const u8,
206
- desc: []const u8,
207
- };
208
-
209
268
  const UserInputOptionsMap = StringHashMap(UserInputOption);
210
- const AvailableOptionsMap = StringHashMap(AvailableOption);
211
269
 
212
270
  const AvailableOption = struct {
213
271
  name: []const u8,
214
- type_id: TypeId,
272
+ type_id: Configuration.AvailableOption.Type,
215
273
  description: []const u8,
216
274
  /// If the `type_id` is `enum` or `enum_list` this provides the list of enum options
217
275
  enum_options: ?[]const []const u8,
@@ -232,36 +290,9 @@ const UserValue = union(enum) {
232
290
  lazy_path_list: std.array_list.Managed(LazyPath),
233
291
  };
234
292
 
235
- const TypeId = enum {
236
- bool,
237
- int,
238
- float,
239
- @"enum",
240
- enum_list,
241
- string,
242
- list,
243
- build_id,
244
- lazy_path,
245
- lazy_path_list,
246
- };
247
-
248
- const TopLevelStep = struct {
249
- pub const base_id: Step.Id = .top_level;
250
-
251
- step: Step,
252
- description: []const u8,
253
- };
254
-
255
- pub const DirList = struct {
256
- lib_dir: ?[]const u8 = null,
257
- exe_dir: ?[]const u8 = null,
258
- include_dir: ?[]const u8 = null,
259
- };
260
-
261
293
  pub fn create(
262
294
  graph: *Graph,
263
- build_root: Cache.Directory,
264
- cache_root: Cache.Directory,
295
+ root: Cache.Path,
265
296
  available_deps: AvailableDeps,
266
297
  ) error{OutOfMemory}!*Build {
267
298
  const arena = graph.arena;
@@ -269,31 +300,15 @@ pub fn create(
269
300
  const b = try arena.create(Build);
270
301
  b.* = .{
271
302
  .graph = graph,
272
- .build_root = build_root,
273
- .cache_root = cache_root,
274
- .verbose = false,
275
- .verbose_link = false,
276
- .verbose_cc = false,
277
- .verbose_air = false,
278
- .verbose_llvm_ir = null,
279
- .verbose_llvm_bc = null,
280
- .verbose_llvm_cpu_features = false,
303
+ .root = root,
281
304
  .invalid_user_input = false,
282
305
  .allocator = arena,
283
306
  .user_input_options = UserInputOptionsMap.init(arena),
284
- .available_options_map = AvailableOptionsMap.init(arena),
285
- .available_options_list = std.array_list.Managed(AvailableOption).init(arena),
286
307
  .top_level_steps = .{},
287
308
  .default_step = undefined,
288
- .search_prefixes = .empty,
289
- .install_prefix = undefined,
290
- .lib_dir = undefined,
291
- .exe_dir = undefined,
292
- .h_dir = undefined,
293
- .dest_dir = graph.environ_map.get("DESTDIR"),
294
309
  .install_tls = .{
295
310
  .step = .init(.{
296
- .id = TopLevelStep.base_id,
311
+ .tag = .top_level,
297
312
  .name = "install",
298
313
  .owner = b,
299
314
  }),
@@ -301,21 +316,17 @@ pub fn create(
301
316
  },
302
317
  .uninstall_tls = .{
303
318
  .step = .init(.{
304
- .id = TopLevelStep.base_id,
319
+ .tag = .top_level,
305
320
  .name = "uninstall",
306
321
  .owner = b,
307
- .makeFn = makeUninstall,
308
322
  }),
309
323
  .description = "Remove build artifacts from prefix path",
310
324
  },
311
- .install_path = undefined,
312
- .args = null,
313
325
  .modules = .empty,
314
326
  .named_writefiles = .empty,
315
327
  .named_lazy_paths = .empty,
316
328
  .pkg_hash = "",
317
329
  .available_deps = available_deps,
318
- .release_mode = .off,
319
330
  };
320
331
  try b.top_level_steps.put(arena, b.install_tls.step.name, &b.install_tls);
321
332
  try b.top_level_steps.put(arena, b.uninstall_tls.step.name, &b.uninstall_tls);
@@ -326,32 +337,20 @@ pub fn create(
326
337
  fn createChild(
327
338
  parent: *Build,
328
339
  dep_name: []const u8,
329
- build_root: Cache.Directory,
330
- pkg_hash: []const u8,
331
- pkg_deps: AvailableDeps,
332
- user_input_options: UserInputOptionsMap,
333
- ) error{OutOfMemory}!*Build {
334
- const child = try createChildOnly(parent, dep_name, build_root, pkg_hash, pkg_deps, user_input_options);
335
- try determineAndApplyInstallPrefix(child);
336
- return child;
337
- }
338
-
339
- fn createChildOnly(
340
- parent: *Build,
341
- dep_name: []const u8,
342
- build_root: Cache.Directory,
340
+ root: Cache.Path,
343
341
  pkg_hash: []const u8,
344
342
  pkg_deps: AvailableDeps,
345
343
  user_input_options: UserInputOptionsMap,
346
344
  ) error{OutOfMemory}!*Build {
347
- const allocator = parent.allocator;
348
- const child = try allocator.create(Build);
345
+ const arena = parent.graph.arena;
346
+ const child = try arena.create(Build);
349
347
  child.* = .{
350
348
  .graph = parent.graph,
351
- .allocator = allocator,
349
+ .root = root,
350
+ .allocator = arena,
352
351
  .install_tls = .{
353
352
  .step = .init(.{
354
- .id = TopLevelStep.base_id,
353
+ .tag = .top_level,
355
354
  .name = "install",
356
355
  .owner = child,
357
356
  }),
@@ -359,58 +358,31 @@ fn createChildOnly(
359
358
  },
360
359
  .uninstall_tls = .{
361
360
  .step = .init(.{
362
- .id = TopLevelStep.base_id,
361
+ .tag = .top_level,
363
362
  .name = "uninstall",
364
363
  .owner = child,
365
- .makeFn = makeUninstall,
366
364
  }),
367
365
  .description = "Remove build artifacts from prefix path",
368
366
  },
369
367
  .user_input_options = user_input_options,
370
- .available_options_map = AvailableOptionsMap.init(allocator),
371
- .available_options_list = std.array_list.Managed(AvailableOption).init(allocator),
372
- .verbose = parent.verbose,
373
- .verbose_link = parent.verbose_link,
374
- .verbose_cc = parent.verbose_cc,
375
- .verbose_air = parent.verbose_air,
376
- .verbose_llvm_ir = parent.verbose_llvm_ir,
377
- .verbose_llvm_bc = parent.verbose_llvm_bc,
378
- .verbose_llvm_cpu_features = parent.verbose_llvm_cpu_features,
379
- .reference_trace = parent.reference_trace,
380
368
  .invalid_user_input = false,
381
369
  .default_step = undefined,
382
370
  .top_level_steps = .{},
383
- .install_prefix = undefined,
384
- .dest_dir = parent.dest_dir,
385
- .lib_dir = parent.lib_dir,
386
- .exe_dir = parent.exe_dir,
387
- .h_dir = parent.h_dir,
388
- .install_path = parent.install_path,
389
- .sysroot = parent.sysroot,
390
- .search_prefixes = parent.search_prefixes,
391
- .libc_file = parent.libc_file,
392
- .build_root = build_root,
393
- .cache_root = parent.cache_root,
394
371
  .debug_log_scopes = parent.debug_log_scopes,
395
- .debug_compile_errors = parent.debug_compile_errors,
396
- .debug_incremental = parent.debug_incremental,
397
- .debug_pkg_config = parent.debug_pkg_config,
398
372
  .enable_darling = parent.enable_darling,
399
373
  .enable_qemu = parent.enable_qemu,
400
374
  .enable_rosetta = parent.enable_rosetta,
401
375
  .enable_wasmtime = parent.enable_wasmtime,
402
376
  .enable_wine = parent.enable_wine,
403
- .libc_runtimes_dir = parent.libc_runtimes_dir,
404
377
  .dep_prefix = parent.fmt("{s}{s}.", .{ parent.dep_prefix, dep_name }),
405
378
  .modules = .empty,
406
379
  .named_writefiles = .empty,
407
380
  .named_lazy_paths = .empty,
408
381
  .pkg_hash = pkg_hash,
409
382
  .available_deps = pkg_deps,
410
- .release_mode = parent.release_mode,
411
383
  };
412
- try child.top_level_steps.put(allocator, child.install_tls.step.name, &child.install_tls);
413
- try child.top_level_steps.put(allocator, child.uninstall_tls.step.name, &child.uninstall_tls);
384
+ try child.top_level_steps.put(arena, child.install_tls.step.name, &child.install_tls);
385
+ try child.top_level_steps.put(arena, child.uninstall_tls.step.name, &child.uninstall_tls);
414
386
  child.default_step = &child.install_tls.step;
415
387
  return child;
416
388
  }
@@ -624,13 +596,17 @@ const OrderedUserValue = union(enum) {
624
596
  hasher.update(sp.sub_path);
625
597
  },
626
598
  .generated => |gen| {
627
- hasher.update(gen.file.step.owner.pkg_hash);
628
- hasher.update(std.mem.asBytes(&gen.up));
599
+ hasher.update(@ptrCast(&gen.index));
600
+ hasher.update(@ptrCast(&gen.up));
629
601
  hasher.update(gen.sub_path);
630
602
  },
631
603
  .cwd_relative => |rel_path| {
632
604
  hasher.update(rel_path);
633
605
  },
606
+ .relative => |r| {
607
+ hasher.update(@ptrCast(&r.base));
608
+ hasher.update(@ptrCast(&r.sub_path));
609
+ },
634
610
  .dependency => |dep| {
635
611
  hasher.update(dep.dependency.builder.pkg_hash);
636
612
  hasher.update(dep.sub_path);
@@ -702,59 +678,6 @@ fn hashUserInputOptionsMap(allocator: Allocator, user_input_options: UserInputOp
702
678
  user_option.hash(hasher);
703
679
  }
704
680
 
705
- fn determineAndApplyInstallPrefix(b: *Build) error{OutOfMemory}!void {
706
- // Create an installation directory local to this package. This will be used when
707
- // dependant packages require a standard prefix, such as include directories for C headers.
708
- var hash = b.graph.cache.hash;
709
- // Random bytes to make unique. Refresh this with new random bytes when
710
- // implementation is modified in a non-backwards-compatible way.
711
- hash.add(@as(u32, 0xd8cb0055));
712
- hash.addBytes(b.dep_prefix);
713
-
714
- var wyhash = std.hash.Wyhash.init(0);
715
- hashUserInputOptionsMap(b.allocator, b.user_input_options, &wyhash);
716
- hash.add(wyhash.final());
717
-
718
- const digest = hash.final();
719
- const install_prefix = try b.cache_root.join(b.allocator, &.{ "i", &digest });
720
- b.resolveInstallPrefix(install_prefix, .{});
721
- }
722
-
723
- /// This function is intended to be called by lib/build_runner.zig, not a build.zig file.
724
- pub fn resolveInstallPrefix(b: *Build, install_prefix: ?[]const u8, dir_list: DirList) void {
725
- if (b.dest_dir) |dest_dir| {
726
- b.install_prefix = install_prefix orelse "/usr";
727
- b.install_path = b.pathJoin(&.{ dest_dir, b.install_prefix });
728
- } else {
729
- b.install_prefix = install_prefix orelse
730
- (b.build_root.join(b.allocator, &.{"zig-out"}) catch @panic("unhandled error"));
731
- b.install_path = b.install_prefix;
732
- }
733
-
734
- var lib_list = [_][]const u8{ b.install_path, "lib" };
735
- var exe_list = [_][]const u8{ b.install_path, "bin" };
736
- var h_list = [_][]const u8{ b.install_path, "include" };
737
-
738
- if (dir_list.lib_dir) |dir| {
739
- if (fs.path.isAbsolute(dir)) lib_list[0] = b.dest_dir orelse "";
740
- lib_list[1] = dir;
741
- }
742
-
743
- if (dir_list.exe_dir) |dir| {
744
- if (fs.path.isAbsolute(dir)) exe_list[0] = b.dest_dir orelse "";
745
- exe_list[1] = dir;
746
- }
747
-
748
- if (dir_list.include_dir) |dir| {
749
- if (fs.path.isAbsolute(dir)) h_list[0] = b.dest_dir orelse "";
750
- h_list[1] = dir;
751
- }
752
-
753
- b.lib_dir = b.pathJoin(&lib_list);
754
- b.exe_dir = b.pathJoin(&exe_list);
755
- b.h_dir = b.pathJoin(&h_list);
756
- }
757
-
758
681
  /// Create a set of key-value pairs that can be converted into a Zig source
759
682
  /// file and then inserted into a Zig compilation's module table for importing.
760
683
  /// In other words, this provides a way to expose build.zig values to Zig
@@ -769,7 +692,7 @@ pub const ExecutableOptions = struct {
769
692
  root_module: *Module,
770
693
  version: ?std.SemanticVersion = null,
771
694
  linkage: ?std.builtin.LinkMode = null,
772
- max_rss: usize = 0,
695
+ max_rss: u64 = 0,
773
696
  use_llvm: ?bool = null,
774
697
  use_lld: ?bool = null,
775
698
  zig_lib_dir: ?LazyPath = null,
@@ -799,7 +722,7 @@ pub fn addExecutable(b: *Build, options: ExecutableOptions) *Step.Compile {
799
722
  pub const ObjectOptions = struct {
800
723
  name: []const u8,
801
724
  root_module: *Module,
802
- max_rss: usize = 0,
725
+ max_rss: u64 = 0,
803
726
  use_llvm: ?bool = null,
804
727
  use_lld: ?bool = null,
805
728
  zig_lib_dir: ?LazyPath = null,
@@ -822,7 +745,7 @@ pub const LibraryOptions = struct {
822
745
  name: []const u8,
823
746
  root_module: *Module,
824
747
  version: ?std.SemanticVersion = null,
825
- max_rss: usize = 0,
748
+ max_rss: u64 = 0,
826
749
  use_llvm: ?bool = null,
827
750
  use_lld: ?bool = null,
828
751
  zig_lib_dir: ?LazyPath = null,
@@ -855,7 +778,7 @@ pub fn addLibrary(b: *Build, options: LibraryOptions) *Step.Compile {
855
778
  pub const TestOptions = struct {
856
779
  name: []const u8 = "test",
857
780
  root_module: *Module,
858
- max_rss: usize = 0,
781
+ max_rss: u64 = 0,
859
782
  filters: []const []const u8 = &.{},
860
783
  test_runner: ?Step.Compile.TestRunner = null,
861
784
  use_llvm: ?bool = null,
@@ -896,7 +819,7 @@ pub const AssemblyOptions = struct {
896
819
  /// `host` field of the package's `Build` instance.
897
820
  target: ResolvedTarget,
898
821
  optimize: std.builtin.OptimizeMode,
899
- max_rss: usize = 0,
822
+ max_rss: u64 = 0,
900
823
  zig_lib_dir: ?LazyPath = null,
901
824
  };
902
825
 
@@ -904,8 +827,10 @@ pub const AssemblyOptions = struct {
904
827
  /// it available to other packages which depend on this one.
905
828
  /// `createModule` can be used instead to create a private module.
906
829
  pub fn addModule(b: *Build, name: []const u8, options: Module.CreateOptions) *Module {
830
+ const graph = b.graph;
831
+ const arena = graph.arena;
907
832
  const module = Module.create(b, options);
908
- b.modules.put(b.graph.arena, b.dupe(name), module) catch @panic("OOM");
833
+ b.modules.put(arena, graph.dupeString(name), module) catch @panic("OOM");
909
834
  return module;
910
835
  }
911
836
 
@@ -916,11 +841,23 @@ pub fn createModule(b: *Build, options: Module.CreateOptions) *Module {
916
841
  return Module.create(b, options);
917
842
  }
918
843
 
919
- /// Initializes a `Step.Run` with argv, which must at least have the path to the
920
- /// executable. More command line arguments can be added with `addArg`,
921
- /// `addArgs`, and `addArtifactArg`.
922
- /// Be careful using this function, as it introduces a system dependency.
923
- /// To run an executable built with zig build, see `Step.Compile.run`.
844
+ /// Creates a step that executes a process on the host system.
845
+ ///
846
+ /// `argv` is one or more command line arguments passed to the executed
847
+ /// process. The first element is the name of the executable to run. More
848
+ /// command line arguments can be added with methods of `Step.Run`, such as:
849
+ /// * `Step.Run.addArgs`
850
+ /// * `Step.Run.addArtifactArg`
851
+ /// * `Step.Run.addFileArg`
852
+ /// * `Step.Run.addOutputFileArg`
853
+ ///
854
+ /// This function introduces a system dependency, compromising reproducibility
855
+ /// and making it more difficult to set up one's computer in order to build the
856
+ /// project from source.
857
+ ///
858
+ /// See also:
859
+ /// * `addRunArtifact`
860
+ /// * `addRunFile`
924
861
  pub fn addSystemCommand(b: *Build, argv: []const []const u8) *Step.Run {
925
862
  assert(argv.len >= 1);
926
863
  const run_step = Step.Run.create(b, b.fmt("run {s}", .{argv[0]}));
@@ -930,16 +867,22 @@ pub fn addSystemCommand(b: *Build, argv: []const []const u8) *Step.Run {
930
867
 
931
868
  /// Creates a `Step.Run` with an executable built with `addExecutable`.
932
869
  /// Add command line arguments with methods of `Step.Run`.
870
+ ///
871
+ /// It doesn't have to target the host. In some cases cross-compiled binaries
872
+ /// can even be executed.
873
+ ///
874
+ /// This is declarative; it constructs a build step that may or may not be run
875
+ /// depending on the options provided by the user to the build command.
876
+ ///
877
+ /// See also:
878
+ /// * `addSystemCommand`
879
+ /// * `addRunFile`
933
880
  pub fn addRunArtifact(b: *Build, exe: *Step.Compile) *Step.Run {
934
- // It doesn't have to be native. We catch that if you actually try to run it.
935
- // Consider that this is declarative; the run step may not be run unless a user
936
- // option is supplied.
937
-
938
881
  // Avoid the common case of the step name looking like "run test test".
939
882
  const step_name = if (exe.kind.isTest() and mem.eql(u8, exe.name, "test"))
940
- b.fmt("run {s}", .{@tagName(exe.kind)})
883
+ b.fmt("run {t}", .{exe.kind})
941
884
  else
942
- b.fmt("run {s} {s}", .{ @tagName(exe.kind), exe.name });
885
+ b.fmt("run {t} {s}", .{ exe.kind, exe.name });
943
886
 
944
887
  const run_step = Step.Run.create(b, step_name);
945
888
  run_step.producer = exe;
@@ -994,6 +937,19 @@ pub fn addRunArtifact(b: *Build, exe: *Step.Compile) *Step.Run {
994
937
  return run_step;
995
938
  }
996
939
 
940
+ /// Creates a step that executes the provided file.
941
+ ///
942
+ /// Add more command line arguments via methods of `Step.Run`.
943
+ ///
944
+ /// See also:
945
+ /// * `addSystemCommand`
946
+ /// * `addRunArtifact`
947
+ pub fn addRunFile(b: *Build, executable: LazyPath) *Step.Run {
948
+ const run_step = Step.Run.create(b, b.fmt("run {f}", .{executable}));
949
+ run_step.addFileArg(executable);
950
+ return run_step;
951
+ }
952
+
997
953
  /// Using the `values` provided, produces a C header file, possibly based on a
998
954
  /// template input file (e.g. config.h.in).
999
955
  /// When an input template file is provided, this function will fail the build
@@ -1013,36 +969,18 @@ pub fn addConfigHeader(
1013
969
  return config_header_step;
1014
970
  }
1015
971
 
1016
- /// Allocator.dupe without the need to handle out of memory.
1017
- pub fn dupe(b: *Build, bytes: []const u8) []u8 {
1018
- return dupeInner(b.allocator, bytes);
1019
- }
1020
-
1021
- pub fn dupeInner(allocator: std.mem.Allocator, bytes: []const u8) []u8 {
1022
- return allocator.dupe(u8, bytes) catch @panic("OOM");
972
+ pub fn dupe(b: *Build, bytes: []const u8) []const u8 {
973
+ return b.graph.dupeString(bytes);
1023
974
  }
1024
975
 
1025
- /// Duplicates an array of strings without the need to handle out of memory.
1026
- pub fn dupeStrings(b: *Build, strings: []const []const u8) [][]u8 {
1027
- const array = b.allocator.alloc([]u8, strings.len) catch @panic("OOM");
1028
- for (array, strings) |*dest, source| dest.* = b.dupe(source);
1029
- return array;
976
+ /// Deprecated, call `Graph.dupeStrings` instead.
977
+ pub fn dupeStrings(b: *Build, strings: []const []const u8) []const []const u8 {
978
+ return b.graph.dupeStrings(strings);
1030
979
  }
1031
980
 
1032
- /// Duplicates a path and converts all slashes to the OS's canonical path separator.
1033
- pub fn dupePath(b: *Build, bytes: []const u8) []u8 {
1034
- return dupePathInner(b.allocator, bytes);
1035
- }
1036
-
1037
- fn dupePathInner(allocator: std.mem.Allocator, bytes: []const u8) []u8 {
1038
- const the_copy = dupeInner(allocator, bytes);
1039
- for (the_copy) |*byte| {
1040
- switch (byte.*) {
1041
- '/', '\\' => byte.* = fs.path.sep,
1042
- else => {},
1043
- }
1044
- }
1045
- return the_copy;
981
+ /// Deprecated, call `Graph.dupePath` instead.
982
+ pub fn dupePath(b: *Build, bytes: []const u8) []const u8 {
983
+ return b.graph.dupePath(bytes);
1046
984
  }
1047
985
 
1048
986
  pub fn addWriteFile(b: *Build, file_path: []const u8, data: []const u8) *Step.WriteFile {
@@ -1052,13 +990,15 @@ pub fn addWriteFile(b: *Build, file_path: []const u8, data: []const u8) *Step.Wr
1052
990
  }
1053
991
 
1054
992
  pub fn addNamedWriteFiles(b: *Build, name: []const u8) *Step.WriteFile {
993
+ const graph = b.graph;
1055
994
  const wf = Step.WriteFile.create(b);
1056
- b.named_writefiles.put(b.graph.arena, b.dupe(name), wf) catch @panic("OOM");
995
+ b.named_writefiles.put(graph.arena, graph.dupeString(name), wf) catch @panic("OOM");
1057
996
  return wf;
1058
997
  }
1059
998
 
1060
999
  pub fn addNamedLazyPath(b: *Build, name: []const u8, lp: LazyPath) void {
1061
- b.named_lazy_paths.put(b.graph.arena, b.dupe(name), lp.dupe(b)) catch @panic("OOM");
1000
+ const graph = b.graph;
1001
+ b.named_lazy_paths.put(graph.arena, graph.dupeString(name), lp.dupe(graph)) catch @panic("OOM");
1062
1002
  }
1063
1003
 
1064
1004
  /// Creates a step for mutating files inside a temporary directory created lazily
@@ -1097,6 +1037,16 @@ pub fn addWriteFiles(b: *Build) *Step.WriteFile {
1097
1037
  return Step.WriteFile.create(b);
1098
1038
  }
1099
1039
 
1040
+ /// Creates a step for writing data to paths relative to the build root,
1041
+ /// mutating the project's source files.
1042
+ ///
1043
+ /// This build step was designed not to be used during the normal build
1044
+ /// process, but rather as a utility run by a developer with intention to
1045
+ /// update source files, which will then be committed to version control.
1046
+ ///
1047
+ /// Example use cases:
1048
+ /// * precompiling assets which are tracked by version control
1049
+ /// * snapshot testing
1100
1050
  pub fn addUpdateSourceFiles(b: *Build) *Step.UpdateSourceFiles {
1101
1051
  return Step.UpdateSourceFiles.create(b);
1102
1052
  }
@@ -1121,28 +1071,21 @@ pub fn getUninstallStep(b: *Build) *Step {
1121
1071
  return &b.uninstall_tls.step;
1122
1072
  }
1123
1073
 
1124
- fn makeUninstall(uninstall_step: *Step, options: Step.MakeOptions) anyerror!void {
1125
- _ = options;
1126
- const uninstall_tls: *TopLevelStep = @fieldParentPtr("step", uninstall_step);
1127
- const b: *Build = @fieldParentPtr("uninstall_tls", uninstall_tls);
1128
-
1129
- _ = b;
1130
- @panic("TODO implement https://github.com/ziglang/zig/issues/14943");
1131
- }
1132
-
1133
1074
  /// Creates a configuration option to be passed to the build.zig script.
1134
1075
  /// When a user directly runs `zig build`, they can set these options with `-D` arguments.
1135
1076
  /// When a project depends on a Zig package as a dependency, it programmatically sets
1136
1077
  /// these options when calling the dependency's build.zig script as a function.
1137
1078
  /// `null` is returned when an option is left to default.
1138
1079
  pub fn option(b: *Build, comptime T: type, name_raw: []const u8, description_raw: []const u8) ?T {
1139
- const name = b.dupe(name_raw);
1140
- const description = b.dupe(description_raw);
1080
+ const graph = b.graph;
1081
+ const arena = graph.arena;
1082
+ const name = graph.dupeString(name_raw);
1083
+ const description = graph.dupeString(description_raw);
1141
1084
  const type_id = comptime typeToEnum(T);
1142
1085
  const enum_options = if (type_id == .@"enum" or type_id == .enum_list) blk: {
1143
1086
  const EnumType = if (type_id == .enum_list) @typeInfo(T).pointer.child else T;
1144
1087
  const fields = comptime std.meta.fields(EnumType);
1145
- var options = std.array_list.Managed([]const u8).initCapacity(b.allocator, fields.len) catch @panic("OOM");
1088
+ var options = std.array_list.Managed([]const u8).initCapacity(arena, fields.len) catch @panic("OOM");
1146
1089
 
1147
1090
  inline for (fields) |field| {
1148
1091
  options.appendAssumeCapacity(field.name);
@@ -1156,10 +1099,9 @@ pub fn option(b: *Build, comptime T: type, name_raw: []const u8, description_raw
1156
1099
  .description = description,
1157
1100
  .enum_options = enum_options,
1158
1101
  };
1159
- if ((b.available_options_map.fetchPut(name, available_option) catch @panic("OOM")) != null) {
1160
- panic("Option '{s}' declared twice", .{name});
1102
+ if ((b.available_options_map.fetchPut(arena, name, available_option) catch @panic("OOM")) != null) {
1103
+ panic("option '{s}' declared twice", .{name});
1161
1104
  }
1162
- b.available_options_list.append(available_option) catch @panic("OOM");
1163
1105
 
1164
1106
  const option_ptr = b.user_input_options.getPtr(name) orelse return null;
1165
1107
  option_ptr.used = true;
@@ -1172,36 +1114,32 @@ pub fn option(b: *Build, comptime T: type, name_raw: []const u8, description_raw
1172
1114
  } else if (mem.eql(u8, s, "false")) {
1173
1115
  return false;
1174
1116
  } else {
1175
- log.err("Expected -D{s} to be a boolean, but received '{s}'", .{ name, s });
1117
+ log.err("expected -D{s} to be a boolean; received: {s}", .{ name, s });
1176
1118
  b.markInvalidUserInput();
1177
1119
  return null;
1178
1120
  }
1179
1121
  },
1180
1122
  .list, .map, .lazy_path, .lazy_path_list => {
1181
- log.err("Expected -D{s} to be a boolean, but received a {s}.", .{
1182
- name, @tagName(option_ptr.value),
1183
- });
1123
+ log.err("expected -D{s} to be a boolean; received: {t}", .{ name, option_ptr.value });
1184
1124
  b.markInvalidUserInput();
1185
1125
  return null;
1186
1126
  },
1187
1127
  },
1188
1128
  .int => switch (option_ptr.value) {
1189
1129
  .flag, .list, .map, .lazy_path, .lazy_path_list => {
1190
- log.err("Expected -D{s} to be an integer, but received a {s}.", .{
1191
- name, @tagName(option_ptr.value),
1192
- });
1130
+ log.err("expected -D{s} to be an integer; received: {t}", .{ name, option_ptr.value });
1193
1131
  b.markInvalidUserInput();
1194
1132
  return null;
1195
1133
  },
1196
1134
  .scalar => |s| {
1197
1135
  const n = std.fmt.parseInt(T, s, 10) catch |err| switch (err) {
1198
1136
  error.Overflow => {
1199
- log.err("-D{s} value {s} cannot fit into type {s}.", .{ name, s, @typeName(T) });
1137
+ log.err("-D{s} value {s} cannot fit into type {s}", .{ name, s, @typeName(T) });
1200
1138
  b.markInvalidUserInput();
1201
1139
  return null;
1202
1140
  },
1203
1141
  else => {
1204
- log.err("Expected -D{s} to be an integer of type {s}.", .{ name, @typeName(T) });
1142
+ log.err("expected -D{s} to be an integer of type {s}", .{ name, @typeName(T) });
1205
1143
  b.markInvalidUserInput();
1206
1144
  return null;
1207
1145
  },
@@ -1211,15 +1149,13 @@ pub fn option(b: *Build, comptime T: type, name_raw: []const u8, description_raw
1211
1149
  },
1212
1150
  .float => switch (option_ptr.value) {
1213
1151
  .flag, .map, .list, .lazy_path, .lazy_path_list => {
1214
- log.err("Expected -D{s} to be a float, but received a {s}.", .{
1215
- name, @tagName(option_ptr.value),
1216
- });
1152
+ log.err("expected -D{s} to be a float; received: {t}", .{ name, option_ptr.value });
1217
1153
  b.markInvalidUserInput();
1218
1154
  return null;
1219
1155
  },
1220
1156
  .scalar => |s| {
1221
1157
  const n = std.fmt.parseFloat(T, s) catch {
1222
- log.err("Expected -D{s} to be a float of type {s}.", .{ name, @typeName(T) });
1158
+ log.err("expected -D{s} to be a float of type {s}", .{ name, @typeName(T) });
1223
1159
  b.markInvalidUserInput();
1224
1160
  return null;
1225
1161
  };
@@ -1228,9 +1164,7 @@ pub fn option(b: *Build, comptime T: type, name_raw: []const u8, description_raw
1228
1164
  },
1229
1165
  .@"enum" => switch (option_ptr.value) {
1230
1166
  .flag, .map, .list, .lazy_path, .lazy_path_list => {
1231
- log.err("Expected -D{s} to be an enum, but received a {s}.", .{
1232
- name, @tagName(option_ptr.value),
1233
- });
1167
+ log.err("expected -D{s} to be an enum; received: {t}.", .{ name, option_ptr.value });
1234
1168
  b.markInvalidUserInput();
1235
1169
  return null;
1236
1170
  },
@@ -1238,7 +1172,7 @@ pub fn option(b: *Build, comptime T: type, name_raw: []const u8, description_raw
1238
1172
  if (std.meta.stringToEnum(T, s)) |enum_lit| {
1239
1173
  return enum_lit;
1240
1174
  } else {
1241
- log.err("Expected -D{s} to be of type {s}.", .{ name, @typeName(T) });
1175
+ log.err("expected -D{s} to be of type {s}", .{ name, @typeName(T) });
1242
1176
  b.markInvalidUserInput();
1243
1177
  return null;
1244
1178
  }
@@ -1246,9 +1180,7 @@ pub fn option(b: *Build, comptime T: type, name_raw: []const u8, description_raw
1246
1180
  },
1247
1181
  .string => switch (option_ptr.value) {
1248
1182
  .flag, .list, .map, .lazy_path, .lazy_path_list => {
1249
- log.err("Expected -D{s} to be a string, but received a {s}.", .{
1250
- name, @tagName(option_ptr.value),
1251
- });
1183
+ log.err("expected -D{s} to be a string; received: {t}", .{ name, option_ptr.value });
1252
1184
  b.markInvalidUserInput();
1253
1185
  return null;
1254
1186
  },
@@ -1256,9 +1188,7 @@ pub fn option(b: *Build, comptime T: type, name_raw: []const u8, description_raw
1256
1188
  },
1257
1189
  .build_id => switch (option_ptr.value) {
1258
1190
  .flag, .map, .list, .lazy_path, .lazy_path_list => {
1259
- log.err("Expected -D{s} to be an enum, but received a {s}.", .{
1260
- name, @tagName(option_ptr.value),
1261
- });
1191
+ log.err("expected -D{s} to be an enum; received: {t}.", .{ name, option_ptr.value });
1262
1192
  b.markInvalidUserInput();
1263
1193
  return null;
1264
1194
  },
@@ -1266,7 +1196,7 @@ pub fn option(b: *Build, comptime T: type, name_raw: []const u8, description_raw
1266
1196
  if (std.zig.BuildId.parse(s)) |build_id| {
1267
1197
  return build_id;
1268
1198
  } else |err| {
1269
- log.err("unable to parse option '-D{s}': {s}", .{ name, @errorName(err) });
1199
+ log.err("failed to parse option -D{s}: {t}", .{ name, err });
1270
1200
  b.markInvalidUserInput();
1271
1201
  return null;
1272
1202
  }
@@ -1274,42 +1204,38 @@ pub fn option(b: *Build, comptime T: type, name_raw: []const u8, description_raw
1274
1204
  },
1275
1205
  .list => switch (option_ptr.value) {
1276
1206
  .flag, .map, .lazy_path, .lazy_path_list => {
1277
- log.err("Expected -D{s} to be a list, but received a {s}.", .{
1278
- name, @tagName(option_ptr.value),
1279
- });
1207
+ log.err("expected -D{s} to be a list; received: {t}", .{ name, option_ptr.value });
1280
1208
  b.markInvalidUserInput();
1281
1209
  return null;
1282
1210
  },
1283
1211
  .scalar => |s| {
1284
- return b.allocator.dupe([]const u8, &[_][]const u8{s}) catch @panic("OOM");
1212
+ return arena.dupe([]const u8, &[_][]const u8{s}) catch @panic("OOM");
1285
1213
  },
1286
1214
  .list => |lst| return lst.items,
1287
1215
  },
1288
1216
  .enum_list => switch (option_ptr.value) {
1289
1217
  .flag, .map, .lazy_path, .lazy_path_list => {
1290
- log.err("Expected -D{s} to be a list, but received a {s}.", .{
1291
- name, @tagName(option_ptr.value),
1292
- });
1218
+ log.err("expected -D{s} to be a list; received: {t}", .{ name, option_ptr.value });
1293
1219
  b.markInvalidUserInput();
1294
1220
  return null;
1295
1221
  },
1296
1222
  .scalar => |s| {
1297
1223
  const Child = @typeInfo(T).pointer.child;
1298
1224
  const value = std.meta.stringToEnum(Child, s) orelse {
1299
- log.err("Expected -D{s} to be of type {s}.", .{ name, @typeName(Child) });
1225
+ log.err("expected -D{s} to be of type {s}", .{ name, @typeName(Child) });
1300
1226
  b.markInvalidUserInput();
1301
1227
  return null;
1302
1228
  };
1303
- return b.allocator.dupe(Child, &[_]Child{value}) catch @panic("OOM");
1229
+ return arena.dupe(Child, &[_]Child{value}) catch @panic("OOM");
1304
1230
  },
1305
1231
  .list => |lst| {
1306
1232
  const Child = @typeInfo(T).pointer.child;
1307
- const new_list = b.allocator.alloc(Child, lst.items.len) catch @panic("OOM");
1233
+ const new_list = graph.alloc(Child, lst.items.len);
1308
1234
  for (new_list, lst.items) |*new_item, str| {
1309
1235
  new_item.* = std.meta.stringToEnum(Child, str) orelse {
1310
- log.err("Expected -D{s} to be of type {s}.", .{ name, @typeName(Child) });
1236
+ log.err("expected -D{s} to be of type {s}", .{ name, @typeName(Child) });
1311
1237
  b.markInvalidUserInput();
1312
- b.allocator.free(new_list);
1238
+ arena.free(new_list);
1313
1239
  return null;
1314
1240
  };
1315
1241
  }
@@ -1320,18 +1246,16 @@ pub fn option(b: *Build, comptime T: type, name_raw: []const u8, description_raw
1320
1246
  .scalar => |s| return .{ .cwd_relative = s },
1321
1247
  .lazy_path => |lp| return lp,
1322
1248
  .flag, .map, .list, .lazy_path_list => {
1323
- log.err("Expected -D{s} to be a path, but received a {s}.", .{
1324
- name, @tagName(option_ptr.value),
1325
- });
1249
+ log.err("expected -D{s} to be a path; received: {t}", .{ name, option_ptr.value });
1326
1250
  b.markInvalidUserInput();
1327
1251
  return null;
1328
1252
  },
1329
1253
  },
1330
1254
  .lazy_path_list => switch (option_ptr.value) {
1331
- .scalar => |s| return b.allocator.dupe(LazyPath, &[_]LazyPath{.{ .cwd_relative = s }}) catch @panic("OOM"),
1332
- .lazy_path => |lp| return b.allocator.dupe(LazyPath, &[_]LazyPath{lp}) catch @panic("OOM"),
1255
+ .scalar => |s| return arena.dupe(LazyPath, &[_]LazyPath{.{ .cwd_relative = s }}) catch @panic("OOM"),
1256
+ .lazy_path => |lp| return arena.dupe(LazyPath, &[_]LazyPath{lp}) catch @panic("OOM"),
1333
1257
  .list => |lst| {
1334
- const new_list = b.allocator.alloc(LazyPath, lst.items.len) catch @panic("OOM");
1258
+ const new_list = graph.alloc(LazyPath, lst.items.len);
1335
1259
  for (new_list, lst.items) |*new_item, str| {
1336
1260
  new_item.* = .{ .cwd_relative = str };
1337
1261
  }
@@ -1339,9 +1263,7 @@ pub fn option(b: *Build, comptime T: type, name_raw: []const u8, description_raw
1339
1263
  },
1340
1264
  .lazy_path_list => |lp_list| return lp_list.items,
1341
1265
  .flag, .map => {
1342
- log.err("Expected -D{s} to be a path, but received a {s}.", .{
1343
- name, @tagName(option_ptr.value),
1344
- });
1266
+ log.err("expected -D{s} to be a path; received: {t}", .{ name, option_ptr.value });
1345
1267
  b.markInvalidUserInput();
1346
1268
  return null;
1347
1269
  },
@@ -1350,17 +1272,19 @@ pub fn option(b: *Build, comptime T: type, name_raw: []const u8, description_raw
1350
1272
  }
1351
1273
 
1352
1274
  pub fn step(b: *Build, name: []const u8, description: []const u8) *Step {
1353
- const step_info = b.allocator.create(TopLevelStep) catch @panic("OOM");
1275
+ const graph = b.graph;
1276
+ const arena = graph.arena;
1277
+ const step_info = arena.create(Step.TopLevel) catch @panic("OOM");
1354
1278
  step_info.* = .{
1355
1279
  .step = .init(.{
1356
- .id = TopLevelStep.base_id,
1280
+ .tag = .top_level,
1357
1281
  .name = name,
1358
1282
  .owner = b,
1359
1283
  }),
1360
- .description = b.dupe(description),
1284
+ .description = graph.dupeString(description),
1361
1285
  };
1362
- const gop = b.top_level_steps.getOrPut(b.allocator, name) catch @panic("OOM");
1363
- if (gop.found_existing) std.debug.panic("A top-level step with name \"{s}\" already exists", .{name});
1286
+ const gop = b.top_level_steps.getOrPut(arena, name) catch @panic("OOM");
1287
+ if (gop.found_existing) panic("A top-level step with name \"{s}\" already exists", .{name});
1364
1288
 
1365
1289
  gop.key_ptr.* = step_info.step.name;
1366
1290
  gop.value_ptr.* = step_info;
@@ -1373,8 +1297,10 @@ pub const StandardOptimizeOptionOptions = struct {
1373
1297
  };
1374
1298
 
1375
1299
  pub fn standardOptimizeOption(b: *Build, options: StandardOptimizeOptionOptions) std.builtin.OptimizeMode {
1300
+ const graph = b.graph;
1301
+
1376
1302
  if (options.preferred_optimize_mode) |mode| {
1377
- if (b.option(bool, "release", "optimize for end users") orelse (b.release_mode != .off)) {
1303
+ if (b.option(bool, "release", "optimize for end users") orelse (graph.release_mode != .off)) {
1378
1304
  return mode;
1379
1305
  } else {
1380
1306
  return .Debug;
@@ -1389,7 +1315,7 @@ pub fn standardOptimizeOption(b: *Build, options: StandardOptimizeOptionOptions)
1389
1315
  return mode;
1390
1316
  }
1391
1317
 
1392
- return switch (b.release_mode) {
1318
+ return switch (graph.release_mode) {
1393
1319
  .off => .Debug,
1394
1320
  .any => {
1395
1321
  std.debug.print("the project does not declare a preferred optimization mode. choose: --release=fast, --release=safe, or --release=small\n", .{});
@@ -1424,8 +1350,8 @@ pub fn parseTargetQuery(options: std.Target.Query.ParseOptions) error{ParseFaile
1424
1350
  opts_copy.diagnostics = &diags;
1425
1351
  return std.Target.Query.parse(opts_copy) catch |err| switch (err) {
1426
1352
  error.UnknownCpuModel => {
1427
- std.debug.print("unknown CPU: '{s}'\navailable CPUs for architecture '{s}':\n", .{
1428
- diags.cpu_name.?, @tagName(diags.arch.?),
1353
+ std.debug.print("unknown CPU: '{s}'\navailable CPUs for architecture '{t}':\n", .{
1354
+ diags.cpu_name.?, diags.arch.?,
1429
1355
  });
1430
1356
  for (diags.arch.?.allCpuModels()) |cpu| {
1431
1357
  std.debug.print(" {s}\n", .{cpu.name});
@@ -1435,11 +1361,10 @@ pub fn parseTargetQuery(options: std.Target.Query.ParseOptions) error{ParseFaile
1435
1361
  error.UnknownCpuFeature => {
1436
1362
  std.debug.print(
1437
1363
  \\unknown CPU feature: '{s}'
1438
- \\available CPU features for architecture '{s}':
1364
+ \\available CPU features for architecture '{t}':
1439
1365
  \\
1440
1366
  , .{
1441
- diags.unknown_feature_name.?,
1442
- @tagName(diags.arch.?),
1367
+ diags.unknown_feature_name.?, diags.arch.?,
1443
1368
  });
1444
1369
  for (diags.arch.?.allFeaturesList()) |feature| {
1445
1370
  std.debug.print(" {s}: {s}\n", .{ feature.name, feature.description });
@@ -1468,6 +1393,9 @@ pub fn parseTargetQuery(options: std.Target.Query.ParseOptions) error{ParseFaile
1468
1393
 
1469
1394
  /// Exposes standard `zig build` options for choosing a target.
1470
1395
  pub fn standardTargetOptionsQueryOnly(b: *Build, args: StandardTargetOptionsArgs) Target.Query {
1396
+ const graph = b.graph;
1397
+ const arena = graph.arena;
1398
+
1471
1399
  const maybe_triple = b.option(
1472
1400
  []const u8,
1473
1401
  "target",
@@ -1516,20 +1444,22 @@ pub fn standardTargetOptionsQueryOnly(b: *Build, args: StandardTargetOptionsArgs
1516
1444
 
1517
1445
  for (whitelist) |q| {
1518
1446
  log.info("allowed target: -Dtarget={s} -Dcpu={s}", .{
1519
- q.zigTriple(b.allocator) catch @panic("OOM"),
1520
- q.serializeCpuAlloc(b.allocator) catch @panic("OOM"),
1447
+ q.zigTriple(arena) catch @panic("OOM"),
1448
+ q.serializeCpuAlloc(arena) catch @panic("OOM"),
1521
1449
  });
1522
1450
  }
1523
1451
  log.err("chosen target '{s}' does not match one of the allowed targets", .{
1524
- selected_target.zigTriple(b.allocator) catch @panic("OOM"),
1452
+ selected_target.zigTriple(arena) catch @panic("OOM"),
1525
1453
  });
1526
1454
  b.markInvalidUserInput();
1527
1455
  return args.default_target;
1528
1456
  }
1529
1457
 
1530
1458
  pub fn addUserInputOption(b: *Build, name_raw: []const u8, value_raw: []const u8) error{OutOfMemory}!bool {
1531
- const name = b.dupe(name_raw);
1532
- const value = b.dupe(value_raw);
1459
+ const graph = b.graph;
1460
+ const arena = graph.arena;
1461
+ const name = graph.dupeString(name_raw);
1462
+ const value = graph.dupeString(value_raw);
1533
1463
  const gop = try b.user_input_options.getOrPut(name);
1534
1464
  if (!gop.found_existing) {
1535
1465
  gop.value_ptr.* = UserInputOption{
@@ -1544,7 +1474,7 @@ pub fn addUserInputOption(b: *Build, name_raw: []const u8, value_raw: []const u8
1544
1474
  switch (gop.value_ptr.value) {
1545
1475
  .scalar => |s| {
1546
1476
  // turn it into a list
1547
- var list = std.array_list.Managed([]const u8).init(b.allocator);
1477
+ var list = std.array_list.Managed([]const u8).init(arena);
1548
1478
  try list.append(s);
1549
1479
  try list.append(value);
1550
1480
  try b.user_input_options.put(name, .{
@@ -1572,7 +1502,9 @@ pub fn addUserInputOption(b: *Build, name_raw: []const u8, value_raw: []const u8
1572
1502
  return true;
1573
1503
  },
1574
1504
  .lazy_path, .lazy_path_list => {
1575
- log.warn("the lazy path value type isn't added from the CLI, but somehow '{s}' is a .{f}", .{ name, std.zig.fmtId(@tagName(gop.value_ptr.value)) });
1505
+ log.warn("the lazy path value type isn't added from the CLI, but somehow '{s}' is a .{f}", .{
1506
+ name, std.zig.fmtId(@tagName(gop.value_ptr.value)),
1507
+ });
1576
1508
  return true;
1577
1509
  },
1578
1510
  }
@@ -1580,7 +1512,8 @@ pub fn addUserInputOption(b: *Build, name_raw: []const u8, value_raw: []const u8
1580
1512
  }
1581
1513
 
1582
1514
  pub fn addUserInputFlag(b: *Build, name_raw: []const u8) error{OutOfMemory}!bool {
1583
- const name = b.dupe(name_raw);
1515
+ const graph = b.graph;
1516
+ const name = graph.dupeString(name_raw);
1584
1517
  const gop = try b.user_input_options.getOrPut(name);
1585
1518
  if (!gop.found_existing) {
1586
1519
  gop.value_ptr.* = .{
@@ -1602,7 +1535,7 @@ pub fn addUserInputFlag(b: *Build, name_raw: []const u8) error{OutOfMemory}!bool
1602
1535
  return true;
1603
1536
  },
1604
1537
  .lazy_path => |lp| {
1605
- log.err("Flag '-D{s}' conflicts with option '-D{s}={s}'.", .{ name, name, lp.getDisplayName() });
1538
+ log.err("Flag '-D{s}' conflicts with option '-D{s}={f}'.", .{ name, name, lp });
1606
1539
  return true;
1607
1540
  },
1608
1541
 
@@ -1611,7 +1544,7 @@ pub fn addUserInputFlag(b: *Build, name_raw: []const u8) error{OutOfMemory}!bool
1611
1544
  return false;
1612
1545
  }
1613
1546
 
1614
- fn typeToEnum(comptime T: type) TypeId {
1547
+ fn typeToEnum(comptime T: type) Configuration.AvailableOption.Type {
1615
1548
  return switch (T) {
1616
1549
  std.zig.BuildId => .build_id,
1617
1550
  LazyPath => .lazy_path,
@@ -1732,26 +1665,10 @@ pub fn addCheckFile(
1732
1665
  return Step.CheckFile.create(b, file_source, options);
1733
1666
  }
1734
1667
 
1735
- pub fn truncateFile(b: *Build, dest_path: []const u8) (Io.Dir.CreateDirError || Io.Dir.StatFileError)!void {
1736
- const io = b.graph.io;
1737
- if (b.verbose) log.info("truncate {s}", .{dest_path});
1738
- const cwd = Io.Dir.cwd();
1739
- var src_file = cwd.createFile(io, dest_path, .{}) catch |err| switch (err) {
1740
- error.FileNotFound => blk: {
1741
- if (fs.path.dirname(dest_path)) |dirname| {
1742
- try cwd.createDirPath(io, dirname);
1743
- }
1744
- break :blk try cwd.createFile(io, dest_path, .{});
1745
- },
1746
- else => |e| return e,
1747
- };
1748
- src_file.close(io);
1749
- }
1750
-
1751
1668
  /// References a file or directory relative to the source root.
1752
1669
  pub fn path(b: *Build, sub_path: []const u8) LazyPath {
1753
1670
  if (fs.path.isAbsolute(sub_path)) {
1754
- std.debug.panic("sub_path is expected to be relative to the build root, but was this absolute path: '{s}'. It is best avoid absolute paths, but if you must, it is supported by LazyPath.cwd_relative", .{
1671
+ panic("sub_path is expected to be relative to the build root, but was this absolute path: '{s}'. Absolute paths can cause problems but can be created via Graph.cwdRelativePath", .{
1755
1672
  sub_path,
1756
1673
  });
1757
1674
  }
@@ -1761,27 +1678,106 @@ pub fn path(b: *Build, sub_path: []const u8) LazyPath {
1761
1678
  } };
1762
1679
  }
1763
1680
 
1764
- /// This is low-level implementation details of the build system, not meant to
1765
- /// be called by users' build scripts. Even in the build system itself it is a
1766
- /// code smell to call this function.
1767
- pub fn pathFromRoot(b: *Build, sub_path: []const u8) []u8 {
1768
- return b.pathResolve(&.{ b.build_root.path orelse ".", sub_path });
1769
- }
1770
-
1771
- fn pathFromCwd(b: *Build, sub_path: []const u8) []u8 {
1772
- return b.pathResolve(&.{ b.graph.cache.cwd, sub_path });
1681
+ /// Creates a list of files and/or directories relative to the source root.
1682
+ pub fn pathList(b: *Build, sub_paths: []const []const u8) []const LazyPath {
1683
+ const graph = b.graph;
1684
+ const result = graph.alloc(LazyPath, sub_paths.len);
1685
+ for (result, sub_paths) |*d, s| d.* = path(b, s);
1686
+ return result;
1773
1687
  }
1774
1688
 
1775
1689
  pub fn pathJoin(b: *Build, paths: []const []const u8) []u8 {
1776
- return fs.path.join(b.allocator, paths) catch @panic("OOM");
1690
+ const graph = b.graph;
1691
+ const arena = graph.arena;
1692
+ return fs.path.join(arena, paths) catch @panic("OOM");
1777
1693
  }
1778
1694
 
1779
1695
  pub fn pathResolve(b: *Build, paths: []const []const u8) []u8 {
1780
- return fs.path.resolve(b.allocator, paths) catch @panic("OOM");
1696
+ const graph = b.graph;
1697
+ const arena = graph.arena;
1698
+ return fs.path.resolve(arena, paths) catch @panic("OOM");
1781
1699
  }
1782
1700
 
1783
1701
  pub fn fmt(b: *Build, comptime format: []const u8, args: anytype) []u8 {
1784
- return std.fmt.allocPrint(b.allocator, format, args) catch @panic("OOM");
1702
+ const graph = b.graph;
1703
+ const arena = graph.arena;
1704
+ return std.fmt.allocPrint(arena, format, args) catch @panic("OOM");
1705
+ }
1706
+
1707
+ /// Creates an anonymous `Step` that searches for an executable on the host that
1708
+ /// has more than one possible name.
1709
+ ///
1710
+ /// Returns the `LazyPath` of the found executable. The search only takes place
1711
+ /// if the `LazyPath` will be used by a depending `Step`.
1712
+ ///
1713
+ /// This API is useful in the following cases:
1714
+ /// * The binary is not named the same across all systems (for example "python"
1715
+ /// vs "python3").
1716
+ /// * The binary may be produced by building from source rather than being
1717
+ /// globally installed and will therefore be possibly found in one of the
1718
+ /// search prefix paths.
1719
+ ///
1720
+ /// Names are searched in order, observing search prefixes first and then PATH
1721
+ /// environment variable.
1722
+ ///
1723
+ /// Windows file name extensions are searched automatically, respecting the
1724
+ /// PATHEXT environment variable, so they need not be included in this list.
1725
+ /// However, even on Windows, the names will be checked without appending
1726
+ /// extensions first, so that can be used as a priority system.
1727
+ ///
1728
+ /// See also:
1729
+ /// * `findProgram`
1730
+ pub fn findProgramLazy(b: *Build, options: Step.FindProgram.Options) LazyPath {
1731
+ return .{ .generated = .{ .index = Step.FindProgram.create(b, options).found_path } };
1732
+ }
1733
+
1734
+ pub const FindProgramOptions = Step.FindProgram.Options;
1735
+
1736
+ /// Immediately (in the configure phase), searches for an executable on the host
1737
+ /// that has more than one possible name.
1738
+ ///
1739
+ /// Calling this function poisons the configuration cache, so it is only
1740
+ /// appropriate when the existence of the program or its output needs to be
1741
+ /// observed by configuration logic. For more information, see
1742
+ /// `Graph.CachePoison` documentation.
1743
+ ///
1744
+ /// Names are searched in order, observing search prefixes first and then PATH
1745
+ /// environment variable.
1746
+ ///
1747
+ /// Windows file name extensions are searched automatically, respecting the
1748
+ /// PATHEXT environment variable, so they need not be included in this list.
1749
+ /// However, even on Windows, the names will be checked without appending
1750
+ /// extensions first, so that can be used as a priority system.
1751
+ ///
1752
+ /// See also:
1753
+ /// * `findProgramLazy`
1754
+ pub fn findProgram(b: *Build, options: FindProgramOptions) ?[]const u8 {
1755
+ const graph = b.graph;
1756
+
1757
+ // Because it observes search prefixes and contents of directories in PATH.
1758
+ graph.poisonCache();
1759
+
1760
+ for (options.names) |name| {
1761
+ if (Io.Dir.path.isAbsolute(name)) {
1762
+ if (tryFindProgram(b, name)) |found| return found;
1763
+ }
1764
+ for (graph.search_prefixes.items) |search_prefix| {
1765
+ const full_path = b.pathJoin(&.{ search_prefix, "bin", name });
1766
+ if (tryFindProgram(b, full_path)) |found| return found;
1767
+ }
1768
+ }
1769
+
1770
+ if (b.graph.environ_map.get("PATH")) |PATH| {
1771
+ for (options.names) |name| {
1772
+ var it = mem.tokenizeScalar(u8, PATH, Io.Dir.path.delimiter);
1773
+ while (it.next()) |p| {
1774
+ const full_path = b.pathJoin(&.{ p, name });
1775
+ if (tryFindProgram(b, full_path)) |found| return found;
1776
+ }
1777
+ }
1778
+ }
1779
+
1780
+ return null;
1785
1781
  }
1786
1782
 
1787
1783
  fn supportedWindowsProgramExtension(ext: []const u8) bool {
@@ -1792,14 +1788,17 @@ fn supportedWindowsProgramExtension(ext: []const u8) bool {
1792
1788
  }
1793
1789
 
1794
1790
  fn tryFindProgram(b: *Build, full_path: []const u8) ?[]const u8 {
1795
- const io = b.graph.io;
1796
- const arena = b.allocator;
1791
+ const graph = b.graph;
1792
+ const io = graph.io;
1793
+ const arena = graph.arena;
1797
1794
 
1798
- if (b.build_root.handle.realPathFileAlloc(io, full_path, arena)) |p| {
1799
- return p;
1795
+ if (Io.Dir.cwd().access(io, full_path, .{ .execute = true })) |_| {
1796
+ return full_path;
1800
1797
  } else |err| switch (err) {
1801
- error.OutOfMemory => @panic("OOM"),
1802
- else => {},
1798
+ error.FileNotFound, error.AccessDenied, error.PermissionDenied => |e| {
1799
+ if (graph.verbose) log.info("searched: {t} {s}", .{ e, full_path });
1800
+ },
1801
+ else => |e| return panic("failed accessing {s}: {t}", .{ full_path, e }),
1803
1802
  }
1804
1803
 
1805
1804
  if (builtin.os.tag == .windows) {
@@ -1809,14 +1808,16 @@ fn tryFindProgram(b: *Build, full_path: []const u8) ?[]const u8 {
1809
1808
  while (it.next()) |ext| {
1810
1809
  if (!supportedWindowsProgramExtension(ext)) continue;
1811
1810
 
1812
- return b.build_root.handle.realPathFileAlloc(
1813
- io,
1814
- b.fmt("{s}{s}", .{ full_path, ext }),
1815
- arena,
1816
- ) catch |err| switch (err) {
1817
- error.OutOfMemory => @panic("OOM"),
1818
- else => continue,
1819
- };
1811
+ const extended_path = try mem.concat(arena, &.{ full_path, ext });
1812
+
1813
+ if (Io.Dir.cwd().access(io, extended_path, .{ .execute = true })) |_| {
1814
+ return extended_path;
1815
+ } else |err| switch (err) {
1816
+ error.FileNotFound, error.AccessDenied, error.PermissionDenied => |e| {
1817
+ if (graph.verbose) log.info("searched: {t} {s}", .{ e, extended_path });
1818
+ },
1819
+ else => |e| return panic("failed accessing {s}: {t}", .{ extended_path, e }),
1820
+ }
1820
1821
  }
1821
1822
  }
1822
1823
  }
@@ -1824,114 +1825,158 @@ fn tryFindProgram(b: *Build, full_path: []const u8) ?[]const u8 {
1824
1825
  return null;
1825
1826
  }
1826
1827
 
1827
- pub fn findProgram(b: *Build, names: []const []const u8, paths: []const []const u8) error{FileNotFound}![]const u8 {
1828
- // TODO report error for ambiguous situations
1829
- for (b.search_prefixes.items) |search_prefix| {
1830
- for (names) |name| {
1831
- if (fs.path.isAbsolute(name)) {
1832
- return name;
1833
- }
1834
- return tryFindProgram(b, b.pathJoin(&.{ search_prefix, "bin", name })) orelse continue;
1835
- }
1836
- }
1837
- if (b.graph.environ_map.get("PATH")) |PATH| {
1838
- for (names) |name| {
1839
- if (fs.path.isAbsolute(name)) {
1840
- return name;
1841
- }
1842
- var it = mem.tokenizeScalar(u8, PATH, fs.path.delimiter);
1843
- while (it.next()) |p| {
1844
- return tryFindProgram(b, b.pathJoin(&.{ p, name })) orelse continue;
1845
- }
1846
- }
1847
- }
1848
- for (names) |name| {
1849
- if (fs.path.isAbsolute(name)) {
1850
- return name;
1851
- }
1852
- for (paths) |p| {
1853
- return tryFindProgram(b, b.pathJoin(&.{ p, name })) orelse continue;
1854
- }
1855
- }
1856
- return error.FileNotFound;
1857
- }
1858
-
1828
+ /// Deprecated; use `runFallible`.
1859
1829
  pub fn runAllowFail(
1860
1830
  b: *Build,
1861
1831
  argv: []const []const u8,
1862
- out_code: *u8,
1863
- stderr_behavior: std.process.SpawnOptions.StdIo,
1864
- ) RunError![]u8 {
1865
- assert(argv.len != 0);
1832
+ exit_code: *u8,
1833
+ stderr_behavior: process.SpawnOptions.StdIo,
1834
+ ) anyerror![]u8 {
1835
+ if (!process.can_spawn) return error.ExecNotSupported;
1836
+ switch (runFallible(b, argv, .{
1837
+ .stderr_behavior = stderr_behavior,
1838
+ })) {
1839
+ .success => |stdout| return stdout,
1840
+ .spawn_failed => |err| return err,
1841
+ .bad_exit_code => |code| {
1842
+ exit_code.* = code;
1843
+ return error.ExitCodeFailure;
1844
+ },
1845
+ .crashed => {
1846
+ exit_code.* = 255;
1847
+ return error.ProcessTerminated;
1848
+ },
1849
+ }
1850
+ }
1851
+
1852
+ pub const RunOptions = struct {
1853
+ stderr_behavior: process.SpawnOptions.StdIo = .inherit,
1854
+ /// Fail the configuration if stdout is larger than this.
1855
+ stdout_limit: Io.Limit = .limited(1_000_000),
1856
+ /// Set to change the current working directory when spawning the child
1857
+ /// process.
1858
+ cwd: process.Child.Cwd = .inherit,
1859
+ /// Replaces the child environment when provided. The PATH value from here
1860
+ /// is not used to resolve `argv[0]`; that resolution always uses parent
1861
+ /// environment.
1862
+ environ_map: ?*const process.Environ.Map = null,
1863
+ expand_arg0: process.ArgExpansion = .no_expand,
1864
+ };
1865
+
1866
+ pub const RunResult = union(enum) {
1867
+ /// Thild process exited with code 0, writing this stdout.
1868
+ success: []u8,
1869
+ /// The child process could not be created.
1870
+ spawn_failed: process.SpawnError,
1871
+ /// The child process indicated failure.
1872
+ bad_exit_code: u8,
1873
+ /// The child process terminated abnormally.
1874
+ crashed,
1875
+ };
1866
1876
 
1867
- if (!process.can_spawn)
1868
- return error.ExecNotSupported;
1877
+ /// Executes the provided command immediately, allowing failure.
1878
+ ///
1879
+ /// If the program exits successfully, stdout is returned. Otherwise, returns
1880
+ /// an indication of failure.
1881
+ ///
1882
+ /// See also:
1883
+ /// * `run`.
1884
+ pub fn runFallible(b: *Build, argv: []const []const u8, options: RunOptions) RunResult {
1885
+ assert(argv.len != 0);
1869
1886
 
1870
1887
  const graph = b.graph;
1871
1888
  const io = graph.io;
1889
+ const arena = graph.arena;
1890
+
1891
+ const print_opts: std.zig.AllocPrintCmdOptions = .{
1892
+ .cwd = switch (options.cwd) {
1893
+ .inherit => null,
1894
+ .path => |p| p,
1895
+ .dir => null, // Unknown without changing function signature of runFallible.
1896
+ },
1897
+ .child_env = options.environ_map,
1898
+ .parent_env = &graph.environ_map,
1899
+ };
1872
1900
 
1873
- const max_output_size = 400 * 1024;
1874
- try Step.handleVerbose2(b, .inherit, &graph.environ_map, argv);
1901
+ if (graph.verbose) {
1902
+ const text = std.zig.allocPrintCmd(arena, argv, print_opts) catch @panic("OOM");
1903
+ std.log.scoped(.verbose).info("{s}", .{text});
1904
+ }
1875
1905
 
1876
- var child = try std.process.spawn(io, .{
1906
+ var child = process.spawn(io, .{
1877
1907
  .argv = argv,
1878
- .environ_map = &graph.environ_map,
1879
1908
  .stdin = .ignore,
1880
1909
  .stdout = .pipe,
1881
- .stderr = stderr_behavior,
1882
- });
1910
+ .stderr = options.stderr_behavior,
1911
+ .cwd = options.cwd,
1912
+ .environ_map = &graph.environ_map,
1913
+ .expand_arg0 = options.expand_arg0,
1914
+ }) catch |err| return .{ .spawn_failed = err };
1883
1915
 
1884
1916
  var stdout_reader = child.stdout.?.readerStreaming(io, &.{});
1885
- const stdout = stdout_reader.interface.allocRemaining(b.allocator, .limited(max_output_size)) catch {
1886
- return error.ReadFailure;
1917
+ const stdout = stdout_reader.interface.allocRemaining(arena, options.stdout_limit) catch |err| switch (err) {
1918
+ error.ReadFailed => panic("failed to read from child: {t}", .{stdout_reader.err.?}),
1919
+ else => |e| panic("failed to read from child: {t}", .{e}),
1887
1920
  };
1888
- errdefer b.allocator.free(stdout);
1889
-
1890
- const term = try child.wait(io);
1891
- switch (term) {
1892
- .exited => |code| {
1893
- if (code != 0) {
1894
- out_code.* = @as(u8, @truncate(code));
1895
- return error.ExitCodeFailure;
1896
- }
1897
- return stdout;
1898
- },
1899
- .signal, .stopped => |sig| {
1900
- out_code.* = @as(u8, @truncate(@intFromEnum(sig)));
1901
- return error.ProcessTerminated;
1902
- },
1903
- .unknown => |code| {
1904
- out_code.* = @as(u8, @truncate(code));
1905
- return error.ProcessTerminated;
1921
+
1922
+ const term = child.wait(io) catch @panic("unexpected");
1923
+
1924
+ return switch (term) {
1925
+ .exited => |code| switch (code) {
1926
+ 0 => .{ .success = stdout },
1927
+ else => .{ .bad_exit_code = code },
1906
1928
  },
1907
- }
1929
+ .signal, .stopped, .unknown => .crashed,
1930
+ };
1908
1931
  }
1909
1932
 
1910
- /// This is a helper function to be called from build.zig scripts, *not* from
1911
- /// inside step make() functions. If any errors occur, it fails the build with
1912
- /// a helpful message.
1933
+ /// Executes the provided command immediately.
1934
+ ///
1935
+ /// If the program exits successfully, stdout is returned. Otherwise, fails the
1936
+ /// build with a helpful message.
1937
+ ///
1938
+ /// See also:
1939
+ /// * `runFallible`.
1913
1940
  pub fn run(b: *Build, argv: []const []const u8) []u8 {
1914
- var code: u8 = undefined;
1915
- return b.runAllowFail(argv, &code, .inherit) catch |err| process.fatal(
1916
- "the following command failed with {t}:\n{s}",
1917
- .{ err, Step.allocPrintCmd(b.allocator, .inherit, null, argv) catch @panic("OOM") },
1918
- );
1941
+ const graph = b.graph;
1942
+ const arena = graph.arena;
1943
+ switch (b.runFallible(argv, .{
1944
+ .stderr_behavior = .inherit,
1945
+ })) {
1946
+ .success => |stdout| return stdout,
1947
+ .spawn_failed => |err| process.fatal("the following command failed with {t}:\n{s}", .{
1948
+ err, std.zig.allocPrintCmd(arena, argv, .{}) catch @panic("OOM"),
1949
+ }),
1950
+ .bad_exit_code => |code| process.fatal("the following command exited with code {d}:\n{s}", .{
1951
+ code, std.zig.allocPrintCmd(arena, argv, .{}) catch @panic("OOM"),
1952
+ }),
1953
+ .crashed => process.fatal("the following command crashed:\n{s}", .{
1954
+ std.zig.allocPrintCmd(arena, argv, .{}) catch @panic("OOM"),
1955
+ }),
1956
+ }
1919
1957
  }
1920
1958
 
1959
+ /// Adds additional paths, equivalent to the `--search-prefix` arguments
1960
+ /// provided by the user. Paths added with this function have lower precedence
1961
+ /// than the ones specified by the user on the command line.
1962
+ ///
1963
+ /// It is generally best practice to avoid calling this function, instead
1964
+ /// relying on the user to provide these paths via the standard build system
1965
+ /// interface. However, when integrating with other build systems, the user may
1966
+ /// have already provided the information to the other build system, and thus
1967
+ /// it is desirable to use that same information without requiring the user to
1968
+ /// provide it again.
1921
1969
  pub fn addSearchPrefix(b: *Build, search_prefix: []const u8) void {
1922
- b.search_prefixes.append(b.allocator, b.dupePath(search_prefix)) catch @panic("OOM");
1970
+ if (b.isRoot()) {
1971
+ const graph = b.graph;
1972
+ const wc = &graph.wip_configuration;
1973
+ const string = wc.addString(search_prefix) catch @panic("OOM");
1974
+ wc.search_prefixes.append(wc.gpa, string) catch @panic("OOM");
1975
+ }
1923
1976
  }
1924
1977
 
1925
- pub fn getInstallPath(b: *Build, dir: InstallDir, dest_rel_path: []const u8) []const u8 {
1926
- assert(!fs.path.isAbsolute(dest_rel_path)); // Install paths must be relative to the prefix
1927
- const base_dir = switch (dir) {
1928
- .prefix => b.install_path,
1929
- .bin => b.exe_dir,
1930
- .lib => b.lib_dir,
1931
- .header => b.h_dir,
1932
- .custom => |p| b.pathJoin(&.{ b.install_path, p }),
1933
- };
1934
- return b.pathResolve(&.{ base_dir, dest_rel_path });
1978
+ pub fn isRoot(b: *const Build) bool {
1979
+ return b.pkg_hash.len == 0;
1935
1980
  }
1936
1981
 
1937
1982
  pub const Dependency = struct {
@@ -1987,14 +2032,15 @@ fn findPkgHashOrFatal(b: *Build, name: []const u8) []const u8 {
1987
2032
  for (b.available_deps) |dep| {
1988
2033
  if (mem.eql(u8, dep[0], name)) return dep[1];
1989
2034
  }
1990
-
1991
- const full_path = b.pathFromRoot("build.zig.zon");
1992
- std.debug.panic("no dependency named '{s}' in '{s}'. All packages used in build.zig must be declared in this file", .{ name, full_path });
2035
+ std.log.info("all dependencies used by build.zig must be declared in corresponding build.zig.zon", .{});
2036
+ if (b.pkg_hash.len == 0) panic("no dependency named {s}", .{name});
2037
+ panic("no dependency named {s} in {s} ({s})", .{ name, b.dep_prefix, b.pkg_hash });
1993
2038
  }
1994
2039
 
1995
2040
  inline fn findImportPkgHashOrFatal(b: *Build, comptime asking_build_zig: type, comptime dep_name: []const u8) []const u8 {
1996
2041
  const build_runner = @import("root");
1997
2042
  const deps = build_runner.dependencies;
2043
+ const arena = b.graph.arena;
1998
2044
 
1999
2045
  const b_pkg_hash, const b_pkg_deps = comptime for (@typeInfo(deps.packages).@"struct".decls) |decl| {
2000
2046
  const pkg_hash = decl.name;
@@ -2002,14 +2048,19 @@ inline fn findImportPkgHashOrFatal(b: *Build, comptime asking_build_zig: type, c
2002
2048
  if (@hasDecl(pkg, "build_zig") and pkg.build_zig == asking_build_zig) break .{ pkg_hash, pkg.deps };
2003
2049
  } else .{ "", deps.root_deps };
2004
2050
  if (!std.mem.eql(u8, b_pkg_hash, b.pkg_hash)) {
2005
- std.debug.panic("'{}' is not the struct that corresponds to '{s}'", .{ asking_build_zig, b.pathFromRoot("build.zig") });
2051
+ const build_zig_path = b.root.join(arena, "build.zig") catch @panic("OOM");
2052
+ panic("{} is not the struct that corresponds to {f}", .{
2053
+ asking_build_zig, build_zig_path,
2054
+ });
2006
2055
  }
2007
2056
  comptime for (b_pkg_deps) |dep| {
2008
2057
  if (std.mem.eql(u8, dep[0], dep_name)) return dep[1];
2009
2058
  };
2010
2059
 
2011
- const full_path = b.pathFromRoot("build.zig.zon");
2012
- std.debug.panic("no dependency named '{s}' in '{s}'. All packages used in build.zig must be declared in this file", .{ dep_name, full_path });
2060
+ const full_path = b.root.join(arena, "build.zig.zon") catch @panic("OOM");
2061
+ panic("no dependency named {s} in {f}. All packages used in build.zig must be declared in this file", .{
2062
+ dep_name, full_path,
2063
+ });
2013
2064
  }
2014
2065
 
2015
2066
  fn markNeededLazyDep(b: *Build, pkg_hash: []const u8) void {
@@ -2026,6 +2077,7 @@ fn markNeededLazyDep(b: *Build, pkg_hash: []const u8) void {
2026
2077
  /// In other words, if this function returns `null` it means that the only
2027
2078
  /// purpose of completing the configure phase is to find out all the other lazy
2028
2079
  /// dependencies that are also required.
2080
+ ///
2029
2081
  /// It is allowed to use this function for non-lazy dependencies, in which case
2030
2082
  /// it will never return `null`. This allows toggling laziness via
2031
2083
  /// build.zig.zon without changing build.zig logic.
@@ -2058,7 +2110,7 @@ pub fn dependency(b: *Build, name: []const u8, args: anytype) *Dependency {
2058
2110
  if (mem.eql(u8, decl.name, pkg_hash)) {
2059
2111
  const pkg = @field(deps.packages, decl.name);
2060
2112
  if (@hasDecl(pkg, "available")) {
2061
- std.debug.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 });
2113
+ 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 });
2062
2114
  }
2063
2115
  return dependencyInner(b, name, pkg.build_root, if (@hasDecl(pkg, "build_zig")) pkg.build_zig else null, pkg_hash, pkg.deps, args);
2064
2116
  }
@@ -2111,6 +2163,8 @@ pub fn dependencyFromBuildZig(
2111
2163
  ) *Dependency {
2112
2164
  const build_runner = @import("root");
2113
2165
  const deps = build_runner.dependencies;
2166
+ const graph = b.graph;
2167
+ const arena = graph.arena;
2114
2168
 
2115
2169
  find_dep: {
2116
2170
  const pkg, const pkg_hash = inline for (@typeInfo(deps.packages).@"struct".decls) |decl| {
@@ -2124,8 +2178,8 @@ pub fn dependencyFromBuildZig(
2124
2178
  return dependencyInner(b, dep_name, pkg.build_root, pkg.build_zig, pkg_hash, pkg.deps, args);
2125
2179
  }
2126
2180
 
2127
- const full_path = b.pathFromRoot("build.zig.zon");
2128
- std.debug.panic("'{}' is not a build.zig struct of a dependency in '{s}'", .{ build_zig, full_path });
2181
+ const full_path = b.root.join(arena, "build.zig.zon") catch @panic("OOM");
2182
+ panic("{} is not a build.zig struct of a dependency in {f}", .{ build_zig, full_path });
2129
2183
  }
2130
2184
 
2131
2185
  fn userValuesAreSame(lhs: UserValue, rhs: UserValue) bool {
@@ -2188,10 +2242,10 @@ fn userLazyPathsAreTheSame(lhs_lp: LazyPath, rhs_lp: LazyPath) bool {
2188
2242
  if (lhs_sp.owner != rhs_sp.owner) return false;
2189
2243
  if (std.mem.eql(u8, lhs_sp.sub_path, rhs_sp.sub_path)) return false;
2190
2244
  },
2191
- .generated => |lhs_gen| {
2192
- const rhs_gen = rhs_lp.generated;
2245
+ .generated => |*lhs_gen| {
2246
+ const rhs_gen = &rhs_lp.generated;
2193
2247
 
2194
- if (lhs_gen.file != rhs_gen.file) return false;
2248
+ if (lhs_gen.index != rhs_gen.index) return false;
2195
2249
  if (lhs_gen.up != rhs_gen.up) return false;
2196
2250
  if (std.mem.eql(u8, lhs_gen.sub_path, rhs_gen.sub_path)) return false;
2197
2251
  },
@@ -2200,6 +2254,7 @@ fn userLazyPathsAreTheSame(lhs_lp: LazyPath, rhs_lp: LazyPath) bool {
2200
2254
 
2201
2255
  if (!std.mem.eql(u8, lhs_rel_path, rhs_rel_path)) return false;
2202
2256
  },
2257
+ .relative => |lhs| return lhs.eql(rhs_lp.relative),
2203
2258
  .dependency => |lhs_dep| {
2204
2259
  const rhs_dep = rhs_lp.dependency;
2205
2260
 
@@ -2219,25 +2274,25 @@ fn dependencyInner(
2219
2274
  pkg_deps: AvailableDeps,
2220
2275
  args: anytype,
2221
2276
  ) *Dependency {
2222
- const io = b.graph.io;
2223
- const user_input_options = userInputOptionsFromArgs(b.allocator, args);
2224
- if (b.graph.dependency_cache.getContext(.{
2277
+ const graph = b.graph;
2278
+ const io = graph.io;
2279
+ const arena = graph.arena;
2280
+ const user_input_options = userInputOptionsFromArgs(arena, args);
2281
+ if (graph.dependency_cache.getContext(.{
2225
2282
  .build_root_string = build_root_string,
2226
2283
  .user_input_options = user_input_options,
2227
- }, .{ .allocator = b.graph.arena })) |dep|
2228
- return dep;
2229
-
2230
- const build_root: std.Build.Cache.Directory = .{
2231
- .path = build_root_string,
2232
- .handle = Io.Dir.cwd().openDir(io, build_root_string, .{}) catch |err| {
2233
- std.debug.print("unable to open '{s}': {s}\n", .{
2234
- build_root_string, @errorName(err),
2235
- });
2236
- process.exit(1);
2284
+ }, .{ .allocator = arena })) |dep| return dep;
2285
+
2286
+ const dep_root: Cache.Path = .{
2287
+ .root_dir = .{
2288
+ .path = build_root_string,
2289
+ .handle = Io.Dir.cwd().openDir(io, build_root_string, .{}) catch |err|
2290
+ process.fatal("unable to open {s}: {t}", .{ build_root_string, err }),
2237
2291
  },
2238
2292
  };
2239
2293
 
2240
- const sub_builder = b.createChild(name, build_root, pkg_hash, pkg_deps, user_input_options) catch @panic("unhandled error");
2294
+ const sub_builder = b.createChild(name, dep_root, pkg_hash, pkg_deps, user_input_options) catch
2295
+ @panic("unhandled error");
2241
2296
  if (build_zig) |bz| {
2242
2297
  sub_builder.runBuild(bz) catch @panic("unhandled error");
2243
2298
 
@@ -2246,13 +2301,13 @@ fn dependencyInner(
2246
2301
  }
2247
2302
  }
2248
2303
 
2249
- const dep = b.allocator.create(Dependency) catch @panic("OOM");
2304
+ const dep = graph.create(Dependency);
2250
2305
  dep.* = .{ .builder = sub_builder };
2251
2306
 
2252
- b.graph.dependency_cache.putContext(b.graph.arena, .{
2307
+ graph.dependency_cache.putContext(arena, .{
2253
2308
  .build_root_string = build_root_string,
2254
2309
  .user_input_options = user_input_options,
2255
- }, dep, .{ .allocator = b.graph.arena }) catch @panic("OOM");
2310
+ }, dep, .{ .allocator = arena }) catch @panic("OOM");
2256
2311
  return dep;
2257
2312
  }
2258
2313
 
@@ -2264,41 +2319,6 @@ pub fn runBuild(b: *Build, build_zig: anytype) anyerror!void {
2264
2319
  }
2265
2320
  }
2266
2321
 
2267
- /// A file that is generated by a build step.
2268
- /// This struct is an interface that is meant to be used with `@fieldParentPtr` to implement the actual path logic.
2269
- pub const GeneratedFile = struct {
2270
- /// The step that generates the file.
2271
- step: *Step,
2272
- /// The path to the generated file. Must be either absolute or relative to the build runner cwd.
2273
- /// This value must be set in the `fn make()` of the `step` and must not be `null` afterwards.
2274
- path: ?[]const u8 = null,
2275
-
2276
- /// Deprecated, see `getPath3`.
2277
- pub fn getPath(gen: GeneratedFile) []const u8 {
2278
- return gen.step.owner.pathFromCwd(gen.path orelse std.debug.panic(
2279
- "getPath() was called on a GeneratedFile that wasn't built yet. Is there a missing Step dependency on step '{s}'?",
2280
- .{gen.step.name},
2281
- ));
2282
- }
2283
-
2284
- /// Deprecated, see `getPath3`.
2285
- pub fn getPath2(gen: GeneratedFile, src_builder: *Build, asking_step: ?*Step) []const u8 {
2286
- return getPath3(gen, src_builder, asking_step) catch |err| switch (err) {
2287
- error.Canceled => std.process.exit(1),
2288
- };
2289
- }
2290
-
2291
- pub fn getPath3(gen: GeneratedFile, src_builder: *Build, asking_step: ?*Step) Io.Cancelable![]const u8 {
2292
- return gen.path orelse {
2293
- const graph = gen.step.owner.graph;
2294
- const io = graph.io;
2295
- const stderr = try io.lockStderr(&.{}, graph.stderr_mode);
2296
- dumpBadGetPathHelp(gen.step, stderr.terminal(), src_builder, asking_step) catch {};
2297
- @panic("misconfigured build script");
2298
- };
2299
- }
2300
- };
2301
-
2302
2322
  // dirnameAllowEmpty is a variant of fs.path.dirname
2303
2323
  // that allows "" to refer to the root for relative paths.
2304
2324
  //
@@ -2338,7 +2358,7 @@ pub const LazyPath = union(enum) {
2338
2358
  },
2339
2359
 
2340
2360
  generated: struct {
2341
- file: *const GeneratedFile,
2361
+ index: Configuration.GeneratedFileIndex,
2342
2362
 
2343
2363
  /// The number of parent directories to go up.
2344
2364
  /// 0 means the generated file itself.
@@ -2350,14 +2370,7 @@ pub const LazyPath = union(enum) {
2350
2370
  sub_path: []const u8 = "",
2351
2371
  },
2352
2372
 
2353
- /// An absolute path or a path relative to the current working directory of
2354
- /// the build runner process.
2355
- ///
2356
- /// This is uncommon but used for system environment paths such as `--zig-lib-dir` which
2357
- /// ignore the file system path of build.zig and instead are relative to the directory from
2358
- /// which `zig build` was invoked.
2359
- ///
2360
- /// Use of this tag indicates a dependency on the host system.
2373
+ /// Deprecated; call `Graph.cwdRelativePath` instead.
2361
2374
  cwd_relative: []const u8,
2362
2375
 
2363
2376
  dependency: struct {
@@ -2365,13 +2378,30 @@ pub const LazyPath = union(enum) {
2365
2378
  sub_path: []const u8,
2366
2379
  },
2367
2380
 
2381
+ relative: struct {
2382
+ base: Configuration.Path.Base,
2383
+ sub_path: []const u8 = "",
2384
+
2385
+ pub fn eql(a: @This(), b: @This()) bool {
2386
+ return a.base == b.base and mem.eql(u8, a.sub_path, b.sub_path);
2387
+ }
2388
+ },
2389
+
2390
+ /// Path to the Zig executable being used to execute "zig build".
2391
+ pub const zig_exe: LazyPath = .{ .relative = .{ .base = .zig_exe } };
2392
+ /// Path to the "lib/" directory from the Zig installation being used to
2393
+ /// execute "zig build".
2394
+ pub const zig_lib: LazyPath = .{ .relative = .{ .base = .zig_lib } };
2395
+ /// Path to the project's local cache directory (usually called ".zig-cache").
2396
+ pub const cache_root: LazyPath = .{ .relative = .{ .base = .local_cache } };
2397
+
2368
2398
  /// Returns a lazy path referring to the directory containing this path.
2369
2399
  ///
2370
- /// The dirname is not allowed to escape the logical root for underlying path.
2371
- /// For example, if the path is relative to the build root,
2372
- /// the dirname is not allowed to traverse outside of the build root.
2373
- /// Similarly, if the path is a generated file inside zig-cache,
2374
- /// the dirname is not allowed to traverse outside of zig-cache.
2400
+ /// The dirname is not allowed to escape the logical root for underlying
2401
+ /// path. For example, if the path is relative to the build root, the
2402
+ /// dirname is not allowed to traverse outside of the build root.
2403
+ /// Similarly, if the path is a generated file inside zig-cache, the
2404
+ /// dirname is not allowed to traverse outside of zig-cache.
2375
2405
  pub fn dirname(lazy_path: LazyPath) LazyPath {
2376
2406
  return switch (lazy_path) {
2377
2407
  .src_path => |sp| .{ .src_path = .{
@@ -2382,11 +2412,11 @@ pub const LazyPath = union(enum) {
2382
2412
  },
2383
2413
  } },
2384
2414
  .generated => |generated| .{ .generated = if (dirnameAllowEmpty(generated.sub_path)) |sub_dirname| .{
2385
- .file = generated.file,
2415
+ .index = generated.index,
2386
2416
  .up = generated.up,
2387
2417
  .sub_path = sub_dirname,
2388
2418
  } else .{
2389
- .file = generated.file,
2419
+ .index = generated.index,
2390
2420
  .up = generated.up + 1,
2391
2421
  .sub_path = "",
2392
2422
  } },
@@ -2413,6 +2443,13 @@ pub const LazyPath = union(enum) {
2413
2443
  }
2414
2444
  },
2415
2445
  },
2446
+ .relative => |r| .{ .relative = .{
2447
+ .base = r.base,
2448
+ .sub_path = dirnameAllowEmpty(r.sub_path) orelse {
2449
+ dumpBadDirnameHelp(null, null, "dirname() attempted to traverse outside the base path\n", .{}) catch {};
2450
+ @panic("misconfigured build script");
2451
+ },
2452
+ } },
2416
2453
  .dependency => |dep| .{ .dependency = .{
2417
2454
  .dependency = dep.dependency,
2418
2455
  .sub_path = dirnameAllowEmpty(dep.sub_path) orelse {
@@ -2427,7 +2464,9 @@ pub const LazyPath = union(enum) {
2427
2464
  }
2428
2465
 
2429
2466
  pub fn path(lazy_path: LazyPath, b: *Build, sub_path: []const u8) LazyPath {
2430
- return lazy_path.join(b.allocator, sub_path) catch @panic("OOM");
2467
+ const graph = b.graph;
2468
+ const arena = graph.arena;
2469
+ return lazy_path.join(arena, sub_path) catch @panic("OOM");
2431
2470
  }
2432
2471
 
2433
2472
  pub fn join(lazy_path: LazyPath, arena: Allocator, sub_path: []const u8) Allocator.Error!LazyPath {
@@ -2437,13 +2476,17 @@ pub const LazyPath = union(enum) {
2437
2476
  .sub_path = try fs.path.resolve(arena, &.{ src.sub_path, sub_path }),
2438
2477
  } },
2439
2478
  .generated => |gen| .{ .generated = .{
2440
- .file = gen.file,
2479
+ .index = gen.index,
2441
2480
  .up = gen.up,
2442
2481
  .sub_path = try fs.path.resolve(arena, &.{ gen.sub_path, sub_path }),
2443
2482
  } },
2444
2483
  .cwd_relative => |cwd_relative| .{
2445
2484
  .cwd_relative = try fs.path.resolve(arena, &.{ cwd_relative, sub_path }),
2446
2485
  },
2486
+ .relative => |r| .{ .relative = .{
2487
+ .base = r.base,
2488
+ .sub_path = try fs.path.resolve(arena, &.{ r.sub_path, sub_path }),
2489
+ } },
2447
2490
  .dependency => |dep| .{ .dependency = .{
2448
2491
  .dependency = dep.dependency,
2449
2492
  .sub_path = try fs.path.resolve(arena, &.{ dep.sub_path, sub_path }),
@@ -2451,148 +2494,59 @@ pub const LazyPath = union(enum) {
2451
2494
  };
2452
2495
  }
2453
2496
 
2454
- /// Returns a string that can be shown to represent the file source.
2455
- /// Either returns the path, `"generated"`, or `"dependency"`.
2497
+ /// Deprecated, use `format` instead.
2456
2498
  pub fn getDisplayName(lazy_path: LazyPath) []const u8 {
2457
2499
  return switch (lazy_path) {
2458
2500
  .src_path => |sp| sp.sub_path,
2459
2501
  .cwd_relative => |p| p,
2460
2502
  .generated => "generated",
2461
2503
  .dependency => "dependency",
2504
+ .relative => |r| @tagName(r.base),
2462
2505
  };
2463
2506
  }
2464
2507
 
2465
- /// Adds dependencies this file source implies to the given step.
2466
- pub fn addStepDependencies(lazy_path: LazyPath, other_step: *Step) void {
2467
- switch (lazy_path) {
2468
- .src_path, .cwd_relative, .dependency => {},
2469
- .generated => |gen| other_step.dependOn(gen.file.step),
2508
+ pub fn format(lp: LazyPath, w: *Io.Writer) Io.Writer.Error!void {
2509
+ switch (lp) {
2510
+ .src_path => |sp| try w.writeAll(sp.sub_path),
2511
+ .cwd_relative => |p| try w.writeAll(p),
2512
+ .generated => try w.writeAll("generated"),
2513
+ .dependency => try w.writeAll("dependency"),
2514
+ .relative => |r| try w.print("{t} {s}", .{ r.base, r.sub_path }),
2470
2515
  }
2471
2516
  }
2472
2517
 
2473
- /// Deprecated, see `getPath4`.
2474
- pub fn getPath(lazy_path: LazyPath, src_builder: *Build) []const u8 {
2475
- return getPath2(lazy_path, src_builder, null);
2476
- }
2477
-
2478
- /// Deprecated, see `getPath4`.
2479
- pub fn getPath2(lazy_path: LazyPath, src_builder: *Build, asking_step: ?*Step) []const u8 {
2480
- const p = getPath3(lazy_path, src_builder, asking_step);
2481
- return src_builder.pathResolve(&.{ p.root_dir.path orelse ".", p.sub_path });
2482
- }
2483
-
2484
- /// Deprecated, see `getPath4`.
2485
- pub fn getPath3(lazy_path: LazyPath, src_builder: *Build, asking_step: ?*Step) Cache.Path {
2486
- return getPath4(lazy_path, src_builder, asking_step) catch |err| switch (err) {
2487
- error.Canceled => std.process.exit(1),
2488
- };
2489
- }
2490
-
2491
- /// Intended to be used during the make phase only.
2492
- ///
2493
- /// `asking_step` is only used for debugging purposes; it's the step being
2494
- /// run that is asking for the path.
2495
- pub fn getPath4(lazy_path: LazyPath, src_builder: *Build, asking_step: ?*Step) Io.Cancelable!Cache.Path {
2518
+ /// Adds dependencies this file source implies to the given step.
2519
+ pub fn addStepDependencies(lazy_path: LazyPath, other_step: *Step) void {
2496
2520
  switch (lazy_path) {
2497
- .src_path => |sp| return .{
2498
- .root_dir = sp.owner.build_root,
2499
- .sub_path = sp.sub_path,
2500
- },
2501
- .cwd_relative => |sub_path| return .{
2502
- .root_dir = Cache.Directory.cwd(),
2503
- .sub_path = sub_path,
2504
- },
2521
+ .src_path, .cwd_relative, .relative, .dependency => {},
2505
2522
  .generated => |gen| {
2506
- // TODO make gen.file.path not be absolute and use that as the
2507
- // basis for not traversing up too many directories.
2508
-
2509
- const graph = src_builder.graph;
2510
-
2511
- var file_path: Cache.Path = .{
2512
- .root_dir = Cache.Directory.cwd(),
2513
- .sub_path = gen.file.path orelse {
2514
- const io = graph.io;
2515
- const stderr = try io.lockStderr(&.{}, graph.stderr_mode);
2516
- dumpBadGetPathHelp(gen.file.step, stderr.terminal(), src_builder, asking_step) catch {};
2517
- io.unlockStderr();
2518
- @panic("misconfigured build script");
2519
- },
2520
- };
2521
-
2522
- if (gen.up > 0) {
2523
- const cache_root_path = src_builder.cache_root.path orelse
2524
- (src_builder.cache_root.join(src_builder.allocator, &.{"."}) catch @panic("OOM"));
2525
-
2526
- for (0..gen.up) |_| {
2527
- if (mem.eql(u8, file_path.sub_path, cache_root_path)) {
2528
- // If we hit the cache root and there's still more to go,
2529
- // the script attempted to go too far.
2530
- dumpBadDirnameHelp(gen.file.step, asking_step,
2531
- \\dirname() attempted to traverse outside the cache root.
2532
- \\This is not allowed.
2533
- \\
2534
- , .{}) catch {};
2535
- @panic("misconfigured build script");
2536
- }
2537
-
2538
- // path is absolute.
2539
- // dirname will return null only if we're at root.
2540
- // Typically, we'll stop well before that at the cache root.
2541
- file_path.sub_path = fs.path.dirname(file_path.sub_path) orelse {
2542
- dumpBadDirnameHelp(gen.file.step, asking_step,
2543
- \\dirname() reached root.
2544
- \\No more directories left to go up.
2545
- \\
2546
- , .{}) catch {};
2547
- @panic("misconfigured build script");
2548
- };
2549
- }
2550
- }
2551
-
2552
- return file_path.join(src_builder.allocator, gen.sub_path) catch @panic("OOM");
2553
- },
2554
- .dependency => |dep| return .{
2555
- .root_dir = dep.dependency.builder.build_root,
2556
- .sub_path = dep.sub_path,
2523
+ const graph = other_step.owner.graph;
2524
+ const generated_owner_step = graph.generated_files.items[@intFromEnum(gen.index)];
2525
+ other_step.dependOn(generated_owner_step);
2557
2526
  },
2558
2527
  }
2559
2528
  }
2560
2529
 
2561
- pub fn basename(lazy_path: LazyPath, src_builder: *Build, asking_step: ?*Step) []const u8 {
2562
- return fs.path.basename(switch (lazy_path) {
2563
- .src_path => |sp| sp.sub_path,
2564
- .cwd_relative => |sub_path| sub_path,
2565
- .generated => |gen| if (gen.sub_path.len > 0)
2566
- gen.sub_path
2567
- else
2568
- gen.file.getPath2(src_builder, asking_step),
2569
- .dependency => |dep| dep.sub_path,
2570
- });
2571
- }
2572
-
2573
2530
  /// Copies the internal strings.
2574
2531
  ///
2575
- /// The `b` parameter is only used for its allocator. All *Build instances
2576
- /// share the same allocator.
2577
- pub fn dupe(lazy_path: LazyPath, b: *Build) LazyPath {
2578
- return lazy_path.dupeInner(b.allocator);
2532
+ /// The `graph` parameter is only used for the global arena allocator.
2533
+ pub fn dupe(lazy_path: LazyPath, graph: *const Graph) LazyPath {
2534
+ return dupeInner(lazy_path, graph.arena);
2579
2535
  }
2580
2536
 
2581
- fn dupeInner(lazy_path: LazyPath, allocator: std.mem.Allocator) LazyPath {
2537
+ fn dupeInner(lazy_path: LazyPath, arena: Allocator) LazyPath {
2582
2538
  return switch (lazy_path) {
2583
- .src_path => |sp| .{ .src_path = .{
2584
- .owner = sp.owner,
2585
- .sub_path = sp.owner.dupePath(sp.sub_path),
2586
- } },
2587
- .cwd_relative => |p| .{ .cwd_relative = dupePathInner(allocator, p) },
2539
+ .src_path => |sp| .{ .src_path = .{ .owner = sp.owner, .sub_path = sp.owner.dupePath(sp.sub_path) } },
2540
+ .cwd_relative => |p| .{ .cwd_relative = Graph.dupePathInner(arena, p) },
2541
+ .relative => |r| .{ .relative = r },
2588
2542
  .generated => |gen| .{ .generated = .{
2589
- .file = gen.file,
2543
+ .index = gen.index,
2590
2544
  .up = gen.up,
2591
- .sub_path = dupePathInner(allocator, gen.sub_path),
2545
+ .sub_path = Graph.dupePathInner(arena, gen.sub_path),
2592
2546
  } },
2593
2547
  .dependency => |dep| .{ .dependency = .{
2594
2548
  .dependency = dep.dependency,
2595
- .sub_path = dupePathInner(allocator, dep.sub_path),
2549
+ .sub_path = Graph.dupePathInner(arena, dep.sub_path),
2596
2550
  } },
2597
2551
  };
2598
2552
  }
@@ -2631,36 +2585,6 @@ fn dumpBadDirnameHelp(
2631
2585
  stderr.setColor(.reset) catch {};
2632
2586
  }
2633
2587
 
2634
- /// In this function the stderr mutex has already been locked.
2635
- pub fn dumpBadGetPathHelp(s: *Step, t: Io.Terminal, src_builder: *Build, asking_step: ?*Step) anyerror!void {
2636
- const w = t.writer;
2637
- try w.print(
2638
- \\getPath() was called on a GeneratedFile that wasn't built yet.
2639
- \\ source package path: {s}
2640
- \\ Is there a missing Step dependency on step '{s}'?
2641
- \\
2642
- , .{
2643
- src_builder.build_root.path orelse ".",
2644
- s.name,
2645
- });
2646
-
2647
- t.setColor(.red) catch {};
2648
- try w.writeAll(" The step was created by this stack trace:\n");
2649
- t.setColor(.reset) catch {};
2650
-
2651
- s.dump(t);
2652
- if (asking_step) |as| {
2653
- t.setColor(.red) catch {};
2654
- try w.print(" The step '{s}' that is missing a dependency on the above step was created by this stack trace:\n", .{as.name});
2655
- t.setColor(.reset) catch {};
2656
-
2657
- as.dump(t);
2658
- }
2659
- t.setColor(.red) catch {};
2660
- try w.writeAll(" Proceeding to panic.\n");
2661
- t.setColor(.reset) catch {};
2662
- }
2663
-
2664
2588
  pub const InstallDir = union(enum) {
2665
2589
  prefix: void,
2666
2590
  lib: void,
@@ -2670,18 +2594,18 @@ pub const InstallDir = union(enum) {
2670
2594
  custom: []const u8,
2671
2595
 
2672
2596
  /// Duplicates the install directory including the path if set to custom.
2673
- pub fn dupe(dir: InstallDir, builder: *Build) InstallDir {
2597
+ pub fn dupe(dir: InstallDir, graph: *const Graph) InstallDir {
2674
2598
  if (dir == .custom) {
2675
- return .{ .custom = builder.dupe(dir.custom) };
2599
+ return .{ .custom = graph.dupeString(dir.custom) };
2676
2600
  } else {
2677
2601
  return dir;
2678
2602
  }
2679
2603
  }
2680
2604
  };
2681
2605
 
2682
- /// Creates a path leading to a directory inside "tmp" subdirectory of
2683
- /// `cache_root` which is created on demand and cleaned up by the build runner
2684
- /// upon success.
2606
+ /// Creates a path leading to a directory inside "tmp" subdirectory of local
2607
+ /// cache which is created on demand and cleaned up by the build runner upon
2608
+ /// success.
2685
2609
  pub fn tmpPath(b: *Build) LazyPath {
2686
2610
  const wf = b.addTempFiles();
2687
2611
  return wf.getDirectory();
@@ -2725,7 +2649,9 @@ pub fn systemIntegrationOption(
2725
2649
  name: []const u8,
2726
2650
  config: SystemIntegrationOptionConfig,
2727
2651
  ) bool {
2728
- const gop = b.graph.system_library_options.getOrPut(b.allocator, name) catch @panic("OOM");
2652
+ const graph = b.graph;
2653
+ const arena = graph.arena;
2654
+ const gop = graph.system_integration_options.getOrPut(arena, name) catch @panic("OOM");
2729
2655
  if (gop.found_existing) switch (gop.value_ptr.*) {
2730
2656
  .user_disabled => {
2731
2657
  gop.value_ptr.* = .declared_disabled;
@@ -2738,8 +2664,8 @@ pub fn systemIntegrationOption(
2738
2664
  .declared_disabled => return false,
2739
2665
  .declared_enabled => return true,
2740
2666
  } else {
2741
- gop.key_ptr.* = b.dupe(name);
2742
- if (config.default orelse b.graph.system_package_mode) {
2667
+ gop.key_ptr.* = graph.dupeString(name);
2668
+ if (config.default orelse graph.system_package_mode) {
2743
2669
  gop.value_ptr.* = .declared_enabled;
2744
2670
  return true;
2745
2671
  } else {