@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
@@ -4,7 +4,20 @@ const std = @import("std");
4
4
  const Io = std.Io;
5
5
  const Step = std.Build.Step;
6
6
  const Allocator = std.mem.Allocator;
7
- const Writer = std.Io.Writer;
7
+ const Configuration = std.Build.Configuration;
8
+ const allocPrint = std.fmt.allocPrint;
9
+
10
+ step: Step,
11
+ values: std.array_hash_map.String(Value) = .empty,
12
+ /// This directory contains the generated file under the name `include_path`.
13
+ generated_dir: Configuration.GeneratedFileIndex,
14
+
15
+ style: Style,
16
+ input_size_limit: ?u64,
17
+ include_path: []const u8,
18
+ include_guard: Configuration.OptionalString,
19
+
20
+ pub const base_tag: Step.Tag = .config_header;
8
21
 
9
22
  pub const Style = union(enum) {
10
23
  /// A configure format supported by autotools that uses `#undef foo` to
@@ -37,70 +50,60 @@ pub const Value = union(enum) {
37
50
  string: []const u8,
38
51
  };
39
52
 
40
- step: Step,
41
- values: std.array_hash_map.String(Value),
42
- /// This directory contains the generated file under the name `include_path`.
43
- generated_dir: std.Build.GeneratedFile,
44
-
45
- style: Style,
46
- max_bytes: usize,
47
- include_path: []const u8,
48
- include_guard_override: ?[]const u8,
49
-
50
- pub const base_id: Step.Id = .config_header;
51
-
52
53
  pub const Options = struct {
53
54
  style: Style = .blank,
54
- max_bytes: usize = 2 * 1024 * 1024,
55
+ max_bytes: ?u64 = null,
55
56
  include_path: ?[]const u8 = null,
57
+ include_guard: ?[]const u8 = null,
56
58
  first_ret_addr: ?usize = null,
57
- include_guard_override: ?[]const u8 = null,
58
59
  };
59
60
 
60
61
  pub fn create(owner: *std.Build, options: Options) *ConfigHeader {
61
- const config_header = owner.allocator.create(ConfigHeader) catch @panic("OOM");
62
-
63
- var include_path: []const u8 = "config.h";
64
-
65
- if (options.style.getPath()) |s| default_include_path: {
66
- const sub_path = switch (s) {
67
- .src_path => |sp| sp.sub_path,
68
- .generated => break :default_include_path,
69
- .cwd_relative => |sub_path| sub_path,
70
- .dependency => |dependency| dependency.sub_path,
71
- };
72
- const basename = std.fs.path.basename(sub_path);
73
- if (std.mem.endsWith(u8, basename, ".h.in")) {
74
- include_path = basename[0 .. basename.len - 3];
62
+ const graph = owner.graph;
63
+ const arena = graph.arena;
64
+ const wc = &graph.wip_configuration;
65
+ const config_header = graph.create(ConfigHeader);
66
+
67
+ const include_path: []const u8 = p: {
68
+ if (options.include_path) |p|
69
+ break :p graph.dupeString(p);
70
+
71
+ if (options.style.getPath()) |s| default: {
72
+ const sub_path = switch (s) {
73
+ .src_path => |sp| sp.sub_path,
74
+ .generated => break :default,
75
+ .cwd_relative => |sub_path| sub_path,
76
+ .relative => |r| r.sub_path,
77
+ .dependency => |dependency| dependency.sub_path,
78
+ };
79
+ const basename = Io.Dir.path.basename(sub_path);
80
+ if (std.mem.endsWith(u8, basename, ".h.in"))
81
+ break :p graph.dupeString(basename[0 .. basename.len - 3]);
75
82
  }
76
- }
77
-
78
- if (options.include_path) |p| {
79
- include_path = p;
80
- }
83
+ break :p "config.h";
84
+ };
81
85
 
82
86
  const name = if (options.style.getPath()) |s|
83
- owner.fmt("configure {s} header {s} to {s}", .{
84
- @tagName(options.style), s.getDisplayName(), include_path,
85
- })
87
+ allocPrint(arena, "configure {t} header {f} to {s}", .{
88
+ options.style, s, include_path,
89
+ }) catch @panic("OOM")
86
90
  else
87
- owner.fmt("configure {s} header to {s}", .{ @tagName(options.style), include_path });
91
+ allocPrint(arena, "configure {t} header to {s}", .{
92
+ options.style, include_path,
93
+ }) catch @panic("OOM");
88
94
 
89
95
  config_header.* = .{
90
96
  .step = .init(.{
91
- .id = base_id,
97
+ .tag = base_tag,
92
98
  .name = name,
93
99
  .owner = owner,
94
- .makeFn = make,
95
100
  .first_ret_addr = options.first_ret_addr orelse @returnAddress(),
96
101
  }),
97
102
  .style = options.style,
98
- .values = .empty,
99
-
100
- .max_bytes = options.max_bytes,
103
+ .input_size_limit = options.max_bytes,
101
104
  .include_path = include_path,
102
- .include_guard_override = options.include_guard_override,
103
- .generated_dir = .{ .step = &config_header.step },
105
+ .include_guard = if (options.include_guard) |s| .init(wc.addString(s) catch @panic("OOM")) else .none,
106
+ .generated_dir = graph.addGeneratedFile(&config_header.step),
104
107
  };
105
108
 
106
109
  if (options.style.getPath()) |s| {
@@ -118,19 +121,6 @@ pub fn addValue(config_header: *ConfigHeader, name: []const u8, comptime T: type
118
121
  return addValueInner(config_header, name, T, value) catch @panic("OOM");
119
122
  }
120
123
 
121
- pub fn addValues(config_header: *ConfigHeader, values: anytype) void {
122
- inline for (@typeInfo(@TypeOf(values)).@"struct".fields) |field| {
123
- addValue(config_header, field.name, field.type, @field(values, field.name));
124
- }
125
- }
126
-
127
- pub fn getOutputDir(ch: *ConfigHeader) std.Build.LazyPath {
128
- return .{ .generated = .{ .file = &ch.generated_dir } };
129
- }
130
- pub fn getOutputFile(ch: *ConfigHeader) std.Build.LazyPath {
131
- return ch.getOutputDir().path(ch.step.owner, ch.include_path);
132
- }
133
-
134
124
  fn addValueInner(config_header: *ConfigHeader, name: []const u8, comptime T: type, value: T) !void {
135
125
  const arena = config_header.step.owner.allocator;
136
126
  switch (@typeInfo(T)) {
@@ -182,895 +172,16 @@ fn addValueInner(config_header: *ConfigHeader, name: []const u8, comptime T: typ
182
172
  }
183
173
  }
184
174
 
185
- fn make(step: *Step, options: Step.MakeOptions) !void {
186
- _ = options;
187
- const b = step.owner;
188
- const config_header: *ConfigHeader = @fieldParentPtr("step", step);
189
- if (config_header.style.getPath()) |lp| try step.singleUnchangingWatchInput(lp);
190
-
191
- const gpa = b.allocator;
192
- const arena = b.allocator;
193
- const io = b.graph.io;
194
-
195
- var man = b.graph.cache.obtain();
196
- defer man.deinit();
197
-
198
- // Random bytes to make ConfigHeader unique. Refresh this with new
199
- // random bytes when ConfigHeader implementation is modified in a
200
- // non-backwards-compatible way.
201
- man.hash.add(@as(u32, 0xdef08d23));
202
- man.hash.addBytes(config_header.include_path);
203
- man.hash.addOptionalBytes(config_header.include_guard_override);
204
-
205
- var aw: Writer.Allocating = .init(gpa);
206
- defer aw.deinit();
207
- const bw = &aw.writer;
208
-
209
- const header_text = "This file was generated by ConfigHeader using the Zig Build System.";
210
- const c_generated_line = "/* " ++ header_text ++ " */\n";
211
- const asm_generated_line = "; " ++ header_text ++ "\n";
212
-
213
- switch (config_header.style) {
214
- .autoconf_undef, .autoconf_at => |file_source| {
215
- try bw.writeAll(c_generated_line);
216
- const src_path = file_source.getPath2(b, step);
217
- const contents = Io.Dir.cwd().readFileAlloc(io, src_path, arena, .limited(config_header.max_bytes)) catch |err| {
218
- return step.fail("unable to read autoconf input file '{s}': {s}", .{
219
- src_path, @errorName(err),
220
- });
221
- };
222
- switch (config_header.style) {
223
- .autoconf_undef => try render_autoconf_undef(step, contents, bw, &config_header.values, src_path),
224
- .autoconf_at => try render_autoconf_at(step, contents, &aw, &config_header.values, src_path),
225
- else => unreachable,
226
- }
227
- },
228
- .cmake => |file_source| {
229
- try bw.writeAll(c_generated_line);
230
- const src_path = file_source.getPath2(b, step);
231
- const contents = Io.Dir.cwd().readFileAlloc(io, src_path, arena, .limited(config_header.max_bytes)) catch |err| {
232
- return step.fail("unable to read cmake input file '{s}': {s}", .{
233
- src_path, @errorName(err),
234
- });
235
- };
236
- try render_cmake(step, contents, bw, config_header.values, src_path);
237
- },
238
- .blank => {
239
- try bw.writeAll(c_generated_line);
240
- try render_blank(gpa, bw, config_header.values, config_header.include_path, config_header.include_guard_override);
241
- },
242
- .nasm => {
243
- try bw.writeAll(asm_generated_line);
244
- try render_nasm(bw, config_header.values);
245
- },
246
- }
247
-
248
- const output = aw.written();
249
- man.hash.addBytes(output);
250
-
251
- if (try step.cacheHit(&man)) {
252
- const digest = man.final();
253
- config_header.generated_dir.path = try b.cache_root.join(arena, &.{ "o", &digest });
254
- return;
255
- }
256
-
257
- const digest = man.final();
258
-
259
- // If output_path has directory parts, deal with them. Example:
260
- // output_dir is zig-cache/o/HASH
261
- // output_path is libavutil/avconfig.h
262
- // We want to open directory zig-cache/o/HASH/libavutil/
263
- // but keep output_dir as zig-cache/o/HASH for -I include
264
- const sub_path = b.pathJoin(&.{ "o", &digest, config_header.include_path });
265
- const sub_path_dirname = std.fs.path.dirname(sub_path).?;
266
-
267
- b.cache_root.handle.createDirPath(io, sub_path_dirname) catch |err| {
268
- return step.fail("unable to make path '{f}{s}': {s}", .{
269
- b.cache_root, sub_path_dirname, @errorName(err),
270
- });
271
- };
272
-
273
- b.cache_root.handle.writeFile(io, .{ .sub_path = sub_path, .data = output }) catch |err| {
274
- return step.fail("unable to write file '{f}{s}': {s}", .{
275
- b.cache_root, sub_path, @errorName(err),
276
- });
277
- };
278
-
279
- config_header.generated_dir.path = try b.cache_root.join(arena, &.{ "o", &digest });
280
- try man.writeManifest();
281
- }
282
-
283
- fn render_autoconf_undef(
284
- step: *Step,
285
- contents: []const u8,
286
- bw: *Writer,
287
- values: *const std.array_hash_map.String(Value),
288
- src_path: []const u8,
289
- ) !void {
290
- const build = step.owner;
291
- const allocator = build.allocator;
292
-
293
- var is_used: std.DynamicBitSetUnmanaged = try .initEmpty(allocator, values.count());
294
- defer is_used.deinit(allocator);
295
-
296
- var any_errors = false;
297
- var line_index: u32 = 0;
298
- var line_it = std.mem.splitScalar(u8, contents, '\n');
299
- while (line_it.next()) |line| : (line_index += 1) {
300
- if (!std.mem.startsWith(u8, line, "#")) {
301
- try bw.writeAll(line);
302
- try bw.writeByte('\n');
303
- continue;
304
- }
305
- var it = std.mem.tokenizeAny(u8, line[1..], " \t\r");
306
- const undef = it.next().?;
307
- if (!std.mem.eql(u8, undef, "undef")) {
308
- try bw.writeAll(line);
309
- try bw.writeByte('\n');
310
- continue;
311
- }
312
- const name = it.next().?;
313
- const index = values.getIndex(name) orelse {
314
- try step.addError("{s}:{d}: error: unspecified config header value: '{s}'", .{
315
- src_path, line_index + 1, name,
316
- });
317
- any_errors = true;
318
- continue;
319
- };
320
- is_used.set(index);
321
- try renderValueC(bw, name, values.values()[index]);
322
- }
323
-
324
- var unused_value_it = is_used.iterator(.{ .kind = .unset });
325
- while (unused_value_it.next()) |index| {
326
- try step.addError("{s}: error: config header value unused: '{s}'", .{ src_path, values.keys()[index] });
327
- any_errors = true;
328
- }
329
-
330
- if (any_errors) {
331
- return error.MakeFailed;
332
- }
333
- }
334
-
335
- fn render_autoconf_at(
336
- step: *Step,
337
- contents: []const u8,
338
- aw: *Writer.Allocating,
339
- values: *const std.array_hash_map.String(Value),
340
- src_path: []const u8,
341
- ) !void {
342
- const build = step.owner;
343
- const allocator = build.allocator;
344
- const bw = &aw.writer;
345
-
346
- const used = allocator.alloc(bool, values.count()) catch @panic("OOM");
347
- for (used) |*u| u.* = false;
348
- defer allocator.free(used);
349
-
350
- var any_errors = false;
351
- var line_index: u32 = 0;
352
- var line_it = std.mem.splitScalar(u8, contents, '\n');
353
- while (line_it.next()) |line| : (line_index += 1) {
354
- const last_line = line_it.index == line_it.buffer.len;
355
-
356
- const old_len = aw.written().len;
357
- expand_variables_autoconf_at(bw, line, values, used) catch |err| switch (err) {
358
- error.MissingValue => {
359
- const name = aw.written()[old_len..];
360
- defer aw.shrinkRetainingCapacity(old_len);
361
- try step.addError("{s}:{d}: error: unspecified config header value: '{s}'", .{
362
- src_path, line_index + 1, name,
363
- });
364
- any_errors = true;
365
- continue;
366
- },
367
- else => {
368
- try step.addError("{s}:{d}: unable to substitute variable: error: {s}", .{
369
- src_path, line_index + 1, @errorName(err),
370
- });
371
- any_errors = true;
372
- continue;
373
- },
374
- };
375
- if (!last_line) try bw.writeByte('\n');
376
- }
377
-
378
- for (values.entries.slice().items(.key), used) |name, u| {
379
- if (!u) {
380
- try step.addError("{s}: error: config header value unused: '{s}'", .{ src_path, name });
381
- any_errors = true;
382
- }
383
- }
384
-
385
- if (any_errors) return error.MakeFailed;
386
- }
387
-
388
- fn render_cmake(
389
- step: *Step,
390
- contents: []const u8,
391
- bw: *Writer,
392
- values: std.array_hash_map.String(Value),
393
- src_path: []const u8,
394
- ) !void {
395
- const build = step.owner;
396
- const allocator = build.allocator;
397
-
398
- var values_copy = try values.clone(allocator);
399
- defer values_copy.deinit(allocator);
400
-
401
- var any_errors = false;
402
- var line_index: u32 = 0;
403
- var line_it = std.mem.splitScalar(u8, contents, '\n');
404
- while (line_it.next()) |raw_line| : (line_index += 1) {
405
- const last_line = line_it.index == line_it.buffer.len;
406
-
407
- const line = expand_variables_cmake(allocator, raw_line, values) catch |err| switch (err) {
408
- error.InvalidCharacter => {
409
- try step.addError("{s}:{d}: error: invalid character in a variable name", .{
410
- src_path, line_index + 1,
411
- });
412
- any_errors = true;
413
- continue;
414
- },
415
- else => {
416
- try step.addError("{s}:{d}: unable to substitute variable: error: {s}", .{
417
- src_path, line_index + 1, @errorName(err),
418
- });
419
- any_errors = true;
420
- continue;
421
- },
422
- };
423
- defer allocator.free(line);
424
-
425
- const line_start = std.mem.findNone(u8, line, " \t\r") orelse {
426
- try bw.writeAll(line);
427
- if (!last_line) try bw.writeByte('\n');
428
- continue;
429
- };
430
- const whitespace_prefix = line[0..line_start];
431
- const trimmed_line = line[line_start..];
432
-
433
- if (!std.mem.startsWith(u8, trimmed_line, "#")) {
434
- try bw.writeAll(line);
435
- if (!last_line) try bw.writeByte('\n');
436
- continue;
437
- }
438
-
439
- var it = std.mem.tokenizeAny(u8, trimmed_line[1..], " \t\r");
440
- const cmakedefine = it.next().?;
441
- if (!std.mem.eql(u8, cmakedefine, "cmakedefine") and
442
- !std.mem.eql(u8, cmakedefine, "cmakedefine01"))
443
- {
444
- try bw.writeAll(line);
445
- if (!last_line) try bw.writeByte('\n');
446
- continue;
447
- }
448
-
449
- const booldefine = std.mem.eql(u8, cmakedefine, "cmakedefine01");
450
-
451
- const name = it.next() orelse {
452
- try step.addError("{s}:{d}: error: missing define name", .{
453
- src_path, line_index + 1,
454
- });
455
- any_errors = true;
456
- continue;
457
- };
458
- var value = values_copy.get(name) orelse blk: {
459
- if (booldefine) {
460
- break :blk Value{ .int = 0 };
461
- }
462
- break :blk Value.undef;
463
- };
464
-
465
- value = blk: {
466
- switch (value) {
467
- .boolean => |b| {
468
- if (!b) {
469
- break :blk Value.undef;
470
- }
471
- },
472
- .int => |i| {
473
- if (i == 0) {
474
- break :blk Value.undef;
475
- }
476
- },
477
- .string => |string| {
478
- if (string.len == 0) {
479
- break :blk Value.undef;
480
- }
481
- },
482
-
483
- else => {},
484
- }
485
- break :blk value;
486
- };
487
-
488
- if (booldefine) {
489
- value = blk: {
490
- switch (value) {
491
- .undef => {
492
- break :blk Value{ .boolean = false };
493
- },
494
- .defined => {
495
- break :blk Value{ .boolean = false };
496
- },
497
- .boolean => |b| {
498
- break :blk Value{ .boolean = b };
499
- },
500
- .int => |i| {
501
- break :blk Value{ .boolean = i != 0 };
502
- },
503
- .string => |string| {
504
- break :blk Value{ .boolean = string.len != 0 };
505
- },
506
-
507
- else => {
508
- break :blk Value{ .boolean = false };
509
- },
510
- }
511
- };
512
- } else if (value != Value.undef) {
513
- value = Value{ .ident = it.rest() };
514
- }
515
-
516
- try bw.writeAll(whitespace_prefix);
517
- try renderValueC(bw, name, value);
518
- }
519
-
520
- if (any_errors) {
521
- return error.HeaderConfigFailed;
522
- }
523
- }
524
-
525
- fn render_blank(
526
- gpa: std.mem.Allocator,
527
- bw: *Writer,
528
- defines: std.array_hash_map.String(Value),
529
- include_path: []const u8,
530
- include_guard_override: ?[]const u8,
531
- ) !void {
532
- const include_guard_name = include_guard_override orelse blk: {
533
- const name = try gpa.dupe(u8, include_path);
534
- for (name) |*byte| {
535
- switch (byte.*) {
536
- 'a'...'z' => byte.* = byte.* - 'a' + 'A',
537
- 'A'...'Z', '0'...'9' => continue,
538
- else => byte.* = '_',
539
- }
540
- }
541
- break :blk name;
542
- };
543
- defer if (include_guard_override == null) gpa.free(include_guard_name);
544
-
545
- try bw.print(
546
- \\#ifndef {[0]s}
547
- \\#define {[0]s}
548
- \\
549
- , .{include_guard_name});
550
-
551
- const values = defines.values();
552
- for (defines.keys(), 0..) |name, i| try renderValueC(bw, name, values[i]);
553
-
554
- try bw.print(
555
- \\#endif /* {s} */
556
- \\
557
- , .{include_guard_name});
558
- }
559
-
560
- fn render_nasm(bw: *Writer, defines: std.array_hash_map.String(Value)) !void {
561
- for (defines.keys(), defines.values()) |name, value| try renderValueNasm(bw, name, value);
562
- }
563
-
564
- fn renderValueC(bw: *Writer, name: []const u8, value: Value) !void {
565
- switch (value) {
566
- .undef => try bw.print("/* #undef {s} */\n", .{name}),
567
- .defined => try bw.print("#define {s}\n", .{name}),
568
- .boolean => |b| try bw.print("#define {s} {c}\n", .{ name, @as(u8, '0') + @intFromBool(b) }),
569
- .int => |i| try bw.print("#define {s} {d}\n", .{ name, i }),
570
- .ident => |ident| try bw.print("#define {s} {s}\n", .{ name, ident }),
571
- // TODO: use C-specific escaping instead of zig string literals
572
- .string => |string| try bw.print("#define {s} \"{f}\"\n", .{ name, std.zig.fmtString(string) }),
573
- }
574
- }
575
-
576
- fn renderValueNasm(bw: *Writer, name: []const u8, value: Value) !void {
577
- switch (value) {
578
- .undef => try bw.print("; %undef {s}\n", .{name}),
579
- .defined => try bw.print("%define {s}\n", .{name}),
580
- .boolean => |b| try bw.print("%define {s} {c}\n", .{ name, @as(u8, '0') + @intFromBool(b) }),
581
- .int => |i| try bw.print("%define {s} {d}\n", .{ name, i }),
582
- .ident => |ident| try bw.print("%define {s} {s}\n", .{ name, ident }),
583
- // TODO: use nasm-specific escaping instead of zig string literals
584
- .string => |string| try bw.print("%define {s} \"{f}\"\n", .{ name, std.zig.fmtString(string) }),
585
- }
586
- }
587
-
588
- fn expand_variables_autoconf_at(
589
- bw: *Writer,
590
- contents: []const u8,
591
- values: *const std.array_hash_map.String(Value),
592
- used: []bool,
593
- ) !void {
594
- const valid_varname_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_";
595
-
596
- var curr: usize = 0;
597
- var source_offset: usize = 0;
598
- while (curr < contents.len) : (curr += 1) {
599
- if (contents[curr] != '@') continue;
600
- if (std.mem.findScalarPos(u8, contents, curr + 1, '@')) |close_pos| {
601
- if (close_pos == curr + 1) {
602
- // closed immediately, preserve as a literal
603
- continue;
604
- }
605
- const valid_varname_end = std.mem.findNonePos(u8, contents, curr + 1, valid_varname_chars) orelse 0;
606
- if (valid_varname_end != close_pos) {
607
- // contains invalid characters, preserve as a literal
608
- continue;
609
- }
610
-
611
- const key = contents[curr + 1 .. close_pos];
612
- const index = values.getIndex(key) orelse {
613
- // Report the missing key to the caller.
614
- try bw.writeAll(key);
615
- return error.MissingValue;
616
- };
617
- const value = values.entries.slice().items(.value)[index];
618
- used[index] = true;
619
- try bw.writeAll(contents[source_offset..curr]);
620
- switch (value) {
621
- .undef, .defined => {},
622
- .boolean => |b| try bw.writeByte(@as(u8, '0') + @intFromBool(b)),
623
- .int => |i| try bw.print("{d}", .{i}),
624
- .ident, .string => |s| try bw.writeAll(s),
625
- }
626
-
627
- curr = close_pos;
628
- source_offset = close_pos + 1;
629
- }
630
- }
631
-
632
- try bw.writeAll(contents[source_offset..]);
633
- }
634
-
635
- fn expand_variables_cmake(
636
- allocator: Allocator,
637
- contents: []const u8,
638
- values: std.array_hash_map.String(Value),
639
- ) ![]const u8 {
640
- var result: std.array_list.Managed(u8) = .init(allocator);
641
- errdefer result.deinit();
642
-
643
- const valid_varname_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789/_.+-";
644
- const open_var = "${";
645
-
646
- var curr: usize = 0;
647
- var source_offset: usize = 0;
648
- const Position = struct {
649
- source: usize,
650
- target: usize,
651
- };
652
- var var_stack: std.array_list.Managed(Position) = .init(allocator);
653
- defer var_stack.deinit();
654
- loop: while (curr < contents.len) : (curr += 1) {
655
- switch (contents[curr]) {
656
- '@' => blk: {
657
- if (std.mem.findScalarPos(u8, contents, curr + 1, '@')) |close_pos| {
658
- if (close_pos == curr + 1) {
659
- // closed immediately, preserve as a literal
660
- break :blk;
661
- }
662
- const valid_varname_end = std.mem.findNonePos(u8, contents, curr + 1, valid_varname_chars) orelse 0;
663
- if (valid_varname_end != close_pos) {
664
- // contains invalid characters, preserve as a literal
665
- break :blk;
666
- }
667
-
668
- const key = contents[curr + 1 .. close_pos];
669
- const value = values.get(key) orelse return error.MissingValue;
670
- const missing = contents[source_offset..curr];
671
- try result.appendSlice(missing);
672
- switch (value) {
673
- .undef, .defined => {},
674
- .boolean => |b| {
675
- try result.append(if (b) '1' else '0');
676
- },
677
- .int => |i| {
678
- try result.print("{d}", .{i});
679
- },
680
- .ident, .string => |s| {
681
- try result.appendSlice(s);
682
- },
683
- }
684
-
685
- curr = close_pos;
686
- source_offset = close_pos + 1;
687
-
688
- continue :loop;
689
- }
690
- },
691
- '$' => blk: {
692
- const next = curr + 1;
693
- if (next == contents.len or contents[next] != '{') {
694
- // no open bracket detected, preserve as a literal
695
- break :blk;
696
- }
697
- const missing = contents[source_offset..curr];
698
- try result.appendSlice(missing);
699
- try result.appendSlice(open_var);
700
-
701
- source_offset = curr + open_var.len;
702
- curr = next;
703
- try var_stack.append(Position{
704
- .source = curr,
705
- .target = result.items.len - open_var.len,
706
- });
707
-
708
- continue :loop;
709
- },
710
- '}' => blk: {
711
- if (var_stack.items.len == 0) {
712
- // no open bracket, preserve as a literal
713
- break :blk;
714
- }
715
- const open_pos = var_stack.pop().?;
716
- if (source_offset == open_pos.source) {
717
- source_offset += open_var.len;
718
- }
719
- const missing = contents[source_offset..curr];
720
- try result.appendSlice(missing);
721
-
722
- const key_start = open_pos.target + open_var.len;
723
- const key = result.items[key_start..];
724
- if (key.len == 0) {
725
- return error.MissingKey;
726
- }
727
- const value = values.get(key) orelse return error.MissingValue;
728
- result.shrinkRetainingCapacity(result.items.len - key.len - open_var.len);
729
- switch (value) {
730
- .undef, .defined => {},
731
- .boolean => |b| {
732
- try result.append(if (b) '1' else '0');
733
- },
734
- .int => |i| {
735
- try result.print("{d}", .{i});
736
- },
737
- .ident, .string => |s| {
738
- try result.appendSlice(s);
739
- },
740
- }
741
-
742
- source_offset = curr + 1;
743
-
744
- continue :loop;
745
- },
746
- '\\' => {
747
- // backslash is not considered a special character
748
- continue :loop;
749
- },
750
- else => {},
751
- }
752
-
753
- if (var_stack.items.len > 0 and std.mem.findScalar(u8, valid_varname_chars, contents[curr]) == null) {
754
- return error.InvalidCharacter;
755
- }
756
- }
757
-
758
- if (source_offset != contents.len) {
759
- const missing = contents[source_offset..];
760
- try result.appendSlice(missing);
175
+ pub fn addValues(config_header: *ConfigHeader, values: anytype) void {
176
+ inline for (@typeInfo(@TypeOf(values)).@"struct".fields) |field| {
177
+ addValue(config_header, field.name, field.type, @field(values, field.name));
761
178
  }
762
-
763
- return result.toOwnedSlice();
764
- }
765
-
766
- fn testReplaceVariablesAutoconfAt(
767
- allocator: Allocator,
768
- contents: []const u8,
769
- expected: []const u8,
770
- values: std.array_hash_map.String(Value),
771
- ) !void {
772
- var aw: Writer.Allocating = .init(allocator);
773
- defer aw.deinit();
774
-
775
- const used = try allocator.alloc(bool, values.count());
776
- for (used) |*u| u.* = false;
777
- defer allocator.free(used);
778
-
779
- try expand_variables_autoconf_at(&aw.writer, contents, values, used);
780
-
781
- for (used) |u| if (!u) return error.UnusedValue;
782
- try std.testing.expectEqualStrings(expected, aw.written());
783
- }
784
-
785
- fn testReplaceVariablesCMake(
786
- allocator: Allocator,
787
- contents: []const u8,
788
- expected: []const u8,
789
- values: std.array_hash_map.String(Value),
790
- ) !void {
791
- const actual = try expand_variables_cmake(allocator, contents, values);
792
- defer allocator.free(actual);
793
-
794
- try std.testing.expectEqualStrings(expected, actual);
795
- }
796
-
797
- test "expand_variables_autoconf_at simple cases" {
798
- const allocator = std.testing.allocator;
799
- var values: std.array_hash_map.String(Value) = .init(allocator);
800
- defer values.deinit();
801
-
802
- // empty strings are preserved
803
- try testReplaceVariablesAutoconfAt(allocator, "", "", values);
804
-
805
- // line with misc content is preserved
806
- try testReplaceVariablesAutoconfAt(allocator, "no substitution", "no substitution", values);
807
-
808
- // empty @ sigils are preserved
809
- try testReplaceVariablesAutoconfAt(allocator, "@", "@", values);
810
- try testReplaceVariablesAutoconfAt(allocator, "@@", "@@", values);
811
- try testReplaceVariablesAutoconfAt(allocator, "@@@", "@@@", values);
812
- try testReplaceVariablesAutoconfAt(allocator, "@@@@", "@@@@", values);
813
-
814
- // simple substitution
815
- try values.putNoClobber("undef", .undef);
816
- try testReplaceVariablesAutoconfAt(allocator, "@undef@", "", values);
817
- values.clearRetainingCapacity();
818
-
819
- try values.putNoClobber("defined", .defined);
820
- try testReplaceVariablesAutoconfAt(allocator, "@defined@", "", values);
821
- values.clearRetainingCapacity();
822
-
823
- try values.putNoClobber("true", Value{ .boolean = true });
824
- try testReplaceVariablesAutoconfAt(allocator, "@true@", "1", values);
825
- values.clearRetainingCapacity();
826
-
827
- try values.putNoClobber("false", Value{ .boolean = false });
828
- try testReplaceVariablesAutoconfAt(allocator, "@false@", "0", values);
829
- values.clearRetainingCapacity();
830
-
831
- try values.putNoClobber("int", Value{ .int = 42 });
832
- try testReplaceVariablesAutoconfAt(allocator, "@int@", "42", values);
833
- values.clearRetainingCapacity();
834
-
835
- try values.putNoClobber("ident", Value{ .string = "value" });
836
- try testReplaceVariablesAutoconfAt(allocator, "@ident@", "value", values);
837
- values.clearRetainingCapacity();
838
-
839
- try values.putNoClobber("string", Value{ .string = "text" });
840
- try testReplaceVariablesAutoconfAt(allocator, "@string@", "text", values);
841
- values.clearRetainingCapacity();
842
-
843
- // double packed substitution
844
- try values.putNoClobber("string", Value{ .string = "text" });
845
- try testReplaceVariablesAutoconfAt(allocator, "@string@@string@", "texttext", values);
846
- values.clearRetainingCapacity();
847
-
848
- // triple packed substitution
849
- try values.putNoClobber("int", Value{ .int = 42 });
850
- try values.putNoClobber("string", Value{ .string = "text" });
851
- try testReplaceVariablesAutoconfAt(allocator, "@string@@int@@string@", "text42text", values);
852
- values.clearRetainingCapacity();
853
-
854
- // double separated substitution
855
- try values.putNoClobber("int", Value{ .int = 42 });
856
- try testReplaceVariablesAutoconfAt(allocator, "@int@.@int@", "42.42", values);
857
- values.clearRetainingCapacity();
858
-
859
- // triple separated substitution
860
- try values.putNoClobber("true", Value{ .boolean = true });
861
- try values.putNoClobber("int", Value{ .int = 42 });
862
- try testReplaceVariablesAutoconfAt(allocator, "@int@.@true@.@int@", "42.1.42", values);
863
- values.clearRetainingCapacity();
864
-
865
- // misc prefix is preserved
866
- try values.putNoClobber("false", Value{ .boolean = false });
867
- try testReplaceVariablesAutoconfAt(allocator, "false is @false@", "false is 0", values);
868
- values.clearRetainingCapacity();
869
-
870
- // misc suffix is preserved
871
- try values.putNoClobber("true", Value{ .boolean = true });
872
- try testReplaceVariablesAutoconfAt(allocator, "@true@ is true", "1 is true", values);
873
- values.clearRetainingCapacity();
874
-
875
- // surrounding content is preserved
876
- try values.putNoClobber("int", Value{ .int = 42 });
877
- try testReplaceVariablesAutoconfAt(allocator, "what is 6*7? @int@!", "what is 6*7? 42!", values);
878
- values.clearRetainingCapacity();
879
-
880
- // incomplete key is preserved
881
- try testReplaceVariablesAutoconfAt(allocator, "@undef", "@undef", values);
882
-
883
- // unknown key leads to an error
884
- try std.testing.expectError(error.MissingValue, testReplaceVariablesAutoconfAt(allocator, "@bad@", "", values));
885
-
886
- // unused key leads to an error
887
- try values.putNoClobber("int", Value{ .int = 42 });
888
- try values.putNoClobber("false", Value{ .boolean = false });
889
- try std.testing.expectError(error.UnusedValue, testReplaceVariablesAutoconfAt(allocator, "@int", "", values));
890
- values.clearRetainingCapacity();
891
- }
892
-
893
- test "expand_variables_autoconf_at edge cases" {
894
- const allocator = std.testing.allocator;
895
- var values: std.array_hash_map.String(Value) = .init(allocator);
896
- defer values.deinit();
897
-
898
- // @-vars resolved only when they wrap valid characters, otherwise considered literals
899
- try values.putNoClobber("string", Value{ .string = "text" });
900
- try testReplaceVariablesAutoconfAt(allocator, "@@string@@", "@text@", values);
901
- values.clearRetainingCapacity();
902
-
903
- // expanded variables are considered strings after expansion
904
- try values.putNoClobber("string_at", Value{ .string = "@string@" });
905
- try testReplaceVariablesAutoconfAt(allocator, "@string_at@", "@string@", values);
906
- values.clearRetainingCapacity();
907
- }
908
-
909
- test "expand_variables_cmake simple cases" {
910
- const allocator = std.testing.allocator;
911
- var values: std.array_hash_map.String(Value) = .init(allocator);
912
- defer values.deinit();
913
-
914
- try values.putNoClobber("undef", .undef);
915
- try values.putNoClobber("defined", .defined);
916
- try values.putNoClobber("true", Value{ .boolean = true });
917
- try values.putNoClobber("false", Value{ .boolean = false });
918
- try values.putNoClobber("int", Value{ .int = 42 });
919
- try values.putNoClobber("ident", Value{ .string = "value" });
920
- try values.putNoClobber("string", Value{ .string = "text" });
921
-
922
- // empty strings are preserved
923
- try testReplaceVariablesCMake(allocator, "", "", values);
924
-
925
- // line with misc content is preserved
926
- try testReplaceVariablesCMake(allocator, "no substitution", "no substitution", values);
927
-
928
- // empty ${} wrapper leads to an error
929
- try std.testing.expectError(error.MissingKey, testReplaceVariablesCMake(allocator, "${}", "", values));
930
-
931
- // empty @ sigils are preserved
932
- try testReplaceVariablesCMake(allocator, "@", "@", values);
933
- try testReplaceVariablesCMake(allocator, "@@", "@@", values);
934
- try testReplaceVariablesCMake(allocator, "@@@", "@@@", values);
935
- try testReplaceVariablesCMake(allocator, "@@@@", "@@@@", values);
936
-
937
- // simple substitution
938
- try testReplaceVariablesCMake(allocator, "@undef@", "", values);
939
- try testReplaceVariablesCMake(allocator, "${undef}", "", values);
940
- try testReplaceVariablesCMake(allocator, "@defined@", "", values);
941
- try testReplaceVariablesCMake(allocator, "${defined}", "", values);
942
- try testReplaceVariablesCMake(allocator, "@true@", "1", values);
943
- try testReplaceVariablesCMake(allocator, "${true}", "1", values);
944
- try testReplaceVariablesCMake(allocator, "@false@", "0", values);
945
- try testReplaceVariablesCMake(allocator, "${false}", "0", values);
946
- try testReplaceVariablesCMake(allocator, "@int@", "42", values);
947
- try testReplaceVariablesCMake(allocator, "${int}", "42", values);
948
- try testReplaceVariablesCMake(allocator, "@ident@", "value", values);
949
- try testReplaceVariablesCMake(allocator, "${ident}", "value", values);
950
- try testReplaceVariablesCMake(allocator, "@string@", "text", values);
951
- try testReplaceVariablesCMake(allocator, "${string}", "text", values);
952
-
953
- // double packed substitution
954
- try testReplaceVariablesCMake(allocator, "@string@@string@", "texttext", values);
955
- try testReplaceVariablesCMake(allocator, "${string}${string}", "texttext", values);
956
-
957
- // triple packed substitution
958
- try testReplaceVariablesCMake(allocator, "@string@@int@@string@", "text42text", values);
959
- try testReplaceVariablesCMake(allocator, "@string@${int}@string@", "text42text", values);
960
- try testReplaceVariablesCMake(allocator, "${string}@int@${string}", "text42text", values);
961
- try testReplaceVariablesCMake(allocator, "${string}${int}${string}", "text42text", values);
962
-
963
- // double separated substitution
964
- try testReplaceVariablesCMake(allocator, "@int@.@int@", "42.42", values);
965
- try testReplaceVariablesCMake(allocator, "${int}.${int}", "42.42", values);
966
-
967
- // triple separated substitution
968
- try testReplaceVariablesCMake(allocator, "@int@.@true@.@int@", "42.1.42", values);
969
- try testReplaceVariablesCMake(allocator, "@int@.${true}.@int@", "42.1.42", values);
970
- try testReplaceVariablesCMake(allocator, "${int}.@true@.${int}", "42.1.42", values);
971
- try testReplaceVariablesCMake(allocator, "${int}.${true}.${int}", "42.1.42", values);
972
-
973
- // misc prefix is preserved
974
- try testReplaceVariablesCMake(allocator, "false is @false@", "false is 0", values);
975
- try testReplaceVariablesCMake(allocator, "false is ${false}", "false is 0", values);
976
-
977
- // misc suffix is preserved
978
- try testReplaceVariablesCMake(allocator, "@true@ is true", "1 is true", values);
979
- try testReplaceVariablesCMake(allocator, "${true} is true", "1 is true", values);
980
-
981
- // surrounding content is preserved
982
- try testReplaceVariablesCMake(allocator, "what is 6*7? @int@!", "what is 6*7? 42!", values);
983
- try testReplaceVariablesCMake(allocator, "what is 6*7? ${int}!", "what is 6*7? 42!", values);
984
-
985
- // incomplete key is preserved
986
- try testReplaceVariablesCMake(allocator, "@undef", "@undef", values);
987
- try testReplaceVariablesCMake(allocator, "${undef", "${undef", values);
988
- try testReplaceVariablesCMake(allocator, "{undef}", "{undef}", values);
989
- try testReplaceVariablesCMake(allocator, "undef@", "undef@", values);
990
- try testReplaceVariablesCMake(allocator, "undef}", "undef}", values);
991
-
992
- // unknown key leads to an error
993
- try std.testing.expectError(error.MissingValue, testReplaceVariablesCMake(allocator, "@bad@", "", values));
994
- try std.testing.expectError(error.MissingValue, testReplaceVariablesCMake(allocator, "${bad}", "", values));
995
179
  }
996
180
 
997
- test "expand_variables_cmake edge cases" {
998
- const allocator = std.testing.allocator;
999
- var values: std.array_hash_map.String(Value) = .init(allocator);
1000
- defer values.deinit();
1001
-
1002
- // special symbols
1003
- try values.putNoClobber("at", Value{ .string = "@" });
1004
- try values.putNoClobber("dollar", Value{ .string = "$" });
1005
- try values.putNoClobber("underscore", Value{ .string = "_" });
1006
-
1007
- // basic value
1008
- try values.putNoClobber("string", Value{ .string = "text" });
1009
-
1010
- // proxy case values
1011
- try values.putNoClobber("string_proxy", Value{ .string = "string" });
1012
- try values.putNoClobber("string_at", Value{ .string = "@string@" });
1013
- try values.putNoClobber("string_curly", Value{ .string = "{string}" });
1014
- try values.putNoClobber("string_var", Value{ .string = "${string}" });
1015
-
1016
- // stack case values
1017
- try values.putNoClobber("nest_underscore_proxy", Value{ .string = "underscore" });
1018
- try values.putNoClobber("nest_proxy", Value{ .string = "nest_underscore_proxy" });
1019
-
1020
- // @-vars resolved only when they wrap valid characters, otherwise considered literals
1021
- try testReplaceVariablesCMake(allocator, "@@string@@", "@text@", values);
1022
- try testReplaceVariablesCMake(allocator, "@${string}@", "@text@", values);
1023
-
1024
- // @-vars are resolved inside ${}-vars
1025
- try testReplaceVariablesCMake(allocator, "${@string_proxy@}", "text", values);
1026
-
1027
- // expanded variables are considered strings after expansion
1028
- try testReplaceVariablesCMake(allocator, "@string_at@", "@string@", values);
1029
- try testReplaceVariablesCMake(allocator, "${string_at}", "@string@", values);
1030
- try testReplaceVariablesCMake(allocator, "$@string_curly@", "${string}", values);
1031
- try testReplaceVariablesCMake(allocator, "$${string_curly}", "${string}", values);
1032
- try testReplaceVariablesCMake(allocator, "${string_var}", "${string}", values);
1033
- try testReplaceVariablesCMake(allocator, "@string_var@", "${string}", values);
1034
- try testReplaceVariablesCMake(allocator, "${dollar}{${string}}", "${text}", values);
1035
- try testReplaceVariablesCMake(allocator, "@dollar@{${string}}", "${text}", values);
1036
- try testReplaceVariablesCMake(allocator, "@dollar@{@string@}", "${text}", values);
1037
-
1038
- // when expanded variables contain invalid characters, they prevent further expansion
1039
- try std.testing.expectError(error.MissingValue, testReplaceVariablesCMake(allocator, "${${string_var}}", "", values));
1040
- try std.testing.expectError(error.MissingValue, testReplaceVariablesCMake(allocator, "${@string_var@}", "", values));
1041
-
1042
- // nested expanded variables are expanded from the inside out
1043
- try testReplaceVariablesCMake(allocator, "${string${underscore}proxy}", "string", values);
1044
- try testReplaceVariablesCMake(allocator, "${string@underscore@proxy}", "string", values);
1045
-
1046
- // nested vars are only expanded when ${} is closed
1047
- try std.testing.expectError(error.MissingValue, testReplaceVariablesCMake(allocator, "@nest@underscore@proxy@", "", values));
1048
- try testReplaceVariablesCMake(allocator, "${nest${underscore}proxy}", "nest_underscore_proxy", values);
1049
- try std.testing.expectError(error.MissingValue, testReplaceVariablesCMake(allocator, "@nest@@nest_underscore@underscore@proxy@@proxy@", "", values));
1050
- try testReplaceVariablesCMake(allocator, "${nest${${nest_underscore${underscore}proxy}}proxy}", "nest_underscore_proxy", values);
1051
-
1052
- // invalid characters lead to an error
1053
- try std.testing.expectError(error.InvalidCharacter, testReplaceVariablesCMake(allocator, "${str*ing}", "", values));
1054
- try std.testing.expectError(error.InvalidCharacter, testReplaceVariablesCMake(allocator, "${str$ing}", "", values));
1055
- try std.testing.expectError(error.InvalidCharacter, testReplaceVariablesCMake(allocator, "${str@ing}", "", values));
181
+ pub fn getOutputDir(ch: *ConfigHeader) std.Build.LazyPath {
182
+ return .{ .generated = .{ .index = ch.generated_dir } };
1056
183
  }
1057
184
 
1058
- test "expand_variables_cmake escaped characters" {
1059
- const allocator = std.testing.allocator;
1060
- var values: std.array_hash_map.String(Value) = .init(allocator);
1061
- defer values.deinit();
1062
-
1063
- try values.putNoClobber("string", Value{ .string = "text" });
1064
-
1065
- // backslash is an invalid character for @ lookup
1066
- try testReplaceVariablesCMake(allocator, "\\@string\\@", "\\@string\\@", values);
1067
-
1068
- // backslash is preserved, but doesn't affect ${} variable expansion
1069
- try testReplaceVariablesCMake(allocator, "\\${string}", "\\text", values);
1070
-
1071
- // backslash breaks ${} opening bracket identification
1072
- try testReplaceVariablesCMake(allocator, "$\\{string}", "$\\{string}", values);
1073
-
1074
- // backslash is skipped when checking for invalid characters, yet it mangles the key
1075
- try std.testing.expectError(error.MissingValue, testReplaceVariablesCMake(allocator, "${string\\}", "", values));
185
+ pub fn getOutputFile(ch: *ConfigHeader) std.Build.LazyPath {
186
+ return ch.getOutputDir().path(ch.step.owner, ch.include_path);
1076
187
  }