@zigc/lib 0.17.0-dev.44 → 0.17.0-dev.607

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 (1270) hide show
  1. package/c/fcntl.zig +5 -0
  2. package/c/inttypes.zig +0 -10
  3. package/c/math.zig +52 -112
  4. package/c/pthread.zig +57 -0
  5. package/c/search.zig +1 -27
  6. package/c/stdlib/drand48.zig +0 -57
  7. package/c/stdlib.zig +31 -121
  8. package/c/string.zig +20 -7
  9. package/c/strings.zig +0 -38
  10. package/c/unistd.zig +28 -26
  11. package/c/wchar.zig +10 -0
  12. package/c.zig +2 -2
  13. package/{std/Build → compiler/Maker}/Fuzz.zig +177 -89
  14. package/compiler/Maker/Graph.zig +85 -0
  15. package/compiler/Maker/PkgConfig.zig +114 -0
  16. package/compiler/Maker/ScannedConfig.zig +370 -0
  17. package/compiler/Maker/Step/CheckFile.zig +63 -0
  18. package/compiler/Maker/Step/Compile.zig +1390 -0
  19. package/compiler/Maker/Step/ConfigHeader.zig +610 -0
  20. package/compiler/Maker/Step/FindProgram.zig +120 -0
  21. package/compiler/Maker/Step/Fmt.zig +65 -0
  22. package/compiler/Maker/Step/InstallArtifact.zig +141 -0
  23. package/compiler/Maker/Step/InstallDir.zig +99 -0
  24. package/compiler/Maker/Step/InstallFile.zig +26 -0
  25. package/compiler/Maker/Step/ObjCopy.zig +173 -0
  26. package/compiler/Maker/Step/Options.zig +104 -0
  27. package/compiler/Maker/Step/Run.zig +2372 -0
  28. package/compiler/Maker/Step/TranslateC.zig +152 -0
  29. package/compiler/Maker/Step/UpdateSourceFiles.zig +89 -0
  30. package/compiler/Maker/Step/WriteFile.zig +294 -0
  31. package/compiler/Maker/Step.zig +863 -0
  32. package/{std/Build → compiler/Maker}/Watch/FsEvents.zig +33 -24
  33. package/{std/Build → compiler/Maker}/Watch.zig +89 -68
  34. package/{std/Build → compiler/Maker}/WebServer.zig +145 -118
  35. package/compiler/Maker.zig +2051 -0
  36. package/compiler/aro/aro/CodeGen.zig +7 -8
  37. package/compiler/aro/aro/Compilation.zig +17 -17
  38. package/compiler/aro/aro/Driver.zig +18 -16
  39. package/compiler/aro/aro/Parser.zig +20 -15
  40. package/compiler/aro/aro/Pragma.zig +3 -2
  41. package/compiler/aro/aro/Preprocessor.zig +11 -8
  42. package/compiler/aro/aro/pragmas/message.zig +3 -2
  43. package/compiler/aro/aro/text_literal.zig +3 -2
  44. package/compiler/aro/assembly_backend/x86_64.zig +4 -4
  45. package/compiler/aro/backend/Ir/x86/Renderer.zig +3 -3
  46. package/compiler/configurer.zig +1402 -0
  47. package/compiler/reduce/Walk.zig +8 -13
  48. package/compiler/resinator/compile.zig +1 -1
  49. package/compiler/resinator/cvtres.zig +4 -4
  50. package/compiler/resinator/errors.zig +7 -7
  51. package/compiler/resinator/ico.zig +4 -4
  52. package/compiler/resinator/parse.zig +2 -2
  53. package/compiler/resinator/res.zig +1 -1
  54. package/compiler/std-docs.zig +17 -38
  55. package/compiler/test_runner.zig +25 -15
  56. package/compiler/translate-c/MacroTranslator.zig +1 -1
  57. package/compiler/translate-c/Translator.zig +2 -2
  58. package/compiler/translate-c/ast.zig +16 -23
  59. package/compiler/translate-c/main.zig +1 -1
  60. package/compiler_rt/addf3.zig +1 -1
  61. package/compiler_rt/arm.zig +3 -3
  62. package/compiler_rt/atomics.zig +1 -1
  63. package/compiler_rt/comparef.zig +3 -3
  64. package/compiler_rt/cos.zig +1 -3
  65. package/compiler_rt/count0bits.zig +1 -1
  66. package/compiler_rt/divdf3.zig +2 -2
  67. package/compiler_rt/divsf3.zig +1 -1
  68. package/compiler_rt/divtf3.zig +1 -1
  69. package/compiler_rt/divxf3.zig +1 -1
  70. package/compiler_rt/exp.zig +0 -2
  71. package/compiler_rt/exp2.zig +0 -2
  72. package/compiler_rt/extendf.zig +5 -5
  73. package/compiler_rt/fabs.zig +1 -3
  74. package/compiler_rt/float_from_int.zig +4 -5
  75. package/compiler_rt/fma.zig +0 -2
  76. package/compiler_rt/fmax.zig +1 -3
  77. package/compiler_rt/fmin.zig +1 -3
  78. package/compiler_rt/fmod.zig +2 -4
  79. package/compiler_rt/int_from_float.zig +1 -1
  80. package/compiler_rt/limb64.zig +3 -2
  81. package/compiler_rt/log.zig +0 -2
  82. package/compiler_rt/log10.zig +0 -2
  83. package/compiler_rt/log2.zig +0 -2
  84. package/compiler_rt/mulf3.zig +2 -2
  85. package/compiler_rt/rem_pio2l.zig +1 -1
  86. package/compiler_rt/round.zig +0 -2
  87. package/compiler_rt/sin.zig +1 -3
  88. package/compiler_rt/sincos.zig +1 -3
  89. package/compiler_rt/sqrt.zig +0 -2
  90. package/compiler_rt/ssp.zig +2 -2
  91. package/compiler_rt/tan.zig +1 -3
  92. package/compiler_rt/trunc.zig +0 -2
  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/Parser.zig +16 -20
  100. package/fuzzer.zig +5 -3
  101. package/include/__clang_spirv_builtins.h +12 -12
  102. package/include/__float_float.h +176 -0
  103. package/include/__float_header_macro.h +12 -0
  104. package/include/__float_infinity_nan.h +20 -0
  105. package/include/amo.h +131 -0
  106. package/include/amxavx512intrin.h +215 -1
  107. package/include/amxintrin.h +0 -2
  108. package/include/arm_acle.h +37 -27
  109. package/include/arm_neon.h +218 -82
  110. package/include/arm_sme.h +8 -8
  111. package/include/arm_sve.h +4162 -3782
  112. package/include/avx10_2_512bf16intrin.h +19 -12
  113. package/include/avx10_2_512convertintrin.h +1 -1
  114. package/include/avx10_2_512niintrin.h +31 -31
  115. package/include/avx10_2_512satcvtdsintrin.h +1 -1
  116. package/include/avx10_2bf16intrin.h +54 -45
  117. package/include/avx10_2convertintrin.h +2 -2
  118. package/include/avx10_2copyintrin.h +1 -1
  119. package/include/avx10_2niintrin.h +14 -14
  120. package/include/avx10_2satcvtdsintrin.h +2 -2
  121. package/include/avx2intrin.h +275 -377
  122. package/include/avx512bf16intrin.h +25 -16
  123. package/include/avx512bitalgintrin.h +19 -30
  124. package/include/avx512bwintrin.h +386 -505
  125. package/include/avx512cdintrin.h +42 -55
  126. package/include/avx512dqintrin.h +132 -161
  127. package/include/avx512fintrin.h +1015 -1424
  128. package/include/avx512fp16intrin.h +112 -110
  129. package/include/avx512ifmaintrin.h +32 -34
  130. package/include/avx512ifmavlintrin.h +73 -46
  131. package/include/avx512vbmi2intrin.h +43 -32
  132. package/include/avx512vbmiintrin.h +19 -27
  133. package/include/avx512vbmivlintrin.h +35 -49
  134. package/include/avx512vlbf16intrin.h +32 -22
  135. package/include/avx512vlbitalgintrin.h +37 -53
  136. package/include/avx512vlbwintrin.h +470 -573
  137. package/include/avx512vlcdintrin.h +74 -102
  138. package/include/avx512vldqintrin.h +110 -127
  139. package/include/avx512vlfp16intrin.h +130 -111
  140. package/include/avx512vlintrin.h +945 -1299
  141. package/include/avx512vlvbmi2intrin.h +78 -63
  142. package/include/avx512vlvnniintrin.h +21 -18
  143. package/include/avx512vlvp2intersectintrin.h +2 -2
  144. package/include/avx512vnniintrin.h +10 -10
  145. package/include/avx512vp2intersectintrin.h +1 -2
  146. package/include/avx512vpopcntdqintrin.h +8 -10
  147. package/include/avx512vpopcntdqvlintrin.h +17 -15
  148. package/include/avxifmaintrin.h +16 -0
  149. package/include/avxintrin.h +165 -241
  150. package/include/avxvnniint16intrin.h +118 -99
  151. package/include/avxvnniint8intrin.h +56 -32
  152. package/include/avxvnniintrin.h +16 -8
  153. package/include/cpuid.h +101 -4
  154. package/include/emmintrin.h +168 -168
  155. package/include/f16cintrin.h +23 -9
  156. package/include/float.h +16 -155
  157. package/include/fma4intrin.h +98 -96
  158. package/include/fmaintrin.h +96 -66
  159. package/include/gfniintrin.h +21 -16
  160. package/include/hexagon_types.h +23 -20
  161. package/include/hvx_hexagon_protos.h +649 -860
  162. package/include/immintrin.h +0 -12
  163. package/include/intrin.h +4 -0
  164. package/include/lasxintrin.h +113 -0
  165. package/include/llvm_libc_wrappers/assert.h +3 -5
  166. package/include/llvm_libc_wrappers/ctype.h +3 -115
  167. package/include/llvm_libc_wrappers/inttypes.h +3 -5
  168. package/include/llvm_libc_wrappers/stdio.h +10 -38
  169. package/include/llvm_libc_wrappers/stdlib.h +3 -24
  170. package/include/llvm_libc_wrappers/string.h +2 -70
  171. package/include/llvm_libc_wrappers/time.h +4 -10
  172. package/include/mmintrin.h +188 -257
  173. package/include/module.modulemap +23 -4
  174. package/include/movrs_avx10_2_512intrin.h +2 -2
  175. package/include/movrs_avx10_2intrin.h +4 -4
  176. package/include/pmmintrin.h +12 -24
  177. package/include/ptrauth.h +16 -2
  178. package/include/riscv_mips.h +34 -0
  179. package/include/riscv_nds.h +89 -0
  180. package/include/sifive_vector.h +58 -2
  181. package/include/sm4evexintrin.h +2 -2
  182. package/include/smmintrin.h +77 -59
  183. package/include/spirvintrin.h +194 -0
  184. package/include/stddefer.h +19 -0
  185. package/include/tmmintrin.h +116 -147
  186. package/include/vaesintrin.h +1 -2
  187. package/include/xmmintrin.h +44 -70
  188. package/include/xopintrin.h +20 -10
  189. package/init/build.zig +1 -3
  190. package/libc/darwin/SDKSettings.json +1 -1
  191. package/libc/darwin/libSystem.tbd +88 -87
  192. package/libc/include/aarch64-linux-any/asm/hwcap.h +1 -0
  193. package/libc/include/aarch64-linux-any/asm/unistd_64.h +1 -0
  194. package/libc/include/aarch64-openbsd-none/arm64/cpu.h +7 -1
  195. package/libc/include/aarch64-openbsd-none/arm64/intr.h +9 -1
  196. package/libc/include/aarch64-openbsd-none/machine/cpu.h +7 -1
  197. package/libc/include/aarch64-openbsd-none/machine/intr.h +9 -1
  198. package/libc/include/any-darwin-any/AvailabilityInternal.h +10 -10
  199. package/libc/include/any-darwin-any/AvailabilityVersions.h +8 -0
  200. package/libc/include/any-darwin-any/mach/host_info.h +3 -1
  201. package/libc/include/any-darwin-any/mach/mach_voucher_types.h +2 -0
  202. package/libc/include/any-darwin-any/mach/vm_statistics.h +33 -2
  203. package/libc/include/any-darwin-any/spawn.h +3 -1
  204. package/libc/include/any-darwin-any/sys/_symbol_aliasing.h +12 -0
  205. package/libc/include/any-linux-any/asm-generic/errno.h +2 -0
  206. package/libc/include/any-linux-any/asm-generic/unistd.h +4 -1
  207. package/libc/include/any-linux-any/drm/amdgpu_drm.h +20 -6
  208. package/libc/include/any-linux-any/drm/amdxdna_accel.h +8 -0
  209. package/libc/include/any-linux-any/drm/drm_fourcc.h +6 -6
  210. package/libc/include/any-linux-any/drm/panfrost_drm.h +75 -1
  211. package/libc/include/any-linux-any/drm/panthor_drm.h +154 -3
  212. package/libc/include/any-linux-any/drm/rocket_accel.h +74 -24
  213. package/libc/include/any-linux-any/drm/xe_drm.h +89 -6
  214. package/libc/include/any-linux-any/linux/android/binder.h +1 -1
  215. package/libc/include/any-linux-any/linux/bpf.h +28 -0
  216. package/libc/include/any-linux-any/linux/btrfs.h +1 -0
  217. package/libc/include/any-linux-any/linux/btrfs_tree.h +32 -2
  218. package/libc/include/any-linux-any/linux/dma-buf.h +1 -0
  219. package/libc/include/any-linux-any/linux/dpll.h +1 -0
  220. package/libc/include/any-linux-any/linux/elf.h +2 -0
  221. package/libc/include/any-linux-any/linux/ethtool.h +21 -5
  222. package/libc/include/any-linux-any/linux/fs.h +1 -0
  223. package/libc/include/any-linux-any/linux/hyperv.h +1 -1
  224. package/libc/include/any-linux-any/linux/idxd.h +134 -134
  225. package/libc/include/any-linux-any/linux/if_alg.h +1 -1
  226. package/libc/include/any-linux-any/linux/if_link.h +1 -0
  227. package/libc/include/any-linux-any/linux/input-event-codes.h +4 -0
  228. package/libc/include/any-linux-any/linux/io_uring/bpf_filter.h +68 -0
  229. package/libc/include/any-linux-any/linux/io_uring/query.h +5 -1
  230. package/libc/include/any-linux-any/linux/io_uring.h +33 -2
  231. package/libc/include/any-linux-any/linux/iommufd.h +39 -0
  232. package/libc/include/any-linux-any/linux/kfd_ioctl.h +13 -3
  233. package/libc/include/any-linux-any/linux/kfd_sysfs.h +2 -1
  234. package/libc/include/any-linux-any/linux/kvm.h +30 -6
  235. package/libc/include/any-linux-any/linux/landlock.h +22 -8
  236. package/libc/include/any-linux-any/linux/magic.h +1 -0
  237. package/libc/include/any-linux-any/linux/mempolicy.h +3 -0
  238. package/libc/include/any-linux-any/linux/mount.h +11 -2
  239. package/libc/include/any-linux-any/linux/mptcp_pm.h +1 -1
  240. package/libc/include/any-linux-any/linux/mshv.h +2 -0
  241. package/libc/include/any-linux-any/linux/netfilter_bridge.h +5 -4
  242. package/libc/include/any-linux-any/linux/netfilter_ipv4.h +4 -5
  243. package/libc/include/any-linux-any/linux/netfilter_ipv6.h +3 -4
  244. package/libc/include/any-linux-any/linux/nfs.h +1 -1
  245. package/libc/include/any-linux-any/linux/nfsd_netlink.h +1 -0
  246. package/libc/include/any-linux-any/linux/nilfs2_api.h +2 -2
  247. package/libc/include/any-linux-any/linux/nilfs2_ondisk.h +97 -66
  248. package/libc/include/any-linux-any/linux/nl80211.h +104 -3
  249. package/libc/include/any-linux-any/linux/pci.h +7 -0
  250. package/libc/include/any-linux-any/linux/pci_regs.h +65 -6
  251. package/libc/include/any-linux-any/linux/pcitest.h +1 -0
  252. package/libc/include/any-linux-any/linux/perf_event.h +24 -3
  253. package/libc/include/any-linux-any/linux/pkt_sched.h +1 -0
  254. package/libc/include/any-linux-any/linux/prctl.h +30 -0
  255. package/libc/include/any-linux-any/linux/rseq.h +62 -5
  256. package/libc/include/any-linux-any/linux/shm.h +0 -1
  257. package/libc/include/any-linux-any/linux/stddef.h +4 -0
  258. package/libc/include/any-linux-any/linux/sysctl.h +1 -2
  259. package/libc/include/any-linux-any/linux/taskstats.h +12 -1
  260. package/libc/include/any-linux-any/linux/tcp.h +23 -3
  261. package/libc/include/any-linux-any/linux/typelimits.h +8 -0
  262. package/libc/include/any-linux-any/linux/ublk_cmd.h +120 -1
  263. package/libc/include/any-linux-any/linux/v4l2-controls.h +63 -0
  264. package/libc/include/any-linux-any/linux/vbox_vmmdev_types.h +2 -2
  265. package/libc/include/any-linux-any/linux/vduse.h +80 -5
  266. package/libc/include/any-linux-any/linux/version.h +3 -3
  267. package/libc/include/any-linux-any/linux/vfio.h +4 -0
  268. package/libc/include/any-linux-any/linux/videodev2.h +3 -0
  269. package/libc/include/any-linux-any/linux/virtio_ring.h +1 -2
  270. package/libc/include/any-linux-any/linux/vmclock-abi.h +20 -0
  271. package/libc/include/any-linux-any/rdma/bnxt_re-abi.h +16 -0
  272. package/libc/include/any-linux-any/rdma/ib_user_ioctl_cmds.h +16 -0
  273. package/libc/include/any-linux-any/rdma/mana-abi.h +3 -0
  274. package/libc/include/any-linux-any/scsi/scsi_bsg_ufs.h +8 -9
  275. package/libc/include/any-linux-any/sound/sof/tokens.h +6 -0
  276. package/libc/include/arc-linux-any/asm/swab.h +0 -63
  277. package/libc/include/arc-linux-any/asm/unistd_32.h +1 -0
  278. package/libc/include/arm-linux-any/asm/ptrace.h +0 -9
  279. package/libc/include/arm-linux-any/asm/unistd-eabi.h +1 -0
  280. package/libc/include/arm-linux-any/asm/unistd-oabi.h +1 -0
  281. package/libc/include/csky-linux-any/asm/unistd_32.h +1 -0
  282. package/libc/include/generic-openbsd/db.h +1 -7
  283. package/libc/include/generic-openbsd/ddb/db_interface.h +2 -1
  284. package/libc/include/generic-openbsd/fnmatch.h +6 -2
  285. package/libc/include/generic-openbsd/login_cap.h +3 -1
  286. package/libc/include/generic-openbsd/miscfs/fuse/fusefs_node.h +2 -1
  287. package/libc/include/generic-openbsd/net/bpf.h +3 -1
  288. package/libc/include/generic-openbsd/net/hfsc.h +4 -4
  289. package/libc/include/generic-openbsd/net/if.h +5 -1
  290. package/libc/include/generic-openbsd/net/if_bridge.h +48 -1
  291. package/libc/include/generic-openbsd/net/if_etherbridge.h +20 -7
  292. package/libc/include/generic-openbsd/net/if_media.h +26 -1
  293. package/libc/include/generic-openbsd/net/if_pflow.h +71 -20
  294. package/libc/include/generic-openbsd/net/if_pfsync.h +2 -2
  295. package/libc/include/generic-openbsd/net/if_sppp.h +2 -1
  296. package/libc/include/generic-openbsd/net/if_trunk.h +3 -2
  297. package/libc/include/generic-openbsd/net/if_types.h +2 -2
  298. package/libc/include/generic-openbsd/net/if_var.h +34 -12
  299. package/libc/include/generic-openbsd/net/netisr.h +1 -3
  300. package/libc/include/generic-openbsd/net/pfvar.h +154 -1
  301. package/libc/include/generic-openbsd/net/pfvar_priv.h +256 -1
  302. package/libc/include/generic-openbsd/net80211/ieee80211.h +76 -4
  303. package/libc/include/generic-openbsd/net80211/ieee80211_ioctl.h +3 -2
  304. package/libc/include/generic-openbsd/net80211/ieee80211_node.h +48 -2
  305. package/libc/include/generic-openbsd/net80211/ieee80211_proto.h +4 -1
  306. package/libc/include/generic-openbsd/net80211/ieee80211_var.h +18 -2
  307. package/libc/include/generic-openbsd/netinet/if_ether.h +12 -11
  308. package/libc/include/generic-openbsd/netinet/igmp_var.h +17 -3
  309. package/libc/include/generic-openbsd/netinet/in_pcb.h +2 -1
  310. package/libc/include/generic-openbsd/netinet/in_var.h +17 -59
  311. package/libc/include/generic-openbsd/netinet/ip.h +3 -2
  312. package/libc/include/generic-openbsd/netinet/tcp_timer.h +1 -2
  313. package/libc/include/generic-openbsd/netinet6/in6_var.h +15 -29
  314. package/libc/include/generic-openbsd/netinet6/ip6_var.h +1 -2
  315. package/libc/include/generic-openbsd/netinet6/mld6_var.h +17 -4
  316. package/libc/include/generic-openbsd/netinet6/nd6.h +2 -2
  317. package/libc/include/generic-openbsd/pthread.h +2 -2
  318. package/libc/include/generic-openbsd/signal.h +2 -2
  319. package/libc/include/generic-openbsd/sndio.h +6 -12
  320. package/libc/include/generic-openbsd/strings.h +5 -1
  321. package/libc/include/generic-openbsd/sys/device.h +4 -3
  322. package/libc/include/generic-openbsd/sys/disklabel.h +17 -5
  323. package/libc/include/generic-openbsd/sys/dkio.h +3 -5
  324. package/libc/include/generic-openbsd/sys/filedesc.h +3 -2
  325. package/libc/include/generic-openbsd/sys/mbuf.h +1 -1
  326. package/libc/include/generic-openbsd/sys/mman.h +7 -2
  327. package/libc/include/generic-openbsd/sys/mutex.h +10 -7
  328. package/libc/include/generic-openbsd/sys/namei.h +8 -7
  329. package/libc/include/generic-openbsd/sys/param.h +1 -1
  330. package/libc/include/generic-openbsd/sys/pledge.h +1 -3
  331. package/libc/include/generic-openbsd/sys/protosw.h +8 -1
  332. package/libc/include/generic-openbsd/sys/ptrace.h +4 -1
  333. package/libc/include/generic-openbsd/sys/sched.h +8 -1
  334. package/libc/include/generic-openbsd/sys/signal.h +4 -2
  335. package/libc/include/generic-openbsd/sys/socketvar.h +2 -1
  336. package/libc/include/generic-openbsd/sys/sockio.h +11 -1
  337. package/libc/include/generic-openbsd/sys/syscall.h +5 -3
  338. package/libc/include/generic-openbsd/sys/syscallargs.h +9 -2
  339. package/libc/include/generic-openbsd/sys/sysctl.h +7 -4
  340. package/libc/include/generic-openbsd/sys/types.h +6 -2
  341. package/libc/include/generic-openbsd/sys/videoio.h +143 -68
  342. package/libc/include/generic-openbsd/sys/xcall.h +2 -2
  343. package/libc/include/generic-openbsd/time.h +2 -2
  344. package/libc/include/generic-openbsd/unistd.h +2 -2
  345. package/libc/include/generic-openbsd/uvm/uvm_anon.h +2 -3
  346. package/libc/include/generic-openbsd/uvm/uvm_extern.h +1 -19
  347. package/libc/include/generic-openbsd/uvm/uvm_pager.h +3 -4
  348. package/libc/include/generic-openbsd/uvm/uvm_pmemrange.h +1 -2
  349. package/libc/include/generic-openbsd/uvm/uvm_swap.h +4 -1
  350. package/libc/include/generic-openbsd/uvm/uvm_vnode.h +3 -4
  351. package/libc/include/generic-openbsd/uvm/uvmexp.h +41 -35
  352. package/libc/include/hexagon-linux-any/asm/unistd_32.h +1 -0
  353. package/libc/include/loongarch-linux-any/asm/hwcap.h +1 -0
  354. package/libc/include/loongarch-linux-any/asm/kvm.h +1 -0
  355. package/libc/include/loongarch-linux-any/asm/kvm_para.h +1 -0
  356. package/libc/include/loongarch-linux-any/asm/unistd_32.h +2 -0
  357. package/libc/include/loongarch-linux-any/asm/unistd_64.h +2 -0
  358. package/libc/include/m68k-linux-any/asm/unistd_32.h +1 -0
  359. package/libc/include/mips-linux-any/asm/errno.h +2 -0
  360. package/libc/include/mips-linux-any/asm/unistd_n32.h +1 -0
  361. package/libc/include/mips-linux-any/asm/unistd_n64.h +1 -0
  362. package/libc/include/mips-linux-any/asm/unistd_o32.h +1 -0
  363. package/libc/include/mips64-openbsd-none/machine/octeonvar.h +1 -27
  364. package/libc/include/mips64-openbsd-none/octeon/octeonvar.h +1 -27
  365. package/libc/include/mips64el-openbsd-none/loongson/apmvar.h +1 -1
  366. package/libc/include/mips64el-openbsd-none/loongson/param.h +1 -5
  367. package/libc/include/mips64el-openbsd-none/machine/apmvar.h +1 -1
  368. package/libc/include/mips64el-openbsd-none/machine/param.h +1 -5
  369. package/libc/include/powerpc-linux-any/asm/unistd_32.h +1 -0
  370. package/libc/include/powerpc-linux-any/asm/unistd_64.h +1 -0
  371. package/libc/include/powerpc-openbsd-eabihf/powerpc/intr.h +1 -4
  372. package/libc/include/powerpc64-openbsd-none/machine/atomic.h +3 -3
  373. package/libc/include/powerpc64-openbsd-none/powerpc64/atomic.h +3 -3
  374. package/libc/include/riscv-linux-any/asm/hwprobe.h +4 -0
  375. package/libc/include/riscv-linux-any/asm/kvm.h +3 -0
  376. package/libc/include/riscv-linux-any/asm/ptrace.h +37 -0
  377. package/libc/include/riscv-linux-any/asm/sigcontext.h +1 -0
  378. package/libc/include/riscv-linux-any/asm/unistd_32.h +1 -0
  379. package/libc/include/riscv-linux-any/asm/unistd_64.h +1 -0
  380. package/libc/include/riscv64-openbsd-none/machine/cpu.h +4 -8
  381. package/libc/include/riscv64-openbsd-none/machine/cpufunc.h +4 -4
  382. package/libc/include/riscv64-openbsd-none/machine/pmap.h +5 -1
  383. package/libc/include/riscv64-openbsd-none/machine/pte.h +9 -1
  384. package/libc/include/riscv64-openbsd-none/riscv64/cpu.h +4 -8
  385. package/libc/include/riscv64-openbsd-none/riscv64/cpufunc.h +4 -4
  386. package/libc/include/riscv64-openbsd-none/riscv64/pmap.h +5 -1
  387. package/libc/include/riscv64-openbsd-none/riscv64/pte.h +9 -1
  388. package/libc/include/s390x-linux-any/asm/unistd_64.h +1 -0
  389. package/libc/include/sparc-linux-any/asm/errno.h +2 -0
  390. package/libc/include/sparc-linux-any/asm/ioctls.h +4 -4
  391. package/libc/include/sparc-linux-any/asm/unistd_32.h +2 -0
  392. package/libc/include/sparc-linux-any/asm/unistd_64.h +2 -0
  393. package/libc/include/x86-linux-any/asm/auxvec.h +0 -4
  394. package/libc/include/x86-linux-any/asm/kvm.h +13 -8
  395. package/libc/include/x86-linux-any/asm/svm.h +16 -16
  396. package/libc/include/x86-linux-any/asm/unistd_32.h +1 -0
  397. package/libc/include/x86-linux-any/asm/unistd_64.h +1 -0
  398. package/libc/include/x86-linux-any/asm/unistd_x32.h +1 -0
  399. package/libc/include/x86-openbsd-none/i386/specialreg.h +3 -1
  400. package/libc/include/x86-openbsd-none/machine/specialreg.h +3 -1
  401. package/libc/include/x86_64-openbsd-none/amd64/conf.h +11 -2
  402. package/libc/include/x86_64-openbsd-none/amd64/cpu.h +14 -4
  403. package/libc/include/x86_64-openbsd-none/amd64/cpufunc.h +2 -3
  404. package/libc/include/x86_64-openbsd-none/amd64/ghcb.h +2 -1
  405. package/libc/include/x86_64-openbsd-none/amd64/i82489var.h +2 -4
  406. package/libc/include/x86_64-openbsd-none/amd64/i8259.h +1 -53
  407. package/libc/include/x86_64-openbsd-none/amd64/intr.h +5 -2
  408. package/libc/include/x86_64-openbsd-none/amd64/intrdefs.h +9 -7
  409. package/libc/include/x86_64-openbsd-none/amd64/kexec.h +48 -0
  410. package/libc/include/x86_64-openbsd-none/amd64/specialreg.h +4 -1
  411. package/libc/include/x86_64-openbsd-none/machine/conf.h +11 -2
  412. package/libc/include/x86_64-openbsd-none/machine/cpu.h +14 -4
  413. package/libc/include/x86_64-openbsd-none/machine/cpufunc.h +2 -3
  414. package/libc/include/x86_64-openbsd-none/machine/ghcb.h +2 -1
  415. package/libc/include/x86_64-openbsd-none/machine/i82489var.h +2 -4
  416. package/libc/include/x86_64-openbsd-none/machine/i8259.h +1 -53
  417. package/libc/include/x86_64-openbsd-none/machine/intr.h +5 -2
  418. package/libc/include/x86_64-openbsd-none/machine/intrdefs.h +9 -7
  419. package/libc/include/x86_64-openbsd-none/machine/kexec.h +48 -0
  420. package/libc/include/x86_64-openbsd-none/machine/specialreg.h +4 -1
  421. package/libc/include/xtensa-linux-any/asm/unistd_32.h +1 -0
  422. package/libc/openbsd/abilists +0 -0
  423. package/libcxx/include/__algorithm/all_of.h +11 -5
  424. package/libcxx/include/__algorithm/comp.h +4 -0
  425. package/libcxx/include/__algorithm/copy.h +28 -147
  426. package/libcxx/include/__algorithm/copy_backward.h +9 -24
  427. package/libcxx/include/__algorithm/copy_n.h +50 -16
  428. package/libcxx/include/__algorithm/count.h +2 -2
  429. package/libcxx/include/__algorithm/equal.h +43 -55
  430. package/libcxx/include/__algorithm/fill.h +26 -8
  431. package/libcxx/include/__algorithm/fill_n.h +32 -46
  432. package/libcxx/include/__algorithm/find.h +96 -39
  433. package/libcxx/include/__algorithm/find_end.h +105 -0
  434. package/libcxx/include/__algorithm/for_each.h +18 -24
  435. package/libcxx/include/__algorithm/for_each_n.h +20 -47
  436. package/libcxx/include/__algorithm/for_each_n_segment.h +1 -1
  437. package/libcxx/include/__algorithm/for_each_segment.h +26 -0
  438. package/libcxx/include/__algorithm/generate.h +4 -2
  439. package/libcxx/include/__algorithm/generate_n.h +19 -6
  440. package/libcxx/include/__algorithm/is_permutation.h +4 -4
  441. package/libcxx/include/__algorithm/iterator_operations.h +3 -0
  442. package/libcxx/include/__algorithm/lexicographical_compare.h +2 -2
  443. package/libcxx/include/__algorithm/lexicographical_compare_three_way.h +6 -6
  444. package/libcxx/include/__algorithm/make_heap.h +16 -4
  445. package/libcxx/include/__algorithm/mismatch.h +2 -2
  446. package/libcxx/include/__algorithm/move.h +8 -19
  447. package/libcxx/include/__algorithm/move_backward.h +9 -24
  448. package/libcxx/include/__algorithm/none_of.h +4 -4
  449. package/libcxx/include/__algorithm/partial_sort.h +1 -1
  450. package/libcxx/include/__algorithm/partial_sort_copy.h +1 -1
  451. package/libcxx/include/__algorithm/pstl.h +9 -9
  452. package/libcxx/include/__algorithm/radix_sort.h +27 -25
  453. package/libcxx/include/__algorithm/ranges_copy_n.h +3 -26
  454. package/libcxx/include/__algorithm/ranges_equal.h +17 -26
  455. package/libcxx/include/__algorithm/ranges_fill.h +7 -6
  456. package/libcxx/include/__algorithm/ranges_for_each.h +9 -1
  457. package/libcxx/include/__algorithm/ranges_generate_n.h +2 -6
  458. package/libcxx/include/__algorithm/ranges_search_n.h +2 -2
  459. package/libcxx/include/__algorithm/rotate.h +27 -44
  460. package/libcxx/include/__algorithm/search_n.h +49 -37
  461. package/libcxx/include/__algorithm/sift_down.h +19 -18
  462. package/libcxx/include/__algorithm/simd_utils.h +33 -4
  463. package/libcxx/include/__algorithm/specialized_algorithms.h +54 -0
  464. package/libcxx/include/__algorithm/stable_sort.h +1 -1
  465. package/libcxx/include/__assertion_handler +31 -4
  466. package/libcxx/include/__atomic/atomic.h +36 -60
  467. package/libcxx/include/__atomic/atomic_flag.h +19 -37
  468. package/libcxx/include/__atomic/atomic_ref.h +29 -12
  469. package/libcxx/include/__atomic/atomic_sync.h +127 -55
  470. package/libcxx/include/__atomic/atomic_sync_timed.h +144 -0
  471. package/libcxx/include/__atomic/atomic_waitable_traits.h +103 -0
  472. package/libcxx/include/__atomic/contention_t.h +27 -3
  473. package/libcxx/include/__atomic/floating_point_helper.h +55 -0
  474. package/libcxx/include/__bit/countl.h +1 -2
  475. package/libcxx/include/__bit/countr.h +1 -2
  476. package/libcxx/include/__bit/has_single_bit.h +1 -1
  477. package/libcxx/include/__bit/popcount.h +0 -1
  478. package/libcxx/include/__bit/rotate.h +15 -26
  479. package/libcxx/include/__bit_reference +207 -18
  480. package/libcxx/include/__charconv/from_chars_integral.h +1 -1
  481. package/libcxx/include/__charconv/from_chars_result.h +1 -1
  482. package/libcxx/include/__charconv/to_chars_integral.h +1 -0
  483. package/libcxx/include/__charconv/to_chars_result.h +1 -1
  484. package/libcxx/include/__charconv/traits.h +3 -24
  485. package/libcxx/include/__chrono/day.h +11 -0
  486. package/libcxx/include/__chrono/duration.h +58 -33
  487. package/libcxx/include/__chrono/file_clock.h +4 -2
  488. package/libcxx/include/__chrono/is_clock.h +72 -0
  489. package/libcxx/include/__chrono/leap_second.h +13 -0
  490. package/libcxx/include/__chrono/month.h +13 -0
  491. package/libcxx/include/__chrono/month_weekday.h +22 -0
  492. package/libcxx/include/__chrono/monthday.h +20 -0
  493. package/libcxx/include/__chrono/steady_clock.h +1 -1
  494. package/libcxx/include/__chrono/system_clock.h +3 -3
  495. package/libcxx/include/__chrono/time_point.h +37 -13
  496. package/libcxx/include/__chrono/weekday.h +25 -0
  497. package/libcxx/include/__chrono/year.h +11 -0
  498. package/libcxx/include/__chrono/year_month.h +13 -0
  499. package/libcxx/include/__chrono/year_month_day.h +23 -0
  500. package/libcxx/include/__chrono/year_month_weekday.h +26 -0
  501. package/libcxx/include/__chrono/zoned_time.h +16 -0
  502. package/libcxx/include/__compare/is_eq.h +6 -6
  503. package/libcxx/include/__compare/strong_order.h +12 -30
  504. package/libcxx/include/__compare/three_way_comparable.h +2 -2
  505. package/libcxx/include/__concepts/comparison_common_type.h +40 -0
  506. package/libcxx/include/__concepts/equality_comparable.h +2 -1
  507. package/libcxx/include/__condition_variable/condition_variable.h +1 -1
  508. package/libcxx/include/__config +63 -280
  509. package/libcxx/include/__configuration/abi.h +14 -24
  510. package/libcxx/include/__configuration/availability.h +65 -118
  511. package/libcxx/include/__configuration/compiler.h +6 -6
  512. package/libcxx/include/__configuration/experimental.h +38 -0
  513. package/libcxx/include/__configuration/hardening.h +215 -0
  514. package/libcxx/include/__configuration/language.h +3 -0
  515. package/libcxx/include/__configuration/platform.h +9 -16
  516. package/libcxx/include/__coroutine/coroutine_handle.h +9 -9
  517. package/libcxx/include/__coroutine/noop_coroutine_handle.h +11 -13
  518. package/libcxx/include/__debug_utils/strict_weak_ordering_check.h +1 -1
  519. package/libcxx/include/__exception/exception.h +6 -4
  520. package/libcxx/include/__exception/exception_ptr.h +27 -5
  521. package/libcxx/include/__exception/nested_exception.h +2 -2
  522. package/libcxx/include/__exception/operations.h +5 -5
  523. package/libcxx/include/__expected/bad_expected_access.h +8 -6
  524. package/libcxx/include/__expected/expected.h +62 -64
  525. package/libcxx/include/__expected/unexpected.h +4 -4
  526. package/libcxx/include/__filesystem/copy_options.h +4 -4
  527. package/libcxx/include/__filesystem/directory_entry.h +37 -33
  528. package/libcxx/include/__filesystem/directory_iterator.h +9 -11
  529. package/libcxx/include/__filesystem/directory_options.h +7 -4
  530. package/libcxx/include/__filesystem/file_status.h +3 -3
  531. package/libcxx/include/__filesystem/filesystem_error.h +9 -10
  532. package/libcxx/include/__filesystem/operations.h +97 -66
  533. package/libcxx/include/__filesystem/path.h +68 -64
  534. package/libcxx/include/__filesystem/path_iterator.h +1 -3
  535. package/libcxx/include/__filesystem/perm_options.h +4 -4
  536. package/libcxx/include/__filesystem/perms.h +4 -4
  537. package/libcxx/include/__filesystem/recursive_directory_iterator.h +9 -14
  538. package/libcxx/include/__filesystem/space_info.h +1 -1
  539. package/libcxx/include/__filesystem/u8path.h +12 -14
  540. package/libcxx/include/__flat_map/flat_map.h +88 -71
  541. package/libcxx/include/__flat_map/flat_multimap.h +251 -172
  542. package/libcxx/include/__flat_map/key_value_iterator.h +0 -1
  543. package/libcxx/include/__flat_map/utils.h +1 -0
  544. package/libcxx/include/__flat_set/flat_multiset.h +211 -143
  545. package/libcxx/include/__flat_set/flat_set.h +86 -68
  546. package/libcxx/include/__format/concepts.h +0 -14
  547. package/libcxx/include/__format/extended_grapheme_cluster_table.h +3 -2
  548. package/libcxx/include/__format/fmt_pair_like.h +42 -0
  549. package/libcxx/include/__format/format_arg.h +7 -10
  550. package/libcxx/include/__format/format_args.h +1 -1
  551. package/libcxx/include/__format/format_context.h +5 -5
  552. package/libcxx/include/__format/format_parse_context.h +2 -2
  553. package/libcxx/include/__format/formatter_output.h +30 -34
  554. package/libcxx/include/__format/indic_conjunct_break_table.h +3 -2
  555. package/libcxx/include/__format/range_default_formatter.h +2 -41
  556. package/libcxx/include/__format/range_format.h +71 -0
  557. package/libcxx/include/__format/range_formatter.h +1 -0
  558. package/libcxx/include/__format/width_estimation_table.h +4 -2
  559. package/libcxx/include/__functional/bind.h +10 -15
  560. package/libcxx/include/__functional/bind_back.h +1 -1
  561. package/libcxx/include/__functional/bind_front.h +1 -1
  562. package/libcxx/include/__functional/function.h +57 -75
  563. package/libcxx/include/__functional/hash.h +1 -10
  564. package/libcxx/include/__functional/identity.h +1 -1
  565. package/libcxx/include/__functional/is_transparent.h +8 -0
  566. package/libcxx/include/__functional/mem_fn.h +2 -1
  567. package/libcxx/include/__functional/operations.h +18 -0
  568. package/libcxx/include/__functional/ranges_operations.h +7 -0
  569. package/libcxx/include/__functional/reference_wrapper.h +7 -5
  570. package/libcxx/include/__functional/weak_result_type.h +14 -28
  571. package/libcxx/include/__fwd/ios.h +1 -1
  572. package/libcxx/include/__fwd/tuple.h +14 -0
  573. package/libcxx/include/__hash_table +371 -357
  574. package/libcxx/include/__ios/fpos.h +4 -4
  575. package/libcxx/include/__iterator/back_insert_iterator.h +1 -7
  576. package/libcxx/include/__iterator/bounded_iter.h +7 -8
  577. package/libcxx/include/__iterator/concepts.h +6 -9
  578. package/libcxx/include/__iterator/cpp17_iterator_concepts.h +13 -12
  579. package/libcxx/include/__iterator/distance.h +40 -18
  580. package/libcxx/include/__iterator/front_insert_iterator.h +1 -7
  581. package/libcxx/include/__iterator/insert_iterator.h +1 -7
  582. package/libcxx/include/__iterator/istream_iterator.h +6 -7
  583. package/libcxx/include/__iterator/istreambuf_iterator.h +6 -7
  584. package/libcxx/include/__iterator/iter_move.h +1 -1
  585. package/libcxx/include/__iterator/iterator.h +13 -0
  586. package/libcxx/include/__iterator/iterator_traits.h +13 -14
  587. package/libcxx/include/__iterator/ostream_iterator.h +1 -7
  588. package/libcxx/include/__iterator/ostreambuf_iterator.h +1 -7
  589. package/libcxx/include/__iterator/reverse_iterator.h +8 -13
  590. package/libcxx/include/__iterator/segmented_iterator.h +3 -8
  591. package/libcxx/include/__iterator/static_bounded_iter.h +3 -3
  592. package/libcxx/include/__iterator/wrap_iter.h +8 -6
  593. package/libcxx/include/__locale +3 -10
  594. package/libcxx/include/__locale_dir/locale_base_api/bsd_locale_fallbacks.h +0 -10
  595. package/libcxx/include/__locale_dir/locale_base_api.h +5 -28
  596. package/libcxx/include/__locale_dir/messages.h +1 -1
  597. package/libcxx/include/__locale_dir/money.h +2 -2
  598. package/libcxx/include/__locale_dir/num.h +190 -243
  599. package/libcxx/include/__locale_dir/pad_and_output.h +5 -6
  600. package/libcxx/include/__locale_dir/support/bsd_like.h +0 -20
  601. package/libcxx/include/__locale_dir/support/fuchsia.h +0 -7
  602. package/libcxx/include/__locale_dir/support/linux.h +0 -37
  603. package/libcxx/include/__locale_dir/support/netbsd.h +0 -2
  604. package/libcxx/include/__locale_dir/support/newlib.h +243 -0
  605. package/libcxx/include/__locale_dir/support/no_locale/characters.h +0 -4
  606. package/libcxx/include/__locale_dir/support/no_locale/strtonum.h +0 -9
  607. package/libcxx/include/__locale_dir/support/windows.h +0 -29
  608. package/libcxx/include/__locale_dir/time.h +3 -7
  609. package/libcxx/include/__math/hypot.h +1 -1
  610. package/libcxx/include/__math/logarithms.h +1 -1
  611. package/libcxx/include/__math/traits.h +80 -11
  612. package/libcxx/include/__mdspan/extents.h +7 -4
  613. package/libcxx/include/__mdspan/layout_stride.h +4 -5
  614. package/libcxx/include/__mdspan/mdspan.h +29 -23
  615. package/libcxx/include/__memory/addressof.h +7 -5
  616. package/libcxx/include/__memory/align.h +18 -1
  617. package/libcxx/include/__memory/allocate_at_least.h +15 -10
  618. package/libcxx/include/__memory/allocator.h +14 -26
  619. package/libcxx/include/__memory/allocator_traits.h +6 -4
  620. package/libcxx/include/__memory/compressed_pair.h +15 -9
  621. package/libcxx/include/__memory/construct_at.h +12 -23
  622. package/libcxx/include/__memory/inout_ptr.h +1 -1
  623. package/libcxx/include/__memory/is_sufficiently_aligned.h +1 -1
  624. package/libcxx/include/__memory/out_ptr.h +1 -1
  625. package/libcxx/include/__memory/pointer_traits.h +1 -1
  626. package/libcxx/include/__memory/raw_storage_iterator.h +3 -9
  627. package/libcxx/include/__memory/shared_count.h +9 -30
  628. package/libcxx/include/__memory/shared_ptr.h +100 -145
  629. package/libcxx/include/__memory/temp_value.h +1 -2
  630. package/libcxx/include/__memory/uninitialized_algorithms.h +44 -115
  631. package/libcxx/include/__memory/unique_ptr.h +14 -16
  632. package/libcxx/include/__memory/uses_allocator_construction.h +1 -0
  633. package/libcxx/include/__memory_resource/memory_resource.h +4 -2
  634. package/libcxx/include/__memory_resource/monotonic_buffer_resource.h +1 -1
  635. package/libcxx/include/__memory_resource/polymorphic_allocator.h +13 -8
  636. package/libcxx/include/__memory_resource/pool_options.h +1 -1
  637. package/libcxx/include/__memory_resource/synchronized_pool_resource.h +4 -2
  638. package/libcxx/include/__memory_resource/unsynchronized_pool_resource.h +1 -1
  639. package/libcxx/include/__mutex/mutex.h +2 -2
  640. package/libcxx/include/__mutex/once_flag.h +14 -11
  641. package/libcxx/include/__mutex/tag_types.h +3 -3
  642. package/libcxx/include/__mutex/unique_lock.h +8 -7
  643. package/libcxx/include/__new/align_val_t.h +6 -0
  644. package/libcxx/include/__new/allocate.h +1 -2
  645. package/libcxx/include/__new/exceptions.h +8 -2
  646. package/libcxx/include/__new/global_new_delete.h +4 -11
  647. package/libcxx/include/__new/interference_size.h +0 -4
  648. package/libcxx/include/__new/launder.h +3 -5
  649. package/libcxx/include/__new/nothrow_t.h +1 -1
  650. package/libcxx/include/__numeric/gcd_lcm.h +24 -34
  651. package/libcxx/include/__numeric/midpoint.h +9 -14
  652. package/libcxx/include/__numeric/pstl.h +2 -2
  653. package/libcxx/include/__numeric/saturation_arithmetic.h +13 -5
  654. package/libcxx/include/__ostream/basic_ostream.h +8 -8
  655. package/libcxx/include/__pstl/backends/default.h +14 -14
  656. package/libcxx/include/__pstl/backends/libdispatch.h +2 -2
  657. package/libcxx/include/__pstl/cpu_algos/find_if.h +1 -1
  658. package/libcxx/include/__pstl/cpu_algos/transform.h +5 -6
  659. package/libcxx/include/__pstl/cpu_algos/transform_reduce.h +5 -4
  660. package/libcxx/include/__random/binomial_distribution.h +10 -4
  661. package/libcxx/include/__random/mersenne_twister_engine.h +50 -154
  662. package/libcxx/include/__random/piecewise_constant_distribution.h +3 -2
  663. package/libcxx/include/__random/piecewise_linear_distribution.h +3 -2
  664. package/libcxx/include/__ranges/adjacent_transform_view.h +406 -0
  665. package/libcxx/include/__ranges/adjacent_view.h +419 -0
  666. package/libcxx/include/__ranges/as_rvalue_view.h +9 -9
  667. package/libcxx/include/__ranges/chunk_by_view.h +6 -6
  668. package/libcxx/include/__ranges/common_view.h +7 -7
  669. package/libcxx/include/__ranges/drop_view.h +8 -8
  670. package/libcxx/include/__ranges/drop_while_view.h +5 -5
  671. package/libcxx/include/__ranges/elements_of.h +49 -0
  672. package/libcxx/include/__ranges/empty_view.h +5 -5
  673. package/libcxx/include/__ranges/filter_view.h +10 -10
  674. package/libcxx/include/__ranges/iota_view.h +41 -22
  675. package/libcxx/include/__ranges/owning_view.h +15 -15
  676. package/libcxx/include/__ranges/ref_view.h +6 -6
  677. package/libcxx/include/__ranges/repeat_view.h +17 -10
  678. package/libcxx/include/__ranges/single_view.h +8 -8
  679. package/libcxx/include/__ranges/take_view.h +9 -9
  680. package/libcxx/include/__ranges/transform_view.h +1 -2
  681. package/libcxx/include/__ranges/view_interface.h +10 -10
  682. package/libcxx/include/__ranges/zip_transform_view.h +357 -0
  683. package/libcxx/include/__ranges/zip_view.h +20 -20
  684. package/libcxx/include/__split_buffer +612 -240
  685. package/libcxx/include/__stop_token/atomic_unique_lock.h +1 -1
  686. package/libcxx/include/__stop_token/stop_callback.h +2 -2
  687. package/libcxx/include/__stop_token/stop_source.h +1 -1
  688. package/libcxx/include/__stop_token/stop_state.h +4 -4
  689. package/libcxx/include/__stop_token/stop_token.h +1 -1
  690. package/libcxx/include/__string/char_traits.h +51 -31
  691. package/libcxx/include/__string/constexpr_c_functions.h +5 -5
  692. package/libcxx/include/__support/xlocale/__strtonum_fallback.h +0 -8
  693. package/libcxx/include/__system_error/error_category.h +8 -8
  694. package/libcxx/include/__system_error/error_code.h +5 -5
  695. package/libcxx/include/__system_error/error_condition.h +4 -4
  696. package/libcxx/include/__system_error/system_error.h +1 -1
  697. package/libcxx/include/__thread/id.h +1 -1
  698. package/libcxx/include/__thread/jthread.h +1 -1
  699. package/libcxx/include/__thread/poll_with_backoff.h +27 -8
  700. package/libcxx/include/__thread/support/c11.h +8 -8
  701. package/libcxx/include/__thread/support/pthread.h +8 -8
  702. package/libcxx/include/__thread/support/windows.h +8 -8
  703. package/libcxx/include/__thread/thread.h +13 -8
  704. package/libcxx/include/__thread/timed_backoff_policy.h +3 -2
  705. package/libcxx/include/__tree +849 -701
  706. package/libcxx/include/__tuple/sfinae_helpers.h +1 -44
  707. package/libcxx/include/__tuple/tuple_element.h +0 -12
  708. package/libcxx/include/__tuple/tuple_size.h +0 -4
  709. package/libcxx/include/__tuple/tuple_transform.h +45 -0
  710. package/libcxx/include/__type_traits/aligned_storage.h +13 -40
  711. package/libcxx/include/__type_traits/desugars_to.h +4 -0
  712. package/libcxx/include/__type_traits/invoke.h +8 -0
  713. package/libcxx/include/__type_traits/is_allocator.h +6 -7
  714. package/libcxx/include/__type_traits/is_array.h +26 -0
  715. package/libcxx/include/__type_traits/is_equality_comparable.h +16 -21
  716. package/libcxx/include/__type_traits/is_final.h +1 -1
  717. package/libcxx/include/__type_traits/is_floating_point.h +7 -6
  718. package/libcxx/include/__type_traits/is_generic_transparent_comparator.h +30 -0
  719. package/libcxx/include/__type_traits/is_specialization.h +2 -6
  720. package/libcxx/include/__type_traits/is_within_lifetime.h +29 -0
  721. package/libcxx/include/__type_traits/make_transparent.h +52 -0
  722. package/libcxx/include/__type_traits/reference_constructs_from_temporary.h +1 -7
  723. package/libcxx/include/__type_traits/reference_converts_from_temporary.h +1 -1
  724. package/libcxx/include/__utility/cmp.h +19 -7
  725. package/libcxx/include/__utility/default_three_way_comparator.h +70 -0
  726. package/libcxx/include/__utility/in_place.h +1 -1
  727. package/libcxx/include/__utility/integer_sequence.h +56 -41
  728. package/libcxx/include/__utility/lazy_synth_three_way_comparator.h +120 -0
  729. package/libcxx/include/__utility/pair.h +22 -25
  730. package/libcxx/include/__utility/scope_guard.h +2 -0
  731. package/libcxx/include/__utility/try_key_extraction.h +114 -0
  732. package/libcxx/include/__vector/vector.h +187 -160
  733. package/libcxx/include/__vector/vector_bool.h +76 -83
  734. package/libcxx/include/any +118 -155
  735. package/libcxx/include/array +88 -56
  736. package/libcxx/include/atomic +2 -0
  737. package/libcxx/include/barrier +20 -24
  738. package/libcxx/include/bitset +49 -30
  739. package/libcxx/include/ccomplex +3 -11
  740. package/libcxx/include/chrono +47 -0
  741. package/libcxx/include/ciso646 +3 -6
  742. package/libcxx/include/complex +77 -65
  743. package/libcxx/include/complex.h +10 -10
  744. package/libcxx/include/condition_variable +3 -3
  745. package/libcxx/include/cstdalign +3 -10
  746. package/libcxx/include/cstdbool +3 -10
  747. package/libcxx/include/ctgmath +2 -11
  748. package/libcxx/include/ctype.h +24 -24
  749. package/libcxx/include/cwchar +2 -2
  750. package/libcxx/include/deque +109 -225
  751. package/libcxx/include/errno.h +269 -269
  752. package/libcxx/include/exception +4 -1
  753. package/libcxx/include/ext/hash_map +7 -48
  754. package/libcxx/include/ext/hash_set +2 -8
  755. package/libcxx/include/fenv.h +43 -43
  756. package/libcxx/include/flat_map +663 -11
  757. package/libcxx/include/flat_set +543 -8
  758. package/libcxx/include/float.h +16 -16
  759. package/libcxx/include/forward_list +33 -53
  760. package/libcxx/include/fstream +57 -42
  761. package/libcxx/include/future +41 -51
  762. package/libcxx/include/initializer_list +9 -3
  763. package/libcxx/include/inttypes.h +16 -16
  764. package/libcxx/include/ios +28 -28
  765. package/libcxx/include/istream +19 -13
  766. package/libcxx/include/iterator +10 -0
  767. package/libcxx/include/latch +7 -5
  768. package/libcxx/include/limits +4 -4
  769. package/libcxx/include/list +61 -79
  770. package/libcxx/include/map +386 -274
  771. package/libcxx/include/math.h +19 -0
  772. package/libcxx/include/mdspan +1 -5
  773. package/libcxx/include/mutex +29 -19
  774. package/libcxx/include/optional +644 -149
  775. package/libcxx/include/print +9 -5
  776. package/libcxx/include/queue +39 -37
  777. package/libcxx/include/ranges +48 -0
  778. package/libcxx/include/regex +33 -31
  779. package/libcxx/include/scoped_allocator +16 -11
  780. package/libcxx/include/semaphore +15 -18
  781. package/libcxx/include/set +220 -192
  782. package/libcxx/include/shared_mutex +3 -8
  783. package/libcxx/include/span +53 -37
  784. package/libcxx/include/sstream +34 -28
  785. package/libcxx/include/stack +13 -15
  786. package/libcxx/include/stddef.h +10 -10
  787. package/libcxx/include/stdexcept +2 -2
  788. package/libcxx/include/stdio.h +20 -21
  789. package/libcxx/include/streambuf +59 -19
  790. package/libcxx/include/string +574 -573
  791. package/libcxx/include/string_view +113 -89
  792. package/libcxx/include/strstream +10 -10
  793. package/libcxx/include/syncstream +4 -4
  794. package/libcxx/include/tgmath.h +12 -12
  795. package/libcxx/include/tuple +242 -212
  796. package/libcxx/include/type_traits +8 -2
  797. package/libcxx/include/typeindex +5 -3
  798. package/libcxx/include/typeinfo +92 -89
  799. package/libcxx/include/unordered_map +179 -304
  800. package/libcxx/include/unordered_set +168 -195
  801. package/libcxx/include/utility +12 -0
  802. package/libcxx/include/valarray +106 -161
  803. package/libcxx/include/variant +25 -33
  804. package/libcxx/include/version +41 -24
  805. package/libcxx/include/wctype.h +29 -29
  806. package/libcxx/libc/hdr/errno_macros.h +3 -1
  807. package/libcxx/libc/hdr/stdint_proxy.h +18 -0
  808. package/libcxx/libc/hdr/types/wchar_t.h +23 -0
  809. package/libcxx/libc/hdr/wchar_overlay.h +69 -0
  810. package/libcxx/libc/include/llvm-libc-macros/cfloat128-macros.h +41 -0
  811. package/libcxx/libc/include/llvm-libc-macros/cfloat16-macros.h +20 -0
  812. package/libcxx/libc/include/llvm-libc-macros/wchar-macros.h +18 -0
  813. package/libcxx/libc/include/llvm-libc-types/cfloat128.h +11 -28
  814. package/libcxx/libc/include/llvm-libc-types/cfloat16.h +4 -7
  815. package/libcxx/libc/include/llvm-libc-types/wint_t.h +14 -0
  816. package/libcxx/libc/shared/libc_common.h +5 -0
  817. package/libcxx/libc/src/__support/CPP/bit.h +50 -12
  818. package/libcxx/libc/src/__support/CPP/type_traits/is_complex.h +7 -0
  819. package/libcxx/libc/src/__support/CPP/type_traits/is_destructible.h +2 -1
  820. package/libcxx/libc/src/__support/CPP/type_traits/is_unsigned.h +6 -0
  821. package/libcxx/libc/src/__support/CPP/utility/integer_sequence.h +10 -0
  822. package/libcxx/libc/src/__support/FPUtil/FPBits.h +6 -7
  823. package/libcxx/libc/src/__support/FPUtil/rounding_mode.h +50 -4
  824. package/libcxx/libc/src/__support/big_int.h +14 -14
  825. package/libcxx/libc/src/__support/common.h +3 -2
  826. package/libcxx/libc/src/__support/ctype_utils.h +19 -12
  827. package/libcxx/libc/src/__support/detailed_powers_of_ten.h +1 -2
  828. package/libcxx/libc/src/__support/high_precision_decimal.h +33 -14
  829. package/libcxx/libc/src/__support/libc_assert.h +2 -0
  830. package/libcxx/libc/src/__support/macros/attributes.h +44 -1
  831. package/libcxx/libc/src/__support/macros/config.h +23 -0
  832. package/libcxx/libc/src/__support/macros/null_check.h +1 -2
  833. package/libcxx/libc/src/__support/macros/optimization.h +3 -0
  834. package/libcxx/libc/src/__support/macros/properties/architectures.h +5 -1
  835. package/libcxx/libc/src/__support/macros/properties/compiler.h +8 -3
  836. package/libcxx/libc/src/__support/macros/properties/cpu_features.h +17 -1
  837. package/libcxx/libc/src/__support/macros/properties/types.h +2 -3
  838. package/libcxx/libc/src/__support/macros/sanitizer.h +0 -10
  839. package/libcxx/libc/src/__support/math_extras.h +20 -4
  840. package/libcxx/libc/src/__support/str_to_float.h +98 -125
  841. package/libcxx/libc/src/__support/str_to_integer.h +39 -27
  842. package/libcxx/libc/src/__support/wctype_utils.h +588 -0
  843. package/libcxx/src/any.cpp +4 -0
  844. package/libcxx/src/atomic.cpp +365 -80
  845. package/libcxx/src/barrier.cpp +4 -3
  846. package/libcxx/src/charconv.cpp +6 -3
  847. package/libcxx/src/condition_variable_destructor.cpp +1 -1
  848. package/libcxx/src/error_category.cpp +3 -1
  849. package/libcxx/src/exception.cpp +2 -10
  850. package/libcxx/src/experimental/time_zone.cpp +1 -1
  851. package/libcxx/src/experimental/tzdb.cpp +4 -1
  852. package/libcxx/src/filesystem/error.h +4 -22
  853. package/libcxx/src/filesystem/format_string.h +9 -18
  854. package/libcxx/src/filesystem/int128_builtins.cpp +2 -0
  855. package/libcxx/src/filesystem/operations.cpp +2 -9
  856. package/libcxx/src/filesystem/path.cpp +3 -1
  857. package/libcxx/src/include/aligned_alloc.h +65 -0
  858. package/libcxx/src/include/config_elast.h +1 -1
  859. package/libcxx/src/include/from_chars_floating_point.h +11 -7
  860. package/libcxx/src/include/overridable_function.h +8 -10
  861. package/libcxx/src/iostream.cpp +56 -37
  862. package/libcxx/src/locale.cpp +213 -196
  863. package/libcxx/src/memory.cpp +12 -14
  864. package/libcxx/src/mutex_destructor.cpp +1 -1
  865. package/libcxx/src/new.cpp +5 -5
  866. package/libcxx/src/optional.cpp +4 -0
  867. package/libcxx/src/print.cpp +9 -1
  868. package/libcxx/src/random.cpp +0 -26
  869. package/libcxx/src/string.cpp +10 -25
  870. package/libcxx/src/support/runtime/exception_fallback.ipp +2 -0
  871. package/libcxx/src/support/runtime/exception_glibcxx.ipp +3 -0
  872. package/libcxx/src/support/runtime/exception_libcxxabi.ipp +6 -2
  873. package/libcxx/src/support/runtime/exception_libcxxrt.ipp +2 -0
  874. package/libcxx/src/support/runtime/exception_msvc.ipp +2 -0
  875. package/libcxx/src/support/runtime/exception_pointer_cxxabi.ipp +9 -10
  876. package/libcxx/src/support/runtime/exception_pointer_glibcxx.ipp +2 -0
  877. package/libcxx/src/support/runtime/exception_pointer_msvc.ipp +1 -0
  878. package/libcxx/src/support/runtime/exception_pointer_unimplemented.ipp +1 -0
  879. package/libcxx/src/support/win32/locale_win32.cpp +1 -1
  880. package/libcxx/src/system_error.cpp +2 -0
  881. package/libcxx/src/thread.cpp +1 -3
  882. package/libcxx/src/valarray.cpp +1 -2
  883. package/libcxx/src/vector.cpp +2 -2
  884. package/libcxxabi/include/__cxxabi_config.h +42 -23
  885. package/libcxxabi/src/cxa_exception.cpp +4 -2
  886. package/libcxxabi/src/cxa_exception.h +16 -14
  887. package/libcxxabi/src/cxa_personality.cpp +126 -9
  888. package/libcxxabi/src/cxa_thread_atexit.cpp +2 -1
  889. package/libcxxabi/src/demangle/DemangleConfig.h +4 -0
  890. package/libcxxabi/src/demangle/ItaniumDemangle.h +9 -6
  891. package/libcxxabi/src/demangle/Utility.h +21 -7
  892. package/libcxxabi/src/fallback_malloc.cpp +1 -1
  893. package/libcxxabi/src/private_typeinfo.cpp +6 -0
  894. package/libcxxabi/src/stdlib_new_delete.cpp +5 -5
  895. package/libtsan/LICENSE.TXT +311 -0
  896. package/libtsan/builtins/assembly.h +41 -8
  897. package/libtsan/interception/interception_win.cpp +4 -0
  898. package/libtsan/sanitizer_common/sanitizer_allocator_primary32.h +1 -0
  899. package/libtsan/sanitizer_common/sanitizer_allocator_primary64.h +18 -0
  900. package/libtsan/sanitizer_common/sanitizer_common.h +15 -2
  901. package/libtsan/sanitizer_common/sanitizer_common_interceptors.inc +30 -4
  902. package/libtsan/sanitizer_common/sanitizer_common_interceptors_ioctl.inc +4 -0
  903. package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S +2 -1
  904. package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S +2 -0
  905. package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S +2 -0
  906. package/libtsan/sanitizer_common/sanitizer_common_syscalls.inc +18 -0
  907. package/libtsan/sanitizer_common/sanitizer_file.cpp +40 -12
  908. package/libtsan/sanitizer_common/sanitizer_file.h +3 -0
  909. package/libtsan/sanitizer_common/sanitizer_flags.inc +7 -0
  910. package/libtsan/sanitizer_common/sanitizer_fuchsia.cpp +30 -3
  911. package/libtsan/sanitizer_common/sanitizer_haiku.cpp +2 -2
  912. package/libtsan/sanitizer_common/sanitizer_internal_defs.h +1 -1
  913. package/libtsan/sanitizer_common/sanitizer_libc.cpp +8 -0
  914. package/libtsan/sanitizer_common/sanitizer_libc.h +1 -0
  915. package/libtsan/sanitizer_common/sanitizer_linux.cpp +15 -7
  916. package/libtsan/sanitizer_common/sanitizer_linux.h +3 -3
  917. package/libtsan/sanitizer_common/sanitizer_linux_libcdep.cpp +1 -0
  918. package/libtsan/sanitizer_common/sanitizer_mac.cpp +255 -104
  919. package/libtsan/sanitizer_common/sanitizer_mac.h +5 -0
  920. package/libtsan/sanitizer_common/sanitizer_netbsd.cpp +2 -2
  921. package/libtsan/sanitizer_common/sanitizer_platform.h +27 -1
  922. package/libtsan/sanitizer_common/sanitizer_platform_interceptors.h +5 -4
  923. package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.cpp +15 -17
  924. package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.h +32 -6
  925. package/libtsan/sanitizer_common/sanitizer_posix.cpp +3 -12
  926. package/libtsan/sanitizer_common/sanitizer_posix.h +2 -1
  927. package/libtsan/sanitizer_common/sanitizer_posix_libcdep.cpp +19 -0
  928. package/libtsan/sanitizer_common/sanitizer_procmaps_mac.cpp +102 -37
  929. package/libtsan/sanitizer_common/sanitizer_redefine_builtins.h +1 -1
  930. package/libtsan/sanitizer_common/sanitizer_signal_interceptors.inc +40 -2
  931. package/libtsan/sanitizer_common/sanitizer_stoptheworld.h +1 -1
  932. package/libtsan/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp +83 -12
  933. package/libtsan/sanitizer_common/sanitizer_stoptheworld_mac.cpp +3 -3
  934. package/libtsan/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp +7 -7
  935. package/libtsan/sanitizer_common/sanitizer_stoptheworld_win.cpp +2 -2
  936. package/libtsan/sanitizer_common/sanitizer_symbolizer_internal.h +5 -1
  937. package/libtsan/sanitizer_common/sanitizer_symbolizer_libcdep.cpp +11 -1
  938. package/libtsan/sanitizer_common/sanitizer_symbolizer_mac.cpp +86 -29
  939. package/libtsan/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp +27 -16
  940. package/libtsan/sanitizer_common/sanitizer_thread_registry.cpp +5 -4
  941. package/libtsan/sanitizer_common/sanitizer_thread_registry.h +4 -4
  942. package/libtsan/sanitizer_common/sanitizer_win.cpp +1 -3
  943. package/libtsan/tsan_debugging.cpp +2 -2
  944. package/libtsan/tsan_flags.cpp +37 -0
  945. package/libtsan/tsan_flags.h +8 -0
  946. package/libtsan/tsan_flags.inc +12 -0
  947. package/libtsan/tsan_interceptors.h +9 -1
  948. package/libtsan/tsan_interceptors_mac.cpp +19 -0
  949. package/libtsan/tsan_interceptors_posix.cpp +78 -32
  950. package/libtsan/tsan_interface.h +3 -3
  951. package/libtsan/tsan_interface_ann.cpp +23 -9
  952. package/libtsan/tsan_mman.cpp +18 -4
  953. package/libtsan/tsan_platform.h +44 -7
  954. package/libtsan/tsan_platform_linux.cpp +42 -14
  955. package/libtsan/tsan_platform_mac.cpp +16 -3
  956. package/libtsan/tsan_report.h +14 -1
  957. package/libtsan/tsan_rtl.cpp +14 -0
  958. package/libtsan/tsan_rtl.h +7 -2
  959. package/libtsan/tsan_rtl_aarch64.S +3 -5
  960. package/libtsan/tsan_rtl_access.cpp +8 -3
  961. package/libtsan/tsan_rtl_amd64.S +2 -0
  962. package/libtsan/tsan_rtl_mutex.cpp +94 -49
  963. package/libtsan/tsan_rtl_report.cpp +132 -65
  964. package/libtsan/tsan_rtl_thread.cpp +31 -9
  965. package/libtsan/tsan_symbolize.cpp +1 -1
  966. package/libtsan/tsan_symbolize.h +1 -1
  967. package/libtsan/tsan_trace.h +1 -1
  968. package/libunwind/include/__libunwind_config.h +11 -2
  969. package/libunwind/include/libunwind.h +117 -11
  970. package/libunwind/include/unwind_arm_ehabi.h +4 -1
  971. package/libunwind/src/AddressSpace.hpp +42 -20
  972. package/libunwind/src/CompactUnwinder.hpp +16 -5
  973. package/libunwind/src/DwarfInstructions.hpp +24 -13
  974. package/libunwind/src/DwarfParser.hpp +62 -23
  975. package/libunwind/src/EHHeaderParser.hpp +7 -4
  976. package/libunwind/src/Registers.hpp +226 -22
  977. package/libunwind/src/Unwind-seh.cpp +6 -7
  978. package/libunwind/src/Unwind-wasm.c +7 -7
  979. package/libunwind/src/UnwindCursor.hpp +167 -49
  980. package/libunwind/src/UnwindLevel1.c +46 -17
  981. package/libunwind/src/UnwindRegistersRestore.S +46 -5
  982. package/libunwind/src/UnwindRegistersSave.S +86 -2
  983. package/libunwind/src/assembly.h +5 -1
  984. package/libunwind/src/config.h +9 -0
  985. package/libunwind/src/gcc_personality_v0.c +79 -6
  986. package/libunwind/src/libunwind.cpp +104 -4
  987. package/libunwind/src/libunwind_ext.h +7 -1
  988. package/libunwind/src/shadow_stack_unwind.h +2 -2
  989. package/lldb/pretty_printers.py +948 -0
  990. package/package.json +1 -1
  991. package/std/Build/Cache/Path.zig +9 -2
  992. package/std/Build/Cache.zig +16 -7
  993. package/std/Build/Configuration.zig +3436 -0
  994. package/std/Build/Module.zig +99 -225
  995. package/std/Build/Step/CheckFile.zig +17 -63
  996. package/std/Build/Step/Compile.zig +97 -1420
  997. package/std/Build/Step/ConfigHeader.zig +55 -944
  998. package/std/Build/Step/Fail.zig +10 -20
  999. package/std/Build/Step/FindProgram.zig +31 -0
  1000. package/std/Build/Step/Fmt.zig +22 -57
  1001. package/std/Build/Step/InstallArtifact.zig +26 -141
  1002. package/std/Build/Step/InstallDir.zig +14 -67
  1003. package/std/Build/Step/InstallFile.zig +12 -21
  1004. package/std/Build/Step/ObjCopy.zig +82 -199
  1005. package/std/Build/Step/Options.zig +26 -261
  1006. package/std/Build/Step/Run.zig +139 -2214
  1007. package/std/Build/Step/TranslateC.zig +55 -164
  1008. package/std/Build/Step/UpdateSourceFiles.zig +38 -91
  1009. package/std/Build/Step/WriteFile.zig +113 -328
  1010. package/std/Build/Step.zig +45 -916
  1011. package/std/Build/abi.zig +1 -1
  1012. package/std/Build.zig +644 -718
  1013. package/std/Io/Dir.zig +12 -7
  1014. package/std/Io/Dispatch.zig +8 -18
  1015. package/std/Io/File/Writer.zig +8 -6
  1016. package/std/Io/File.zig +6 -9
  1017. package/std/Io/Kqueue.zig +3 -3
  1018. package/std/Io/Reader.zig +8 -14
  1019. package/std/Io/RwLock.zig +2 -0
  1020. package/std/Io/Semaphore.zig +112 -17
  1021. package/std/Io/Terminal.zig +1 -1
  1022. package/std/Io/Threaded.zig +176 -39
  1023. package/std/Io/Uring.zig +18 -20
  1024. package/std/Io/Writer.zig +75 -10
  1025. package/std/Io/net/HostName.zig +11 -6
  1026. package/std/Io/net.zig +11 -11
  1027. package/std/Io.zig +111 -38
  1028. package/std/Random/ChaCha.zig +2 -2
  1029. package/std/Random/benchmark.zig +2 -2
  1030. package/std/Random.zig +6 -6
  1031. package/std/SemanticVersion.zig +1 -1
  1032. package/std/Target/Query.zig +4 -5
  1033. package/std/Target/aarch64.zig +620 -77
  1034. package/std/Target/amdgcn.zig +421 -21
  1035. package/std/Target/arm.zig +40 -6
  1036. package/std/Target/bpf.zig +6 -0
  1037. package/std/Target/hexagon.zig +41 -6
  1038. package/std/Target/loongarch.zig +18 -0
  1039. package/std/Target/mips.zig +6 -0
  1040. package/std/Target/nvptx.zig +58 -35
  1041. package/std/Target/powerpc.zig +27 -19
  1042. package/std/Target/riscv.zig +512 -177
  1043. package/std/Target/sparc.zig +17 -0
  1044. package/std/Target/spirv.zig +1 -1
  1045. package/std/Target/wasm.zig +7 -0
  1046. package/std/Target/x86.zig +200 -31
  1047. package/std/Target/xtensa.zig +65 -0
  1048. package/std/Target.zig +94 -59
  1049. package/std/Thread.zig +17 -4
  1050. package/std/array_hash_map.zig +103 -57
  1051. package/std/array_list.zig +20 -35
  1052. package/std/ascii.zig +0 -9
  1053. package/std/atomic.zig +2 -0
  1054. package/std/base64.zig +5 -5
  1055. package/std/bit_set.zig +85 -93
  1056. package/std/c/haiku.zig +3 -0
  1057. package/std/c/serenity.zig +1 -6
  1058. package/std/c.zig +123 -32
  1059. package/std/compress/flate/Decompress.zig +3 -4
  1060. package/std/compress/zstd/Decompress.zig +7 -9
  1061. package/std/crypto/25519/curve25519.zig +2 -2
  1062. package/std/crypto/25519/edwards25519.zig +3 -3
  1063. package/std/crypto/25519/ristretto255.zig +2 -2
  1064. package/std/crypto/25519/scalar.zig +6 -6
  1065. package/std/crypto/25519/x25519.zig +1 -1
  1066. package/std/crypto/Certificate.zig +14 -2
  1067. package/std/crypto/Sha1.zig +1 -1
  1068. package/std/crypto/aegis.zig +45 -39
  1069. package/std/crypto/aes_ccm.zig +22 -22
  1070. package/std/crypto/aes_gcm.zig +10 -12
  1071. package/std/crypto/aes_ocb.zig +9 -9
  1072. package/std/crypto/argon2.zig +15 -15
  1073. package/std/crypto/ascon.zig +75 -35
  1074. package/std/crypto/bcrypt.zig +20 -10
  1075. package/std/crypto/benchmark.zig +7 -7
  1076. package/std/crypto/blake2.zig +100 -64
  1077. package/std/crypto/cbc_mac.zig +1 -1
  1078. package/std/crypto/chacha20.zig +10 -10
  1079. package/std/crypto/cmac.zig +3 -3
  1080. package/std/crypto/codecs/asn1/Oid.zig +12 -1
  1081. package/std/crypto/codecs/asn1/der/Encoder.zig +1 -1
  1082. package/std/crypto/codecs/asn1.zig +1 -1
  1083. package/std/crypto/codecs/base64_hex_ct.zig +3 -5
  1084. package/std/crypto/ecdsa.zig +9 -9
  1085. package/std/crypto/ff.zig +4 -5
  1086. package/std/crypto/ghash_polyval.zig +4 -4
  1087. package/std/crypto/hkdf.zig +1 -1
  1088. package/std/crypto/isap.zig +3 -3
  1089. package/std/crypto/kangarootwelve.zig +1 -1
  1090. package/std/crypto/keccak_p.zig +8 -8
  1091. package/std/crypto/md5.zig +1 -1
  1092. package/std/crypto/ml_dsa.zig +39 -39
  1093. package/std/crypto/ml_kem.zig +12 -34
  1094. package/std/crypto/modes.zig +2 -2
  1095. package/std/crypto/pbkdf2.zig +1 -1
  1096. package/std/crypto/pcurves/common.zig +4 -5
  1097. package/std/crypto/pcurves/p256/scalar.zig +3 -3
  1098. package/std/crypto/pcurves/p384/scalar.zig +2 -2
  1099. package/std/crypto/pcurves/secp256k1/scalar.zig +3 -3
  1100. package/std/crypto/pcurves/tests/p256.zig +5 -5
  1101. package/std/crypto/pcurves/tests/p384.zig +5 -5
  1102. package/std/crypto/pcurves/tests/secp256k1.zig +3 -3
  1103. package/std/crypto/salsa20.zig +8 -14
  1104. package/std/crypto/sha2.zig +2 -2
  1105. package/std/crypto/sha3.zig +2 -4
  1106. package/std/crypto/siphash.zig +1 -1
  1107. package/std/crypto/timing_safe.zig +10 -9
  1108. package/std/crypto/tls/Client.zig +89 -13
  1109. package/std/crypto/tls.zig +1 -1
  1110. package/std/crypto.zig +4 -3
  1111. package/std/debug/Dwarf.zig +21 -12
  1112. package/std/debug/Pdb.zig +25 -17
  1113. package/std/debug/SelfInfo/Elf.zig +1 -0
  1114. package/std/debug/cpu_context.zig +168 -24
  1115. package/std/debug.zig +17 -9
  1116. package/std/deque.zig +1 -1
  1117. package/std/elf.zig +22 -5
  1118. package/std/enums.zig +8 -20
  1119. package/std/fmt/float.zig +2 -0
  1120. package/std/fmt/parse_float/decimal.zig +1 -1
  1121. package/std/fmt/parse_float.zig +1 -1
  1122. package/std/fmt.zig +7 -8
  1123. package/std/fs/path.zig +7 -5
  1124. package/std/hash/Adler32.zig +3 -3
  1125. package/std/hash/benchmark.zig +2 -2
  1126. package/std/hash/wyhash.zig +2 -2
  1127. package/std/hash/xxhash.zig +0 -6
  1128. package/std/hash_map.zig +22 -2
  1129. package/std/heap/ArenaAllocator.zig +3 -5
  1130. package/std/heap/BufferFirstAllocator.zig +165 -0
  1131. package/std/heap/SafeAllocator.zig +2180 -0
  1132. package/std/heap/debug_allocator.zig +2 -2
  1133. package/std/heap/memory_pool.zig +34 -197
  1134. package/std/heap.zig +20 -133
  1135. package/std/http.zig +4 -5
  1136. package/std/json/Scanner.zig +2 -2
  1137. package/std/json/static.zig +2 -2
  1138. package/std/json.zig +1 -1
  1139. package/std/{builtin → lang}/assembly.zig +71 -0
  1140. package/std/{builtin.zig → lang.zig} +5 -3
  1141. package/std/leb128.zig +2 -2
  1142. package/std/math/acos.zig +6 -0
  1143. package/std/math/asin.zig +6 -0
  1144. package/std/math/atan.zig +5 -0
  1145. package/std/math/big/int.zig +5 -5
  1146. package/std/math/big.zig +4 -4
  1147. package/std/math/copysign.zig +1 -1
  1148. package/std/math/float.zig +62 -0
  1149. package/std/math/frexp.zig +4 -4
  1150. package/std/math/hypot.zig +4 -0
  1151. package/std/math/ilogb.zig +1 -1
  1152. package/std/math/isfinite.zig +1 -1
  1153. package/std/math/isinf.zig +1 -1
  1154. package/std/math/isnan.zig +1 -2
  1155. package/std/math/isnormal.zig +2 -2
  1156. package/std/math/iszero.zig +2 -2
  1157. package/std/math/ldexp.zig +2 -2
  1158. package/std/math/log10.zig +0 -2
  1159. package/std/math/modf.zig +1 -2
  1160. package/std/math/nextafter.zig +3 -4
  1161. package/std/math/pow.zig +1 -1
  1162. package/std/math/powi.zig +2 -3
  1163. package/std/math/signbit.zig +0 -1
  1164. package/std/math.zig +21 -26
  1165. package/std/mem/Allocator.zig +5 -9
  1166. package/std/mem.zig +52 -75
  1167. package/std/meta/trailer_flags.zig +1 -1
  1168. package/std/meta.zig +4 -36
  1169. package/std/multi_array_list.zig +24 -0
  1170. package/std/os/emscripten.zig +7 -6
  1171. package/std/os/linux/IoUring.zig +2 -0
  1172. package/std/os/linux/alpha.zig +358 -0
  1173. package/std/os/linux/arm.zig +0 -26
  1174. package/std/os/linux/bpf.zig +6 -0
  1175. package/std/os/linux/ioctl.zig +3 -2
  1176. package/std/os/linux/syscalls.zig +528 -1
  1177. package/std/os/linux/tls.zig +12 -1
  1178. package/std/os/linux/x86.zig +2 -2
  1179. package/std/os/linux/xtensa.zig +171 -0
  1180. package/std/os/linux.zig +794 -52
  1181. package/std/os/plan9.zig +1 -1
  1182. package/std/os/uefi/hii.zig +1 -1
  1183. package/std/os/uefi/tables/boot_services.zig +9 -8
  1184. package/std/os/uefi/tables/runtime_services.zig +1 -1
  1185. package/std/os/windows.zig +130 -1
  1186. package/std/os.zig +36 -0
  1187. package/std/pie.zig +21 -0
  1188. package/std/posix.zig +2 -2
  1189. package/std/process/Child.zig +20 -0
  1190. package/std/process/Environ.zig +28 -4
  1191. package/std/process.zig +13 -5
  1192. package/std/simd.zig +4 -21
  1193. package/std/start.zig +45 -12
  1194. package/std/std.zig +8 -1
  1195. package/std/tar/Writer.zig +39 -33
  1196. package/std/tar.zig +8 -4
  1197. package/std/testing.zig +68 -15
  1198. package/std/unicode.zig +13 -8
  1199. package/std/zig/Ast/Render.zig +6 -30
  1200. package/std/zig/Ast.zig +12 -37
  1201. package/std/zig/AstGen.zig +174 -258
  1202. package/std/zig/AstRlAnnotate.zig +1 -11
  1203. package/std/zig/AstSmith.zig +5 -11
  1204. package/std/zig/ErrorBundle.zig +6 -2
  1205. package/std/zig/LibCDirs.zig +14 -7
  1206. package/std/zig/LibCInstallation.zig +50 -14
  1207. package/std/zig/Parse.zig +11 -76
  1208. package/std/zig/PkgConfig.zig +146 -0
  1209. package/std/zig/TokenSmith.zig +0 -6
  1210. package/std/zig/WindowsSdk.zig +18 -18
  1211. package/std/zig/Zir.zig +15 -69
  1212. package/std/zig/ZonGen.zig +19 -27
  1213. package/std/zig/llvm/Builder.zig +39 -33
  1214. package/std/zig/llvm/bitcode_writer.zig +3 -3
  1215. package/std/zig/llvm/ir.zig +8 -8
  1216. package/std/zig/system/arm.zig +56 -2
  1217. package/std/zig/system/linux.zig +4 -0
  1218. package/std/zig/system/loongarch.zig +25 -9
  1219. package/std/zig/system/windows.zig +34 -1
  1220. package/std/zig/system/x86.zig +60 -16
  1221. package/std/zig/system.zig +18 -25
  1222. package/std/zig/target.zig +1 -4
  1223. package/std/zig/tokenizer.zig +4 -43
  1224. package/std/zig.zig +98 -22
  1225. package/std/zip.zig +5 -5
  1226. package/std/zon/Serializer.zig +6 -2
  1227. package/std/zon/parse.zig +1 -1
  1228. package/zig.h +24 -2
  1229. package/compiler/build_runner.zig +0 -1857
  1230. package/compiler_rt/long_double.zig +0 -37
  1231. package/include/amxbf16transposeintrin.h +0 -94
  1232. package/include/amxcomplextransposeintrin.h +0 -303
  1233. package/include/amxfp16transposeintrin.h +0 -94
  1234. package/include/amxmovrstransposeintrin.h +0 -200
  1235. package/include/amxtf32transposeintrin.h +0 -105
  1236. package/include/amxtransposeintrin.h +0 -248
  1237. package/libc/include/hexagon-linux-any/asm/signal.h +0 -29
  1238. package/libc/include/mips64el-openbsd-none/loongson/hibernate.h +0 -33
  1239. package/libc/include/mips64el-openbsd-none/loongson/hibernate_var.h +0 -39
  1240. package/libc/include/mips64el-openbsd-none/machine/hibernate.h +0 -33
  1241. package/libc/include/mips64el-openbsd-none/machine/hibernate_var.h +0 -39
  1242. package/libc/include/s390x-linux-any/asm/tape390.h +0 -103
  1243. package/libc/mingw/math/lrintl.c +0 -18
  1244. package/libc/mingw/math/rintl.c +0 -16
  1245. package/libc/mingw/winpthreads/spinlock.c +0 -82
  1246. package/libc/musl/src/linux/tee.c +0 -8
  1247. package/libc/musl/src/math/i386/lrintl.c +0 -8
  1248. package/libc/musl/src/math/i386/rintl.c +0 -7
  1249. package/libc/musl/src/math/lrintl.c +0 -36
  1250. package/libc/musl/src/math/rintl.c +0 -29
  1251. package/libc/musl/src/math/s390x/rintl.c +0 -15
  1252. package/libc/musl/src/math/x32/lrintl.s +0 -7
  1253. package/libc/musl/src/math/x32/rintl.s +0 -6
  1254. package/libc/musl/src/math/x86_64/lrintl.c +0 -8
  1255. package/libc/musl/src/math/x86_64/rintl.c +0 -7
  1256. package/libc/musl/src/string/strdup.c +0 -10
  1257. package/libc/musl/src/string/strndup.c +0 -12
  1258. package/libc/musl/src/string/wcsdup.c +0 -10
  1259. package/libc/musl/src/thread/pthread_spin_destroy.c +0 -6
  1260. package/libc/musl/src/thread/pthread_spin_init.c +0 -6
  1261. package/libc/musl/src/thread/pthread_spin_lock.c +0 -8
  1262. package/libc/musl/src/thread/pthread_spin_trylock.c +0 -7
  1263. package/libc/musl/src/thread/pthread_spin_unlock.c +0 -7
  1264. package/libc/musl/src/unistd/dup2.c +0 -20
  1265. package/libc/musl/src/unistd/dup3.c +0 -26
  1266. package/libc/wasi/thread-stub/pthread_spin_lock.c +0 -8
  1267. package/libc/wasi/thread-stub/pthread_spin_trylock.c +0 -8
  1268. package/libc/wasi/thread-stub/pthread_spin_unlock.c +0 -7
  1269. package/libtsan/sanitizer_common/sanitizer_coverage_interface.inc +0 -43
  1270. package/std/Build/Step/CheckObject.zig +0 -2764
@@ -1,33 +1,15 @@
1
1
  const Step = @This();
2
- const builtin = @import("builtin");
3
2
 
4
3
  const std = @import("../std.zig");
5
- const Io = std.Io;
6
4
  const Build = std.Build;
7
- const Allocator = std.mem.Allocator;
8
5
  const assert = std.debug.assert;
9
- const Cache = Build.Cache;
10
- const Path = Cache.Path;
11
- const ArrayList = std.ArrayList;
6
+ const Configuration = std.Build.Configuration;
12
7
 
13
- id: Id,
8
+ tag: Configuration.Step.Tag,
14
9
  name: []const u8,
15
10
  owner: *Build,
16
- makeFn: MakeFn,
17
11
 
18
- dependencies: std.array_list.Managed(*Step),
19
- /// This field is empty during execution of the user's build script, and
20
- /// then populated during dependency loop checking in the build runner.
21
- dependants: ArrayList(*Step),
22
- /// Collects the set of files that retrigger this step to run.
23
- ///
24
- /// This is used by the build system's implementation of `--watch` but it can
25
- /// also be potentially useful for IDEs to know what effects editing a
26
- /// particular file has.
27
- ///
28
- /// Populated within `make`. Implementation may choose to clear and repopulate,
29
- /// retain previous value, or update.
30
- inputs: Inputs,
12
+ dependencies: std.ArrayList(*Step),
31
13
 
32
14
  /// Set this field to declare an upper bound on the amount of bytes of memory it will
33
15
  /// take to run the step. Zero means no limit.
@@ -48,285 +30,95 @@ inputs: Inputs,
48
30
  /// max_rss value that does not exceed the `max_total_rss` value of the build
49
31
  /// runner. This value is configurable on the command line, and defaults to the
50
32
  /// total system memory available.
51
- max_rss: usize,
52
-
53
- state: State,
54
- pending_deps: u32,
55
-
56
- result_error_msgs: ArrayList([]const u8),
57
- result_error_bundle: std.zig.ErrorBundle,
58
- result_stderr: []const u8,
59
- result_cached: bool,
60
- result_duration_ns: ?u64,
61
- /// 0 means unavailable or not reported.
62
- result_peak_rss: usize,
63
- /// If the step is failed and this field is populated, this is the command which failed.
64
- /// This field may be populated even if the step succeeded.
65
- result_failed_command: ?[]const u8,
66
- test_results: TestResults,
33
+ max_rss: u64,
67
34
 
68
35
  /// The return address associated with creation of this step that can be useful
69
36
  /// to print along with debugging messages.
70
37
  debug_stack_trace: std.debug.StackTrace,
71
38
 
72
- pub const TestResults = struct {
73
- /// The total number of tests in the step. Every test has a "status" from the following:
74
- /// * passed
75
- /// * skipped
76
- /// * failed cleanly
77
- /// * crashed
78
- /// * timed out
79
- test_count: u32 = 0,
80
-
81
- /// The number of tests which were skipped (`error.SkipZigTest`).
82
- skip_count: u32 = 0,
83
- /// The number of tests which failed cleanly.
84
- fail_count: u32 = 0,
85
- /// The number of tests which terminated unexpectedly, i.e. crashed.
86
- crash_count: u32 = 0,
87
- /// The number of tests which timed out.
88
- timeout_count: u32 = 0,
89
-
90
- /// The number of detected memory leaks. The associated test may still have passed; indeed, *all*
91
- /// individual tests may have passed. However, the step as a whole fails if any test has leaks.
92
- leak_count: u32 = 0,
93
- /// The number of detected error logs. The associated test may still have passed; indeed, *all*
94
- /// individual tests may have passed. However, the step as a whole fails if any test logs errors.
95
- log_err_count: u32 = 0,
96
-
97
- pub fn isSuccess(tr: TestResults) bool {
98
- // all steps are success or skip
99
- return tr.fail_count == 0 and
100
- tr.crash_count == 0 and
101
- tr.timeout_count == 0 and
102
- // no (otherwise successful) step leaked memory or logged errors
103
- tr.leak_count == 0 and
104
- tr.log_err_count == 0;
105
- }
106
-
107
- /// Computes the number of tests which passed from the other values.
108
- pub fn passCount(tr: TestResults) u32 {
109
- return tr.test_count - tr.skip_count - tr.fail_count - tr.crash_count - tr.timeout_count;
110
- }
111
- };
112
-
113
- pub const MakeOptions = struct {
114
- progress_node: std.Progress.Node,
115
- watch: bool,
116
- web_server: ?*Build.WebServer,
117
- /// If set, this is a timeout to enforce on all individual unit tests, in nanoseconds.
118
- unit_test_timeout_ns: ?u64,
119
- /// Not to be confused with `Build.allocator`, which is an alias of `Build.graph.arena`.
120
- gpa: Allocator,
121
- };
122
-
123
- pub const MakeFn = *const fn (step: *Step, options: MakeOptions) anyerror!void;
124
-
125
- pub const State = enum {
126
- precheck_unstarted,
127
- precheck_started,
128
- /// This is also used to indicate "dirty" steps that have been modified
129
- /// after a previous build completed, in which case, the step may or may
130
- /// not have been completed before. Either way, one or more of its direct
131
- /// file system inputs have been modified, meaning that the step needs to
132
- /// be re-evaluated.
133
- precheck_done,
134
- dependency_failure,
135
- success,
136
- failure,
137
- /// This state indicates that the step did not complete, however, it also did not fail,
138
- /// and it is safe to continue executing its dependencies.
139
- skipped,
140
- /// This step was skipped because it specified a max_rss that exceeded the runner's maximum.
141
- /// It is not safe to run its dependencies.
142
- skipped_oom,
143
- };
144
-
145
- pub const Id = enum {
146
- top_level,
147
- compile,
148
- install_artifact,
149
- install_file,
150
- install_dir,
151
- remove_dir,
152
- fail,
153
- fmt,
154
- translate_c,
155
- write_file,
156
- update_source_files,
157
- run,
158
- check_file,
159
- check_object,
160
- config_header,
161
- objcopy,
162
- options,
163
- custom,
164
-
165
- pub fn Type(comptime id: Id) type {
166
- return switch (id) {
167
- .top_level => Build.TopLevelStep,
168
- .compile => Compile,
169
- .install_artifact => InstallArtifact,
170
- .install_file => InstallFile,
171
- .install_dir => InstallDir,
172
- .fail => Fail,
173
- .fmt => Fmt,
174
- .translate_c => TranslateC,
175
- .write_file => WriteFile,
176
- .update_source_files => UpdateSourceFiles,
177
- .run => Run,
178
- .check_file => CheckFile,
179
- .check_object => CheckObject,
180
- .config_header => ConfigHeader,
181
- .objcopy => ObjCopy,
182
- .options => Options,
183
- .custom => @compileError("no type available for custom step"),
184
- };
185
- }
186
- };
39
+ pub const Tag = Configuration.Step.Tag;
40
+
41
+ pub fn Type(comptime tag: Tag) type {
42
+ return switch (tag) {
43
+ .check_file => CheckFile,
44
+ .compile => Compile,
45
+ .config_header => ConfigHeader,
46
+ .fail => Fail,
47
+ .find_program => FindProgram,
48
+ .fmt => Fmt,
49
+ .install_artifact => InstallArtifact,
50
+ .install_dir => InstallDir,
51
+ .install_file => InstallFile,
52
+ .obj_copy => ObjCopy,
53
+ .options => Options,
54
+ .run => Run,
55
+ .top_level => TopLevel,
56
+ .translate_c => TranslateC,
57
+ .update_source_files => UpdateSourceFiles,
58
+ .write_file => WriteFile,
59
+ };
60
+ }
187
61
 
188
62
  pub const CheckFile = @import("Step/CheckFile.zig");
189
- pub const CheckObject = @import("Step/CheckObject.zig");
63
+ pub const Compile = @import("Step/Compile.zig");
190
64
  pub const ConfigHeader = @import("Step/ConfigHeader.zig");
191
65
  pub const Fail = @import("Step/Fail.zig");
66
+ pub const FindProgram = @import("Step/FindProgram.zig");
192
67
  pub const Fmt = @import("Step/Fmt.zig");
193
68
  pub const InstallArtifact = @import("Step/InstallArtifact.zig");
194
69
  pub const InstallDir = @import("Step/InstallDir.zig");
195
70
  pub const InstallFile = @import("Step/InstallFile.zig");
196
71
  pub const ObjCopy = @import("Step/ObjCopy.zig");
197
- pub const Compile = @import("Step/Compile.zig");
198
72
  pub const Options = @import("Step/Options.zig");
199
73
  pub const Run = @import("Step/Run.zig");
200
74
  pub const TranslateC = @import("Step/TranslateC.zig");
201
- pub const WriteFile = @import("Step/WriteFile.zig");
202
75
  pub const UpdateSourceFiles = @import("Step/UpdateSourceFiles.zig");
76
+ pub const WriteFile = @import("Step/WriteFile.zig");
203
77
 
204
- pub const Inputs = struct {
205
- table: Table,
206
-
207
- pub const init: Inputs = .{
208
- .table = .{},
209
- };
210
-
211
- pub const Table = std.ArrayHashMapUnmanaged(Build.Cache.Path, Files, Build.Cache.Path.TableAdapter, false);
212
- /// The special file name "." means any changes inside the directory.
213
- pub const Files = ArrayList([]const u8);
214
-
215
- pub fn populated(inputs: *Inputs) bool {
216
- return inputs.table.count() != 0;
217
- }
78
+ pub const TopLevel = struct {
79
+ pub const base_tag: Step.Tag = .top_level;
218
80
 
219
- pub fn clear(inputs: *Inputs, gpa: Allocator) void {
220
- for (inputs.table.values()) |*files| files.deinit(gpa);
221
- inputs.table.clearRetainingCapacity();
222
- }
81
+ step: Step,
82
+ description: []const u8,
223
83
  };
224
84
 
225
85
  pub const StepOptions = struct {
226
- id: Id,
86
+ tag: Tag,
227
87
  name: []const u8,
228
88
  owner: *Build,
229
- makeFn: MakeFn = makeNoOp,
230
89
  first_ret_addr: ?usize = null,
231
- max_rss: usize = 0,
90
+ max_rss: u64 = 0,
232
91
  };
233
92
 
234
93
  pub fn init(options: StepOptions) Step {
235
94
  const arena = options.owner.allocator;
236
95
 
237
96
  return .{
238
- .id = options.id,
97
+ .tag = options.tag,
239
98
  .name = arena.dupe(u8, options.name) catch @panic("OOM"),
240
99
  .owner = options.owner,
241
- .makeFn = options.makeFn,
242
- .dependencies = std.array_list.Managed(*Step).init(arena),
243
- .dependants = .empty,
244
- .inputs = Inputs.init,
245
- .state = .precheck_unstarted,
246
- .pending_deps = undefined, // initialized by build runner
100
+ .dependencies = .empty,
247
101
  .max_rss = options.max_rss,
248
102
  .debug_stack_trace = blk: {
249
103
  const addr_buf = arena.alloc(usize, options.owner.debug_stack_frames_count) catch @panic("OOM");
250
104
  const first_ret_addr = options.first_ret_addr orelse @returnAddress();
251
105
  break :blk std.debug.captureCurrentStackTrace(.{ .first_address = first_ret_addr }, addr_buf);
252
106
  },
253
- .result_error_msgs = .empty,
254
- .result_error_bundle = std.zig.ErrorBundle.empty,
255
- .result_stderr = "",
256
- .result_cached = false,
257
- .result_duration_ns = null,
258
- .result_peak_rss = 0,
259
- .result_failed_command = null,
260
- .test_results = .{},
261
- };
262
- }
263
-
264
- /// If the Step's `make` function reports `error.MakeFailed`, it indicates they
265
- /// have already reported the error. Otherwise, we add a simple error report
266
- /// here.
267
- pub fn make(s: *Step, options: MakeOptions) error{ MakeFailed, MakeSkipped }!void {
268
- const arena = s.owner.allocator;
269
- const graph = s.owner.graph;
270
- const io = graph.io;
271
-
272
- var start_ts: ?Io.Timestamp = t: {
273
- if (!graph.time_report) break :t null;
274
- if (s.id == .compile) break :t null;
275
- if (s.id == .run and s.cast(Run).?.stdio == .zig_test) break :t null;
276
- break :t Io.Clock.awake.now(io);
277
- };
278
- const make_result = s.makeFn(s, options);
279
- if (start_ts) |*ts| {
280
- const duration = ts.untilNow(io, .awake);
281
- options.web_server.?.updateTimeReportGeneric(s, duration);
282
- }
283
-
284
- make_result catch |err| switch (err) {
285
- error.MakeFailed => return error.MakeFailed,
286
- error.MakeSkipped => return error.MakeSkipped,
287
- else => {
288
- s.result_error_msgs.append(arena, @errorName(err)) catch @panic("OOM");
289
- return error.MakeFailed;
290
- },
291
107
  };
292
-
293
- if (!s.test_results.isSuccess()) {
294
- return error.MakeFailed;
295
- }
296
-
297
- if (s.max_rss != 0 and s.result_peak_rss > s.max_rss) {
298
- const msg = std.fmt.allocPrint(arena, "memory usage peaked at {0B:.2} ({0d} bytes), exceeding the declared upper bound of {1B:.2} ({1d} bytes)", .{
299
- s.result_peak_rss, s.max_rss,
300
- }) catch @panic("OOM");
301
- s.result_error_msgs.append(arena, msg) catch @panic("OOM");
302
- }
303
108
  }
304
109
 
305
110
  pub fn dependOn(step: *Step, other: *Step) void {
306
- step.dependencies.append(other) catch @panic("OOM");
307
- }
308
-
309
- fn makeNoOp(step: *Step, options: MakeOptions) anyerror!void {
310
- _ = options;
311
-
312
- var all_cached = true;
313
-
314
- for (step.dependencies.items) |dep| {
315
- all_cached = all_cached and dep.result_cached;
316
- }
317
-
318
- step.result_cached = all_cached;
111
+ const arena = step.owner.allocator;
112
+ step.dependencies.append(arena, other) catch @panic("OOM");
319
113
  }
320
114
 
321
115
  pub fn cast(step: *Step, comptime T: type) ?*T {
322
- if (step.id == T.base_id) {
323
- return @fieldParentPtr("step", step);
324
- }
116
+ if (step.tag == T.base_tag) return @fieldParentPtr("step", step);
325
117
  return null;
326
118
  }
327
119
 
328
120
  /// For debugging purposes, prints identifying information about this Step.
329
- pub fn dump(step: *Step, t: Io.Terminal) void {
121
+ pub fn dump(step: *Step, t: std.Io.Terminal) void {
330
122
  const w = t.writer;
331
123
  if (step.debug_stack_trace.return_addresses.len > 0) {
332
124
  w.print("name: '{s}'. creation stack trace:\n", .{step.name}) catch {};
@@ -340,683 +132,20 @@ pub fn dump(step: *Step, t: Io.Terminal) void {
340
132
  }
341
133
  }
342
134
 
343
- /// Populates `s.result_failed_command`.
344
- pub fn captureChildProcess(
345
- s: *Step,
346
- gpa: Allocator,
347
- progress_node: std.Progress.Node,
348
- argv: []const []const u8,
349
- ) !std.process.RunResult {
350
- const graph = s.owner.graph;
351
- const arena = graph.arena;
352
- const io = graph.io;
353
-
354
- // If an error occurs, it's happened in this command:
355
- assert(s.result_failed_command == null);
356
- s.result_failed_command = try allocPrintCmd(gpa, .inherit, null, argv);
357
-
358
- try handleChildProcUnsupported(s);
359
- try handleVerbose(s.owner, .inherit, argv);
360
-
361
- const result = std.process.run(arena, io, .{
362
- .argv = argv,
363
- .environ_map = &graph.environ_map,
364
- .progress_node = progress_node,
365
- }) catch |err| return s.fail("failed to run {s}: {t}", .{ argv[0], err });
366
-
367
- if (result.stderr.len > 0) {
368
- try s.result_error_msgs.append(arena, result.stderr);
369
- }
370
-
371
- return result;
372
- }
373
-
374
- pub fn fail(step: *Step, comptime fmt: []const u8, args: anytype) error{ OutOfMemory, MakeFailed } {
375
- try step.addError(fmt, args);
376
- return error.MakeFailed;
377
- }
378
-
379
- pub fn addError(step: *Step, comptime fmt: []const u8, args: anytype) error{OutOfMemory}!void {
380
- const arena = step.owner.allocator;
381
- const msg = try std.fmt.allocPrint(arena, fmt, args);
382
- try step.result_error_msgs.append(arena, msg);
383
- }
384
-
385
- pub const ZigProcess = struct {
386
- child: std.process.Child,
387
- multi_reader_buffer: Io.File.MultiReader.Buffer(2),
388
- multi_reader: Io.File.MultiReader,
389
- progress_ipc_index: ?if (std.Progress.have_ipc) std.Progress.Ipc.Index else noreturn,
390
-
391
- pub const StreamEnum = enum { stdout, stderr };
392
-
393
- pub fn saveState(zp: *ZigProcess, prog_node: std.Progress.Node) void {
394
- zp.progress_ipc_index = if (std.Progress.have_ipc) prog_node.takeIpcIndex() else null;
395
- }
396
-
397
- pub fn deinit(zp: *ZigProcess, io: Io) void {
398
- zp.child.kill(io);
399
- zp.multi_reader.deinit();
400
- zp.* = undefined;
401
- }
402
- };
403
-
404
- /// Assumes that argv contains `--listen=-` and that the process being spawned
405
- /// is the zig compiler - the same version that compiled the build runner.
406
- /// Populates `s.result_failed_command`.
407
- pub fn evalZigProcess(
408
- s: *Step,
409
- argv: []const []const u8,
410
- prog_node: std.Progress.Node,
411
- watch: bool,
412
- web_server: ?*Build.WebServer,
413
- gpa: Allocator,
414
- ) !?Path {
415
- const b = s.owner;
416
- const io = b.graph.io;
417
-
418
- // If an error occurs, it's happened in this command:
419
- assert(s.result_failed_command == null);
420
- s.result_failed_command = try allocPrintCmd(gpa, .inherit, null, argv);
421
-
422
- if (s.getZigProcess()) |zp| update: {
423
- assert(watch);
424
- if (zp.progress_ipc_index) |ipc_index| prog_node.setIpcIndex(ipc_index);
425
- zp.progress_ipc_index = null;
426
- var exited = false;
427
- defer if (exited) {
428
- s.cast(Compile).?.zig_process = null;
429
- zp.deinit(io);
430
- gpa.destroy(zp);
431
- } else zp.saveState(prog_node);
432
- const result = zigProcessUpdate(s, zp, watch, web_server, gpa) catch |err| switch (err) {
433
- error.BrokenPipe, error.EndOfStream => |reason| {
434
- std.log.info("{s} restart required: {t}", .{ argv[0], reason });
435
- // Process restart required.
436
- const term = zp.child.wait(io) catch |e| {
437
- return s.fail("unable to wait for {s}: {t}", .{ argv[0], e });
438
- };
439
- _ = term;
440
- exited = true;
441
- break :update;
442
- },
443
- else => |e| return e,
444
- };
445
-
446
- if (s.result_error_bundle.errorMessageCount() > 0) {
447
- return s.fail("{d} compilation errors", .{s.result_error_bundle.errorMessageCount()});
448
- }
449
-
450
- if (s.result_error_msgs.items.len > 0 and result == null) {
451
- // Crash detected.
452
- const term = zp.child.wait(io) catch |e| {
453
- return s.fail("unable to wait for {s}: {t}", .{ argv[0], e });
454
- };
455
- s.result_peak_rss = zp.child.resource_usage_statistics.getMaxRss() orelse 0;
456
- exited = true;
457
- try handleChildProcessTerm(s, term);
458
- return error.MakeFailed;
459
- }
460
-
461
- return result;
462
- }
463
- assert(argv.len != 0);
464
-
465
- try handleChildProcUnsupported(s);
466
- try handleVerbose(s.owner, .inherit, argv);
467
-
468
- const zp = try gpa.create(ZigProcess);
469
- defer if (!watch) gpa.destroy(zp);
470
-
471
- zp.child = std.process.spawn(io, .{
472
- .argv = argv,
473
- .environ_map = &b.graph.environ_map,
474
- .stdin = .pipe,
475
- .stdout = .pipe,
476
- .stderr = .pipe,
477
- .request_resource_usage_statistics = true,
478
- .progress_node = prog_node,
479
- }) catch |err| return s.fail("failed to spawn zig compiler {s}: {t}", .{ argv[0], err });
480
-
481
- zp.multi_reader.init(gpa, io, zp.multi_reader_buffer.toStreams(), &.{
482
- zp.child.stdout.?, zp.child.stderr.?,
483
- });
484
- if (watch) s.cast(Compile).?.zig_process = zp;
485
- defer if (!watch) zp.deinit(io);
486
-
487
- const result = result: {
488
- defer if (watch) zp.saveState(prog_node);
489
- break :result try zigProcessUpdate(s, zp, watch, web_server, gpa);
490
- };
491
-
492
- if (!watch) {
493
- // Send EOF to stdin.
494
- zp.child.stdin.?.close(io);
495
- zp.child.stdin = null;
496
-
497
- const term = zp.child.wait(io) catch |err| {
498
- return s.fail("unable to wait for {s}: {t}", .{ argv[0], err });
499
- };
500
- s.result_peak_rss = zp.child.resource_usage_statistics.getMaxRss() orelse 0;
501
-
502
- // Special handling for Compile step that is expecting compile errors.
503
- if (s.cast(Compile)) |compile| switch (term) {
504
- .exited => {
505
- // Note that the exit code may be 0 in this case due to the
506
- // compiler server protocol.
507
- if (compile.expect_errors != null) {
508
- return error.NeedCompileErrorCheck;
509
- }
510
- },
511
- else => {},
512
- };
513
-
514
- try handleChildProcessTerm(s, term);
515
- }
516
-
517
- if (s.result_error_bundle.errorMessageCount() > 0) {
518
- return s.fail("{d} compilation errors", .{s.result_error_bundle.errorMessageCount()});
519
- }
520
-
521
- return result;
522
- }
523
-
524
- /// Wrapper around `Io.Dir.updateFile` that handles verbose and error output.
525
- pub fn installFile(s: *Step, src_lazy_path: Build.LazyPath, dest_path: []const u8) !Io.Dir.PrevStatus {
526
- const b = s.owner;
527
- const io = b.graph.io;
528
- const src_path = src_lazy_path.getPath3(b, s);
529
- try handleVerbose(b, .inherit, &.{ "install", "-C", b.fmt("{f}", .{src_path}), dest_path });
530
- return Io.Dir.updateFile(src_path.root_dir.handle, io, src_path.sub_path, .cwd(), dest_path, .{}) catch |err|
531
- return s.fail("unable to update file from '{f}' to '{s}': {t}", .{ src_path, dest_path, err });
532
- }
533
-
534
- /// Wrapper around `Io.Dir.createDirPathStatus` that handles verbose and error output.
535
- pub fn installDir(s: *Step, dest_path: []const u8) !Io.Dir.CreatePathStatus {
536
- const b = s.owner;
537
- const io = b.graph.io;
538
- try handleVerbose(b, .inherit, &.{ "install", "-d", dest_path });
539
- return Io.Dir.cwd().createDirPathStatus(io, dest_path, .default_dir) catch |err|
540
- return s.fail("unable to create dir '{s}': {t}", .{ dest_path, err });
541
- }
542
-
543
- fn zigProcessUpdate(s: *Step, zp: *ZigProcess, watch: bool, web_server: ?*Build.WebServer, gpa: Allocator) !?Path {
544
- const b = s.owner;
545
- const arena = b.allocator;
546
- const io = b.graph.io;
547
-
548
- const start_ts = Io.Clock.awake.now(io);
549
-
550
- try sendMessage(io, zp.child.stdin.?, .update);
551
- if (!watch) try sendMessage(io, zp.child.stdin.?, .exit);
552
-
553
- var result: ?Path = null;
554
- var eos_err: error{EndOfStream}!void = {};
555
-
556
- const stdout = zp.multi_reader.fileReader(0);
557
-
558
- while (true) {
559
- const Header = std.zig.Server.Message.Header;
560
- const header = stdout.interface.takeStruct(Header, .little) catch |err| switch (err) {
561
- error.EndOfStream => break,
562
- error.ReadFailed => return stdout.err.?,
563
- };
564
- const body = stdout.interface.take(header.bytes_len) catch |err| switch (err) {
565
- error.EndOfStream => |e| {
566
- // Better to report the crash with stderr below, but we set
567
- // this in case the child exits successfully while violating
568
- // this protocol.
569
- eos_err = e;
570
- break;
571
- },
572
- error.ReadFailed => return stdout.err.?,
573
- };
574
- switch (header.tag) {
575
- .zig_version => {
576
- if (!std.mem.eql(u8, builtin.zig_version_string, body)) {
577
- return s.fail(
578
- "zig version mismatch build runner vs compiler: '{s}' vs '{s}'",
579
- .{ builtin.zig_version_string, body },
580
- );
581
- }
582
- },
583
- .error_bundle => {
584
- s.result_error_bundle = try std.zig.Server.allocErrorBundle(gpa, body);
585
- // This message indicates the end of the update.
586
- if (watch) break;
587
- },
588
- .emit_digest => {
589
- const EmitDigest = std.zig.Server.Message.EmitDigest;
590
- const emit_digest: *align(1) const EmitDigest = @ptrCast(body);
591
- s.result_cached = emit_digest.flags.cache_hit;
592
- const digest = body[@sizeOf(EmitDigest)..][0..Cache.bin_digest_len];
593
- result = .{
594
- .root_dir = b.cache_root,
595
- .sub_path = try arena.dupe(u8, "o" ++ std.fs.path.sep_str ++ Cache.binToHex(digest.*)),
596
- };
597
- },
598
- .file_system_inputs => {
599
- s.clearWatchInputs();
600
- var it = std.mem.splitScalar(u8, body, 0);
601
- while (it.next()) |prefixed_path| {
602
- const prefix_index: std.zig.Server.Message.PathPrefix = @enumFromInt(prefixed_path[0] - 1);
603
- const sub_path = try arena.dupe(u8, prefixed_path[1..]);
604
- const sub_path_dirname = std.fs.path.dirname(sub_path) orelse "";
605
- switch (prefix_index) {
606
- .cwd => {
607
- const path: Build.Cache.Path = .{
608
- .root_dir = Build.Cache.Directory.cwd(),
609
- .sub_path = sub_path_dirname,
610
- };
611
- try addWatchInputFromPath(s, path, std.fs.path.basename(sub_path));
612
- },
613
- .zig_lib => zl: {
614
- if (s.cast(Step.Compile)) |compile| {
615
- if (compile.zig_lib_dir) |zig_lib_dir| {
616
- const lp = try zig_lib_dir.join(arena, sub_path);
617
- try addWatchInput(s, lp);
618
- break :zl;
619
- }
620
- }
621
- const path: Build.Cache.Path = .{
622
- .root_dir = s.owner.graph.zig_lib_directory,
623
- .sub_path = sub_path_dirname,
624
- };
625
- try addWatchInputFromPath(s, path, std.fs.path.basename(sub_path));
626
- },
627
- .local_cache => {
628
- const path: Build.Cache.Path = .{
629
- .root_dir = b.cache_root,
630
- .sub_path = sub_path_dirname,
631
- };
632
- try addWatchInputFromPath(s, path, std.fs.path.basename(sub_path));
633
- },
634
- .global_cache => {
635
- const path: Build.Cache.Path = .{
636
- .root_dir = s.owner.graph.global_cache_root,
637
- .sub_path = sub_path_dirname,
638
- };
639
- try addWatchInputFromPath(s, path, std.fs.path.basename(sub_path));
640
- },
641
- }
642
- }
643
- },
644
- .time_report => if (web_server) |ws| {
645
- const TimeReport = std.zig.Server.Message.TimeReport;
646
- const tr: *align(1) const TimeReport = @ptrCast(body[0..@sizeOf(TimeReport)]);
647
- ws.updateTimeReportCompile(.{
648
- .compile = s.cast(Step.Compile).?,
649
- .use_llvm = tr.flags.use_llvm,
650
- .stats = tr.stats,
651
- .ns_total = @intCast(start_ts.untilNow(io, .awake).toNanoseconds()),
652
- .llvm_pass_timings_len = tr.llvm_pass_timings_len,
653
- .files_len = tr.files_len,
654
- .decls_len = tr.decls_len,
655
- .trailing = body[@sizeOf(TimeReport)..],
656
- });
657
- },
658
- else => {}, // ignore other messages
659
- }
660
- }
661
-
662
- s.result_duration_ns = @intCast(start_ts.untilNow(io, .awake).toNanoseconds());
663
-
664
- const stderr_contents = zp.multi_reader.reader(1).buffered();
665
- if (stderr_contents.len > 0) {
666
- try s.result_error_msgs.append(arena, try arena.dupe(u8, stderr_contents));
667
- }
668
-
669
- try eos_err;
670
-
671
- return result;
672
- }
673
-
674
- pub fn getZigProcess(s: *Step) ?*ZigProcess {
675
- return switch (s.id) {
676
- .compile => s.cast(Compile).?.zig_process,
677
- else => null,
678
- };
679
- }
680
-
681
- fn sendMessage(io: Io, file: Io.File, tag: std.zig.Client.Message.Tag) !void {
682
- const header: std.zig.Client.Message.Header = .{
683
- .tag = tag,
684
- .bytes_len = 0,
685
- };
686
- var w = file.writer(io, &.{});
687
- w.interface.writeStruct(header, .little) catch |err| switch (err) {
688
- error.WriteFailed => return w.err.?,
689
- };
690
- }
691
-
692
- pub fn handleVerbose(
693
- b: *Build,
694
- cwd: std.process.Child.Cwd,
695
- argv: []const []const u8,
696
- ) error{OutOfMemory}!void {
697
- return handleVerbose2(b, cwd, null, argv);
698
- }
699
-
700
- pub fn handleVerbose2(
701
- b: *Build,
702
- cwd: std.process.Child.Cwd,
703
- opt_env: ?*const std.process.Environ.Map,
704
- argv: []const []const u8,
705
- ) error{OutOfMemory}!void {
706
- if (b.verbose) {
707
- const graph = b.graph;
708
- // Intention of verbose is to print all sub-process command lines to
709
- // stderr before spawning them.
710
- const text = try allocPrintCmd(b.allocator, cwd, if (opt_env) |env| .{
711
- .child = env,
712
- .parent = &graph.environ_map,
713
- } else null, argv);
714
- std.debug.print("{s}\n", .{text});
715
- }
716
- }
717
-
718
- /// Asserts that the caller has already populated `s.result_failed_command`.
719
- pub inline fn handleChildProcUnsupported(s: *Step) error{ OutOfMemory, MakeFailed }!void {
720
- if (!std.process.can_spawn) {
721
- return s.fail("unable to spawn process: host cannot spawn child processes", .{});
722
- }
723
- }
724
-
725
- /// Asserts that the caller has already populated `s.result_failed_command`.
726
- pub fn handleChildProcessTerm(s: *Step, term: std.process.Child.Term) error{ MakeFailed, OutOfMemory }!void {
727
- assert(s.result_failed_command != null);
728
- return switch (term) {
729
- .exited => |code| if (code != 0) s.fail("process exited with error code {d}", .{code}),
730
- .signal => |sig| s.fail("process terminated with signal {t}", .{sig}),
731
- .stopped => |sig| s.fail("process stopped with signal {t}", .{sig}),
732
- .unknown => s.fail("process terminated unexpectedly", .{}),
733
- };
734
- }
735
-
736
- pub fn allocPrintCmd(
737
- gpa: Allocator,
738
- cwd: std.process.Child.Cwd,
739
- opt_env: ?struct {
740
- child: *const std.process.Environ.Map,
741
- parent: *const std.process.Environ.Map,
742
- },
743
- argv: []const []const u8,
744
- ) Allocator.Error![]u8 {
745
- const shell = struct {
746
- fn escape(writer: *Io.Writer, string: []const u8, is_argv0: bool) !void {
747
- for (string) |c| {
748
- if (switch (c) {
749
- else => true,
750
- '%', '+'...':', '@'...'Z', '_', 'a'...'z' => false,
751
- '=' => is_argv0,
752
- }) break;
753
- } else return writer.writeAll(string);
754
-
755
- try writer.writeByte('"');
756
- for (string) |c| {
757
- if (switch (c) {
758
- std.ascii.control_code.nul => break,
759
- '!', '"', '$', '\\', '`' => true,
760
- else => !std.ascii.isPrint(c),
761
- }) try writer.writeByte('\\');
762
- switch (c) {
763
- std.ascii.control_code.nul => unreachable,
764
- std.ascii.control_code.bel => try writer.writeByte('a'),
765
- std.ascii.control_code.bs => try writer.writeByte('b'),
766
- std.ascii.control_code.ht => try writer.writeByte('t'),
767
- std.ascii.control_code.lf => try writer.writeByte('n'),
768
- std.ascii.control_code.vt => try writer.writeByte('v'),
769
- std.ascii.control_code.ff => try writer.writeByte('f'),
770
- std.ascii.control_code.cr => try writer.writeByte('r'),
771
- std.ascii.control_code.esc => try writer.writeByte('E'),
772
- ' '...'~' => try writer.writeByte(c),
773
- else => try writer.print("{o:0>3}", .{c}),
774
- }
775
- }
776
- try writer.writeByte('"');
777
- }
778
- };
779
-
780
- var aw: Io.Writer.Allocating = .init(gpa);
781
- defer aw.deinit();
782
- const writer = &aw.writer;
783
- switch (cwd) {
784
- .inherit => {},
785
- .path => |path| writer.print("cd {s} && ", .{path}) catch return error.OutOfMemory,
786
- .dir => @panic("TODO"),
787
- }
788
- if (opt_env) |env| {
789
- var it = env.child.iterator();
790
- while (it.next()) |entry| {
791
- const key = entry.key_ptr.*;
792
- const value = entry.value_ptr.*;
793
- if (env.parent.get(key)) |process_value| {
794
- if (std.mem.eql(u8, value, process_value)) continue;
795
- }
796
- writer.print("{s}=", .{key}) catch return error.OutOfMemory;
797
- shell.escape(writer, value, false) catch return error.OutOfMemory;
798
- writer.writeByte(' ') catch return error.OutOfMemory;
799
- }
800
- }
801
- shell.escape(writer, argv[0], true) catch return error.OutOfMemory;
802
- for (argv[1..]) |arg| {
803
- writer.writeByte(' ') catch return error.OutOfMemory;
804
- shell.escape(writer, arg, false) catch return error.OutOfMemory;
805
- }
806
- return aw.toOwnedSlice();
807
- }
808
-
809
- /// Prefer `cacheHitAndWatch` unless you already added watch inputs
810
- /// separately from using the cache system.
811
- pub fn cacheHit(s: *Step, man: *Build.Cache.Manifest) !bool {
812
- s.result_cached = man.hit() catch |err| return failWithCacheError(s, man, err);
813
- return s.result_cached;
814
- }
815
-
816
- /// Clears previous watch inputs, if any, and then populates watch inputs from
817
- /// the full set of files picked up by the cache manifest.
818
- ///
819
- /// Must be accompanied with `writeManifestAndWatch`.
820
- pub fn cacheHitAndWatch(s: *Step, man: *Build.Cache.Manifest) !bool {
821
- const is_hit = man.hit() catch |err| return failWithCacheError(s, man, err);
822
- s.result_cached = is_hit;
823
- // The above call to hit() populates the manifest with files, so in case of
824
- // a hit, we need to populate watch inputs.
825
- if (is_hit) try setWatchInputsFromManifest(s, man);
826
- return is_hit;
827
- }
828
-
829
- fn failWithCacheError(
830
- s: *Step,
831
- man: *const Build.Cache.Manifest,
832
- err: Build.Cache.Manifest.HitError,
833
- ) error{ OutOfMemory, Canceled, MakeFailed } {
834
- switch (err) {
835
- error.CacheCheckFailed => switch (man.diagnostic) {
836
- .none => unreachable,
837
- .manifest_create, .manifest_read, .manifest_lock => |e| return s.fail("failed to check cache: {t} {t}", .{
838
- man.diagnostic, e,
839
- }),
840
- .file_open, .file_stat, .file_read, .file_hash => |op| {
841
- const pp = man.files.keys()[op.file_index].prefixed_path;
842
- const prefix = man.cache.prefixes()[pp.prefix].path orelse "";
843
- return s.fail("failed to check cache: '{s}{c}{s}' {t} {t}", .{
844
- prefix, std.fs.path.sep, pp.sub_path, man.diagnostic, op.err,
845
- });
846
- },
847
- },
848
- error.OutOfMemory => return error.OutOfMemory,
849
- error.Canceled => return error.Canceled,
850
- error.InvalidFormat => return s.fail("failed to check cache: invalid manifest file format", .{}),
851
- }
852
- }
853
-
854
- /// Prefer `writeManifestAndWatch` unless you already added watch inputs
855
- /// separately from using the cache system.
856
- pub fn writeManifest(s: *Step, man: *Build.Cache.Manifest) !void {
857
- if (s.test_results.isSuccess()) {
858
- man.writeManifest() catch |err| {
859
- try s.addError("unable to write cache manifest: {t}", .{err});
860
- };
861
- }
862
- }
863
-
864
- /// Clears previous watch inputs, if any, and then populates watch inputs from
865
- /// the full set of files picked up by the cache manifest.
866
- ///
867
- /// Must be accompanied with `cacheHitAndWatch`.
868
- pub fn writeManifestAndWatch(s: *Step, man: *Build.Cache.Manifest) !void {
869
- try writeManifest(s, man);
870
- try setWatchInputsFromManifest(s, man);
871
- }
872
-
873
- fn setWatchInputsFromManifest(s: *Step, man: *Build.Cache.Manifest) !void {
874
- const arena = s.owner.allocator;
875
- const prefixes = man.cache.prefixes();
876
- clearWatchInputs(s);
877
- for (man.files.keys()) |file| {
878
- // The file path data is freed when the cache manifest is cleaned up at the end of `make`.
879
- const sub_path = try arena.dupe(u8, file.prefixed_path.sub_path);
880
- try addWatchInputFromPath(s, .{
881
- .root_dir = prefixes[file.prefixed_path.prefix],
882
- .sub_path = std.fs.path.dirname(sub_path) orelse "",
883
- }, std.fs.path.basename(sub_path));
884
- }
885
- }
886
-
887
- /// For steps that have a single input that never changes when re-running `make`.
888
- pub fn singleUnchangingWatchInput(step: *Step, lazy_path: Build.LazyPath) Allocator.Error!void {
889
- if (!step.inputs.populated()) try step.addWatchInput(lazy_path);
890
- }
891
-
892
- pub fn clearWatchInputs(step: *Step) void {
893
- const gpa = step.owner.allocator;
894
- step.inputs.clear(gpa);
895
- }
896
-
897
- /// Places a *file* dependency on the path.
898
- pub fn addWatchInput(step: *Step, lazy_file: Build.LazyPath) Allocator.Error!void {
899
- switch (lazy_file) {
900
- .src_path => |src_path| try addWatchInputFromBuilder(step, src_path.owner, src_path.sub_path),
901
- .dependency => |d| try addWatchInputFromBuilder(step, d.dependency.builder, d.sub_path),
902
- .cwd_relative => |path_string| {
903
- try addWatchInputFromPath(step, .{
904
- .root_dir = .{
905
- .path = null,
906
- .handle = Io.Dir.cwd(),
907
- },
908
- .sub_path = std.fs.path.dirname(path_string) orelse "",
909
- }, std.fs.path.basename(path_string));
910
- },
911
- // Nothing to watch because this dependency edge is modeled instead via `dependants`.
912
- .generated => {},
913
- }
914
- }
915
-
916
- /// Any changes inside the directory will trigger invalidation.
917
- ///
918
- /// See also `addDirectoryWatchInputFromPath` which takes a `Build.Cache.Path` instead.
919
- ///
920
- /// Paths derived from this directory should also be manually added via
921
- /// `addDirectoryWatchInputFromPath` if and only if this function returns
922
- /// `true`.
923
- pub fn addDirectoryWatchInput(step: *Step, lazy_directory: Build.LazyPath) Allocator.Error!bool {
924
- switch (lazy_directory) {
925
- .src_path => |src_path| try addDirectoryWatchInputFromBuilder(step, src_path.owner, src_path.sub_path),
926
- .dependency => |d| try addDirectoryWatchInputFromBuilder(step, d.dependency.builder, d.sub_path),
927
- .cwd_relative => |path_string| {
928
- try addDirectoryWatchInputFromPath(step, .{
929
- .root_dir = .{
930
- .path = null,
931
- .handle = Io.Dir.cwd(),
932
- },
933
- .sub_path = path_string,
934
- });
935
- },
936
- // Nothing to watch because this dependency edge is modeled instead via `dependants`.
937
- .generated => return false,
938
- }
939
- return true;
940
- }
941
-
942
- /// Any changes inside the directory will trigger invalidation.
943
- ///
944
- /// See also `addDirectoryWatchInput` which takes a `Build.LazyPath` instead.
945
- ///
946
- /// This function should only be called when it has been verified that the
947
- /// dependency on `path` is not already accounted for by a `Step` dependency.
948
- /// In other words, before calling this function, first check that the
949
- /// `Build.LazyPath` which this `path` is derived from is not `generated`.
950
- pub fn addDirectoryWatchInputFromPath(step: *Step, path: Build.Cache.Path) !void {
951
- return addWatchInputFromPath(step, path, ".");
952
- }
953
-
954
- fn addWatchInputFromBuilder(step: *Step, builder: *Build, sub_path: []const u8) !void {
955
- return addWatchInputFromPath(step, .{
956
- .root_dir = builder.build_root,
957
- .sub_path = std.fs.path.dirname(sub_path) orelse "",
958
- }, std.fs.path.basename(sub_path));
959
- }
960
-
961
- fn addDirectoryWatchInputFromBuilder(step: *Step, builder: *Build, sub_path: []const u8) !void {
962
- return addDirectoryWatchInputFromPath(step, .{
963
- .root_dir = builder.build_root,
964
- .sub_path = sub_path,
965
- });
966
- }
967
-
968
- fn addWatchInputFromPath(step: *Step, path: Build.Cache.Path, basename: []const u8) !void {
969
- const gpa = step.owner.allocator;
970
- const gop = try step.inputs.table.getOrPut(gpa, path);
971
- if (!gop.found_existing) gop.value_ptr.* = .empty;
972
- try gop.value_ptr.append(gpa, basename);
973
- }
974
-
975
- /// Implementation detail of file watching and forced rebuilds. Prepares the step for being re-evaluated.
976
- pub fn reset(step: *Step, gpa: Allocator) void {
977
- assert(step.state == .precheck_done);
978
-
979
- if (step.result_failed_command) |cmd| gpa.free(cmd);
980
-
981
- step.result_error_msgs.clearRetainingCapacity();
982
- step.result_stderr = "";
983
- step.result_cached = false;
984
- step.result_duration_ns = null;
985
- step.result_peak_rss = 0;
986
- step.result_failed_command = null;
987
- step.test_results = .{};
988
-
989
- step.result_error_bundle.deinit(gpa);
990
- step.result_error_bundle = std.zig.ErrorBundle.empty;
991
- }
992
-
993
- /// Implementation detail of file watching. Prepares the step for being re-evaluated.
994
- /// Returns `true` if the step was newly invalidated, `false` if it was already invalidated.
995
- pub fn invalidateResult(step: *Step, gpa: Allocator) bool {
996
- if (step.state == .precheck_done) return false;
997
- assert(step.pending_deps == 0);
998
- step.state = .precheck_done;
999
- step.reset(gpa);
1000
- for (step.dependants.items) |dependant| {
1001
- _ = dependant.invalidateResult(gpa);
1002
- dependant.pending_deps += 1;
1003
- }
1004
- return true;
1005
- }
1006
-
1007
135
  test {
1008
136
  _ = CheckFile;
1009
- _ = CheckObject;
137
+ _ = Compile;
138
+ _ = ConfigHeader;
1010
139
  _ = Fail;
140
+ _ = FindProgram;
1011
141
  _ = Fmt;
1012
142
  _ = InstallArtifact;
1013
143
  _ = InstallDir;
1014
144
  _ = InstallFile;
1015
145
  _ = ObjCopy;
1016
- _ = Compile;
1017
146
  _ = Options;
1018
147
  _ = Run;
1019
148
  _ = TranslateC;
1020
- _ = WriteFile;
1021
149
  _ = UpdateSourceFiles;
150
+ _ = WriteFile;
1022
151
  }