@zigc/lib 0.17.0-dev.76 → 0.17.0-dev.836

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