@zigc/lib 0.17.0-dev.56 → 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 (1259) hide show
  1. package/c/fcntl.zig +5 -0
  2. package/c/inttypes.zig +0 -10
  3. package/c/math.zig +25 -96
  4. package/c/pthread.zig +57 -0
  5. package/c/search.zig +1 -27
  6. package/c/stdlib/drand48.zig +0 -57
  7. package/c/stdlib.zig +31 -121
  8. package/c/string.zig +20 -7
  9. package/c/strings.zig +0 -38
  10. package/c/unistd.zig +28 -26
  11. package/c/wchar.zig +10 -0
  12. package/c.zig +2 -2
  13. package/{std/Build → compiler/Maker}/Fuzz.zig +177 -89
  14. package/compiler/Maker/Graph.zig +85 -0
  15. package/compiler/Maker/PkgConfig.zig +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 -1
  65. package/compiler_rt/count0bits.zig +1 -1
  66. package/compiler_rt/divdf3.zig +2 -2
  67. package/compiler_rt/divsf3.zig +1 -1
  68. package/compiler_rt/divtf3.zig +1 -1
  69. package/compiler_rt/divxf3.zig +1 -1
  70. package/compiler_rt/extendf.zig +5 -5
  71. package/compiler_rt/fabs.zig +1 -1
  72. package/compiler_rt/float_from_int.zig +4 -5
  73. package/compiler_rt/fmax.zig +1 -1
  74. package/compiler_rt/fmin.zig +1 -1
  75. package/compiler_rt/fmod.zig +2 -2
  76. package/compiler_rt/int_from_float.zig +1 -1
  77. package/compiler_rt/limb64.zig +3 -2
  78. package/compiler_rt/mulf3.zig +2 -2
  79. package/compiler_rt/rem_pio2l.zig +1 -1
  80. package/compiler_rt/sin.zig +1 -1
  81. package/compiler_rt/sincos.zig +1 -1
  82. package/compiler_rt/ssp.zig +2 -2
  83. package/compiler_rt/tan.zig +1 -1
  84. package/compiler_rt/truncf.zig +3 -3
  85. package/compiler_rt/trunctfhf2.zig +3 -0
  86. package/compiler_rt.zig +5 -26
  87. package/docs/main.js +8 -8
  88. package/docs/wasm/Walk.zig +1 -3
  89. package/docs/wasm/html_render.zig +1 -2
  90. package/docs/wasm/markdown/Parser.zig +16 -20
  91. package/fuzzer.zig +5 -3
  92. package/include/__clang_spirv_builtins.h +12 -12
  93. package/include/__float_float.h +176 -0
  94. package/include/__float_header_macro.h +12 -0
  95. package/include/__float_infinity_nan.h +20 -0
  96. package/include/amo.h +131 -0
  97. package/include/amxavx512intrin.h +215 -1
  98. package/include/amxintrin.h +0 -2
  99. package/include/arm_acle.h +37 -27
  100. package/include/arm_neon.h +218 -82
  101. package/include/arm_sme.h +8 -8
  102. package/include/arm_sve.h +4162 -3782
  103. package/include/avx10_2_512bf16intrin.h +19 -12
  104. package/include/avx10_2_512convertintrin.h +1 -1
  105. package/include/avx10_2_512niintrin.h +31 -31
  106. package/include/avx10_2_512satcvtdsintrin.h +1 -1
  107. package/include/avx10_2bf16intrin.h +54 -45
  108. package/include/avx10_2convertintrin.h +2 -2
  109. package/include/avx10_2copyintrin.h +1 -1
  110. package/include/avx10_2niintrin.h +14 -14
  111. package/include/avx10_2satcvtdsintrin.h +2 -2
  112. package/include/avx2intrin.h +275 -377
  113. package/include/avx512bf16intrin.h +25 -16
  114. package/include/avx512bitalgintrin.h +19 -30
  115. package/include/avx512bwintrin.h +386 -505
  116. package/include/avx512cdintrin.h +42 -55
  117. package/include/avx512dqintrin.h +132 -161
  118. package/include/avx512fintrin.h +1015 -1424
  119. package/include/avx512fp16intrin.h +112 -110
  120. package/include/avx512ifmaintrin.h +32 -34
  121. package/include/avx512ifmavlintrin.h +73 -46
  122. package/include/avx512vbmi2intrin.h +43 -32
  123. package/include/avx512vbmiintrin.h +19 -27
  124. package/include/avx512vbmivlintrin.h +35 -49
  125. package/include/avx512vlbf16intrin.h +32 -22
  126. package/include/avx512vlbitalgintrin.h +37 -53
  127. package/include/avx512vlbwintrin.h +470 -573
  128. package/include/avx512vlcdintrin.h +74 -102
  129. package/include/avx512vldqintrin.h +110 -127
  130. package/include/avx512vlfp16intrin.h +130 -111
  131. package/include/avx512vlintrin.h +945 -1299
  132. package/include/avx512vlvbmi2intrin.h +78 -63
  133. package/include/avx512vlvnniintrin.h +21 -18
  134. package/include/avx512vlvp2intersectintrin.h +2 -2
  135. package/include/avx512vnniintrin.h +10 -10
  136. package/include/avx512vp2intersectintrin.h +1 -2
  137. package/include/avx512vpopcntdqintrin.h +8 -10
  138. package/include/avx512vpopcntdqvlintrin.h +17 -15
  139. package/include/avxifmaintrin.h +16 -0
  140. package/include/avxintrin.h +165 -241
  141. package/include/avxvnniint16intrin.h +118 -99
  142. package/include/avxvnniint8intrin.h +56 -32
  143. package/include/avxvnniintrin.h +16 -8
  144. package/include/cpuid.h +101 -4
  145. package/include/emmintrin.h +168 -168
  146. package/include/f16cintrin.h +23 -9
  147. package/include/float.h +16 -155
  148. package/include/fma4intrin.h +98 -96
  149. package/include/fmaintrin.h +96 -66
  150. package/include/gfniintrin.h +21 -16
  151. package/include/hexagon_types.h +23 -20
  152. package/include/hvx_hexagon_protos.h +649 -860
  153. package/include/immintrin.h +0 -12
  154. package/include/intrin.h +4 -0
  155. package/include/lasxintrin.h +113 -0
  156. package/include/llvm_libc_wrappers/assert.h +3 -5
  157. package/include/llvm_libc_wrappers/ctype.h +3 -115
  158. package/include/llvm_libc_wrappers/inttypes.h +3 -5
  159. package/include/llvm_libc_wrappers/stdio.h +10 -38
  160. package/include/llvm_libc_wrappers/stdlib.h +3 -24
  161. package/include/llvm_libc_wrappers/string.h +2 -70
  162. package/include/llvm_libc_wrappers/time.h +4 -10
  163. package/include/mmintrin.h +188 -257
  164. package/include/module.modulemap +23 -4
  165. package/include/movrs_avx10_2_512intrin.h +2 -2
  166. package/include/movrs_avx10_2intrin.h +4 -4
  167. package/include/pmmintrin.h +12 -24
  168. package/include/ptrauth.h +16 -2
  169. package/include/riscv_mips.h +34 -0
  170. package/include/riscv_nds.h +89 -0
  171. package/include/sifive_vector.h +58 -2
  172. package/include/sm4evexintrin.h +2 -2
  173. package/include/smmintrin.h +77 -59
  174. package/include/spirvintrin.h +194 -0
  175. package/include/stddefer.h +19 -0
  176. package/include/tmmintrin.h +116 -147
  177. package/include/vaesintrin.h +1 -2
  178. package/include/xmmintrin.h +44 -70
  179. package/include/xopintrin.h +20 -10
  180. package/init/build.zig +1 -3
  181. package/libc/darwin/SDKSettings.json +1 -1
  182. package/libc/darwin/libSystem.tbd +88 -87
  183. package/libc/include/aarch64-linux-any/asm/hwcap.h +1 -0
  184. package/libc/include/aarch64-linux-any/asm/unistd_64.h +1 -0
  185. package/libc/include/aarch64-openbsd-none/arm64/cpu.h +7 -1
  186. package/libc/include/aarch64-openbsd-none/arm64/intr.h +9 -1
  187. package/libc/include/aarch64-openbsd-none/machine/cpu.h +7 -1
  188. package/libc/include/aarch64-openbsd-none/machine/intr.h +9 -1
  189. package/libc/include/any-darwin-any/AvailabilityInternal.h +10 -10
  190. package/libc/include/any-darwin-any/AvailabilityVersions.h +8 -0
  191. package/libc/include/any-darwin-any/mach/host_info.h +3 -1
  192. package/libc/include/any-darwin-any/mach/mach_voucher_types.h +2 -0
  193. package/libc/include/any-darwin-any/mach/vm_statistics.h +33 -2
  194. package/libc/include/any-darwin-any/spawn.h +3 -1
  195. package/libc/include/any-darwin-any/sys/_symbol_aliasing.h +12 -0
  196. package/libc/include/any-linux-any/asm-generic/errno.h +2 -0
  197. package/libc/include/any-linux-any/asm-generic/unistd.h +4 -1
  198. package/libc/include/any-linux-any/drm/amdgpu_drm.h +20 -6
  199. package/libc/include/any-linux-any/drm/amdxdna_accel.h +8 -0
  200. package/libc/include/any-linux-any/drm/drm_fourcc.h +6 -6
  201. package/libc/include/any-linux-any/drm/panfrost_drm.h +75 -1
  202. package/libc/include/any-linux-any/drm/panthor_drm.h +154 -3
  203. package/libc/include/any-linux-any/drm/rocket_accel.h +74 -24
  204. package/libc/include/any-linux-any/drm/xe_drm.h +89 -6
  205. package/libc/include/any-linux-any/linux/android/binder.h +1 -1
  206. package/libc/include/any-linux-any/linux/bpf.h +28 -0
  207. package/libc/include/any-linux-any/linux/btrfs.h +1 -0
  208. package/libc/include/any-linux-any/linux/btrfs_tree.h +32 -2
  209. package/libc/include/any-linux-any/linux/dma-buf.h +1 -0
  210. package/libc/include/any-linux-any/linux/dpll.h +1 -0
  211. package/libc/include/any-linux-any/linux/elf.h +2 -0
  212. package/libc/include/any-linux-any/linux/ethtool.h +21 -5
  213. package/libc/include/any-linux-any/linux/fs.h +1 -0
  214. package/libc/include/any-linux-any/linux/hyperv.h +1 -1
  215. package/libc/include/any-linux-any/linux/idxd.h +134 -134
  216. package/libc/include/any-linux-any/linux/if_alg.h +1 -1
  217. package/libc/include/any-linux-any/linux/if_link.h +1 -0
  218. package/libc/include/any-linux-any/linux/input-event-codes.h +4 -0
  219. package/libc/include/any-linux-any/linux/io_uring/bpf_filter.h +68 -0
  220. package/libc/include/any-linux-any/linux/io_uring/query.h +5 -1
  221. package/libc/include/any-linux-any/linux/io_uring.h +33 -2
  222. package/libc/include/any-linux-any/linux/iommufd.h +39 -0
  223. package/libc/include/any-linux-any/linux/kfd_ioctl.h +13 -3
  224. package/libc/include/any-linux-any/linux/kfd_sysfs.h +2 -1
  225. package/libc/include/any-linux-any/linux/kvm.h +30 -6
  226. package/libc/include/any-linux-any/linux/landlock.h +22 -8
  227. package/libc/include/any-linux-any/linux/magic.h +1 -0
  228. package/libc/include/any-linux-any/linux/mempolicy.h +3 -0
  229. package/libc/include/any-linux-any/linux/mount.h +11 -2
  230. package/libc/include/any-linux-any/linux/mptcp_pm.h +1 -1
  231. package/libc/include/any-linux-any/linux/mshv.h +2 -0
  232. package/libc/include/any-linux-any/linux/netfilter_bridge.h +5 -4
  233. package/libc/include/any-linux-any/linux/netfilter_ipv4.h +4 -5
  234. package/libc/include/any-linux-any/linux/netfilter_ipv6.h +3 -4
  235. package/libc/include/any-linux-any/linux/nfs.h +1 -1
  236. package/libc/include/any-linux-any/linux/nfsd_netlink.h +1 -0
  237. package/libc/include/any-linux-any/linux/nilfs2_api.h +2 -2
  238. package/libc/include/any-linux-any/linux/nilfs2_ondisk.h +97 -66
  239. package/libc/include/any-linux-any/linux/nl80211.h +104 -3
  240. package/libc/include/any-linux-any/linux/pci.h +7 -0
  241. package/libc/include/any-linux-any/linux/pci_regs.h +65 -6
  242. package/libc/include/any-linux-any/linux/pcitest.h +1 -0
  243. package/libc/include/any-linux-any/linux/perf_event.h +24 -3
  244. package/libc/include/any-linux-any/linux/pkt_sched.h +1 -0
  245. package/libc/include/any-linux-any/linux/prctl.h +30 -0
  246. package/libc/include/any-linux-any/linux/rseq.h +62 -5
  247. package/libc/include/any-linux-any/linux/shm.h +0 -1
  248. package/libc/include/any-linux-any/linux/stddef.h +4 -0
  249. package/libc/include/any-linux-any/linux/sysctl.h +1 -2
  250. package/libc/include/any-linux-any/linux/taskstats.h +12 -1
  251. package/libc/include/any-linux-any/linux/tcp.h +23 -3
  252. package/libc/include/any-linux-any/linux/typelimits.h +8 -0
  253. package/libc/include/any-linux-any/linux/ublk_cmd.h +120 -1
  254. package/libc/include/any-linux-any/linux/v4l2-controls.h +63 -0
  255. package/libc/include/any-linux-any/linux/vbox_vmmdev_types.h +2 -2
  256. package/libc/include/any-linux-any/linux/vduse.h +80 -5
  257. package/libc/include/any-linux-any/linux/version.h +3 -3
  258. package/libc/include/any-linux-any/linux/vfio.h +4 -0
  259. package/libc/include/any-linux-any/linux/videodev2.h +3 -0
  260. package/libc/include/any-linux-any/linux/virtio_ring.h +1 -2
  261. package/libc/include/any-linux-any/linux/vmclock-abi.h +20 -0
  262. package/libc/include/any-linux-any/rdma/bnxt_re-abi.h +16 -0
  263. package/libc/include/any-linux-any/rdma/ib_user_ioctl_cmds.h +16 -0
  264. package/libc/include/any-linux-any/rdma/mana-abi.h +3 -0
  265. package/libc/include/any-linux-any/scsi/scsi_bsg_ufs.h +8 -9
  266. package/libc/include/any-linux-any/sound/sof/tokens.h +6 -0
  267. package/libc/include/arc-linux-any/asm/swab.h +0 -63
  268. package/libc/include/arc-linux-any/asm/unistd_32.h +1 -0
  269. package/libc/include/arm-linux-any/asm/ptrace.h +0 -9
  270. package/libc/include/arm-linux-any/asm/unistd-eabi.h +1 -0
  271. package/libc/include/arm-linux-any/asm/unistd-oabi.h +1 -0
  272. package/libc/include/csky-linux-any/asm/unistd_32.h +1 -0
  273. package/libc/include/generic-openbsd/db.h +1 -7
  274. package/libc/include/generic-openbsd/ddb/db_interface.h +2 -1
  275. package/libc/include/generic-openbsd/fnmatch.h +6 -2
  276. package/libc/include/generic-openbsd/login_cap.h +3 -1
  277. package/libc/include/generic-openbsd/miscfs/fuse/fusefs_node.h +2 -1
  278. package/libc/include/generic-openbsd/net/bpf.h +3 -1
  279. package/libc/include/generic-openbsd/net/hfsc.h +4 -4
  280. package/libc/include/generic-openbsd/net/if.h +5 -1
  281. package/libc/include/generic-openbsd/net/if_bridge.h +48 -1
  282. package/libc/include/generic-openbsd/net/if_etherbridge.h +20 -7
  283. package/libc/include/generic-openbsd/net/if_media.h +26 -1
  284. package/libc/include/generic-openbsd/net/if_pflow.h +71 -20
  285. package/libc/include/generic-openbsd/net/if_pfsync.h +2 -2
  286. package/libc/include/generic-openbsd/net/if_sppp.h +2 -1
  287. package/libc/include/generic-openbsd/net/if_trunk.h +3 -2
  288. package/libc/include/generic-openbsd/net/if_types.h +2 -2
  289. package/libc/include/generic-openbsd/net/if_var.h +34 -12
  290. package/libc/include/generic-openbsd/net/netisr.h +1 -3
  291. package/libc/include/generic-openbsd/net/pfvar.h +154 -1
  292. package/libc/include/generic-openbsd/net/pfvar_priv.h +256 -1
  293. package/libc/include/generic-openbsd/net80211/ieee80211.h +76 -4
  294. package/libc/include/generic-openbsd/net80211/ieee80211_ioctl.h +3 -2
  295. package/libc/include/generic-openbsd/net80211/ieee80211_node.h +48 -2
  296. package/libc/include/generic-openbsd/net80211/ieee80211_proto.h +4 -1
  297. package/libc/include/generic-openbsd/net80211/ieee80211_var.h +18 -2
  298. package/libc/include/generic-openbsd/netinet/if_ether.h +12 -11
  299. package/libc/include/generic-openbsd/netinet/igmp_var.h +17 -3
  300. package/libc/include/generic-openbsd/netinet/in_pcb.h +2 -1
  301. package/libc/include/generic-openbsd/netinet/in_var.h +17 -59
  302. package/libc/include/generic-openbsd/netinet/ip.h +3 -2
  303. package/libc/include/generic-openbsd/netinet/tcp_timer.h +1 -2
  304. package/libc/include/generic-openbsd/netinet6/in6_var.h +15 -29
  305. package/libc/include/generic-openbsd/netinet6/ip6_var.h +1 -2
  306. package/libc/include/generic-openbsd/netinet6/mld6_var.h +17 -4
  307. package/libc/include/generic-openbsd/netinet6/nd6.h +2 -2
  308. package/libc/include/generic-openbsd/pthread.h +2 -2
  309. package/libc/include/generic-openbsd/signal.h +2 -2
  310. package/libc/include/generic-openbsd/sndio.h +6 -12
  311. package/libc/include/generic-openbsd/strings.h +5 -1
  312. package/libc/include/generic-openbsd/sys/device.h +4 -3
  313. package/libc/include/generic-openbsd/sys/disklabel.h +17 -5
  314. package/libc/include/generic-openbsd/sys/dkio.h +3 -5
  315. package/libc/include/generic-openbsd/sys/filedesc.h +3 -2
  316. package/libc/include/generic-openbsd/sys/mbuf.h +1 -1
  317. package/libc/include/generic-openbsd/sys/mman.h +7 -2
  318. package/libc/include/generic-openbsd/sys/mutex.h +10 -7
  319. package/libc/include/generic-openbsd/sys/namei.h +8 -7
  320. package/libc/include/generic-openbsd/sys/param.h +1 -1
  321. package/libc/include/generic-openbsd/sys/pledge.h +1 -3
  322. package/libc/include/generic-openbsd/sys/protosw.h +8 -1
  323. package/libc/include/generic-openbsd/sys/ptrace.h +4 -1
  324. package/libc/include/generic-openbsd/sys/sched.h +8 -1
  325. package/libc/include/generic-openbsd/sys/signal.h +4 -2
  326. package/libc/include/generic-openbsd/sys/socketvar.h +2 -1
  327. package/libc/include/generic-openbsd/sys/sockio.h +11 -1
  328. package/libc/include/generic-openbsd/sys/syscall.h +5 -3
  329. package/libc/include/generic-openbsd/sys/syscallargs.h +9 -2
  330. package/libc/include/generic-openbsd/sys/sysctl.h +7 -4
  331. package/libc/include/generic-openbsd/sys/types.h +6 -2
  332. package/libc/include/generic-openbsd/sys/videoio.h +143 -68
  333. package/libc/include/generic-openbsd/sys/xcall.h +2 -2
  334. package/libc/include/generic-openbsd/time.h +2 -2
  335. package/libc/include/generic-openbsd/unistd.h +2 -2
  336. package/libc/include/generic-openbsd/uvm/uvm_anon.h +2 -3
  337. package/libc/include/generic-openbsd/uvm/uvm_extern.h +1 -19
  338. package/libc/include/generic-openbsd/uvm/uvm_pager.h +3 -4
  339. package/libc/include/generic-openbsd/uvm/uvm_pmemrange.h +1 -2
  340. package/libc/include/generic-openbsd/uvm/uvm_swap.h +4 -1
  341. package/libc/include/generic-openbsd/uvm/uvm_vnode.h +3 -4
  342. package/libc/include/generic-openbsd/uvm/uvmexp.h +41 -35
  343. package/libc/include/hexagon-linux-any/asm/unistd_32.h +1 -0
  344. package/libc/include/loongarch-linux-any/asm/hwcap.h +1 -0
  345. package/libc/include/loongarch-linux-any/asm/kvm.h +1 -0
  346. package/libc/include/loongarch-linux-any/asm/kvm_para.h +1 -0
  347. package/libc/include/loongarch-linux-any/asm/unistd_32.h +2 -0
  348. package/libc/include/loongarch-linux-any/asm/unistd_64.h +2 -0
  349. package/libc/include/m68k-linux-any/asm/unistd_32.h +1 -0
  350. package/libc/include/mips-linux-any/asm/errno.h +2 -0
  351. package/libc/include/mips-linux-any/asm/unistd_n32.h +1 -0
  352. package/libc/include/mips-linux-any/asm/unistd_n64.h +1 -0
  353. package/libc/include/mips-linux-any/asm/unistd_o32.h +1 -0
  354. package/libc/include/mips64-openbsd-none/machine/octeonvar.h +1 -27
  355. package/libc/include/mips64-openbsd-none/octeon/octeonvar.h +1 -27
  356. package/libc/include/mips64el-openbsd-none/loongson/apmvar.h +1 -1
  357. package/libc/include/mips64el-openbsd-none/loongson/param.h +1 -5
  358. package/libc/include/mips64el-openbsd-none/machine/apmvar.h +1 -1
  359. package/libc/include/mips64el-openbsd-none/machine/param.h +1 -5
  360. package/libc/include/powerpc-linux-any/asm/unistd_32.h +1 -0
  361. package/libc/include/powerpc-linux-any/asm/unistd_64.h +1 -0
  362. package/libc/include/powerpc-openbsd-eabihf/powerpc/intr.h +1 -4
  363. package/libc/include/powerpc64-openbsd-none/machine/atomic.h +3 -3
  364. package/libc/include/powerpc64-openbsd-none/powerpc64/atomic.h +3 -3
  365. package/libc/include/riscv-linux-any/asm/hwprobe.h +4 -0
  366. package/libc/include/riscv-linux-any/asm/kvm.h +3 -0
  367. package/libc/include/riscv-linux-any/asm/ptrace.h +37 -0
  368. package/libc/include/riscv-linux-any/asm/sigcontext.h +1 -0
  369. package/libc/include/riscv-linux-any/asm/unistd_32.h +1 -0
  370. package/libc/include/riscv-linux-any/asm/unistd_64.h +1 -0
  371. package/libc/include/riscv64-openbsd-none/machine/cpu.h +4 -8
  372. package/libc/include/riscv64-openbsd-none/machine/cpufunc.h +4 -4
  373. package/libc/include/riscv64-openbsd-none/machine/pmap.h +5 -1
  374. package/libc/include/riscv64-openbsd-none/machine/pte.h +9 -1
  375. package/libc/include/riscv64-openbsd-none/riscv64/cpu.h +4 -8
  376. package/libc/include/riscv64-openbsd-none/riscv64/cpufunc.h +4 -4
  377. package/libc/include/riscv64-openbsd-none/riscv64/pmap.h +5 -1
  378. package/libc/include/riscv64-openbsd-none/riscv64/pte.h +9 -1
  379. package/libc/include/s390x-linux-any/asm/unistd_64.h +1 -0
  380. package/libc/include/sparc-linux-any/asm/errno.h +2 -0
  381. package/libc/include/sparc-linux-any/asm/ioctls.h +4 -4
  382. package/libc/include/sparc-linux-any/asm/unistd_32.h +2 -0
  383. package/libc/include/sparc-linux-any/asm/unistd_64.h +2 -0
  384. package/libc/include/x86-linux-any/asm/auxvec.h +0 -4
  385. package/libc/include/x86-linux-any/asm/kvm.h +13 -8
  386. package/libc/include/x86-linux-any/asm/svm.h +16 -16
  387. package/libc/include/x86-linux-any/asm/unistd_32.h +1 -0
  388. package/libc/include/x86-linux-any/asm/unistd_64.h +1 -0
  389. package/libc/include/x86-linux-any/asm/unistd_x32.h +1 -0
  390. package/libc/include/x86-openbsd-none/i386/specialreg.h +3 -1
  391. package/libc/include/x86-openbsd-none/machine/specialreg.h +3 -1
  392. package/libc/include/x86_64-openbsd-none/amd64/conf.h +11 -2
  393. package/libc/include/x86_64-openbsd-none/amd64/cpu.h +14 -4
  394. package/libc/include/x86_64-openbsd-none/amd64/cpufunc.h +2 -3
  395. package/libc/include/x86_64-openbsd-none/amd64/ghcb.h +2 -1
  396. package/libc/include/x86_64-openbsd-none/amd64/i82489var.h +2 -4
  397. package/libc/include/x86_64-openbsd-none/amd64/i8259.h +1 -53
  398. package/libc/include/x86_64-openbsd-none/amd64/intr.h +5 -2
  399. package/libc/include/x86_64-openbsd-none/amd64/intrdefs.h +9 -7
  400. package/libc/include/x86_64-openbsd-none/amd64/kexec.h +48 -0
  401. package/libc/include/x86_64-openbsd-none/amd64/specialreg.h +4 -1
  402. package/libc/include/x86_64-openbsd-none/machine/conf.h +11 -2
  403. package/libc/include/x86_64-openbsd-none/machine/cpu.h +14 -4
  404. package/libc/include/x86_64-openbsd-none/machine/cpufunc.h +2 -3
  405. package/libc/include/x86_64-openbsd-none/machine/ghcb.h +2 -1
  406. package/libc/include/x86_64-openbsd-none/machine/i82489var.h +2 -4
  407. package/libc/include/x86_64-openbsd-none/machine/i8259.h +1 -53
  408. package/libc/include/x86_64-openbsd-none/machine/intr.h +5 -2
  409. package/libc/include/x86_64-openbsd-none/machine/intrdefs.h +9 -7
  410. package/libc/include/x86_64-openbsd-none/machine/kexec.h +48 -0
  411. package/libc/include/x86_64-openbsd-none/machine/specialreg.h +4 -1
  412. package/libc/include/xtensa-linux-any/asm/unistd_32.h +1 -0
  413. package/libc/openbsd/abilists +0 -0
  414. package/libcxx/include/__algorithm/all_of.h +11 -5
  415. package/libcxx/include/__algorithm/comp.h +4 -0
  416. package/libcxx/include/__algorithm/copy.h +28 -147
  417. package/libcxx/include/__algorithm/copy_backward.h +9 -24
  418. package/libcxx/include/__algorithm/copy_n.h +50 -16
  419. package/libcxx/include/__algorithm/count.h +2 -2
  420. package/libcxx/include/__algorithm/equal.h +43 -55
  421. package/libcxx/include/__algorithm/fill.h +26 -8
  422. package/libcxx/include/__algorithm/fill_n.h +32 -46
  423. package/libcxx/include/__algorithm/find.h +96 -39
  424. package/libcxx/include/__algorithm/find_end.h +105 -0
  425. package/libcxx/include/__algorithm/for_each.h +18 -24
  426. package/libcxx/include/__algorithm/for_each_n.h +20 -47
  427. package/libcxx/include/__algorithm/for_each_n_segment.h +1 -1
  428. package/libcxx/include/__algorithm/for_each_segment.h +26 -0
  429. package/libcxx/include/__algorithm/generate.h +4 -2
  430. package/libcxx/include/__algorithm/generate_n.h +19 -6
  431. package/libcxx/include/__algorithm/is_permutation.h +4 -4
  432. package/libcxx/include/__algorithm/iterator_operations.h +3 -0
  433. package/libcxx/include/__algorithm/lexicographical_compare.h +2 -2
  434. package/libcxx/include/__algorithm/lexicographical_compare_three_way.h +6 -6
  435. package/libcxx/include/__algorithm/make_heap.h +16 -4
  436. package/libcxx/include/__algorithm/mismatch.h +2 -2
  437. package/libcxx/include/__algorithm/move.h +8 -19
  438. package/libcxx/include/__algorithm/move_backward.h +9 -24
  439. package/libcxx/include/__algorithm/none_of.h +4 -4
  440. package/libcxx/include/__algorithm/partial_sort.h +1 -1
  441. package/libcxx/include/__algorithm/partial_sort_copy.h +1 -1
  442. package/libcxx/include/__algorithm/pstl.h +9 -9
  443. package/libcxx/include/__algorithm/radix_sort.h +27 -25
  444. package/libcxx/include/__algorithm/ranges_copy_n.h +3 -26
  445. package/libcxx/include/__algorithm/ranges_equal.h +17 -26
  446. package/libcxx/include/__algorithm/ranges_fill.h +7 -6
  447. package/libcxx/include/__algorithm/ranges_for_each.h +9 -1
  448. package/libcxx/include/__algorithm/ranges_generate_n.h +2 -6
  449. package/libcxx/include/__algorithm/ranges_search_n.h +2 -2
  450. package/libcxx/include/__algorithm/rotate.h +27 -44
  451. package/libcxx/include/__algorithm/search_n.h +49 -37
  452. package/libcxx/include/__algorithm/sift_down.h +19 -18
  453. package/libcxx/include/__algorithm/simd_utils.h +33 -4
  454. package/libcxx/include/__algorithm/specialized_algorithms.h +54 -0
  455. package/libcxx/include/__algorithm/stable_sort.h +1 -1
  456. package/libcxx/include/__assertion_handler +31 -4
  457. package/libcxx/include/__atomic/atomic.h +36 -60
  458. package/libcxx/include/__atomic/atomic_flag.h +19 -37
  459. package/libcxx/include/__atomic/atomic_ref.h +29 -12
  460. package/libcxx/include/__atomic/atomic_sync.h +127 -55
  461. package/libcxx/include/__atomic/atomic_sync_timed.h +144 -0
  462. package/libcxx/include/__atomic/atomic_waitable_traits.h +103 -0
  463. package/libcxx/include/__atomic/contention_t.h +27 -3
  464. package/libcxx/include/__atomic/floating_point_helper.h +55 -0
  465. package/libcxx/include/__bit/countl.h +1 -2
  466. package/libcxx/include/__bit/countr.h +1 -2
  467. package/libcxx/include/__bit/has_single_bit.h +1 -1
  468. package/libcxx/include/__bit/popcount.h +0 -1
  469. package/libcxx/include/__bit/rotate.h +15 -26
  470. package/libcxx/include/__bit_reference +207 -18
  471. package/libcxx/include/__charconv/from_chars_integral.h +1 -1
  472. package/libcxx/include/__charconv/from_chars_result.h +1 -1
  473. package/libcxx/include/__charconv/to_chars_integral.h +1 -0
  474. package/libcxx/include/__charconv/to_chars_result.h +1 -1
  475. package/libcxx/include/__charconv/traits.h +3 -24
  476. package/libcxx/include/__chrono/day.h +11 -0
  477. package/libcxx/include/__chrono/duration.h +58 -33
  478. package/libcxx/include/__chrono/file_clock.h +4 -2
  479. package/libcxx/include/__chrono/is_clock.h +72 -0
  480. package/libcxx/include/__chrono/leap_second.h +13 -0
  481. package/libcxx/include/__chrono/month.h +13 -0
  482. package/libcxx/include/__chrono/month_weekday.h +22 -0
  483. package/libcxx/include/__chrono/monthday.h +20 -0
  484. package/libcxx/include/__chrono/steady_clock.h +1 -1
  485. package/libcxx/include/__chrono/system_clock.h +3 -3
  486. package/libcxx/include/__chrono/time_point.h +37 -13
  487. package/libcxx/include/__chrono/weekday.h +25 -0
  488. package/libcxx/include/__chrono/year.h +11 -0
  489. package/libcxx/include/__chrono/year_month.h +13 -0
  490. package/libcxx/include/__chrono/year_month_day.h +23 -0
  491. package/libcxx/include/__chrono/year_month_weekday.h +26 -0
  492. package/libcxx/include/__chrono/zoned_time.h +16 -0
  493. package/libcxx/include/__compare/is_eq.h +6 -6
  494. package/libcxx/include/__compare/strong_order.h +12 -30
  495. package/libcxx/include/__compare/three_way_comparable.h +2 -2
  496. package/libcxx/include/__concepts/comparison_common_type.h +40 -0
  497. package/libcxx/include/__concepts/equality_comparable.h +2 -1
  498. package/libcxx/include/__condition_variable/condition_variable.h +1 -1
  499. package/libcxx/include/__config +63 -280
  500. package/libcxx/include/__configuration/abi.h +14 -24
  501. package/libcxx/include/__configuration/availability.h +65 -118
  502. package/libcxx/include/__configuration/compiler.h +6 -6
  503. package/libcxx/include/__configuration/experimental.h +38 -0
  504. package/libcxx/include/__configuration/hardening.h +215 -0
  505. package/libcxx/include/__configuration/language.h +3 -0
  506. package/libcxx/include/__configuration/platform.h +9 -16
  507. package/libcxx/include/__coroutine/coroutine_handle.h +9 -9
  508. package/libcxx/include/__coroutine/noop_coroutine_handle.h +11 -13
  509. package/libcxx/include/__debug_utils/strict_weak_ordering_check.h +1 -1
  510. package/libcxx/include/__exception/exception.h +6 -4
  511. package/libcxx/include/__exception/exception_ptr.h +27 -5
  512. package/libcxx/include/__exception/nested_exception.h +2 -2
  513. package/libcxx/include/__exception/operations.h +5 -5
  514. package/libcxx/include/__expected/bad_expected_access.h +8 -6
  515. package/libcxx/include/__expected/expected.h +62 -64
  516. package/libcxx/include/__expected/unexpected.h +4 -4
  517. package/libcxx/include/__filesystem/copy_options.h +4 -4
  518. package/libcxx/include/__filesystem/directory_entry.h +37 -33
  519. package/libcxx/include/__filesystem/directory_iterator.h +9 -11
  520. package/libcxx/include/__filesystem/directory_options.h +7 -4
  521. package/libcxx/include/__filesystem/file_status.h +3 -3
  522. package/libcxx/include/__filesystem/filesystem_error.h +9 -10
  523. package/libcxx/include/__filesystem/operations.h +97 -66
  524. package/libcxx/include/__filesystem/path.h +68 -64
  525. package/libcxx/include/__filesystem/path_iterator.h +1 -3
  526. package/libcxx/include/__filesystem/perm_options.h +4 -4
  527. package/libcxx/include/__filesystem/perms.h +4 -4
  528. package/libcxx/include/__filesystem/recursive_directory_iterator.h +9 -14
  529. package/libcxx/include/__filesystem/space_info.h +1 -1
  530. package/libcxx/include/__filesystem/u8path.h +12 -14
  531. package/libcxx/include/__flat_map/flat_map.h +88 -71
  532. package/libcxx/include/__flat_map/flat_multimap.h +251 -172
  533. package/libcxx/include/__flat_map/key_value_iterator.h +0 -1
  534. package/libcxx/include/__flat_map/utils.h +1 -0
  535. package/libcxx/include/__flat_set/flat_multiset.h +211 -143
  536. package/libcxx/include/__flat_set/flat_set.h +86 -68
  537. package/libcxx/include/__format/concepts.h +0 -14
  538. package/libcxx/include/__format/extended_grapheme_cluster_table.h +3 -2
  539. package/libcxx/include/__format/fmt_pair_like.h +42 -0
  540. package/libcxx/include/__format/format_arg.h +7 -10
  541. package/libcxx/include/__format/format_args.h +1 -1
  542. package/libcxx/include/__format/format_context.h +5 -5
  543. package/libcxx/include/__format/format_parse_context.h +2 -2
  544. package/libcxx/include/__format/formatter_output.h +30 -34
  545. package/libcxx/include/__format/indic_conjunct_break_table.h +3 -2
  546. package/libcxx/include/__format/range_default_formatter.h +2 -41
  547. package/libcxx/include/__format/range_format.h +71 -0
  548. package/libcxx/include/__format/range_formatter.h +1 -0
  549. package/libcxx/include/__format/width_estimation_table.h +4 -2
  550. package/libcxx/include/__functional/bind.h +10 -15
  551. package/libcxx/include/__functional/bind_back.h +1 -1
  552. package/libcxx/include/__functional/bind_front.h +1 -1
  553. package/libcxx/include/__functional/function.h +57 -75
  554. package/libcxx/include/__functional/hash.h +1 -10
  555. package/libcxx/include/__functional/identity.h +1 -1
  556. package/libcxx/include/__functional/is_transparent.h +8 -0
  557. package/libcxx/include/__functional/mem_fn.h +2 -1
  558. package/libcxx/include/__functional/operations.h +18 -0
  559. package/libcxx/include/__functional/ranges_operations.h +7 -0
  560. package/libcxx/include/__functional/reference_wrapper.h +7 -5
  561. package/libcxx/include/__functional/weak_result_type.h +14 -28
  562. package/libcxx/include/__fwd/ios.h +1 -1
  563. package/libcxx/include/__fwd/tuple.h +14 -0
  564. package/libcxx/include/__hash_table +371 -357
  565. package/libcxx/include/__ios/fpos.h +4 -4
  566. package/libcxx/include/__iterator/back_insert_iterator.h +1 -7
  567. package/libcxx/include/__iterator/bounded_iter.h +7 -8
  568. package/libcxx/include/__iterator/concepts.h +6 -9
  569. package/libcxx/include/__iterator/cpp17_iterator_concepts.h +13 -12
  570. package/libcxx/include/__iterator/distance.h +40 -18
  571. package/libcxx/include/__iterator/front_insert_iterator.h +1 -7
  572. package/libcxx/include/__iterator/insert_iterator.h +1 -7
  573. package/libcxx/include/__iterator/istream_iterator.h +6 -7
  574. package/libcxx/include/__iterator/istreambuf_iterator.h +6 -7
  575. package/libcxx/include/__iterator/iter_move.h +1 -1
  576. package/libcxx/include/__iterator/iterator.h +13 -0
  577. package/libcxx/include/__iterator/iterator_traits.h +13 -14
  578. package/libcxx/include/__iterator/ostream_iterator.h +1 -7
  579. package/libcxx/include/__iterator/ostreambuf_iterator.h +1 -7
  580. package/libcxx/include/__iterator/reverse_iterator.h +8 -13
  581. package/libcxx/include/__iterator/segmented_iterator.h +3 -8
  582. package/libcxx/include/__iterator/static_bounded_iter.h +3 -3
  583. package/libcxx/include/__iterator/wrap_iter.h +8 -6
  584. package/libcxx/include/__locale +3 -10
  585. package/libcxx/include/__locale_dir/locale_base_api/bsd_locale_fallbacks.h +0 -10
  586. package/libcxx/include/__locale_dir/locale_base_api.h +5 -28
  587. package/libcxx/include/__locale_dir/messages.h +1 -1
  588. package/libcxx/include/__locale_dir/money.h +2 -2
  589. package/libcxx/include/__locale_dir/num.h +190 -243
  590. package/libcxx/include/__locale_dir/pad_and_output.h +5 -6
  591. package/libcxx/include/__locale_dir/support/bsd_like.h +0 -20
  592. package/libcxx/include/__locale_dir/support/fuchsia.h +0 -7
  593. package/libcxx/include/__locale_dir/support/linux.h +0 -37
  594. package/libcxx/include/__locale_dir/support/netbsd.h +0 -2
  595. package/libcxx/include/__locale_dir/support/newlib.h +243 -0
  596. package/libcxx/include/__locale_dir/support/no_locale/characters.h +0 -4
  597. package/libcxx/include/__locale_dir/support/no_locale/strtonum.h +0 -9
  598. package/libcxx/include/__locale_dir/support/windows.h +0 -29
  599. package/libcxx/include/__locale_dir/time.h +3 -7
  600. package/libcxx/include/__math/hypot.h +1 -1
  601. package/libcxx/include/__math/logarithms.h +1 -1
  602. package/libcxx/include/__math/traits.h +80 -11
  603. package/libcxx/include/__mdspan/extents.h +7 -4
  604. package/libcxx/include/__mdspan/layout_stride.h +4 -5
  605. package/libcxx/include/__mdspan/mdspan.h +29 -23
  606. package/libcxx/include/__memory/addressof.h +7 -5
  607. package/libcxx/include/__memory/align.h +18 -1
  608. package/libcxx/include/__memory/allocate_at_least.h +15 -10
  609. package/libcxx/include/__memory/allocator.h +14 -26
  610. package/libcxx/include/__memory/allocator_traits.h +6 -4
  611. package/libcxx/include/__memory/compressed_pair.h +15 -9
  612. package/libcxx/include/__memory/construct_at.h +12 -23
  613. package/libcxx/include/__memory/inout_ptr.h +1 -1
  614. package/libcxx/include/__memory/is_sufficiently_aligned.h +1 -1
  615. package/libcxx/include/__memory/out_ptr.h +1 -1
  616. package/libcxx/include/__memory/pointer_traits.h +1 -1
  617. package/libcxx/include/__memory/raw_storage_iterator.h +3 -9
  618. package/libcxx/include/__memory/shared_count.h +9 -30
  619. package/libcxx/include/__memory/shared_ptr.h +100 -145
  620. package/libcxx/include/__memory/temp_value.h +1 -2
  621. package/libcxx/include/__memory/uninitialized_algorithms.h +44 -115
  622. package/libcxx/include/__memory/unique_ptr.h +14 -16
  623. package/libcxx/include/__memory/uses_allocator_construction.h +1 -0
  624. package/libcxx/include/__memory_resource/memory_resource.h +4 -2
  625. package/libcxx/include/__memory_resource/monotonic_buffer_resource.h +1 -1
  626. package/libcxx/include/__memory_resource/polymorphic_allocator.h +13 -8
  627. package/libcxx/include/__memory_resource/pool_options.h +1 -1
  628. package/libcxx/include/__memory_resource/synchronized_pool_resource.h +4 -2
  629. package/libcxx/include/__memory_resource/unsynchronized_pool_resource.h +1 -1
  630. package/libcxx/include/__mutex/mutex.h +2 -2
  631. package/libcxx/include/__mutex/once_flag.h +14 -11
  632. package/libcxx/include/__mutex/tag_types.h +3 -3
  633. package/libcxx/include/__mutex/unique_lock.h +8 -7
  634. package/libcxx/include/__new/align_val_t.h +6 -0
  635. package/libcxx/include/__new/allocate.h +1 -2
  636. package/libcxx/include/__new/exceptions.h +8 -2
  637. package/libcxx/include/__new/global_new_delete.h +4 -11
  638. package/libcxx/include/__new/interference_size.h +0 -4
  639. package/libcxx/include/__new/launder.h +3 -5
  640. package/libcxx/include/__new/nothrow_t.h +1 -1
  641. package/libcxx/include/__numeric/gcd_lcm.h +24 -34
  642. package/libcxx/include/__numeric/midpoint.h +9 -14
  643. package/libcxx/include/__numeric/pstl.h +2 -2
  644. package/libcxx/include/__numeric/saturation_arithmetic.h +13 -5
  645. package/libcxx/include/__ostream/basic_ostream.h +8 -8
  646. package/libcxx/include/__pstl/backends/default.h +14 -14
  647. package/libcxx/include/__pstl/backends/libdispatch.h +2 -2
  648. package/libcxx/include/__pstl/cpu_algos/find_if.h +1 -1
  649. package/libcxx/include/__pstl/cpu_algos/transform.h +5 -6
  650. package/libcxx/include/__pstl/cpu_algos/transform_reduce.h +5 -4
  651. package/libcxx/include/__random/binomial_distribution.h +10 -4
  652. package/libcxx/include/__random/mersenne_twister_engine.h +50 -154
  653. package/libcxx/include/__random/piecewise_constant_distribution.h +3 -2
  654. package/libcxx/include/__random/piecewise_linear_distribution.h +3 -2
  655. package/libcxx/include/__ranges/adjacent_transform_view.h +406 -0
  656. package/libcxx/include/__ranges/adjacent_view.h +419 -0
  657. package/libcxx/include/__ranges/as_rvalue_view.h +9 -9
  658. package/libcxx/include/__ranges/chunk_by_view.h +6 -6
  659. package/libcxx/include/__ranges/common_view.h +7 -7
  660. package/libcxx/include/__ranges/drop_view.h +8 -8
  661. package/libcxx/include/__ranges/drop_while_view.h +5 -5
  662. package/libcxx/include/__ranges/elements_of.h +49 -0
  663. package/libcxx/include/__ranges/empty_view.h +5 -5
  664. package/libcxx/include/__ranges/filter_view.h +10 -10
  665. package/libcxx/include/__ranges/iota_view.h +41 -22
  666. package/libcxx/include/__ranges/owning_view.h +15 -15
  667. package/libcxx/include/__ranges/ref_view.h +6 -6
  668. package/libcxx/include/__ranges/repeat_view.h +17 -10
  669. package/libcxx/include/__ranges/single_view.h +8 -8
  670. package/libcxx/include/__ranges/take_view.h +9 -9
  671. package/libcxx/include/__ranges/transform_view.h +1 -2
  672. package/libcxx/include/__ranges/view_interface.h +10 -10
  673. package/libcxx/include/__ranges/zip_transform_view.h +357 -0
  674. package/libcxx/include/__ranges/zip_view.h +20 -20
  675. package/libcxx/include/__split_buffer +612 -240
  676. package/libcxx/include/__stop_token/atomic_unique_lock.h +1 -1
  677. package/libcxx/include/__stop_token/stop_callback.h +2 -2
  678. package/libcxx/include/__stop_token/stop_source.h +1 -1
  679. package/libcxx/include/__stop_token/stop_state.h +4 -4
  680. package/libcxx/include/__stop_token/stop_token.h +1 -1
  681. package/libcxx/include/__string/char_traits.h +51 -31
  682. package/libcxx/include/__string/constexpr_c_functions.h +5 -5
  683. package/libcxx/include/__support/xlocale/__strtonum_fallback.h +0 -8
  684. package/libcxx/include/__system_error/error_category.h +8 -8
  685. package/libcxx/include/__system_error/error_code.h +5 -5
  686. package/libcxx/include/__system_error/error_condition.h +4 -4
  687. package/libcxx/include/__system_error/system_error.h +1 -1
  688. package/libcxx/include/__thread/id.h +1 -1
  689. package/libcxx/include/__thread/jthread.h +1 -1
  690. package/libcxx/include/__thread/poll_with_backoff.h +27 -8
  691. package/libcxx/include/__thread/support/c11.h +8 -8
  692. package/libcxx/include/__thread/support/pthread.h +8 -8
  693. package/libcxx/include/__thread/support/windows.h +8 -8
  694. package/libcxx/include/__thread/thread.h +13 -8
  695. package/libcxx/include/__thread/timed_backoff_policy.h +3 -2
  696. package/libcxx/include/__tree +849 -701
  697. package/libcxx/include/__tuple/sfinae_helpers.h +1 -44
  698. package/libcxx/include/__tuple/tuple_element.h +0 -12
  699. package/libcxx/include/__tuple/tuple_size.h +0 -4
  700. package/libcxx/include/__tuple/tuple_transform.h +45 -0
  701. package/libcxx/include/__type_traits/aligned_storage.h +13 -40
  702. package/libcxx/include/__type_traits/desugars_to.h +4 -0
  703. package/libcxx/include/__type_traits/invoke.h +8 -0
  704. package/libcxx/include/__type_traits/is_allocator.h +6 -7
  705. package/libcxx/include/__type_traits/is_array.h +26 -0
  706. package/libcxx/include/__type_traits/is_equality_comparable.h +16 -21
  707. package/libcxx/include/__type_traits/is_final.h +1 -1
  708. package/libcxx/include/__type_traits/is_floating_point.h +7 -6
  709. package/libcxx/include/__type_traits/is_generic_transparent_comparator.h +30 -0
  710. package/libcxx/include/__type_traits/is_specialization.h +2 -6
  711. package/libcxx/include/__type_traits/is_within_lifetime.h +29 -0
  712. package/libcxx/include/__type_traits/make_transparent.h +52 -0
  713. package/libcxx/include/__type_traits/reference_constructs_from_temporary.h +1 -7
  714. package/libcxx/include/__type_traits/reference_converts_from_temporary.h +1 -1
  715. package/libcxx/include/__utility/cmp.h +19 -7
  716. package/libcxx/include/__utility/default_three_way_comparator.h +70 -0
  717. package/libcxx/include/__utility/in_place.h +1 -1
  718. package/libcxx/include/__utility/integer_sequence.h +56 -41
  719. package/libcxx/include/__utility/lazy_synth_three_way_comparator.h +120 -0
  720. package/libcxx/include/__utility/pair.h +22 -25
  721. package/libcxx/include/__utility/scope_guard.h +2 -0
  722. package/libcxx/include/__utility/try_key_extraction.h +114 -0
  723. package/libcxx/include/__vector/vector.h +187 -160
  724. package/libcxx/include/__vector/vector_bool.h +76 -83
  725. package/libcxx/include/any +118 -155
  726. package/libcxx/include/array +88 -56
  727. package/libcxx/include/atomic +2 -0
  728. package/libcxx/include/barrier +20 -24
  729. package/libcxx/include/bitset +49 -30
  730. package/libcxx/include/ccomplex +3 -11
  731. package/libcxx/include/chrono +47 -0
  732. package/libcxx/include/ciso646 +3 -6
  733. package/libcxx/include/complex +77 -65
  734. package/libcxx/include/complex.h +10 -10
  735. package/libcxx/include/condition_variable +3 -3
  736. package/libcxx/include/cstdalign +3 -10
  737. package/libcxx/include/cstdbool +3 -10
  738. package/libcxx/include/ctgmath +2 -11
  739. package/libcxx/include/ctype.h +24 -24
  740. package/libcxx/include/cwchar +2 -2
  741. package/libcxx/include/deque +109 -225
  742. package/libcxx/include/errno.h +269 -269
  743. package/libcxx/include/exception +4 -1
  744. package/libcxx/include/ext/hash_map +7 -48
  745. package/libcxx/include/ext/hash_set +2 -8
  746. package/libcxx/include/fenv.h +43 -43
  747. package/libcxx/include/flat_map +663 -11
  748. package/libcxx/include/flat_set +543 -8
  749. package/libcxx/include/float.h +16 -16
  750. package/libcxx/include/forward_list +33 -53
  751. package/libcxx/include/fstream +57 -42
  752. package/libcxx/include/future +41 -51
  753. package/libcxx/include/initializer_list +9 -3
  754. package/libcxx/include/inttypes.h +16 -16
  755. package/libcxx/include/ios +28 -28
  756. package/libcxx/include/istream +19 -13
  757. package/libcxx/include/iterator +10 -0
  758. package/libcxx/include/latch +7 -5
  759. package/libcxx/include/limits +4 -4
  760. package/libcxx/include/list +61 -79
  761. package/libcxx/include/map +386 -274
  762. package/libcxx/include/math.h +19 -0
  763. package/libcxx/include/mdspan +1 -5
  764. package/libcxx/include/mutex +29 -19
  765. package/libcxx/include/optional +644 -149
  766. package/libcxx/include/print +9 -5
  767. package/libcxx/include/queue +39 -37
  768. package/libcxx/include/ranges +48 -0
  769. package/libcxx/include/regex +33 -31
  770. package/libcxx/include/scoped_allocator +16 -11
  771. package/libcxx/include/semaphore +15 -18
  772. package/libcxx/include/set +220 -192
  773. package/libcxx/include/shared_mutex +3 -8
  774. package/libcxx/include/span +53 -37
  775. package/libcxx/include/sstream +34 -28
  776. package/libcxx/include/stack +13 -15
  777. package/libcxx/include/stddef.h +10 -10
  778. package/libcxx/include/stdexcept +2 -2
  779. package/libcxx/include/stdio.h +20 -21
  780. package/libcxx/include/streambuf +59 -19
  781. package/libcxx/include/string +574 -573
  782. package/libcxx/include/string_view +113 -89
  783. package/libcxx/include/strstream +10 -10
  784. package/libcxx/include/syncstream +4 -4
  785. package/libcxx/include/tgmath.h +12 -12
  786. package/libcxx/include/tuple +242 -212
  787. package/libcxx/include/type_traits +8 -2
  788. package/libcxx/include/typeindex +5 -3
  789. package/libcxx/include/typeinfo +92 -89
  790. package/libcxx/include/unordered_map +179 -304
  791. package/libcxx/include/unordered_set +168 -195
  792. package/libcxx/include/utility +12 -0
  793. package/libcxx/include/valarray +106 -161
  794. package/libcxx/include/variant +25 -33
  795. package/libcxx/include/version +41 -24
  796. package/libcxx/include/wctype.h +29 -29
  797. package/libcxx/libc/hdr/errno_macros.h +3 -1
  798. package/libcxx/libc/hdr/stdint_proxy.h +18 -0
  799. package/libcxx/libc/hdr/types/wchar_t.h +23 -0
  800. package/libcxx/libc/hdr/wchar_overlay.h +69 -0
  801. package/libcxx/libc/include/llvm-libc-macros/cfloat128-macros.h +41 -0
  802. package/libcxx/libc/include/llvm-libc-macros/cfloat16-macros.h +20 -0
  803. package/libcxx/libc/include/llvm-libc-macros/wchar-macros.h +18 -0
  804. package/libcxx/libc/include/llvm-libc-types/cfloat128.h +11 -28
  805. package/libcxx/libc/include/llvm-libc-types/cfloat16.h +4 -7
  806. package/libcxx/libc/include/llvm-libc-types/wint_t.h +14 -0
  807. package/libcxx/libc/shared/libc_common.h +5 -0
  808. package/libcxx/libc/src/__support/CPP/bit.h +50 -12
  809. package/libcxx/libc/src/__support/CPP/type_traits/is_complex.h +7 -0
  810. package/libcxx/libc/src/__support/CPP/type_traits/is_destructible.h +2 -1
  811. package/libcxx/libc/src/__support/CPP/type_traits/is_unsigned.h +6 -0
  812. package/libcxx/libc/src/__support/CPP/utility/integer_sequence.h +10 -0
  813. package/libcxx/libc/src/__support/FPUtil/FPBits.h +6 -7
  814. package/libcxx/libc/src/__support/FPUtil/rounding_mode.h +50 -4
  815. package/libcxx/libc/src/__support/big_int.h +14 -14
  816. package/libcxx/libc/src/__support/common.h +3 -2
  817. package/libcxx/libc/src/__support/ctype_utils.h +19 -12
  818. package/libcxx/libc/src/__support/detailed_powers_of_ten.h +1 -2
  819. package/libcxx/libc/src/__support/high_precision_decimal.h +33 -14
  820. package/libcxx/libc/src/__support/libc_assert.h +2 -0
  821. package/libcxx/libc/src/__support/macros/attributes.h +44 -1
  822. package/libcxx/libc/src/__support/macros/config.h +23 -0
  823. package/libcxx/libc/src/__support/macros/null_check.h +1 -2
  824. package/libcxx/libc/src/__support/macros/optimization.h +3 -0
  825. package/libcxx/libc/src/__support/macros/properties/architectures.h +5 -1
  826. package/libcxx/libc/src/__support/macros/properties/compiler.h +8 -3
  827. package/libcxx/libc/src/__support/macros/properties/cpu_features.h +17 -1
  828. package/libcxx/libc/src/__support/macros/properties/types.h +2 -3
  829. package/libcxx/libc/src/__support/macros/sanitizer.h +0 -10
  830. package/libcxx/libc/src/__support/math_extras.h +20 -4
  831. package/libcxx/libc/src/__support/str_to_float.h +98 -125
  832. package/libcxx/libc/src/__support/str_to_integer.h +39 -27
  833. package/libcxx/libc/src/__support/wctype_utils.h +588 -0
  834. package/libcxx/src/any.cpp +4 -0
  835. package/libcxx/src/atomic.cpp +365 -80
  836. package/libcxx/src/barrier.cpp +4 -3
  837. package/libcxx/src/charconv.cpp +6 -3
  838. package/libcxx/src/condition_variable_destructor.cpp +1 -1
  839. package/libcxx/src/error_category.cpp +3 -1
  840. package/libcxx/src/exception.cpp +2 -10
  841. package/libcxx/src/experimental/time_zone.cpp +1 -1
  842. package/libcxx/src/experimental/tzdb.cpp +4 -1
  843. package/libcxx/src/filesystem/error.h +4 -22
  844. package/libcxx/src/filesystem/format_string.h +9 -18
  845. package/libcxx/src/filesystem/int128_builtins.cpp +2 -0
  846. package/libcxx/src/filesystem/operations.cpp +2 -9
  847. package/libcxx/src/filesystem/path.cpp +3 -1
  848. package/libcxx/src/include/aligned_alloc.h +65 -0
  849. package/libcxx/src/include/config_elast.h +1 -1
  850. package/libcxx/src/include/from_chars_floating_point.h +11 -7
  851. package/libcxx/src/include/overridable_function.h +8 -10
  852. package/libcxx/src/iostream.cpp +56 -37
  853. package/libcxx/src/locale.cpp +213 -196
  854. package/libcxx/src/memory.cpp +12 -14
  855. package/libcxx/src/mutex_destructor.cpp +1 -1
  856. package/libcxx/src/new.cpp +5 -5
  857. package/libcxx/src/optional.cpp +4 -0
  858. package/libcxx/src/print.cpp +9 -1
  859. package/libcxx/src/random.cpp +0 -26
  860. package/libcxx/src/string.cpp +10 -25
  861. package/libcxx/src/support/runtime/exception_fallback.ipp +2 -0
  862. package/libcxx/src/support/runtime/exception_glibcxx.ipp +3 -0
  863. package/libcxx/src/support/runtime/exception_libcxxabi.ipp +6 -2
  864. package/libcxx/src/support/runtime/exception_libcxxrt.ipp +2 -0
  865. package/libcxx/src/support/runtime/exception_msvc.ipp +2 -0
  866. package/libcxx/src/support/runtime/exception_pointer_cxxabi.ipp +9 -10
  867. package/libcxx/src/support/runtime/exception_pointer_glibcxx.ipp +2 -0
  868. package/libcxx/src/support/runtime/exception_pointer_msvc.ipp +1 -0
  869. package/libcxx/src/support/runtime/exception_pointer_unimplemented.ipp +1 -0
  870. package/libcxx/src/support/win32/locale_win32.cpp +1 -1
  871. package/libcxx/src/system_error.cpp +2 -0
  872. package/libcxx/src/thread.cpp +1 -3
  873. package/libcxx/src/valarray.cpp +1 -2
  874. package/libcxx/src/vector.cpp +2 -2
  875. package/libcxxabi/include/__cxxabi_config.h +42 -23
  876. package/libcxxabi/src/cxa_exception.cpp +4 -2
  877. package/libcxxabi/src/cxa_exception.h +16 -14
  878. package/libcxxabi/src/cxa_personality.cpp +126 -9
  879. package/libcxxabi/src/cxa_thread_atexit.cpp +2 -1
  880. package/libcxxabi/src/demangle/DemangleConfig.h +4 -0
  881. package/libcxxabi/src/demangle/ItaniumDemangle.h +9 -6
  882. package/libcxxabi/src/demangle/Utility.h +21 -7
  883. package/libcxxabi/src/fallback_malloc.cpp +1 -1
  884. package/libcxxabi/src/private_typeinfo.cpp +6 -0
  885. package/libcxxabi/src/stdlib_new_delete.cpp +5 -5
  886. package/libtsan/LICENSE.TXT +311 -0
  887. package/libtsan/builtins/assembly.h +41 -8
  888. package/libtsan/interception/interception_win.cpp +4 -0
  889. package/libtsan/sanitizer_common/sanitizer_allocator_primary32.h +1 -0
  890. package/libtsan/sanitizer_common/sanitizer_allocator_primary64.h +18 -0
  891. package/libtsan/sanitizer_common/sanitizer_common.h +15 -2
  892. package/libtsan/sanitizer_common/sanitizer_common_interceptors.inc +30 -4
  893. package/libtsan/sanitizer_common/sanitizer_common_interceptors_ioctl.inc +4 -0
  894. package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S +2 -1
  895. package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S +2 -0
  896. package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S +2 -0
  897. package/libtsan/sanitizer_common/sanitizer_common_syscalls.inc +18 -0
  898. package/libtsan/sanitizer_common/sanitizer_file.cpp +40 -12
  899. package/libtsan/sanitizer_common/sanitizer_file.h +3 -0
  900. package/libtsan/sanitizer_common/sanitizer_flags.inc +7 -0
  901. package/libtsan/sanitizer_common/sanitizer_fuchsia.cpp +30 -3
  902. package/libtsan/sanitizer_common/sanitizer_haiku.cpp +2 -2
  903. package/libtsan/sanitizer_common/sanitizer_internal_defs.h +1 -1
  904. package/libtsan/sanitizer_common/sanitizer_libc.cpp +8 -0
  905. package/libtsan/sanitizer_common/sanitizer_libc.h +1 -0
  906. package/libtsan/sanitizer_common/sanitizer_linux.cpp +15 -7
  907. package/libtsan/sanitizer_common/sanitizer_linux.h +3 -3
  908. package/libtsan/sanitizer_common/sanitizer_linux_libcdep.cpp +1 -0
  909. package/libtsan/sanitizer_common/sanitizer_mac.cpp +255 -104
  910. package/libtsan/sanitizer_common/sanitizer_mac.h +5 -0
  911. package/libtsan/sanitizer_common/sanitizer_netbsd.cpp +2 -2
  912. package/libtsan/sanitizer_common/sanitizer_platform.h +27 -1
  913. package/libtsan/sanitizer_common/sanitizer_platform_interceptors.h +5 -4
  914. package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.cpp +15 -17
  915. package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.h +32 -6
  916. package/libtsan/sanitizer_common/sanitizer_posix.cpp +3 -12
  917. package/libtsan/sanitizer_common/sanitizer_posix.h +2 -1
  918. package/libtsan/sanitizer_common/sanitizer_posix_libcdep.cpp +19 -0
  919. package/libtsan/sanitizer_common/sanitizer_procmaps_mac.cpp +102 -37
  920. package/libtsan/sanitizer_common/sanitizer_redefine_builtins.h +1 -1
  921. package/libtsan/sanitizer_common/sanitizer_signal_interceptors.inc +40 -2
  922. package/libtsan/sanitizer_common/sanitizer_stoptheworld.h +1 -1
  923. package/libtsan/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp +83 -12
  924. package/libtsan/sanitizer_common/sanitizer_stoptheworld_mac.cpp +3 -3
  925. package/libtsan/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp +7 -7
  926. package/libtsan/sanitizer_common/sanitizer_stoptheworld_win.cpp +2 -2
  927. package/libtsan/sanitizer_common/sanitizer_symbolizer_internal.h +5 -1
  928. package/libtsan/sanitizer_common/sanitizer_symbolizer_libcdep.cpp +11 -1
  929. package/libtsan/sanitizer_common/sanitizer_symbolizer_mac.cpp +86 -29
  930. package/libtsan/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp +27 -16
  931. package/libtsan/sanitizer_common/sanitizer_thread_registry.cpp +5 -4
  932. package/libtsan/sanitizer_common/sanitizer_thread_registry.h +4 -4
  933. package/libtsan/sanitizer_common/sanitizer_win.cpp +1 -3
  934. package/libtsan/tsan_debugging.cpp +2 -2
  935. package/libtsan/tsan_flags.cpp +37 -0
  936. package/libtsan/tsan_flags.h +8 -0
  937. package/libtsan/tsan_flags.inc +12 -0
  938. package/libtsan/tsan_interceptors.h +9 -1
  939. package/libtsan/tsan_interceptors_mac.cpp +19 -0
  940. package/libtsan/tsan_interceptors_posix.cpp +78 -32
  941. package/libtsan/tsan_interface.h +3 -3
  942. package/libtsan/tsan_interface_ann.cpp +23 -9
  943. package/libtsan/tsan_mman.cpp +18 -4
  944. package/libtsan/tsan_platform.h +44 -7
  945. package/libtsan/tsan_platform_linux.cpp +42 -14
  946. package/libtsan/tsan_platform_mac.cpp +16 -3
  947. package/libtsan/tsan_report.h +14 -1
  948. package/libtsan/tsan_rtl.cpp +14 -0
  949. package/libtsan/tsan_rtl.h +7 -2
  950. package/libtsan/tsan_rtl_aarch64.S +3 -5
  951. package/libtsan/tsan_rtl_access.cpp +8 -3
  952. package/libtsan/tsan_rtl_amd64.S +2 -0
  953. package/libtsan/tsan_rtl_mutex.cpp +94 -49
  954. package/libtsan/tsan_rtl_report.cpp +132 -65
  955. package/libtsan/tsan_rtl_thread.cpp +31 -9
  956. package/libtsan/tsan_symbolize.cpp +1 -1
  957. package/libtsan/tsan_symbolize.h +1 -1
  958. package/libtsan/tsan_trace.h +1 -1
  959. package/libunwind/include/__libunwind_config.h +11 -2
  960. package/libunwind/include/libunwind.h +117 -11
  961. package/libunwind/include/unwind_arm_ehabi.h +4 -1
  962. package/libunwind/src/AddressSpace.hpp +42 -20
  963. package/libunwind/src/CompactUnwinder.hpp +16 -5
  964. package/libunwind/src/DwarfInstructions.hpp +24 -13
  965. package/libunwind/src/DwarfParser.hpp +62 -23
  966. package/libunwind/src/EHHeaderParser.hpp +7 -4
  967. package/libunwind/src/Registers.hpp +226 -22
  968. package/libunwind/src/Unwind-seh.cpp +6 -7
  969. package/libunwind/src/Unwind-wasm.c +7 -7
  970. package/libunwind/src/UnwindCursor.hpp +167 -49
  971. package/libunwind/src/UnwindLevel1.c +46 -17
  972. package/libunwind/src/UnwindRegistersRestore.S +46 -5
  973. package/libunwind/src/UnwindRegistersSave.S +86 -2
  974. package/libunwind/src/assembly.h +5 -1
  975. package/libunwind/src/config.h +9 -0
  976. package/libunwind/src/gcc_personality_v0.c +79 -6
  977. package/libunwind/src/libunwind.cpp +104 -4
  978. package/libunwind/src/libunwind_ext.h +7 -1
  979. package/libunwind/src/shadow_stack_unwind.h +2 -2
  980. package/lldb/pretty_printers.py +948 -0
  981. package/package.json +1 -1
  982. package/std/Build/Cache/Path.zig +9 -2
  983. package/std/Build/Cache.zig +16 -7
  984. package/std/Build/Configuration.zig +3436 -0
  985. package/std/Build/Module.zig +99 -225
  986. package/std/Build/Step/CheckFile.zig +17 -63
  987. package/std/Build/Step/Compile.zig +97 -1420
  988. package/std/Build/Step/ConfigHeader.zig +55 -944
  989. package/std/Build/Step/Fail.zig +10 -20
  990. package/std/Build/Step/FindProgram.zig +31 -0
  991. package/std/Build/Step/Fmt.zig +22 -57
  992. package/std/Build/Step/InstallArtifact.zig +26 -141
  993. package/std/Build/Step/InstallDir.zig +14 -67
  994. package/std/Build/Step/InstallFile.zig +12 -21
  995. package/std/Build/Step/ObjCopy.zig +82 -199
  996. package/std/Build/Step/Options.zig +26 -261
  997. package/std/Build/Step/Run.zig +139 -2214
  998. package/std/Build/Step/TranslateC.zig +55 -164
  999. package/std/Build/Step/UpdateSourceFiles.zig +38 -91
  1000. package/std/Build/Step/WriteFile.zig +113 -328
  1001. package/std/Build/Step.zig +45 -916
  1002. package/std/Build/abi.zig +1 -1
  1003. package/std/Build.zig +644 -718
  1004. package/std/Io/Dir.zig +12 -7
  1005. package/std/Io/Dispatch.zig +5 -5
  1006. package/std/Io/File/Writer.zig +8 -6
  1007. package/std/Io/File.zig +6 -9
  1008. package/std/Io/Kqueue.zig +3 -3
  1009. package/std/Io/Reader.zig +8 -14
  1010. package/std/Io/RwLock.zig +2 -0
  1011. package/std/Io/Semaphore.zig +112 -17
  1012. package/std/Io/Terminal.zig +1 -1
  1013. package/std/Io/Threaded.zig +19 -16
  1014. package/std/Io/Uring.zig +7 -7
  1015. package/std/Io/Writer.zig +75 -10
  1016. package/std/Io/net/HostName.zig +11 -6
  1017. package/std/Io.zig +92 -28
  1018. package/std/Random/ChaCha.zig +2 -2
  1019. package/std/Random/benchmark.zig +2 -2
  1020. package/std/Random.zig +6 -6
  1021. package/std/SemanticVersion.zig +1 -1
  1022. package/std/Target/Query.zig +4 -5
  1023. package/std/Target/aarch64.zig +620 -77
  1024. package/std/Target/amdgcn.zig +421 -21
  1025. package/std/Target/arm.zig +40 -6
  1026. package/std/Target/bpf.zig +6 -0
  1027. package/std/Target/hexagon.zig +41 -6
  1028. package/std/Target/loongarch.zig +18 -0
  1029. package/std/Target/mips.zig +6 -0
  1030. package/std/Target/nvptx.zig +58 -35
  1031. package/std/Target/powerpc.zig +27 -19
  1032. package/std/Target/riscv.zig +512 -177
  1033. package/std/Target/sparc.zig +17 -0
  1034. package/std/Target/spirv.zig +1 -1
  1035. package/std/Target/wasm.zig +7 -0
  1036. package/std/Target/x86.zig +200 -31
  1037. package/std/Target/xtensa.zig +65 -0
  1038. package/std/Target.zig +94 -57
  1039. package/std/Thread.zig +17 -4
  1040. package/std/array_hash_map.zig +103 -57
  1041. package/std/array_list.zig +20 -35
  1042. package/std/ascii.zig +0 -9
  1043. package/std/atomic.zig +2 -0
  1044. package/std/base64.zig +5 -5
  1045. package/std/bit_set.zig +85 -93
  1046. package/std/c/serenity.zig +1 -6
  1047. package/std/c.zig +117 -36
  1048. package/std/compress/flate/Decompress.zig +3 -4
  1049. package/std/compress/zstd/Decompress.zig +7 -9
  1050. package/std/crypto/25519/curve25519.zig +2 -2
  1051. package/std/crypto/25519/edwards25519.zig +3 -3
  1052. package/std/crypto/25519/ristretto255.zig +2 -2
  1053. package/std/crypto/25519/scalar.zig +6 -6
  1054. package/std/crypto/25519/x25519.zig +1 -1
  1055. package/std/crypto/Certificate.zig +14 -2
  1056. package/std/crypto/Sha1.zig +1 -1
  1057. package/std/crypto/aegis.zig +45 -39
  1058. package/std/crypto/aes_ccm.zig +22 -22
  1059. package/std/crypto/aes_gcm.zig +10 -12
  1060. package/std/crypto/aes_ocb.zig +9 -9
  1061. package/std/crypto/argon2.zig +15 -15
  1062. package/std/crypto/ascon.zig +75 -35
  1063. package/std/crypto/bcrypt.zig +20 -10
  1064. package/std/crypto/benchmark.zig +7 -7
  1065. package/std/crypto/blake2.zig +100 -64
  1066. package/std/crypto/cbc_mac.zig +1 -1
  1067. package/std/crypto/chacha20.zig +10 -10
  1068. package/std/crypto/cmac.zig +3 -3
  1069. package/std/crypto/codecs/asn1/Oid.zig +12 -1
  1070. package/std/crypto/codecs/asn1/der/Encoder.zig +1 -1
  1071. package/std/crypto/codecs/asn1.zig +1 -1
  1072. package/std/crypto/codecs/base64_hex_ct.zig +3 -5
  1073. package/std/crypto/ecdsa.zig +9 -9
  1074. package/std/crypto/ff.zig +4 -5
  1075. package/std/crypto/ghash_polyval.zig +4 -4
  1076. package/std/crypto/hkdf.zig +1 -1
  1077. package/std/crypto/isap.zig +3 -3
  1078. package/std/crypto/kangarootwelve.zig +1 -1
  1079. package/std/crypto/keccak_p.zig +8 -8
  1080. package/std/crypto/md5.zig +1 -1
  1081. package/std/crypto/ml_dsa.zig +39 -39
  1082. package/std/crypto/ml_kem.zig +12 -34
  1083. package/std/crypto/modes.zig +2 -2
  1084. package/std/crypto/pbkdf2.zig +1 -1
  1085. package/std/crypto/pcurves/common.zig +4 -5
  1086. package/std/crypto/pcurves/p256/scalar.zig +3 -3
  1087. package/std/crypto/pcurves/p384/scalar.zig +2 -2
  1088. package/std/crypto/pcurves/secp256k1/scalar.zig +3 -3
  1089. package/std/crypto/pcurves/tests/p256.zig +5 -5
  1090. package/std/crypto/pcurves/tests/p384.zig +5 -5
  1091. package/std/crypto/pcurves/tests/secp256k1.zig +3 -3
  1092. package/std/crypto/salsa20.zig +8 -14
  1093. package/std/crypto/sha2.zig +2 -2
  1094. package/std/crypto/sha3.zig +2 -4
  1095. package/std/crypto/siphash.zig +1 -1
  1096. package/std/crypto/timing_safe.zig +10 -9
  1097. package/std/crypto/tls/Client.zig +89 -13
  1098. package/std/crypto/tls.zig +1 -1
  1099. package/std/crypto.zig +4 -3
  1100. package/std/debug/Dwarf.zig +21 -12
  1101. package/std/debug/Pdb.zig +25 -17
  1102. package/std/debug/SelfInfo/Elf.zig +1 -0
  1103. package/std/debug/cpu_context.zig +168 -24
  1104. package/std/debug.zig +16 -8
  1105. package/std/deque.zig +1 -1
  1106. package/std/elf.zig +22 -5
  1107. package/std/enums.zig +8 -20
  1108. package/std/fmt/float.zig +2 -0
  1109. package/std/fmt/parse_float/decimal.zig +1 -1
  1110. package/std/fmt/parse_float.zig +1 -1
  1111. package/std/fmt.zig +7 -8
  1112. package/std/fs/path.zig +7 -5
  1113. package/std/hash/Adler32.zig +3 -3
  1114. package/std/hash/benchmark.zig +2 -2
  1115. package/std/hash/wyhash.zig +2 -2
  1116. package/std/hash/xxhash.zig +0 -6
  1117. package/std/hash_map.zig +22 -2
  1118. package/std/heap/ArenaAllocator.zig +3 -5
  1119. package/std/heap/BufferFirstAllocator.zig +165 -0
  1120. package/std/heap/SafeAllocator.zig +2180 -0
  1121. package/std/heap/debug_allocator.zig +2 -2
  1122. package/std/heap/memory_pool.zig +34 -197
  1123. package/std/heap.zig +20 -133
  1124. package/std/http.zig +4 -5
  1125. package/std/json/Scanner.zig +2 -2
  1126. package/std/json/static.zig +2 -2
  1127. package/std/json.zig +1 -1
  1128. package/std/{builtin → lang}/assembly.zig +71 -0
  1129. package/std/{builtin.zig → lang.zig} +5 -3
  1130. package/std/leb128.zig +2 -2
  1131. package/std/math/acos.zig +6 -0
  1132. package/std/math/asin.zig +6 -0
  1133. package/std/math/atan.zig +5 -0
  1134. package/std/math/big/int.zig +5 -5
  1135. package/std/math/big.zig +4 -4
  1136. package/std/math/copysign.zig +1 -1
  1137. package/std/math/float.zig +62 -0
  1138. package/std/math/frexp.zig +4 -4
  1139. package/std/math/hypot.zig +4 -0
  1140. package/std/math/ilogb.zig +1 -1
  1141. package/std/math/isfinite.zig +1 -1
  1142. package/std/math/isinf.zig +1 -1
  1143. package/std/math/isnan.zig +1 -2
  1144. package/std/math/isnormal.zig +2 -2
  1145. package/std/math/iszero.zig +2 -2
  1146. package/std/math/ldexp.zig +2 -2
  1147. package/std/math/log10.zig +0 -2
  1148. package/std/math/modf.zig +1 -2
  1149. package/std/math/nextafter.zig +3 -4
  1150. package/std/math/pow.zig +1 -1
  1151. package/std/math/powi.zig +2 -3
  1152. package/std/math/signbit.zig +0 -1
  1153. package/std/math.zig +21 -26
  1154. package/std/mem/Allocator.zig +5 -9
  1155. package/std/mem.zig +52 -75
  1156. package/std/meta/trailer_flags.zig +1 -1
  1157. package/std/meta.zig +4 -36
  1158. package/std/multi_array_list.zig +24 -0
  1159. package/std/os/emscripten.zig +7 -6
  1160. package/std/os/linux/IoUring.zig +2 -0
  1161. package/std/os/linux/alpha.zig +358 -0
  1162. package/std/os/linux/arm.zig +0 -26
  1163. package/std/os/linux/bpf.zig +6 -0
  1164. package/std/os/linux/ioctl.zig +3 -2
  1165. package/std/os/linux/syscalls.zig +528 -1
  1166. package/std/os/linux/tls.zig +12 -1
  1167. package/std/os/linux/x86.zig +2 -2
  1168. package/std/os/linux/xtensa.zig +171 -0
  1169. package/std/os/linux.zig +794 -52
  1170. package/std/os/plan9.zig +1 -1
  1171. package/std/os/uefi/hii.zig +1 -1
  1172. package/std/os/uefi/tables/boot_services.zig +9 -8
  1173. package/std/os/uefi/tables/runtime_services.zig +1 -1
  1174. package/std/os/windows.zig +130 -1
  1175. package/std/os.zig +36 -0
  1176. package/std/pie.zig +21 -0
  1177. package/std/posix.zig +2 -2
  1178. package/std/process/Child.zig +20 -0
  1179. package/std/process/Environ.zig +28 -4
  1180. package/std/process.zig +13 -5
  1181. package/std/simd.zig +4 -21
  1182. package/std/start.zig +45 -12
  1183. package/std/std.zig +8 -1
  1184. package/std/tar/Writer.zig +39 -33
  1185. package/std/tar.zig +8 -4
  1186. package/std/testing.zig +68 -15
  1187. package/std/unicode.zig +13 -8
  1188. package/std/zig/Ast/Render.zig +6 -30
  1189. package/std/zig/Ast.zig +12 -37
  1190. package/std/zig/AstGen.zig +174 -258
  1191. package/std/zig/AstRlAnnotate.zig +1 -11
  1192. package/std/zig/AstSmith.zig +5 -11
  1193. package/std/zig/ErrorBundle.zig +6 -2
  1194. package/std/zig/LibCDirs.zig +14 -7
  1195. package/std/zig/LibCInstallation.zig +49 -14
  1196. package/std/zig/Parse.zig +11 -76
  1197. package/std/zig/PkgConfig.zig +146 -0
  1198. package/std/zig/TokenSmith.zig +0 -6
  1199. package/std/zig/WindowsSdk.zig +18 -18
  1200. package/std/zig/Zir.zig +15 -69
  1201. package/std/zig/ZonGen.zig +19 -27
  1202. package/std/zig/llvm/Builder.zig +39 -33
  1203. package/std/zig/llvm/bitcode_writer.zig +3 -3
  1204. package/std/zig/llvm/ir.zig +8 -8
  1205. package/std/zig/system/arm.zig +56 -2
  1206. package/std/zig/system/linux.zig +4 -0
  1207. package/std/zig/system/loongarch.zig +25 -9
  1208. package/std/zig/system/windows.zig +34 -1
  1209. package/std/zig/system/x86.zig +60 -16
  1210. package/std/zig/system.zig +18 -25
  1211. package/std/zig/target.zig +1 -4
  1212. package/std/zig/tokenizer.zig +4 -43
  1213. package/std/zig.zig +98 -22
  1214. package/std/zip.zig +5 -5
  1215. package/std/zon/Serializer.zig +6 -2
  1216. package/std/zon/parse.zig +1 -1
  1217. package/zig.h +24 -2
  1218. package/compiler/build_runner.zig +0 -1857
  1219. package/compiler_rt/long_double.zig +0 -37
  1220. package/include/amxbf16transposeintrin.h +0 -94
  1221. package/include/amxcomplextransposeintrin.h +0 -303
  1222. package/include/amxfp16transposeintrin.h +0 -94
  1223. package/include/amxmovrstransposeintrin.h +0 -200
  1224. package/include/amxtf32transposeintrin.h +0 -105
  1225. package/include/amxtransposeintrin.h +0 -248
  1226. package/libc/include/hexagon-linux-any/asm/signal.h +0 -29
  1227. package/libc/include/mips64el-openbsd-none/loongson/hibernate.h +0 -33
  1228. package/libc/include/mips64el-openbsd-none/loongson/hibernate_var.h +0 -39
  1229. package/libc/include/mips64el-openbsd-none/machine/hibernate.h +0 -33
  1230. package/libc/include/mips64el-openbsd-none/machine/hibernate_var.h +0 -39
  1231. package/libc/include/s390x-linux-any/asm/tape390.h +0 -103
  1232. package/libc/mingw/math/lrintl.c +0 -18
  1233. package/libc/mingw/math/rintl.c +0 -16
  1234. package/libc/mingw/winpthreads/spinlock.c +0 -82
  1235. package/libc/musl/src/linux/tee.c +0 -8
  1236. package/libc/musl/src/math/i386/lrintl.c +0 -8
  1237. package/libc/musl/src/math/i386/rintl.c +0 -7
  1238. package/libc/musl/src/math/lrintl.c +0 -36
  1239. package/libc/musl/src/math/rintl.c +0 -29
  1240. package/libc/musl/src/math/s390x/rintl.c +0 -15
  1241. package/libc/musl/src/math/x32/lrintl.s +0 -7
  1242. package/libc/musl/src/math/x32/rintl.s +0 -6
  1243. package/libc/musl/src/math/x86_64/lrintl.c +0 -8
  1244. package/libc/musl/src/math/x86_64/rintl.c +0 -7
  1245. package/libc/musl/src/string/strdup.c +0 -10
  1246. package/libc/musl/src/string/strndup.c +0 -12
  1247. package/libc/musl/src/string/wcsdup.c +0 -10
  1248. package/libc/musl/src/thread/pthread_spin_destroy.c +0 -6
  1249. package/libc/musl/src/thread/pthread_spin_init.c +0 -6
  1250. package/libc/musl/src/thread/pthread_spin_lock.c +0 -8
  1251. package/libc/musl/src/thread/pthread_spin_trylock.c +0 -7
  1252. package/libc/musl/src/thread/pthread_spin_unlock.c +0 -7
  1253. package/libc/musl/src/unistd/dup2.c +0 -20
  1254. package/libc/musl/src/unistd/dup3.c +0 -26
  1255. package/libc/wasi/thread-stub/pthread_spin_lock.c +0 -8
  1256. package/libc/wasi/thread-stub/pthread_spin_trylock.c +0 -8
  1257. package/libc/wasi/thread-stub/pthread_spin_unlock.c +0 -7
  1258. package/libtsan/sanitizer_common/sanitizer_coverage_interface.inc +0 -43
  1259. 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
  }