@zigc/lib 0.17.0-dev.27 → 0.17.0-dev.296

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 (1103) hide show
  1. package/c/fcntl.zig +6 -1
  2. package/c/inttypes.zig +0 -10
  3. package/c/math.zig +52 -112
  4. package/c/pthread.zig +57 -0
  5. package/c/search.zig +1 -27
  6. package/c/stdlib/drand48.zig +0 -57
  7. package/c/stdlib.zig +31 -121
  8. package/c/string.zig +20 -7
  9. package/c/strings.zig +0 -38
  10. package/c/unistd.zig +27 -26
  11. package/c/wchar.zig +10 -0
  12. package/c.zig +2 -2
  13. package/compiler/aro/aro/CodeGen.zig +7 -8
  14. package/compiler/aro/aro/Compilation.zig +17 -17
  15. package/compiler/aro/aro/Driver.zig +14 -13
  16. package/compiler/aro/aro/Parser.zig +20 -15
  17. package/compiler/aro/aro/Pragma.zig +3 -2
  18. package/compiler/aro/aro/Preprocessor.zig +9 -6
  19. package/compiler/aro/aro/pragmas/message.zig +3 -2
  20. package/compiler/aro/aro/text_literal.zig +3 -2
  21. package/compiler/aro/assembly_backend/x86_64.zig +4 -4
  22. package/compiler/build_runner.zig +2 -4
  23. package/compiler/reduce/Walk.zig +8 -13
  24. package/compiler/resinator/compile.zig +1 -1
  25. package/compiler/resinator/cvtres.zig +4 -4
  26. package/compiler/resinator/errors.zig +7 -7
  27. package/compiler/resinator/ico.zig +4 -4
  28. package/compiler/resinator/parse.zig +2 -2
  29. package/compiler/resinator/res.zig +1 -1
  30. package/compiler/std-docs.zig +1 -1
  31. package/compiler/test_runner.zig +1 -1
  32. package/compiler/translate-c/MacroTranslator.zig +1 -1
  33. package/compiler/translate-c/Translator.zig +6 -2
  34. package/compiler/translate-c/ast.zig +16 -23
  35. package/compiler/translate-c/main.zig +1 -1
  36. package/compiler_rt/addf3.zig +1 -1
  37. package/compiler_rt/arm.zig +3 -3
  38. package/compiler_rt/atomics.zig +1 -1
  39. package/compiler_rt/comparef.zig +3 -3
  40. package/compiler_rt/cos.zig +1 -3
  41. package/compiler_rt/count0bits.zig +1 -1
  42. package/compiler_rt/divdf3.zig +2 -2
  43. package/compiler_rt/divsf3.zig +1 -1
  44. package/compiler_rt/divtf3.zig +1 -1
  45. package/compiler_rt/divxf3.zig +1 -1
  46. package/compiler_rt/exp.zig +0 -2
  47. package/compiler_rt/exp2.zig +0 -2
  48. package/compiler_rt/extendf.zig +5 -5
  49. package/compiler_rt/fabs.zig +1 -3
  50. package/compiler_rt/float_from_int.zig +3 -4
  51. package/compiler_rt/fma.zig +0 -2
  52. package/compiler_rt/fmax.zig +1 -3
  53. package/compiler_rt/fmin.zig +1 -3
  54. package/compiler_rt/fmod.zig +2 -4
  55. package/compiler_rt/limb64.zig +3 -2
  56. package/compiler_rt/log.zig +0 -2
  57. package/compiler_rt/log10.zig +0 -2
  58. package/compiler_rt/log2.zig +0 -2
  59. package/compiler_rt/mulf3.zig +2 -2
  60. package/compiler_rt/rem_pio2l.zig +1 -1
  61. package/compiler_rt/round.zig +0 -2
  62. package/compiler_rt/sin.zig +1 -3
  63. package/compiler_rt/sincos.zig +1 -3
  64. package/compiler_rt/sqrt.zig +0 -2
  65. package/compiler_rt/ssp.zig +2 -2
  66. package/compiler_rt/tan.zig +1 -3
  67. package/compiler_rt/trunc.zig +0 -2
  68. package/compiler_rt/truncf.zig +3 -3
  69. package/compiler_rt/trunctfhf2.zig +3 -0
  70. package/compiler_rt.zig +5 -26
  71. package/docs/wasm/Walk.zig +1 -3
  72. package/docs/wasm/html_render.zig +1 -2
  73. package/docs/wasm/markdown/Parser.zig +16 -20
  74. package/fuzzer.zig +2 -0
  75. package/include/__clang_spirv_builtins.h +12 -12
  76. package/include/__float_float.h +176 -0
  77. package/include/__float_header_macro.h +12 -0
  78. package/include/__float_infinity_nan.h +20 -0
  79. package/include/amo.h +131 -0
  80. package/include/amxavx512intrin.h +215 -1
  81. package/include/amxintrin.h +0 -2
  82. package/include/arm_acle.h +37 -27
  83. package/include/arm_neon.h +218 -82
  84. package/include/arm_sme.h +8 -8
  85. package/include/arm_sve.h +4162 -3782
  86. package/include/avx10_2_512bf16intrin.h +19 -12
  87. package/include/avx10_2_512convertintrin.h +1 -1
  88. package/include/avx10_2_512niintrin.h +31 -31
  89. package/include/avx10_2_512satcvtdsintrin.h +1 -1
  90. package/include/avx10_2bf16intrin.h +54 -45
  91. package/include/avx10_2convertintrin.h +2 -2
  92. package/include/avx10_2copyintrin.h +1 -1
  93. package/include/avx10_2niintrin.h +14 -14
  94. package/include/avx10_2satcvtdsintrin.h +2 -2
  95. package/include/avx2intrin.h +275 -377
  96. package/include/avx512bf16intrin.h +25 -16
  97. package/include/avx512bitalgintrin.h +19 -30
  98. package/include/avx512bwintrin.h +386 -505
  99. package/include/avx512cdintrin.h +42 -55
  100. package/include/avx512dqintrin.h +132 -161
  101. package/include/avx512fintrin.h +1015 -1424
  102. package/include/avx512fp16intrin.h +112 -110
  103. package/include/avx512ifmaintrin.h +32 -34
  104. package/include/avx512ifmavlintrin.h +73 -46
  105. package/include/avx512vbmi2intrin.h +43 -32
  106. package/include/avx512vbmiintrin.h +19 -27
  107. package/include/avx512vbmivlintrin.h +35 -49
  108. package/include/avx512vlbf16intrin.h +32 -22
  109. package/include/avx512vlbitalgintrin.h +37 -53
  110. package/include/avx512vlbwintrin.h +470 -573
  111. package/include/avx512vlcdintrin.h +74 -102
  112. package/include/avx512vldqintrin.h +110 -127
  113. package/include/avx512vlfp16intrin.h +130 -111
  114. package/include/avx512vlintrin.h +945 -1299
  115. package/include/avx512vlvbmi2intrin.h +78 -63
  116. package/include/avx512vlvnniintrin.h +21 -18
  117. package/include/avx512vlvp2intersectintrin.h +2 -2
  118. package/include/avx512vnniintrin.h +10 -10
  119. package/include/avx512vp2intersectintrin.h +1 -2
  120. package/include/avx512vpopcntdqintrin.h +8 -10
  121. package/include/avx512vpopcntdqvlintrin.h +17 -15
  122. package/include/avxifmaintrin.h +16 -0
  123. package/include/avxintrin.h +165 -241
  124. package/include/avxvnniint16intrin.h +118 -99
  125. package/include/avxvnniint8intrin.h +56 -32
  126. package/include/avxvnniintrin.h +16 -8
  127. package/include/cpuid.h +101 -4
  128. package/include/emmintrin.h +168 -168
  129. package/include/f16cintrin.h +23 -9
  130. package/include/float.h +16 -155
  131. package/include/fma4intrin.h +98 -96
  132. package/include/fmaintrin.h +96 -66
  133. package/include/gfniintrin.h +21 -16
  134. package/include/hexagon_types.h +23 -20
  135. package/include/hvx_hexagon_protos.h +649 -860
  136. package/include/immintrin.h +0 -12
  137. package/include/intrin.h +4 -0
  138. package/include/lasxintrin.h +113 -0
  139. package/include/llvm_libc_wrappers/assert.h +3 -5
  140. package/include/llvm_libc_wrappers/ctype.h +3 -115
  141. package/include/llvm_libc_wrappers/inttypes.h +3 -5
  142. package/include/llvm_libc_wrappers/stdio.h +10 -38
  143. package/include/llvm_libc_wrappers/stdlib.h +3 -24
  144. package/include/llvm_libc_wrappers/string.h +2 -70
  145. package/include/llvm_libc_wrappers/time.h +4 -10
  146. package/include/mmintrin.h +188 -257
  147. package/include/module.modulemap +23 -4
  148. package/include/movrs_avx10_2_512intrin.h +2 -2
  149. package/include/movrs_avx10_2intrin.h +4 -4
  150. package/include/pmmintrin.h +12 -24
  151. package/include/ptrauth.h +16 -2
  152. package/include/riscv_mips.h +34 -0
  153. package/include/riscv_nds.h +89 -0
  154. package/include/sifive_vector.h +58 -2
  155. package/include/sm4evexintrin.h +2 -2
  156. package/include/smmintrin.h +77 -59
  157. package/include/spirvintrin.h +194 -0
  158. package/include/stddefer.h +19 -0
  159. package/include/tmmintrin.h +116 -147
  160. package/include/vaesintrin.h +1 -2
  161. package/include/xmmintrin.h +44 -70
  162. package/include/xopintrin.h +20 -10
  163. package/libc/include/aarch64-linux-any/asm/hwcap.h +1 -0
  164. package/libc/include/aarch64-linux-any/asm/unistd_64.h +1 -0
  165. package/libc/include/any-linux-any/asm-generic/errno.h +2 -0
  166. package/libc/include/any-linux-any/asm-generic/unistd.h +4 -1
  167. package/libc/include/any-linux-any/drm/amdgpu_drm.h +20 -6
  168. package/libc/include/any-linux-any/drm/amdxdna_accel.h +8 -0
  169. package/libc/include/any-linux-any/drm/drm_fourcc.h +6 -6
  170. package/libc/include/any-linux-any/drm/panfrost_drm.h +75 -1
  171. package/libc/include/any-linux-any/drm/panthor_drm.h +154 -3
  172. package/libc/include/any-linux-any/drm/rocket_accel.h +74 -24
  173. package/libc/include/any-linux-any/drm/xe_drm.h +89 -6
  174. package/libc/include/any-linux-any/linux/android/binder.h +1 -1
  175. package/libc/include/any-linux-any/linux/bpf.h +28 -0
  176. package/libc/include/any-linux-any/linux/btrfs.h +1 -0
  177. package/libc/include/any-linux-any/linux/btrfs_tree.h +32 -2
  178. package/libc/include/any-linux-any/linux/dma-buf.h +1 -0
  179. package/libc/include/any-linux-any/linux/dpll.h +1 -0
  180. package/libc/include/any-linux-any/linux/elf.h +2 -0
  181. package/libc/include/any-linux-any/linux/ethtool.h +21 -5
  182. package/libc/include/any-linux-any/linux/fs.h +1 -0
  183. package/libc/include/any-linux-any/linux/hyperv.h +1 -1
  184. package/libc/include/any-linux-any/linux/idxd.h +134 -134
  185. package/libc/include/any-linux-any/linux/if_alg.h +1 -1
  186. package/libc/include/any-linux-any/linux/if_link.h +1 -0
  187. package/libc/include/any-linux-any/linux/input-event-codes.h +4 -0
  188. package/libc/include/any-linux-any/linux/io_uring/bpf_filter.h +68 -0
  189. package/libc/include/any-linux-any/linux/io_uring/query.h +5 -1
  190. package/libc/include/any-linux-any/linux/io_uring.h +33 -2
  191. package/libc/include/any-linux-any/linux/iommufd.h +39 -0
  192. package/libc/include/any-linux-any/linux/kfd_ioctl.h +13 -3
  193. package/libc/include/any-linux-any/linux/kfd_sysfs.h +2 -1
  194. package/libc/include/any-linux-any/linux/kvm.h +30 -6
  195. package/libc/include/any-linux-any/linux/landlock.h +22 -8
  196. package/libc/include/any-linux-any/linux/magic.h +1 -0
  197. package/libc/include/any-linux-any/linux/mempolicy.h +3 -0
  198. package/libc/include/any-linux-any/linux/mount.h +11 -2
  199. package/libc/include/any-linux-any/linux/mptcp_pm.h +1 -1
  200. package/libc/include/any-linux-any/linux/mshv.h +2 -0
  201. package/libc/include/any-linux-any/linux/netfilter_bridge.h +5 -4
  202. package/libc/include/any-linux-any/linux/netfilter_ipv4.h +4 -5
  203. package/libc/include/any-linux-any/linux/netfilter_ipv6.h +3 -4
  204. package/libc/include/any-linux-any/linux/nfs.h +1 -1
  205. package/libc/include/any-linux-any/linux/nfsd_netlink.h +1 -0
  206. package/libc/include/any-linux-any/linux/nilfs2_api.h +2 -2
  207. package/libc/include/any-linux-any/linux/nilfs2_ondisk.h +97 -66
  208. package/libc/include/any-linux-any/linux/nl80211.h +104 -3
  209. package/libc/include/any-linux-any/linux/pci.h +7 -0
  210. package/libc/include/any-linux-any/linux/pci_regs.h +65 -6
  211. package/libc/include/any-linux-any/linux/pcitest.h +1 -0
  212. package/libc/include/any-linux-any/linux/perf_event.h +24 -3
  213. package/libc/include/any-linux-any/linux/pkt_sched.h +1 -0
  214. package/libc/include/any-linux-any/linux/prctl.h +30 -0
  215. package/libc/include/any-linux-any/linux/rseq.h +62 -5
  216. package/libc/include/any-linux-any/linux/shm.h +0 -1
  217. package/libc/include/any-linux-any/linux/stddef.h +4 -0
  218. package/libc/include/any-linux-any/linux/sysctl.h +1 -2
  219. package/libc/include/any-linux-any/linux/taskstats.h +12 -1
  220. package/libc/include/any-linux-any/linux/tcp.h +23 -3
  221. package/libc/include/any-linux-any/linux/typelimits.h +8 -0
  222. package/libc/include/any-linux-any/linux/ublk_cmd.h +120 -1
  223. package/libc/include/any-linux-any/linux/v4l2-controls.h +63 -0
  224. package/libc/include/any-linux-any/linux/vbox_vmmdev_types.h +2 -2
  225. package/libc/include/any-linux-any/linux/vduse.h +80 -5
  226. package/libc/include/any-linux-any/linux/version.h +3 -3
  227. package/libc/include/any-linux-any/linux/vfio.h +4 -0
  228. package/libc/include/any-linux-any/linux/videodev2.h +3 -0
  229. package/libc/include/any-linux-any/linux/virtio_ring.h +1 -2
  230. package/libc/include/any-linux-any/linux/vmclock-abi.h +20 -0
  231. package/libc/include/any-linux-any/rdma/bnxt_re-abi.h +16 -0
  232. package/libc/include/any-linux-any/rdma/ib_user_ioctl_cmds.h +16 -0
  233. package/libc/include/any-linux-any/rdma/mana-abi.h +3 -0
  234. package/libc/include/any-linux-any/scsi/scsi_bsg_ufs.h +8 -9
  235. package/libc/include/any-linux-any/sound/sof/tokens.h +6 -0
  236. package/libc/include/arc-linux-any/asm/swab.h +0 -63
  237. package/libc/include/arc-linux-any/asm/unistd_32.h +1 -0
  238. package/libc/include/arm-linux-any/asm/ptrace.h +0 -9
  239. package/libc/include/arm-linux-any/asm/unistd-eabi.h +1 -0
  240. package/libc/include/arm-linux-any/asm/unistd-oabi.h +1 -0
  241. package/libc/include/csky-linux-any/asm/unistd_32.h +1 -0
  242. package/libc/include/hexagon-linux-any/asm/unistd_32.h +1 -0
  243. package/libc/include/loongarch-linux-any/asm/hwcap.h +1 -0
  244. package/libc/include/loongarch-linux-any/asm/kvm.h +1 -0
  245. package/libc/include/loongarch-linux-any/asm/kvm_para.h +1 -0
  246. package/libc/include/loongarch-linux-any/asm/unistd_32.h +2 -0
  247. package/libc/include/loongarch-linux-any/asm/unistd_64.h +2 -0
  248. package/libc/include/m68k-linux-any/asm/unistd_32.h +1 -0
  249. package/libc/include/mips-linux-any/asm/errno.h +2 -0
  250. package/libc/include/mips-linux-any/asm/unistd_n32.h +1 -0
  251. package/libc/include/mips-linux-any/asm/unistd_n64.h +1 -0
  252. package/libc/include/mips-linux-any/asm/unistd_o32.h +1 -0
  253. package/libc/include/powerpc-linux-any/asm/unistd_32.h +1 -0
  254. package/libc/include/powerpc-linux-any/asm/unistd_64.h +1 -0
  255. package/libc/include/riscv-linux-any/asm/hwprobe.h +4 -0
  256. package/libc/include/riscv-linux-any/asm/kvm.h +3 -0
  257. package/libc/include/riscv-linux-any/asm/ptrace.h +37 -0
  258. package/libc/include/riscv-linux-any/asm/sigcontext.h +1 -0
  259. package/libc/include/riscv-linux-any/asm/unistd_32.h +1 -0
  260. package/libc/include/riscv-linux-any/asm/unistd_64.h +1 -0
  261. package/libc/include/s390x-linux-any/asm/unistd_64.h +1 -0
  262. package/libc/include/sparc-linux-any/asm/errno.h +2 -0
  263. package/libc/include/sparc-linux-any/asm/ioctls.h +4 -4
  264. package/libc/include/sparc-linux-any/asm/unistd_32.h +2 -0
  265. package/libc/include/sparc-linux-any/asm/unistd_64.h +2 -0
  266. package/libc/include/x86-linux-any/asm/auxvec.h +0 -4
  267. package/libc/include/x86-linux-any/asm/kvm.h +13 -8
  268. package/libc/include/x86-linux-any/asm/svm.h +16 -16
  269. package/libc/include/x86-linux-any/asm/unistd_32.h +1 -0
  270. package/libc/include/x86-linux-any/asm/unistd_64.h +1 -0
  271. package/libc/include/x86-linux-any/asm/unistd_x32.h +1 -0
  272. package/libc/include/xtensa-linux-any/asm/unistd_32.h +1 -0
  273. package/libc/musl/arch/mipsn32/syscall_arch.h +35 -32
  274. package/libcxx/include/__algorithm/all_of.h +11 -5
  275. package/libcxx/include/__algorithm/comp.h +4 -0
  276. package/libcxx/include/__algorithm/copy.h +28 -147
  277. package/libcxx/include/__algorithm/copy_backward.h +9 -24
  278. package/libcxx/include/__algorithm/copy_n.h +50 -16
  279. package/libcxx/include/__algorithm/count.h +2 -2
  280. package/libcxx/include/__algorithm/equal.h +43 -55
  281. package/libcxx/include/__algorithm/fill.h +26 -8
  282. package/libcxx/include/__algorithm/fill_n.h +32 -46
  283. package/libcxx/include/__algorithm/find.h +96 -39
  284. package/libcxx/include/__algorithm/find_end.h +105 -0
  285. package/libcxx/include/__algorithm/for_each.h +18 -24
  286. package/libcxx/include/__algorithm/for_each_n.h +20 -47
  287. package/libcxx/include/__algorithm/for_each_n_segment.h +1 -1
  288. package/libcxx/include/__algorithm/for_each_segment.h +26 -0
  289. package/libcxx/include/__algorithm/generate.h +4 -2
  290. package/libcxx/include/__algorithm/generate_n.h +19 -6
  291. package/libcxx/include/__algorithm/is_permutation.h +4 -4
  292. package/libcxx/include/__algorithm/iterator_operations.h +3 -0
  293. package/libcxx/include/__algorithm/lexicographical_compare.h +2 -2
  294. package/libcxx/include/__algorithm/lexicographical_compare_three_way.h +6 -6
  295. package/libcxx/include/__algorithm/make_heap.h +16 -4
  296. package/libcxx/include/__algorithm/mismatch.h +2 -2
  297. package/libcxx/include/__algorithm/move.h +8 -19
  298. package/libcxx/include/__algorithm/move_backward.h +9 -24
  299. package/libcxx/include/__algorithm/none_of.h +4 -4
  300. package/libcxx/include/__algorithm/partial_sort.h +1 -1
  301. package/libcxx/include/__algorithm/partial_sort_copy.h +1 -1
  302. package/libcxx/include/__algorithm/pstl.h +9 -9
  303. package/libcxx/include/__algorithm/radix_sort.h +27 -25
  304. package/libcxx/include/__algorithm/ranges_copy_n.h +3 -26
  305. package/libcxx/include/__algorithm/ranges_equal.h +17 -26
  306. package/libcxx/include/__algorithm/ranges_fill.h +7 -6
  307. package/libcxx/include/__algorithm/ranges_for_each.h +9 -1
  308. package/libcxx/include/__algorithm/ranges_generate_n.h +2 -6
  309. package/libcxx/include/__algorithm/ranges_search_n.h +2 -2
  310. package/libcxx/include/__algorithm/rotate.h +27 -44
  311. package/libcxx/include/__algorithm/search_n.h +49 -37
  312. package/libcxx/include/__algorithm/sift_down.h +19 -18
  313. package/libcxx/include/__algorithm/simd_utils.h +33 -4
  314. package/libcxx/include/__algorithm/specialized_algorithms.h +54 -0
  315. package/libcxx/include/__algorithm/stable_sort.h +1 -1
  316. package/libcxx/include/__assertion_handler +31 -4
  317. package/libcxx/include/__atomic/atomic.h +36 -60
  318. package/libcxx/include/__atomic/atomic_flag.h +19 -37
  319. package/libcxx/include/__atomic/atomic_ref.h +29 -12
  320. package/libcxx/include/__atomic/atomic_sync.h +127 -55
  321. package/libcxx/include/__atomic/atomic_sync_timed.h +144 -0
  322. package/libcxx/include/__atomic/atomic_waitable_traits.h +103 -0
  323. package/libcxx/include/__atomic/contention_t.h +27 -3
  324. package/libcxx/include/__atomic/floating_point_helper.h +55 -0
  325. package/libcxx/include/__bit/countl.h +1 -2
  326. package/libcxx/include/__bit/countr.h +1 -2
  327. package/libcxx/include/__bit/has_single_bit.h +1 -1
  328. package/libcxx/include/__bit/popcount.h +0 -1
  329. package/libcxx/include/__bit/rotate.h +15 -26
  330. package/libcxx/include/__bit_reference +207 -18
  331. package/libcxx/include/__charconv/from_chars_integral.h +1 -1
  332. package/libcxx/include/__charconv/from_chars_result.h +1 -1
  333. package/libcxx/include/__charconv/to_chars_integral.h +1 -0
  334. package/libcxx/include/__charconv/to_chars_result.h +1 -1
  335. package/libcxx/include/__charconv/traits.h +3 -24
  336. package/libcxx/include/__chrono/day.h +11 -0
  337. package/libcxx/include/__chrono/duration.h +58 -33
  338. package/libcxx/include/__chrono/file_clock.h +4 -2
  339. package/libcxx/include/__chrono/is_clock.h +72 -0
  340. package/libcxx/include/__chrono/leap_second.h +13 -0
  341. package/libcxx/include/__chrono/month.h +13 -0
  342. package/libcxx/include/__chrono/month_weekday.h +22 -0
  343. package/libcxx/include/__chrono/monthday.h +20 -0
  344. package/libcxx/include/__chrono/steady_clock.h +1 -1
  345. package/libcxx/include/__chrono/system_clock.h +3 -3
  346. package/libcxx/include/__chrono/time_point.h +37 -13
  347. package/libcxx/include/__chrono/weekday.h +25 -0
  348. package/libcxx/include/__chrono/year.h +11 -0
  349. package/libcxx/include/__chrono/year_month.h +13 -0
  350. package/libcxx/include/__chrono/year_month_day.h +23 -0
  351. package/libcxx/include/__chrono/year_month_weekday.h +26 -0
  352. package/libcxx/include/__chrono/zoned_time.h +16 -0
  353. package/libcxx/include/__compare/is_eq.h +6 -6
  354. package/libcxx/include/__compare/strong_order.h +12 -30
  355. package/libcxx/include/__compare/three_way_comparable.h +2 -2
  356. package/libcxx/include/__concepts/comparison_common_type.h +40 -0
  357. package/libcxx/include/__concepts/equality_comparable.h +2 -1
  358. package/libcxx/include/__condition_variable/condition_variable.h +1 -1
  359. package/libcxx/include/__config +63 -280
  360. package/libcxx/include/__configuration/abi.h +14 -24
  361. package/libcxx/include/__configuration/availability.h +65 -118
  362. package/libcxx/include/__configuration/compiler.h +6 -6
  363. package/libcxx/include/__configuration/experimental.h +38 -0
  364. package/libcxx/include/__configuration/hardening.h +215 -0
  365. package/libcxx/include/__configuration/language.h +3 -0
  366. package/libcxx/include/__configuration/platform.h +9 -16
  367. package/libcxx/include/__coroutine/coroutine_handle.h +9 -9
  368. package/libcxx/include/__coroutine/noop_coroutine_handle.h +11 -13
  369. package/libcxx/include/__debug_utils/strict_weak_ordering_check.h +1 -1
  370. package/libcxx/include/__exception/exception.h +6 -4
  371. package/libcxx/include/__exception/exception_ptr.h +27 -5
  372. package/libcxx/include/__exception/nested_exception.h +2 -2
  373. package/libcxx/include/__exception/operations.h +5 -5
  374. package/libcxx/include/__expected/bad_expected_access.h +8 -6
  375. package/libcxx/include/__expected/expected.h +62 -64
  376. package/libcxx/include/__expected/unexpected.h +4 -4
  377. package/libcxx/include/__filesystem/copy_options.h +4 -4
  378. package/libcxx/include/__filesystem/directory_entry.h +37 -33
  379. package/libcxx/include/__filesystem/directory_iterator.h +9 -11
  380. package/libcxx/include/__filesystem/directory_options.h +7 -4
  381. package/libcxx/include/__filesystem/file_status.h +3 -3
  382. package/libcxx/include/__filesystem/filesystem_error.h +9 -10
  383. package/libcxx/include/__filesystem/operations.h +97 -66
  384. package/libcxx/include/__filesystem/path.h +68 -64
  385. package/libcxx/include/__filesystem/path_iterator.h +1 -3
  386. package/libcxx/include/__filesystem/perm_options.h +4 -4
  387. package/libcxx/include/__filesystem/perms.h +4 -4
  388. package/libcxx/include/__filesystem/recursive_directory_iterator.h +9 -14
  389. package/libcxx/include/__filesystem/space_info.h +1 -1
  390. package/libcxx/include/__filesystem/u8path.h +12 -14
  391. package/libcxx/include/__flat_map/flat_map.h +88 -71
  392. package/libcxx/include/__flat_map/flat_multimap.h +251 -172
  393. package/libcxx/include/__flat_map/key_value_iterator.h +0 -1
  394. package/libcxx/include/__flat_map/utils.h +1 -0
  395. package/libcxx/include/__flat_set/flat_multiset.h +211 -143
  396. package/libcxx/include/__flat_set/flat_set.h +86 -68
  397. package/libcxx/include/__format/concepts.h +0 -14
  398. package/libcxx/include/__format/extended_grapheme_cluster_table.h +3 -2
  399. package/libcxx/include/__format/fmt_pair_like.h +42 -0
  400. package/libcxx/include/__format/format_arg.h +7 -10
  401. package/libcxx/include/__format/format_args.h +1 -1
  402. package/libcxx/include/__format/format_context.h +5 -5
  403. package/libcxx/include/__format/format_parse_context.h +2 -2
  404. package/libcxx/include/__format/formatter_output.h +30 -34
  405. package/libcxx/include/__format/indic_conjunct_break_table.h +3 -2
  406. package/libcxx/include/__format/range_default_formatter.h +2 -41
  407. package/libcxx/include/__format/range_format.h +71 -0
  408. package/libcxx/include/__format/range_formatter.h +1 -0
  409. package/libcxx/include/__format/width_estimation_table.h +4 -2
  410. package/libcxx/include/__functional/bind.h +10 -15
  411. package/libcxx/include/__functional/bind_back.h +1 -1
  412. package/libcxx/include/__functional/bind_front.h +1 -1
  413. package/libcxx/include/__functional/function.h +57 -75
  414. package/libcxx/include/__functional/hash.h +1 -10
  415. package/libcxx/include/__functional/identity.h +1 -1
  416. package/libcxx/include/__functional/is_transparent.h +8 -0
  417. package/libcxx/include/__functional/mem_fn.h +2 -1
  418. package/libcxx/include/__functional/operations.h +18 -0
  419. package/libcxx/include/__functional/ranges_operations.h +7 -0
  420. package/libcxx/include/__functional/reference_wrapper.h +7 -5
  421. package/libcxx/include/__functional/weak_result_type.h +14 -28
  422. package/libcxx/include/__fwd/ios.h +1 -1
  423. package/libcxx/include/__fwd/tuple.h +14 -0
  424. package/libcxx/include/__hash_table +371 -357
  425. package/libcxx/include/__ios/fpos.h +4 -4
  426. package/libcxx/include/__iterator/back_insert_iterator.h +1 -7
  427. package/libcxx/include/__iterator/bounded_iter.h +7 -8
  428. package/libcxx/include/__iterator/concepts.h +6 -9
  429. package/libcxx/include/__iterator/cpp17_iterator_concepts.h +13 -12
  430. package/libcxx/include/__iterator/distance.h +40 -18
  431. package/libcxx/include/__iterator/front_insert_iterator.h +1 -7
  432. package/libcxx/include/__iterator/insert_iterator.h +1 -7
  433. package/libcxx/include/__iterator/istream_iterator.h +6 -7
  434. package/libcxx/include/__iterator/istreambuf_iterator.h +6 -7
  435. package/libcxx/include/__iterator/iter_move.h +1 -1
  436. package/libcxx/include/__iterator/iterator.h +13 -0
  437. package/libcxx/include/__iterator/iterator_traits.h +13 -14
  438. package/libcxx/include/__iterator/ostream_iterator.h +1 -7
  439. package/libcxx/include/__iterator/ostreambuf_iterator.h +1 -7
  440. package/libcxx/include/__iterator/reverse_iterator.h +8 -13
  441. package/libcxx/include/__iterator/segmented_iterator.h +3 -8
  442. package/libcxx/include/__iterator/static_bounded_iter.h +3 -3
  443. package/libcxx/include/__iterator/wrap_iter.h +8 -6
  444. package/libcxx/include/__locale +3 -10
  445. package/libcxx/include/__locale_dir/locale_base_api/bsd_locale_fallbacks.h +0 -10
  446. package/libcxx/include/__locale_dir/locale_base_api.h +5 -28
  447. package/libcxx/include/__locale_dir/messages.h +1 -1
  448. package/libcxx/include/__locale_dir/money.h +2 -2
  449. package/libcxx/include/__locale_dir/num.h +190 -243
  450. package/libcxx/include/__locale_dir/pad_and_output.h +5 -6
  451. package/libcxx/include/__locale_dir/support/bsd_like.h +0 -20
  452. package/libcxx/include/__locale_dir/support/fuchsia.h +0 -7
  453. package/libcxx/include/__locale_dir/support/linux.h +0 -37
  454. package/libcxx/include/__locale_dir/support/netbsd.h +0 -2
  455. package/libcxx/include/__locale_dir/support/newlib.h +243 -0
  456. package/libcxx/include/__locale_dir/support/no_locale/characters.h +0 -4
  457. package/libcxx/include/__locale_dir/support/no_locale/strtonum.h +0 -9
  458. package/libcxx/include/__locale_dir/support/windows.h +0 -29
  459. package/libcxx/include/__locale_dir/time.h +3 -7
  460. package/libcxx/include/__math/hypot.h +1 -1
  461. package/libcxx/include/__math/logarithms.h +1 -1
  462. package/libcxx/include/__math/traits.h +80 -11
  463. package/libcxx/include/__mdspan/extents.h +7 -4
  464. package/libcxx/include/__mdspan/layout_stride.h +4 -5
  465. package/libcxx/include/__mdspan/mdspan.h +29 -23
  466. package/libcxx/include/__memory/addressof.h +7 -5
  467. package/libcxx/include/__memory/align.h +18 -1
  468. package/libcxx/include/__memory/allocate_at_least.h +15 -10
  469. package/libcxx/include/__memory/allocator.h +14 -26
  470. package/libcxx/include/__memory/allocator_traits.h +6 -4
  471. package/libcxx/include/__memory/compressed_pair.h +15 -9
  472. package/libcxx/include/__memory/construct_at.h +12 -23
  473. package/libcxx/include/__memory/inout_ptr.h +1 -1
  474. package/libcxx/include/__memory/is_sufficiently_aligned.h +1 -1
  475. package/libcxx/include/__memory/out_ptr.h +1 -1
  476. package/libcxx/include/__memory/pointer_traits.h +1 -1
  477. package/libcxx/include/__memory/raw_storage_iterator.h +3 -9
  478. package/libcxx/include/__memory/shared_count.h +9 -30
  479. package/libcxx/include/__memory/shared_ptr.h +100 -145
  480. package/libcxx/include/__memory/temp_value.h +1 -2
  481. package/libcxx/include/__memory/uninitialized_algorithms.h +44 -115
  482. package/libcxx/include/__memory/unique_ptr.h +14 -16
  483. package/libcxx/include/__memory/uses_allocator_construction.h +1 -0
  484. package/libcxx/include/__memory_resource/memory_resource.h +4 -2
  485. package/libcxx/include/__memory_resource/monotonic_buffer_resource.h +1 -1
  486. package/libcxx/include/__memory_resource/polymorphic_allocator.h +13 -8
  487. package/libcxx/include/__memory_resource/pool_options.h +1 -1
  488. package/libcxx/include/__memory_resource/synchronized_pool_resource.h +4 -2
  489. package/libcxx/include/__memory_resource/unsynchronized_pool_resource.h +1 -1
  490. package/libcxx/include/__mutex/mutex.h +2 -2
  491. package/libcxx/include/__mutex/once_flag.h +14 -11
  492. package/libcxx/include/__mutex/tag_types.h +3 -3
  493. package/libcxx/include/__mutex/unique_lock.h +8 -7
  494. package/libcxx/include/__new/align_val_t.h +6 -0
  495. package/libcxx/include/__new/allocate.h +1 -2
  496. package/libcxx/include/__new/exceptions.h +8 -2
  497. package/libcxx/include/__new/global_new_delete.h +4 -11
  498. package/libcxx/include/__new/interference_size.h +0 -4
  499. package/libcxx/include/__new/launder.h +3 -5
  500. package/libcxx/include/__new/nothrow_t.h +1 -1
  501. package/libcxx/include/__numeric/gcd_lcm.h +24 -34
  502. package/libcxx/include/__numeric/midpoint.h +9 -14
  503. package/libcxx/include/__numeric/pstl.h +2 -2
  504. package/libcxx/include/__numeric/saturation_arithmetic.h +13 -5
  505. package/libcxx/include/__ostream/basic_ostream.h +8 -8
  506. package/libcxx/include/__pstl/backends/default.h +14 -14
  507. package/libcxx/include/__pstl/backends/libdispatch.h +2 -2
  508. package/libcxx/include/__pstl/cpu_algos/find_if.h +1 -1
  509. package/libcxx/include/__pstl/cpu_algos/transform.h +5 -6
  510. package/libcxx/include/__pstl/cpu_algos/transform_reduce.h +5 -4
  511. package/libcxx/include/__random/binomial_distribution.h +10 -4
  512. package/libcxx/include/__random/mersenne_twister_engine.h +50 -154
  513. package/libcxx/include/__random/piecewise_constant_distribution.h +3 -2
  514. package/libcxx/include/__random/piecewise_linear_distribution.h +3 -2
  515. package/libcxx/include/__ranges/adjacent_transform_view.h +406 -0
  516. package/libcxx/include/__ranges/adjacent_view.h +419 -0
  517. package/libcxx/include/__ranges/as_rvalue_view.h +9 -9
  518. package/libcxx/include/__ranges/chunk_by_view.h +6 -6
  519. package/libcxx/include/__ranges/common_view.h +7 -7
  520. package/libcxx/include/__ranges/drop_view.h +8 -8
  521. package/libcxx/include/__ranges/drop_while_view.h +5 -5
  522. package/libcxx/include/__ranges/elements_of.h +49 -0
  523. package/libcxx/include/__ranges/empty_view.h +5 -5
  524. package/libcxx/include/__ranges/filter_view.h +10 -10
  525. package/libcxx/include/__ranges/iota_view.h +41 -22
  526. package/libcxx/include/__ranges/owning_view.h +15 -15
  527. package/libcxx/include/__ranges/ref_view.h +6 -6
  528. package/libcxx/include/__ranges/repeat_view.h +17 -10
  529. package/libcxx/include/__ranges/single_view.h +8 -8
  530. package/libcxx/include/__ranges/take_view.h +9 -9
  531. package/libcxx/include/__ranges/transform_view.h +1 -2
  532. package/libcxx/include/__ranges/view_interface.h +10 -10
  533. package/libcxx/include/__ranges/zip_transform_view.h +357 -0
  534. package/libcxx/include/__ranges/zip_view.h +20 -20
  535. package/libcxx/include/__split_buffer +612 -240
  536. package/libcxx/include/__stop_token/atomic_unique_lock.h +1 -1
  537. package/libcxx/include/__stop_token/stop_callback.h +2 -2
  538. package/libcxx/include/__stop_token/stop_source.h +1 -1
  539. package/libcxx/include/__stop_token/stop_state.h +4 -4
  540. package/libcxx/include/__stop_token/stop_token.h +1 -1
  541. package/libcxx/include/__string/char_traits.h +51 -31
  542. package/libcxx/include/__string/constexpr_c_functions.h +5 -5
  543. package/libcxx/include/__support/xlocale/__strtonum_fallback.h +0 -8
  544. package/libcxx/include/__system_error/error_category.h +8 -8
  545. package/libcxx/include/__system_error/error_code.h +5 -5
  546. package/libcxx/include/__system_error/error_condition.h +4 -4
  547. package/libcxx/include/__system_error/system_error.h +1 -1
  548. package/libcxx/include/__thread/id.h +1 -1
  549. package/libcxx/include/__thread/jthread.h +1 -1
  550. package/libcxx/include/__thread/poll_with_backoff.h +27 -8
  551. package/libcxx/include/__thread/support/c11.h +8 -8
  552. package/libcxx/include/__thread/support/pthread.h +8 -8
  553. package/libcxx/include/__thread/support/windows.h +8 -8
  554. package/libcxx/include/__thread/thread.h +13 -8
  555. package/libcxx/include/__thread/timed_backoff_policy.h +3 -2
  556. package/libcxx/include/__tree +849 -701
  557. package/libcxx/include/__tuple/sfinae_helpers.h +1 -44
  558. package/libcxx/include/__tuple/tuple_element.h +0 -12
  559. package/libcxx/include/__tuple/tuple_size.h +0 -4
  560. package/libcxx/include/__tuple/tuple_transform.h +45 -0
  561. package/libcxx/include/__type_traits/aligned_storage.h +13 -40
  562. package/libcxx/include/__type_traits/desugars_to.h +4 -0
  563. package/libcxx/include/__type_traits/invoke.h +8 -0
  564. package/libcxx/include/__type_traits/is_allocator.h +6 -7
  565. package/libcxx/include/__type_traits/is_array.h +26 -0
  566. package/libcxx/include/__type_traits/is_equality_comparable.h +16 -21
  567. package/libcxx/include/__type_traits/is_final.h +1 -1
  568. package/libcxx/include/__type_traits/is_floating_point.h +7 -6
  569. package/libcxx/include/__type_traits/is_generic_transparent_comparator.h +30 -0
  570. package/libcxx/include/__type_traits/is_specialization.h +2 -6
  571. package/libcxx/include/__type_traits/is_within_lifetime.h +29 -0
  572. package/libcxx/include/__type_traits/make_transparent.h +52 -0
  573. package/libcxx/include/__type_traits/reference_constructs_from_temporary.h +1 -7
  574. package/libcxx/include/__type_traits/reference_converts_from_temporary.h +1 -1
  575. package/libcxx/include/__utility/cmp.h +19 -7
  576. package/libcxx/include/__utility/default_three_way_comparator.h +70 -0
  577. package/libcxx/include/__utility/in_place.h +1 -1
  578. package/libcxx/include/__utility/integer_sequence.h +56 -41
  579. package/libcxx/include/__utility/lazy_synth_three_way_comparator.h +120 -0
  580. package/libcxx/include/__utility/pair.h +22 -25
  581. package/libcxx/include/__utility/scope_guard.h +2 -0
  582. package/libcxx/include/__utility/try_key_extraction.h +114 -0
  583. package/libcxx/include/__vector/vector.h +187 -160
  584. package/libcxx/include/__vector/vector_bool.h +76 -83
  585. package/libcxx/include/any +118 -155
  586. package/libcxx/include/array +88 -56
  587. package/libcxx/include/atomic +2 -0
  588. package/libcxx/include/barrier +20 -24
  589. package/libcxx/include/bitset +49 -30
  590. package/libcxx/include/ccomplex +3 -11
  591. package/libcxx/include/chrono +47 -0
  592. package/libcxx/include/ciso646 +3 -6
  593. package/libcxx/include/complex +77 -65
  594. package/libcxx/include/complex.h +10 -10
  595. package/libcxx/include/condition_variable +3 -3
  596. package/libcxx/include/cstdalign +3 -10
  597. package/libcxx/include/cstdbool +3 -10
  598. package/libcxx/include/ctgmath +2 -11
  599. package/libcxx/include/ctype.h +24 -24
  600. package/libcxx/include/cwchar +2 -2
  601. package/libcxx/include/deque +109 -225
  602. package/libcxx/include/errno.h +269 -269
  603. package/libcxx/include/exception +4 -1
  604. package/libcxx/include/ext/hash_map +7 -48
  605. package/libcxx/include/ext/hash_set +2 -8
  606. package/libcxx/include/fenv.h +43 -43
  607. package/libcxx/include/flat_map +663 -11
  608. package/libcxx/include/flat_set +543 -8
  609. package/libcxx/include/float.h +16 -16
  610. package/libcxx/include/forward_list +33 -53
  611. package/libcxx/include/fstream +57 -42
  612. package/libcxx/include/future +41 -51
  613. package/libcxx/include/initializer_list +9 -3
  614. package/libcxx/include/inttypes.h +16 -16
  615. package/libcxx/include/ios +28 -28
  616. package/libcxx/include/istream +19 -13
  617. package/libcxx/include/iterator +10 -0
  618. package/libcxx/include/latch +7 -5
  619. package/libcxx/include/limits +4 -4
  620. package/libcxx/include/list +61 -79
  621. package/libcxx/include/map +386 -274
  622. package/libcxx/include/math.h +19 -0
  623. package/libcxx/include/mdspan +1 -5
  624. package/libcxx/include/mutex +29 -19
  625. package/libcxx/include/optional +644 -149
  626. package/libcxx/include/print +9 -5
  627. package/libcxx/include/queue +39 -37
  628. package/libcxx/include/ranges +48 -0
  629. package/libcxx/include/regex +33 -31
  630. package/libcxx/include/scoped_allocator +16 -11
  631. package/libcxx/include/semaphore +15 -18
  632. package/libcxx/include/set +220 -192
  633. package/libcxx/include/shared_mutex +3 -8
  634. package/libcxx/include/span +53 -37
  635. package/libcxx/include/sstream +34 -28
  636. package/libcxx/include/stack +13 -15
  637. package/libcxx/include/stddef.h +10 -10
  638. package/libcxx/include/stdexcept +2 -2
  639. package/libcxx/include/stdio.h +20 -21
  640. package/libcxx/include/streambuf +59 -19
  641. package/libcxx/include/string +574 -573
  642. package/libcxx/include/string_view +113 -89
  643. package/libcxx/include/strstream +10 -10
  644. package/libcxx/include/syncstream +4 -4
  645. package/libcxx/include/tgmath.h +12 -12
  646. package/libcxx/include/tuple +242 -212
  647. package/libcxx/include/type_traits +8 -2
  648. package/libcxx/include/typeindex +5 -3
  649. package/libcxx/include/typeinfo +92 -89
  650. package/libcxx/include/unordered_map +179 -304
  651. package/libcxx/include/unordered_set +168 -195
  652. package/libcxx/include/utility +12 -0
  653. package/libcxx/include/valarray +106 -161
  654. package/libcxx/include/variant +25 -33
  655. package/libcxx/include/version +41 -24
  656. package/libcxx/include/wctype.h +29 -29
  657. package/libcxx/libc/hdr/errno_macros.h +3 -1
  658. package/libcxx/libc/hdr/stdint_proxy.h +18 -0
  659. package/libcxx/libc/hdr/types/wchar_t.h +23 -0
  660. package/libcxx/libc/hdr/wchar_overlay.h +69 -0
  661. package/libcxx/libc/include/llvm-libc-macros/cfloat128-macros.h +41 -0
  662. package/libcxx/libc/include/llvm-libc-macros/cfloat16-macros.h +20 -0
  663. package/libcxx/libc/include/llvm-libc-macros/wchar-macros.h +18 -0
  664. package/libcxx/libc/include/llvm-libc-types/cfloat128.h +11 -28
  665. package/libcxx/libc/include/llvm-libc-types/cfloat16.h +4 -7
  666. package/libcxx/libc/include/llvm-libc-types/wint_t.h +14 -0
  667. package/libcxx/libc/shared/libc_common.h +5 -0
  668. package/libcxx/libc/src/__support/CPP/bit.h +50 -12
  669. package/libcxx/libc/src/__support/CPP/type_traits/is_complex.h +7 -0
  670. package/libcxx/libc/src/__support/CPP/type_traits/is_destructible.h +2 -1
  671. package/libcxx/libc/src/__support/CPP/type_traits/is_unsigned.h +6 -0
  672. package/libcxx/libc/src/__support/CPP/utility/integer_sequence.h +10 -0
  673. package/libcxx/libc/src/__support/FPUtil/FPBits.h +6 -7
  674. package/libcxx/libc/src/__support/FPUtil/rounding_mode.h +50 -4
  675. package/libcxx/libc/src/__support/big_int.h +14 -14
  676. package/libcxx/libc/src/__support/common.h +3 -2
  677. package/libcxx/libc/src/__support/ctype_utils.h +19 -12
  678. package/libcxx/libc/src/__support/detailed_powers_of_ten.h +1 -2
  679. package/libcxx/libc/src/__support/high_precision_decimal.h +33 -14
  680. package/libcxx/libc/src/__support/libc_assert.h +2 -0
  681. package/libcxx/libc/src/__support/macros/attributes.h +44 -1
  682. package/libcxx/libc/src/__support/macros/config.h +23 -0
  683. package/libcxx/libc/src/__support/macros/null_check.h +1 -2
  684. package/libcxx/libc/src/__support/macros/optimization.h +3 -0
  685. package/libcxx/libc/src/__support/macros/properties/architectures.h +5 -1
  686. package/libcxx/libc/src/__support/macros/properties/compiler.h +8 -3
  687. package/libcxx/libc/src/__support/macros/properties/cpu_features.h +17 -1
  688. package/libcxx/libc/src/__support/macros/properties/types.h +2 -3
  689. package/libcxx/libc/src/__support/macros/sanitizer.h +0 -10
  690. package/libcxx/libc/src/__support/math_extras.h +20 -4
  691. package/libcxx/libc/src/__support/str_to_float.h +98 -125
  692. package/libcxx/libc/src/__support/str_to_integer.h +39 -27
  693. package/libcxx/libc/src/__support/wctype_utils.h +588 -0
  694. package/libcxx/src/any.cpp +4 -0
  695. package/libcxx/src/atomic.cpp +365 -80
  696. package/libcxx/src/barrier.cpp +4 -3
  697. package/libcxx/src/charconv.cpp +6 -3
  698. package/libcxx/src/condition_variable_destructor.cpp +1 -1
  699. package/libcxx/src/error_category.cpp +3 -1
  700. package/libcxx/src/exception.cpp +2 -10
  701. package/libcxx/src/experimental/time_zone.cpp +1 -1
  702. package/libcxx/src/experimental/tzdb.cpp +4 -1
  703. package/libcxx/src/filesystem/error.h +4 -22
  704. package/libcxx/src/filesystem/format_string.h +9 -18
  705. package/libcxx/src/filesystem/int128_builtins.cpp +2 -0
  706. package/libcxx/src/filesystem/operations.cpp +2 -9
  707. package/libcxx/src/filesystem/path.cpp +3 -1
  708. package/libcxx/src/include/aligned_alloc.h +65 -0
  709. package/libcxx/src/include/config_elast.h +1 -1
  710. package/libcxx/src/include/from_chars_floating_point.h +11 -7
  711. package/libcxx/src/include/overridable_function.h +8 -10
  712. package/libcxx/src/iostream.cpp +56 -37
  713. package/libcxx/src/locale.cpp +213 -196
  714. package/libcxx/src/memory.cpp +12 -14
  715. package/libcxx/src/mutex_destructor.cpp +1 -1
  716. package/libcxx/src/new.cpp +5 -5
  717. package/libcxx/src/optional.cpp +4 -0
  718. package/libcxx/src/print.cpp +9 -1
  719. package/libcxx/src/random.cpp +0 -26
  720. package/libcxx/src/string.cpp +10 -25
  721. package/libcxx/src/support/runtime/exception_fallback.ipp +2 -0
  722. package/libcxx/src/support/runtime/exception_glibcxx.ipp +3 -0
  723. package/libcxx/src/support/runtime/exception_libcxxabi.ipp +6 -2
  724. package/libcxx/src/support/runtime/exception_libcxxrt.ipp +2 -0
  725. package/libcxx/src/support/runtime/exception_msvc.ipp +2 -0
  726. package/libcxx/src/support/runtime/exception_pointer_cxxabi.ipp +9 -10
  727. package/libcxx/src/support/runtime/exception_pointer_glibcxx.ipp +2 -0
  728. package/libcxx/src/support/runtime/exception_pointer_msvc.ipp +1 -0
  729. package/libcxx/src/support/runtime/exception_pointer_unimplemented.ipp +1 -0
  730. package/libcxx/src/support/win32/locale_win32.cpp +1 -1
  731. package/libcxx/src/system_error.cpp +2 -0
  732. package/libcxx/src/thread.cpp +1 -3
  733. package/libcxx/src/valarray.cpp +1 -2
  734. package/libcxx/src/vector.cpp +2 -2
  735. package/libcxxabi/include/__cxxabi_config.h +42 -23
  736. package/libcxxabi/src/cxa_exception.cpp +4 -2
  737. package/libcxxabi/src/cxa_exception.h +16 -14
  738. package/libcxxabi/src/cxa_personality.cpp +126 -9
  739. package/libcxxabi/src/cxa_thread_atexit.cpp +2 -1
  740. package/libcxxabi/src/demangle/DemangleConfig.h +4 -0
  741. package/libcxxabi/src/demangle/ItaniumDemangle.h +9 -6
  742. package/libcxxabi/src/demangle/Utility.h +21 -7
  743. package/libcxxabi/src/fallback_malloc.cpp +1 -1
  744. package/libcxxabi/src/private_typeinfo.cpp +6 -0
  745. package/libcxxabi/src/stdlib_new_delete.cpp +5 -5
  746. package/libtsan/LICENSE.TXT +311 -0
  747. package/libtsan/builtins/assembly.h +41 -8
  748. package/libtsan/interception/interception_win.cpp +4 -0
  749. package/libtsan/sanitizer_common/sanitizer_allocator_primary32.h +1 -0
  750. package/libtsan/sanitizer_common/sanitizer_allocator_primary64.h +18 -0
  751. package/libtsan/sanitizer_common/sanitizer_common.h +15 -2
  752. package/libtsan/sanitizer_common/sanitizer_common_interceptors.inc +30 -4
  753. package/libtsan/sanitizer_common/sanitizer_common_interceptors_ioctl.inc +4 -0
  754. package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S +2 -1
  755. package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S +2 -0
  756. package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S +2 -0
  757. package/libtsan/sanitizer_common/sanitizer_common_syscalls.inc +18 -0
  758. package/libtsan/sanitizer_common/sanitizer_file.cpp +40 -12
  759. package/libtsan/sanitizer_common/sanitizer_file.h +3 -0
  760. package/libtsan/sanitizer_common/sanitizer_flags.inc +7 -0
  761. package/libtsan/sanitizer_common/sanitizer_fuchsia.cpp +30 -3
  762. package/libtsan/sanitizer_common/sanitizer_haiku.cpp +2 -2
  763. package/libtsan/sanitizer_common/sanitizer_internal_defs.h +1 -1
  764. package/libtsan/sanitizer_common/sanitizer_libc.cpp +8 -0
  765. package/libtsan/sanitizer_common/sanitizer_libc.h +1 -0
  766. package/libtsan/sanitizer_common/sanitizer_linux.cpp +15 -7
  767. package/libtsan/sanitizer_common/sanitizer_linux.h +3 -3
  768. package/libtsan/sanitizer_common/sanitizer_linux_libcdep.cpp +1 -0
  769. package/libtsan/sanitizer_common/sanitizer_mac.cpp +255 -104
  770. package/libtsan/sanitizer_common/sanitizer_mac.h +5 -0
  771. package/libtsan/sanitizer_common/sanitizer_netbsd.cpp +2 -2
  772. package/libtsan/sanitizer_common/sanitizer_platform.h +27 -1
  773. package/libtsan/sanitizer_common/sanitizer_platform_interceptors.h +5 -4
  774. package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.cpp +15 -17
  775. package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.h +32 -6
  776. package/libtsan/sanitizer_common/sanitizer_posix.cpp +3 -12
  777. package/libtsan/sanitizer_common/sanitizer_posix.h +2 -1
  778. package/libtsan/sanitizer_common/sanitizer_posix_libcdep.cpp +19 -0
  779. package/libtsan/sanitizer_common/sanitizer_procmaps_mac.cpp +102 -37
  780. package/libtsan/sanitizer_common/sanitizer_redefine_builtins.h +1 -1
  781. package/libtsan/sanitizer_common/sanitizer_signal_interceptors.inc +40 -2
  782. package/libtsan/sanitizer_common/sanitizer_stoptheworld.h +1 -1
  783. package/libtsan/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp +83 -12
  784. package/libtsan/sanitizer_common/sanitizer_stoptheworld_mac.cpp +3 -3
  785. package/libtsan/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp +7 -7
  786. package/libtsan/sanitizer_common/sanitizer_stoptheworld_win.cpp +2 -2
  787. package/libtsan/sanitizer_common/sanitizer_symbolizer_internal.h +5 -1
  788. package/libtsan/sanitizer_common/sanitizer_symbolizer_libcdep.cpp +11 -1
  789. package/libtsan/sanitizer_common/sanitizer_symbolizer_mac.cpp +86 -29
  790. package/libtsan/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp +27 -16
  791. package/libtsan/sanitizer_common/sanitizer_thread_registry.cpp +5 -4
  792. package/libtsan/sanitizer_common/sanitizer_thread_registry.h +4 -4
  793. package/libtsan/sanitizer_common/sanitizer_win.cpp +1 -3
  794. package/libtsan/tsan_debugging.cpp +2 -2
  795. package/libtsan/tsan_flags.cpp +37 -0
  796. package/libtsan/tsan_flags.h +8 -0
  797. package/libtsan/tsan_flags.inc +12 -0
  798. package/libtsan/tsan_interceptors.h +9 -1
  799. package/libtsan/tsan_interceptors_mac.cpp +19 -0
  800. package/libtsan/tsan_interceptors_posix.cpp +78 -32
  801. package/libtsan/tsan_interface.h +3 -3
  802. package/libtsan/tsan_interface_ann.cpp +23 -9
  803. package/libtsan/tsan_mman.cpp +18 -4
  804. package/libtsan/tsan_platform.h +44 -7
  805. package/libtsan/tsan_platform_linux.cpp +42 -14
  806. package/libtsan/tsan_platform_mac.cpp +16 -3
  807. package/libtsan/tsan_report.h +14 -1
  808. package/libtsan/tsan_rtl.cpp +14 -0
  809. package/libtsan/tsan_rtl.h +7 -2
  810. package/libtsan/tsan_rtl_aarch64.S +3 -5
  811. package/libtsan/tsan_rtl_access.cpp +8 -3
  812. package/libtsan/tsan_rtl_amd64.S +2 -0
  813. package/libtsan/tsan_rtl_mutex.cpp +94 -49
  814. package/libtsan/tsan_rtl_report.cpp +132 -65
  815. package/libtsan/tsan_rtl_thread.cpp +31 -9
  816. package/libtsan/tsan_symbolize.cpp +1 -1
  817. package/libtsan/tsan_symbolize.h +1 -1
  818. package/libtsan/tsan_trace.h +1 -1
  819. package/libunwind/include/__libunwind_config.h +11 -2
  820. package/libunwind/include/libunwind.h +117 -11
  821. package/libunwind/include/unwind_arm_ehabi.h +4 -1
  822. package/libunwind/src/AddressSpace.hpp +42 -20
  823. package/libunwind/src/CompactUnwinder.hpp +16 -5
  824. package/libunwind/src/DwarfInstructions.hpp +24 -13
  825. package/libunwind/src/DwarfParser.hpp +62 -23
  826. package/libunwind/src/EHHeaderParser.hpp +7 -4
  827. package/libunwind/src/Registers.hpp +226 -22
  828. package/libunwind/src/Unwind-seh.cpp +6 -7
  829. package/libunwind/src/Unwind-wasm.c +7 -7
  830. package/libunwind/src/UnwindCursor.hpp +167 -49
  831. package/libunwind/src/UnwindLevel1.c +46 -17
  832. package/libunwind/src/UnwindRegistersRestore.S +46 -5
  833. package/libunwind/src/UnwindRegistersSave.S +86 -2
  834. package/libunwind/src/assembly.h +5 -1
  835. package/libunwind/src/config.h +9 -0
  836. package/libunwind/src/gcc_personality_v0.c +79 -6
  837. package/libunwind/src/libunwind.cpp +104 -4
  838. package/libunwind/src/libunwind_ext.h +7 -1
  839. package/libunwind/src/shadow_stack_unwind.h +2 -2
  840. package/lldb/pretty_printers.py +948 -0
  841. package/package.json +1 -1
  842. package/std/Build/Cache/Path.zig +1 -1
  843. package/std/Build/Cache.zig +6 -6
  844. package/std/Build/Step/Compile.zig +18 -20
  845. package/std/Build/Step/ConfigHeader.zig +1 -1
  846. package/std/Build/Step/Run.zig +15 -8
  847. package/std/Build/Step.zig +3 -7
  848. package/std/Build/Watch/FsEvents.zig +1 -1
  849. package/std/Build/WebServer.zig +2 -2
  850. package/std/Build/abi.zig +1 -1
  851. package/std/Build.zig +0 -3
  852. package/std/Io/Dir.zig +9 -4
  853. package/std/Io/Dispatch.zig +8 -18
  854. package/std/Io/File/Writer.zig +8 -6
  855. package/std/Io/File.zig +0 -9
  856. package/std/Io/Kqueue.zig +3 -3
  857. package/std/Io/Reader.zig +8 -14
  858. package/std/Io/Semaphore.zig +112 -17
  859. package/std/Io/Terminal.zig +1 -1
  860. package/std/Io/Threaded.zig +183 -46
  861. package/std/Io/Uring.zig +18 -20
  862. package/std/Io/Writer.zig +10 -7
  863. package/std/Io/net/HostName.zig +11 -6
  864. package/std/Io/net.zig +11 -11
  865. package/std/Io.zig +104 -38
  866. package/std/Random/ChaCha.zig +2 -2
  867. package/std/Random/benchmark.zig +2 -2
  868. package/std/Random.zig +6 -6
  869. package/std/SemanticVersion.zig +1 -1
  870. package/std/Target/Query.zig +2 -2
  871. package/std/Target/aarch64.zig +620 -77
  872. package/std/Target/amdgcn.zig +421 -21
  873. package/std/Target/arm.zig +40 -6
  874. package/std/Target/bpf.zig +6 -0
  875. package/std/Target/hexagon.zig +41 -6
  876. package/std/Target/loongarch.zig +18 -0
  877. package/std/Target/mips.zig +6 -0
  878. package/std/Target/nvptx.zig +58 -35
  879. package/std/Target/powerpc.zig +27 -19
  880. package/std/Target/riscv.zig +415 -177
  881. package/std/Target/sparc.zig +17 -0
  882. package/std/Target/wasm.zig +7 -0
  883. package/std/Target/x86.zig +200 -31
  884. package/std/Target/xtensa.zig +65 -0
  885. package/std/Target.zig +67 -14
  886. package/std/Thread.zig +5 -2
  887. package/std/array_hash_map.zig +103 -57
  888. package/std/array_list.zig +10 -31
  889. package/std/base64.zig +5 -5
  890. package/std/bit_set.zig +86 -69
  891. package/std/c/haiku.zig +3 -0
  892. package/std/c/serenity.zig +1 -6
  893. package/std/c.zig +123 -32
  894. package/std/compress/flate/Decompress.zig +3 -4
  895. package/std/compress/zstd/Decompress.zig +7 -9
  896. package/std/crypto/25519/curve25519.zig +2 -2
  897. package/std/crypto/25519/edwards25519.zig +3 -3
  898. package/std/crypto/25519/ristretto255.zig +2 -2
  899. package/std/crypto/25519/scalar.zig +6 -6
  900. package/std/crypto/25519/x25519.zig +1 -1
  901. package/std/crypto/Certificate.zig +14 -2
  902. package/std/crypto/Sha1.zig +1 -1
  903. package/std/crypto/aegis.zig +45 -39
  904. package/std/crypto/aes_ccm.zig +22 -22
  905. package/std/crypto/aes_gcm.zig +10 -12
  906. package/std/crypto/aes_ocb.zig +9 -9
  907. package/std/crypto/argon2.zig +15 -15
  908. package/std/crypto/ascon.zig +75 -33
  909. package/std/crypto/bcrypt.zig +20 -10
  910. package/std/crypto/benchmark.zig +7 -7
  911. package/std/crypto/blake2.zig +100 -64
  912. package/std/crypto/cbc_mac.zig +1 -1
  913. package/std/crypto/chacha20.zig +10 -10
  914. package/std/crypto/cmac.zig +3 -3
  915. package/std/crypto/codecs/asn1/Oid.zig +12 -1
  916. package/std/crypto/codecs/asn1/der/Encoder.zig +1 -1
  917. package/std/crypto/codecs/asn1.zig +1 -1
  918. package/std/crypto/codecs/base64_hex_ct.zig +3 -5
  919. package/std/crypto/ecdsa.zig +9 -9
  920. package/std/crypto/ff.zig +4 -5
  921. package/std/crypto/ghash_polyval.zig +4 -4
  922. package/std/crypto/hkdf.zig +1 -1
  923. package/std/crypto/isap.zig +3 -3
  924. package/std/crypto/kangarootwelve.zig +1 -1
  925. package/std/crypto/keccak_p.zig +8 -8
  926. package/std/crypto/md5.zig +1 -1
  927. package/std/crypto/ml_dsa.zig +39 -39
  928. package/std/crypto/ml_kem.zig +12 -34
  929. package/std/crypto/modes.zig +2 -2
  930. package/std/crypto/pbkdf2.zig +1 -1
  931. package/std/crypto/pcurves/common.zig +4 -5
  932. package/std/crypto/pcurves/p256/scalar.zig +3 -3
  933. package/std/crypto/pcurves/p384/scalar.zig +2 -2
  934. package/std/crypto/pcurves/secp256k1/scalar.zig +3 -3
  935. package/std/crypto/pcurves/tests/p256.zig +5 -5
  936. package/std/crypto/pcurves/tests/p384.zig +5 -5
  937. package/std/crypto/pcurves/tests/secp256k1.zig +3 -3
  938. package/std/crypto/salsa20.zig +8 -8
  939. package/std/crypto/sha2.zig +2 -2
  940. package/std/crypto/sha3.zig +2 -2
  941. package/std/crypto/siphash.zig +1 -1
  942. package/std/crypto/timing_safe.zig +10 -9
  943. package/std/crypto/tls/Client.zig +89 -13
  944. package/std/crypto/tls.zig +1 -1
  945. package/std/crypto.zig +4 -3
  946. package/std/debug/Dwarf.zig +15 -12
  947. package/std/debug/Pdb.zig +25 -17
  948. package/std/debug.zig +14 -8
  949. package/std/deque.zig +1 -1
  950. package/std/elf.zig +1 -1
  951. package/std/enums.zig +8 -8
  952. package/std/fmt/parse_float/decimal.zig +1 -1
  953. package/std/fmt/parse_float.zig +1 -1
  954. package/std/fmt.zig +14 -10
  955. package/std/fs/path.zig +7 -5
  956. package/std/hash/Adler32.zig +3 -3
  957. package/std/hash/benchmark.zig +2 -2
  958. package/std/hash/wyhash.zig +2 -2
  959. package/std/hash/xxhash.zig +0 -6
  960. package/std/hash_map.zig +20 -1
  961. package/std/heap/BufferFirstAllocator.zig +165 -0
  962. package/std/heap/debug_allocator.zig +2 -2
  963. package/std/heap/memory_pool.zig +34 -197
  964. package/std/heap.zig +2 -133
  965. package/std/http/Client.zig +21 -24
  966. package/std/http.zig +4 -5
  967. package/std/json/Scanner.zig +2 -2
  968. package/std/json/static.zig +2 -2
  969. package/std/{builtin.zig → lang.zig} +5 -1
  970. package/std/leb128.zig +2 -2
  971. package/std/math/big/int.zig +5 -5
  972. package/std/math/big.zig +4 -4
  973. package/std/math/copysign.zig +1 -1
  974. package/std/math/float.zig +62 -0
  975. package/std/math/frexp.zig +4 -4
  976. package/std/math/ilogb.zig +1 -1
  977. package/std/math/isfinite.zig +1 -1
  978. package/std/math/isinf.zig +1 -1
  979. package/std/math/isnan.zig +1 -2
  980. package/std/math/isnormal.zig +2 -2
  981. package/std/math/iszero.zig +2 -2
  982. package/std/math/ldexp.zig +2 -2
  983. package/std/math/log10.zig +0 -2
  984. package/std/math/modf.zig +1 -2
  985. package/std/math/nextafter.zig +3 -4
  986. package/std/math/pow.zig +1 -1
  987. package/std/math/powi.zig +2 -3
  988. package/std/math/signbit.zig +0 -1
  989. package/std/math.zig +21 -26
  990. package/std/mem/Allocator.zig +0 -6
  991. package/std/mem.zig +31 -31
  992. package/std/meta/trailer_flags.zig +1 -1
  993. package/std/meta.zig +4 -36
  994. package/std/multi_array_list.zig +24 -0
  995. package/std/os/emscripten.zig +7 -6
  996. package/std/os/linux/IoUring.zig +2 -0
  997. package/std/os/linux/aarch64.zig +41 -12
  998. package/std/os/linux/arc.zig +41 -12
  999. package/std/os/linux/arm.zig +41 -12
  1000. package/std/os/linux/bpf.zig +6 -0
  1001. package/std/os/linux/hexagon.zig +33 -11
  1002. package/std/os/linux/ioctl.zig +2 -2
  1003. package/std/os/linux/loongarch32.zig +41 -13
  1004. package/std/os/linux/loongarch64.zig +41 -12
  1005. package/std/os/linux/m68k.zig +41 -13
  1006. package/std/os/linux/mips.zig +67 -36
  1007. package/std/os/linux/mips64.zig +60 -29
  1008. package/std/os/linux/mipsn32.zig +60 -29
  1009. package/std/os/linux/or1k.zig +41 -12
  1010. package/std/os/linux/powerpc.zig +41 -12
  1011. package/std/os/linux/powerpc64.zig +41 -12
  1012. package/std/os/linux/riscv32.zig +41 -12
  1013. package/std/os/linux/riscv64.zig +41 -12
  1014. package/std/os/linux/s390x.zig +44 -7
  1015. package/std/os/linux/sparc64.zig +83 -52
  1016. package/std/os/linux/syscalls.zig +26 -1
  1017. package/std/os/linux/thumb.zig +52 -36
  1018. package/std/os/linux/x32.zig +41 -12
  1019. package/std/os/linux/x86.zig +44 -15
  1020. package/std/os/linux/x86_64.zig +41 -12
  1021. package/std/os/linux.zig +416 -450
  1022. package/std/os/plan9.zig +1 -1
  1023. package/std/os/uefi/hii.zig +1 -1
  1024. package/std/os/uefi/tables/boot_services.zig +9 -8
  1025. package/std/os/uefi/tables/runtime_services.zig +1 -1
  1026. package/std/os/windows.zig +130 -1
  1027. package/std/os.zig +41 -0
  1028. package/std/posix.zig +1 -1
  1029. package/std/process/Environ.zig +1 -1
  1030. package/std/process.zig +5 -4
  1031. package/std/simd.zig +4 -21
  1032. package/std/sort.zig +3 -3
  1033. package/std/start.zig +17 -4
  1034. package/std/std.zig +8 -1
  1035. package/std/tar/Writer.zig +39 -33
  1036. package/std/tar.zig +8 -4
  1037. package/std/testing.zig +2 -2
  1038. package/std/unicode.zig +13 -8
  1039. package/std/zig/Ast/Render.zig +6 -30
  1040. package/std/zig/Ast.zig +12 -37
  1041. package/std/zig/AstGen.zig +175 -332
  1042. package/std/zig/AstRlAnnotate.zig +1 -22
  1043. package/std/zig/AstSmith.zig +5 -11
  1044. package/std/zig/BuiltinFn.zig +0 -32
  1045. package/std/zig/ErrorBundle.zig +6 -2
  1046. package/std/zig/LibCDirs.zig +15 -6
  1047. package/std/zig/LibCInstallation.zig +34 -12
  1048. package/std/zig/Parse.zig +11 -76
  1049. package/std/zig/TokenSmith.zig +0 -6
  1050. package/std/zig/WindowsSdk.zig +18 -18
  1051. package/std/zig/Zir.zig +65 -132
  1052. package/std/zig/ZonGen.zig +19 -27
  1053. package/std/zig/llvm/Builder.zig +39 -33
  1054. package/std/zig/llvm/bitcode_writer.zig +3 -3
  1055. package/std/zig/llvm/ir.zig +8 -8
  1056. package/std/zig/system/arm.zig +56 -2
  1057. package/std/zig/system/windows.zig +34 -1
  1058. package/std/zig/system/x86.zig +60 -16
  1059. package/std/zig/system.zig +0 -10
  1060. package/std/zig/target.zig +1 -4
  1061. package/std/zig/tokenizer.zig +4 -43
  1062. package/std/zig.zig +3 -14
  1063. package/std/zip.zig +5 -5
  1064. package/std/zon/parse.zig +1 -1
  1065. package/zig.h +340 -1
  1066. package/compiler_rt/long_double.zig +0 -37
  1067. package/include/amxbf16transposeintrin.h +0 -94
  1068. package/include/amxcomplextransposeintrin.h +0 -303
  1069. package/include/amxfp16transposeintrin.h +0 -94
  1070. package/include/amxmovrstransposeintrin.h +0 -200
  1071. package/include/amxtf32transposeintrin.h +0 -105
  1072. package/include/amxtransposeintrin.h +0 -248
  1073. package/libc/include/hexagon-linux-any/asm/signal.h +0 -29
  1074. package/libc/include/s390x-linux-any/asm/tape390.h +0 -103
  1075. package/libc/mingw/math/lrintl.c +0 -18
  1076. package/libc/mingw/math/rintl.c +0 -16
  1077. package/libc/mingw/winpthreads/spinlock.c +0 -82
  1078. package/libc/musl/src/linux/tee.c +0 -8
  1079. package/libc/musl/src/math/i386/lrintl.c +0 -8
  1080. package/libc/musl/src/math/i386/rintl.c +0 -7
  1081. package/libc/musl/src/math/lrintl.c +0 -36
  1082. package/libc/musl/src/math/rintl.c +0 -29
  1083. package/libc/musl/src/math/s390x/rintl.c +0 -15
  1084. package/libc/musl/src/math/x32/lrintl.s +0 -7
  1085. package/libc/musl/src/math/x32/rintl.s +0 -6
  1086. package/libc/musl/src/math/x86_64/lrintl.c +0 -8
  1087. package/libc/musl/src/math/x86_64/rintl.c +0 -7
  1088. package/libc/musl/src/string/strdup.c +0 -10
  1089. package/libc/musl/src/string/strndup.c +0 -12
  1090. package/libc/musl/src/string/wcsdup.c +0 -10
  1091. package/libc/musl/src/thread/pthread_spin_destroy.c +0 -6
  1092. package/libc/musl/src/thread/pthread_spin_init.c +0 -6
  1093. package/libc/musl/src/thread/pthread_spin_lock.c +0 -8
  1094. package/libc/musl/src/thread/pthread_spin_trylock.c +0 -7
  1095. package/libc/musl/src/thread/pthread_spin_unlock.c +0 -7
  1096. package/libc/musl/src/unistd/dup2.c +0 -20
  1097. package/libc/musl/src/unistd/dup3.c +0 -26
  1098. package/libc/wasi/thread-stub/pthread_spin_lock.c +0 -8
  1099. package/libc/wasi/thread-stub/pthread_spin_trylock.c +0 -8
  1100. package/libc/wasi/thread-stub/pthread_spin_unlock.c +0 -7
  1101. package/libtsan/sanitizer_common/sanitizer_coverage_interface.inc +0 -43
  1102. package/std/Build/Step/CheckObject.zig +0 -2764
  1103. /package/std/{builtin → lang}/assembly.zig +0 -0
@@ -199,7 +199,7 @@ pub fn generate(gpa: Allocator, tree: Ast) Allocator.Error!Zir {
199
199
  assert(struct_decl_ref.toIndex().? == .main_struct_inst);
200
200
  break :fatal false;
201
201
  } else |err| switch (err) {
202
- error.OutOfMemory => return error.OutOfMemory,
202
+ error.OutOfMemory => |e| return e,
203
203
  error.AnalysisFail => break :fatal true, // Handled via compile_errors below.
204
204
  }
205
205
  } else fatal: {
@@ -243,10 +243,13 @@ pub fn generate(gpa: Allocator, tree: Ast) Allocator.Error!Zir {
243
243
  }
244
244
  }
245
245
 
246
+ try astgen.extra.shrinkToLen(gpa);
247
+ try astgen.string_bytes.shrinkToLen(gpa);
248
+
246
249
  return .{
247
250
  .instructions = if (fatal) .empty else astgen.instructions.toOwnedSlice(),
248
- .string_bytes = try astgen.string_bytes.toOwnedSlice(gpa),
249
- .extra = try astgen.extra.toOwnedSlice(gpa),
251
+ .string_bytes = astgen.string_bytes.toOwnedSliceAssert(),
252
+ .extra = astgen.extra.toOwnedSliceAssert(),
250
253
  };
251
254
  }
252
255
 
@@ -504,7 +507,6 @@ fn lvalExpr(gz: *GenZir, scope: *Scope, node: Ast.Node.Index) InnerError!Zir.Ins
504
507
  .less_than,
505
508
  .less_or_equal,
506
509
  .array_cat,
507
- .array_mult,
508
510
  .bool_and,
509
511
  .bool_or,
510
512
  .@"asm",
@@ -774,19 +776,6 @@ fn expr(gz: *GenZir, scope: *Scope, ri: ResultInfo, node: Ast.Node.Index) InnerE
774
776
  .less_or_equal => return simpleBinOp(gz, scope, ri, node, .cmp_lte),
775
777
  .array_cat => return simpleBinOp(gz, scope, ri, node, .array_cat),
776
778
 
777
- .array_mult => {
778
- // This syntax form does not currently use the result type in the language specification.
779
- // However, the result type can be used to emit more optimal code for large multiplications by
780
- // having Sema perform a coercion before the multiplication operation.
781
- const lhs_node, const rhs_node = tree.nodeData(node).node_and_node;
782
- const result = try gz.addPlNode(.array_mul, node, Zir.Inst.ArrayMul{
783
- .res_ty = if (try ri.rl.resultType(gz, node)) |t| t else .none,
784
- .lhs = try expr(gz, scope, .{ .rl = .none }, lhs_node),
785
- .rhs = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = .usize_type } }, rhs_node, .array_mul_factor),
786
- });
787
- return rvalue(gz, ri, result, node);
788
- },
789
-
790
779
  .error_union, .merge_error_sets => |tag| {
791
780
  const inst_tag: Zir.Inst.Tag = switch (tag) {
792
781
  .error_union => .error_union_type,
@@ -1409,12 +1398,12 @@ fn fnProtoExprInner(
1409
1398
  try comptimeExpr(
1410
1399
  &block_scope,
1411
1400
  scope,
1412
- .{ .rl = .{ .coerced_ty = try block_scope.addBuiltinValue(callconv_expr, .calling_convention) } },
1401
+ .{ .rl = .{ .coerced_ty = try block_scope.addStdLangValue(callconv_expr, .calling_convention) } },
1413
1402
  callconv_expr,
1414
1403
  .@"callconv",
1415
1404
  )
1416
1405
  else if (implicit_ccc)
1417
- try block_scope.addBuiltinValue(node, .calling_convention_c)
1406
+ try block_scope.addStdLangValue(node, .calling_convention_c)
1418
1407
  else
1419
1408
  .none;
1420
1409
 
@@ -1776,11 +1765,12 @@ fn structInitExpr(
1776
1765
  }
1777
1766
 
1778
1767
  {
1779
- var sfba = std.heap.stackFallback(256, astgen.arena);
1780
- const sfba_allocator = sfba.get();
1768
+ var bfa_buf: [256]u8 = undefined;
1769
+ var bfa_state: std.heap.BufferFirstAllocator = .init(&bfa_buf, astgen.arena);
1770
+ const bfa = bfa_state.allocator();
1781
1771
 
1782
1772
  var duplicate_names: std.array_hash_map.Auto(Zir.NullTerminatedString, ArrayList(Ast.TokenIndex)) = .empty;
1783
- try duplicate_names.ensureTotalCapacity(sfba_allocator, @intCast(struct_init.ast.fields.len));
1773
+ try duplicate_names.ensureTotalCapacity(bfa, @intCast(struct_init.ast.fields.len));
1784
1774
 
1785
1775
  // When there aren't errors, use this to avoid a second iteration.
1786
1776
  var any_duplicate = false;
@@ -1789,14 +1779,14 @@ fn structInitExpr(
1789
1779
  const name_token = tree.firstToken(field) - 2;
1790
1780
  const name_index = try astgen.identAsString(name_token);
1791
1781
 
1792
- const gop = try duplicate_names.getOrPut(sfba_allocator, name_index);
1782
+ const gop = try duplicate_names.getOrPut(bfa, name_index);
1793
1783
 
1794
1784
  if (gop.found_existing) {
1795
- try gop.value_ptr.append(sfba_allocator, name_token);
1785
+ try gop.value_ptr.append(bfa, name_token);
1796
1786
  any_duplicate = true;
1797
1787
  } else {
1798
1788
  gop.value_ptr.* = .empty;
1799
- try gop.value_ptr.append(sfba_allocator, name_token);
1789
+ try gop.value_ptr.append(bfa, name_token);
1800
1790
  }
1801
1791
  }
1802
1792
 
@@ -2709,7 +2699,6 @@ fn addEnsureResult(gz: *GenZir, maybe_unused_result: Zir.Inst.Ref, statement: As
2709
2699
  .alloc_inferred_comptime_mut,
2710
2700
  .make_ptr_const,
2711
2701
  .array_cat,
2712
- .array_mul,
2713
2702
  .array_type,
2714
2703
  .array_type_sentinel,
2715
2704
  .elem_type,
@@ -2870,9 +2859,7 @@ fn addEnsureResult(gz: *GenZir, maybe_unused_result: Zir.Inst.Ref, statement: As
2870
2859
  .mul_add,
2871
2860
  .max,
2872
2861
  .min,
2873
- .c_import,
2874
2862
  .@"resume",
2875
- .ret_err_value_code,
2876
2863
  .ret_ptr,
2877
2864
  .ret_type,
2878
2865
  .for_len,
@@ -2961,7 +2948,6 @@ fn addEnsureResult(gz: *GenZir, maybe_unused_result: Zir.Inst.Ref, statement: As
2961
2948
  => break :b true,
2962
2949
 
2963
2950
  .@"defer" => unreachable,
2964
- .defer_err_code => unreachable,
2965
2951
  }
2966
2952
  } else switch (maybe_unused_result) {
2967
2953
  .none => unreachable,
@@ -2981,60 +2967,28 @@ fn addEnsureResult(gz: *GenZir, maybe_unused_result: Zir.Inst.Ref, statement: As
2981
2967
  return noreturn_src_node;
2982
2968
  }
2983
2969
 
2984
- fn countDefers(outer_scope: *Scope, inner_scope: *Scope) struct {
2985
- have_any: bool,
2986
- have_normal: bool,
2987
- have_err: bool,
2988
- need_err_code: bool,
2989
- } {
2990
- var have_normal = false;
2991
- var have_err = false;
2992
- var need_err_code = false;
2970
+ fn anyErrdefers(outer_scope: *Scope, inner_scope: *Scope) bool {
2993
2971
  var scope = inner_scope;
2994
2972
  while (scope != outer_scope) {
2995
2973
  switch (scope.unwrap()) {
2996
2974
  .gen_zir => |gen_zir| scope = gen_zir.parent,
2997
2975
  .local_val => |local_val| scope = local_val.parent,
2998
2976
  .local_ptr => |local_ptr| scope = local_ptr.parent,
2999
- .defer_normal => |defer_scope| {
3000
- scope = defer_scope.parent;
3001
-
3002
- have_normal = true;
3003
- },
3004
- .defer_error => |defer_scope| {
3005
- scope = defer_scope.parent;
3006
-
3007
- have_err = true;
3008
-
3009
- const have_err_payload = defer_scope.remapped_err_code != .none;
3010
- need_err_code = need_err_code or have_err_payload;
3011
- },
2977
+ .defer_normal => |defer_normal| scope = defer_normal.parent,
2978
+ .defer_error => return true,
3012
2979
  .namespace => unreachable,
3013
2980
  .top => unreachable,
3014
2981
  }
3015
2982
  }
3016
- return .{
3017
- .have_any = have_normal or have_err,
3018
- .have_normal = have_normal,
3019
- .have_err = have_err,
3020
- .need_err_code = need_err_code,
3021
- };
2983
+ return false;
3022
2984
  }
3023
2985
 
3024
- const DefersToEmit = union(enum) {
3025
- both: Zir.Inst.Ref, // err code
3026
- both_sans_err,
3027
- normal_only,
3028
- };
3029
-
3030
2986
  fn genDefers(
3031
2987
  gz: *GenZir,
3032
2988
  outer_scope: *Scope,
3033
2989
  inner_scope: *Scope,
3034
- which_ones: DefersToEmit,
2990
+ which_ones: enum { normal_only, normal_and_error },
3035
2991
  ) InnerError!void {
3036
- const gpa = gz.astgen.gpa;
3037
-
3038
2992
  var scope = inner_scope;
3039
2993
  while (scope != outer_scope) {
3040
2994
  switch (scope.unwrap()) {
@@ -3048,33 +3002,10 @@ fn genDefers(
3048
3002
  .defer_error => |defer_scope| {
3049
3003
  scope = defer_scope.parent;
3050
3004
  switch (which_ones) {
3051
- .both_sans_err => {
3005
+ .normal_only => continue,
3006
+ .normal_and_error => {
3052
3007
  try gz.addDefer(defer_scope.index, defer_scope.len);
3053
3008
  },
3054
- .both => |err_code| {
3055
- if (defer_scope.remapped_err_code.unwrap()) |remapped_err_code| {
3056
- try gz.instructions.ensureUnusedCapacity(gpa, 1);
3057
- try gz.astgen.instructions.ensureUnusedCapacity(gpa, 1);
3058
-
3059
- const payload_index = try gz.astgen.addExtra(Zir.Inst.DeferErrCode{
3060
- .remapped_err_code = remapped_err_code,
3061
- .index = defer_scope.index,
3062
- .len = defer_scope.len,
3063
- });
3064
- const new_index: Zir.Inst.Index = @enumFromInt(gz.astgen.instructions.len);
3065
- gz.astgen.instructions.appendAssumeCapacity(.{
3066
- .tag = .defer_err_code,
3067
- .data = .{ .defer_err_code = .{
3068
- .err_code = err_code,
3069
- .payload_index = payload_index,
3070
- } },
3071
- });
3072
- gz.instructions.appendAssumeCapacity(new_index);
3073
- } else {
3074
- try gz.addDefer(defer_scope.index, defer_scope.len);
3075
- }
3076
- },
3077
- .normal_only => continue,
3078
3009
  }
3079
3010
  },
3080
3011
  .namespace => unreachable,
@@ -3137,46 +3068,17 @@ fn deferStmt(
3137
3068
  defer defer_gen.unstack();
3138
3069
 
3139
3070
  const tree = gz.astgen.tree;
3140
- var local_val_scope: Scope.LocalVal = undefined;
3141
- var opt_remapped_err_code: Zir.Inst.OptionalIndex = .none;
3142
- const sub_scope = if (scope_tag != .defer_error) &defer_gen.base else blk: {
3143
- const payload_token = tree.nodeData(node).opt_token_and_node[0].unwrap() orelse break :blk &defer_gen.base;
3144
- const ident_name = try gz.astgen.identAsString(payload_token);
3145
- if (std.mem.eql(u8, tree.tokenSlice(payload_token), "_")) {
3146
- try gz.astgen.appendErrorTok(payload_token, "discard of error capture; omit it instead", .{});
3147
- break :blk &defer_gen.base;
3148
- }
3149
- const remapped_err_code: Zir.Inst.Index = @enumFromInt(gz.astgen.instructions.len);
3150
- opt_remapped_err_code = remapped_err_code.toOptional();
3151
- _ = try gz.astgen.appendPlaceholder();
3152
- const remapped_err_code_ref = remapped_err_code.toRef();
3153
- local_val_scope = .{
3154
- .parent = &defer_gen.base,
3155
- .gen_zir = gz,
3156
- .name = ident_name,
3157
- .inst = remapped_err_code_ref,
3158
- .token_src = payload_token,
3159
- .id_cat = .capture,
3160
- };
3161
- try gz.addDbgVar(.dbg_var_val, ident_name, remapped_err_code_ref);
3162
- break :blk &local_val_scope.base;
3163
- };
3164
- const expr_node = switch (scope_tag) {
3165
- .defer_normal => tree.nodeData(node).node,
3166
- .defer_error => tree.nodeData(node).opt_token_and_node[1],
3167
- else => unreachable,
3168
- };
3169
- _ = try unusedResultExpr(&defer_gen, sub_scope, expr_node);
3170
- try checkUsed(gz, scope, sub_scope);
3071
+ const expr_node = tree.nodeData(node).node;
3072
+ _ = try unusedResultExpr(&defer_gen, &defer_gen.base, expr_node);
3073
+ try checkUsed(gz, scope, &defer_gen.base);
3171
3074
  _ = try defer_gen.addBreak(.break_inline, @enumFromInt(0), .void_value);
3172
3075
 
3173
3076
  const body = defer_gen.instructionsSlice();
3174
- const extra_insts: []const Zir.Inst.Index = if (opt_remapped_err_code.unwrap()) |ec| &.{ec} else &.{};
3175
- const body_len = gz.astgen.countBodyLenAfterFixupsExtraRefs(body, extra_insts);
3077
+ const body_len = gz.astgen.countBodyLenAfterFixupsExtraRefs(body, &.{});
3176
3078
 
3177
3079
  const index: u32 = @intCast(gz.astgen.extra.items.len);
3178
3080
  try gz.astgen.extra.ensureUnusedCapacity(gz.astgen.gpa, body_len);
3179
- gz.astgen.appendBodyWithFixupsExtraRefsArrayList(&gz.astgen.extra, body, extra_insts);
3081
+ gz.astgen.appendBodyWithFixupsExtraRefsArrayList(&gz.astgen.extra, body, &.{});
3180
3082
 
3181
3083
  const defer_scope = try block_arena.create(Scope.Defer);
3182
3084
 
@@ -3185,7 +3087,6 @@ fn deferStmt(
3185
3087
  .parent = scope,
3186
3088
  .index = index,
3187
3089
  .len = body_len,
3188
- .remapped_err_code = opt_remapped_err_code,
3189
3090
  };
3190
3091
  return &defer_scope.base;
3191
3092
  }
@@ -3881,7 +3782,7 @@ fn ptrType(
3881
3782
  gz.astgen.source_line = source_line;
3882
3783
  gz.astgen.source_column = source_column;
3883
3784
 
3884
- const addrspace_ty = try gz.addBuiltinValue(addrspace_node, .address_space);
3785
+ const addrspace_ty = try gz.addStdLangValue(addrspace_node, .address_space);
3885
3786
  addrspace_ref = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = addrspace_ty } }, addrspace_node, .@"addrspace");
3886
3787
  trailing_count += 1;
3887
3788
  }
@@ -4176,7 +4077,7 @@ fn fnDecl(
4176
4077
 
4177
4078
  if (fn_proto.ast.addrspace_expr.unwrap()) |addrspace_expr| {
4178
4079
  astgen.restoreSourceCursor(saved_cursor);
4179
- const addrspace_ty = try addrspace_gz.addBuiltinValue(addrspace_expr, .address_space);
4080
+ const addrspace_ty = try addrspace_gz.addStdLangValue(addrspace_expr, .address_space);
4180
4081
  const inst = try expr(&addrspace_gz, &addrspace_gz.base, .{ .rl = .{ .coerced_ty = addrspace_ty } }, addrspace_expr);
4181
4082
  _ = try addrspace_gz.addBreakWithSrcNode(.break_inline, decl_inst, inst, decl_node);
4182
4083
  }
@@ -4384,7 +4285,7 @@ fn fnDeclInner(
4384
4285
  const inst = try expr(
4385
4286
  &cc_gz,
4386
4287
  scope,
4387
- .{ .rl = .{ .coerced_ty = try cc_gz.addBuiltinValue(callconv_expr, .calling_convention) } },
4288
+ .{ .rl = .{ .coerced_ty = try cc_gz.addStdLangValue(callconv_expr, .calling_convention) } },
4388
4289
  callconv_expr,
4389
4290
  );
4390
4291
  if (cc_gz.instructionsSlice().len == 0) {
@@ -4394,7 +4295,7 @@ fn fnDeclInner(
4394
4295
  _ = try cc_gz.addBreak(.break_inline, @enumFromInt(0), inst);
4395
4296
  break :blk inst;
4396
4297
  } else if (has_inline_keyword) {
4397
- const inst = try cc_gz.addBuiltinValue(decl_node, .calling_convention_inline);
4298
+ const inst = try cc_gz.addStdLangValue(decl_node, .calling_convention_inline);
4398
4299
  _ = try cc_gz.addBreak(.break_inline, @enumFromInt(0), inst);
4399
4300
  break :blk inst;
4400
4301
  } else {
@@ -4592,7 +4493,7 @@ fn globalVarDecl(
4592
4493
  defer addrspace_gz.unstack();
4593
4494
 
4594
4495
  if (var_decl.ast.addrspace_node.unwrap()) |addrspace_node| {
4595
- const addrspace_ty = try addrspace_gz.addBuiltinValue(addrspace_node, .address_space);
4496
+ const addrspace_ty = try addrspace_gz.addStdLangValue(addrspace_node, .address_space);
4596
4497
  const addrspace_inst = try expr(&addrspace_gz, &addrspace_gz.base, .{ .rl = .{ .coerced_ty = addrspace_ty } }, addrspace_node);
4597
4498
  _ = try addrspace_gz.addBreakWithSrcNode(.break_inline, decl_inst, addrspace_inst, node);
4598
4499
  }
@@ -4879,7 +4780,7 @@ fn testDecl(
4879
4780
  .noalias_bits = 0,
4880
4781
 
4881
4782
  // Tests don't have a prototype that needs hashing
4882
- .proto_hash = .{0} ** 16,
4783
+ .proto_hash = @splat(0),
4883
4784
  });
4884
4785
 
4885
4786
  _ = try decl_block.addBreak(.break_inline, decl_inst, func_inst);
@@ -4914,7 +4815,7 @@ fn structDeclInner(
4914
4815
  scope: *Scope,
4915
4816
  node: Ast.Node.Index,
4916
4817
  container_decl: Ast.full.ContainerDecl,
4917
- layout: std.builtin.Type.ContainerLayout,
4818
+ layout: std.lang.Type.ContainerLayout,
4918
4819
  maybe_backing_int_node: Ast.Node.OptionalIndex,
4919
4820
  name_strat: Zir.Inst.NameStrategy,
4920
4821
  ) InnerError!Zir.Inst.Ref {
@@ -4998,6 +4899,10 @@ fn structDeclInner(
4998
4899
  );
4999
4900
  if (field_comptime_bits) |bits| @memset(bits.get(astgen), 0);
5000
4901
 
4902
+ const old_hasher = astgen.src_hasher;
4903
+ defer astgen.src_hasher = old_hasher;
4904
+ astgen.src_hasher = .init(.{});
4905
+
5001
4906
  // Before any field bodies comes the backing int type, if specified.
5002
4907
  const backing_int_type_body_len: ?u32 = if (maybe_backing_int_node.unwrap()) |backing_int_node| len: {
5003
4908
  if (layout != .@"packed") return astgen.failNode(
@@ -5005,6 +4910,7 @@ fn structDeclInner(
5005
4910
  "non-packed struct does not support backing integer type",
5006
4911
  .{},
5007
4912
  );
4913
+ astgen.src_hasher.update(astgen.tree.getNodeSource(backing_int_node));
5008
4914
  const type_ref = try typeExpr(&block_scope, &namespace.base, backing_int_node);
5009
4915
  if (!block_scope.endsWithNoReturn()) {
5010
4916
  _ = try block_scope.addBreak(.break_inline, decl_inst, type_ref);
@@ -5014,10 +4920,6 @@ fn structDeclInner(
5014
4920
  break :len body_len;
5015
4921
  } else null;
5016
4922
 
5017
- const old_hasher = astgen.src_hasher;
5018
- defer astgen.src_hasher = old_hasher;
5019
- astgen.src_hasher = .init(.{});
5020
-
5021
4923
  var next_field_idx: u32 = 0;
5022
4924
  for (container_decl.ast.members) |member_node| {
5023
4925
  var member = switch (try containerMember(&block_scope, &namespace.base, &wip_decls, member_node)) {
@@ -5118,7 +5020,7 @@ fn tupleDecl(
5118
5020
  scope: *Scope,
5119
5021
  node: Ast.Node.Index,
5120
5022
  container_decl: Ast.full.ContainerDecl,
5121
- layout: std.builtin.Type.ContainerLayout,
5023
+ layout: std.lang.Type.ContainerLayout,
5122
5024
  backing_int_node: Ast.Node.OptionalIndex,
5123
5025
  ) InnerError!Zir.Inst.Ref {
5124
5026
  const astgen = gz.astgen;
@@ -5215,7 +5117,7 @@ fn unionDeclInner(
5215
5117
  scope: *Scope,
5216
5118
  node: Ast.Node.Index,
5217
5119
  members: []const Ast.Node.Index,
5218
- layout: std.builtin.Type.ContainerLayout,
5120
+ layout: std.lang.Type.ContainerLayout,
5219
5121
  opt_arg_node: Ast.Node.OptionalIndex,
5220
5122
  auto_enum_tok: ?Ast.TokenIndex,
5221
5123
  name_strat: Zir.Inst.NameStrategy,
@@ -5278,8 +5180,13 @@ fn unionDeclInner(
5278
5180
  const field_align_body_lens = try scratch.addOptionalSlice(scan_result.any_field_aligns, scan_result.fields_len);
5279
5181
  const field_value_body_lens = try scratch.addOptionalSlice(scan_result.any_field_values, scan_result.fields_len);
5280
5182
 
5183
+ const old_hasher = astgen.src_hasher;
5184
+ defer astgen.src_hasher = old_hasher;
5185
+ astgen.src_hasher = .init(.{});
5186
+
5281
5187
  // Before any field bodies comes the tag/backing type, if specified.
5282
5188
  const arg_type_body_len: ?u32 = if (opt_arg_node.unwrap()) |arg_node| len: {
5189
+ astgen.src_hasher.update(astgen.tree.getNodeSource(arg_node));
5283
5190
  const type_ref = try typeExpr(&block_scope, &namespace.base, arg_node);
5284
5191
  if (!block_scope.endsWithNoReturn()) {
5285
5192
  _ = try block_scope.addBreak(.break_inline, decl_inst, type_ref);
@@ -5289,10 +5196,6 @@ fn unionDeclInner(
5289
5196
  break :len body_len;
5290
5197
  } else null;
5291
5198
 
5292
- const old_hasher = astgen.src_hasher;
5293
- defer astgen.src_hasher = old_hasher;
5294
- astgen.src_hasher = .init(.{});
5295
-
5296
5199
  var next_field_idx: u32 = 0;
5297
5200
  for (members) |member_node| {
5298
5201
  var member = switch (try containerMember(&block_scope, &namespace.base, &wip_decls, member_node)) {
@@ -5421,7 +5324,7 @@ fn containerDecl(
5421
5324
 
5422
5325
  switch (tree.tokenTag(container_decl.ast.main_token)) {
5423
5326
  .keyword_struct => {
5424
- const layout: std.builtin.Type.ContainerLayout = if (container_decl.layout_token) |t| switch (tree.tokenTag(t)) {
5327
+ const layout: std.lang.Type.ContainerLayout = if (container_decl.layout_token) |t| switch (tree.tokenTag(t)) {
5425
5328
  .keyword_packed => .@"packed",
5426
5329
  .keyword_extern => .@"extern",
5427
5330
  else => unreachable,
@@ -5431,7 +5334,7 @@ fn containerDecl(
5431
5334
  return rvalue(gz, ri, result, node);
5432
5335
  },
5433
5336
  .keyword_union => {
5434
- const layout: std.builtin.Type.ContainerLayout = if (container_decl.layout_token) |t| switch (tree.tokenTag(t)) {
5337
+ const layout: std.lang.Type.ContainerLayout = if (container_decl.layout_token) |t| switch (tree.tokenTag(t)) {
5435
5338
  .keyword_packed => .@"packed",
5436
5339
  .keyword_extern => .@"extern",
5437
5340
  else => unreachable,
@@ -5483,8 +5386,13 @@ fn containerDecl(
5483
5386
  const field_names = try scratch.addSlice(fields_len);
5484
5387
  const field_value_body_lens = try scratch.addOptionalSlice(scan_result.any_field_values, fields_len);
5485
5388
 
5389
+ const old_hasher = astgen.src_hasher;
5390
+ defer astgen.src_hasher = old_hasher;
5391
+ astgen.src_hasher = .init(.{});
5392
+
5486
5393
  // Before any field bodies comes the tag type, if specified.
5487
5394
  const tag_type_body_len: ?u32 = if (container_decl.ast.arg.unwrap()) |tag_type_node| len: {
5395
+ astgen.src_hasher.update(astgen.tree.getNodeSource(tag_type_node));
5488
5396
  const type_ref = try typeExpr(&block_scope, &namespace.base, tag_type_node);
5489
5397
  if (!block_scope.endsWithNoReturn()) {
5490
5398
  _ = try block_scope.addBreak(.break_inline, decl_inst, type_ref);
@@ -5494,10 +5402,6 @@ fn containerDecl(
5494
5402
  break :len body_len;
5495
5403
  } else null;
5496
5404
 
5497
- const old_hasher = astgen.src_hasher;
5498
- defer astgen.src_hasher = old_hasher;
5499
- astgen.src_hasher = .init(.{});
5500
-
5501
5405
  var next_field_idx: u32 = 0;
5502
5406
  var opt_nonexhaustive_node: Ast.Node.OptionalIndex = .none;
5503
5407
  for (container_decl.ast.members) |member_node| {
@@ -5681,7 +5585,7 @@ fn containerMember(
5681
5585
 
5682
5586
  const prev_decl_index = wip_decls.index;
5683
5587
  astgen.fnDecl(gz, scope, wip_decls, member_node, body, full) catch |err| switch (err) {
5684
- error.OutOfMemory => return error.OutOfMemory,
5588
+ error.OutOfMemory => |e| return e,
5685
5589
  error.AnalysisFail => {
5686
5590
  wip_decls.index = prev_decl_index;
5687
5591
  try addFailedDeclaration(
@@ -5704,7 +5608,7 @@ fn containerMember(
5704
5608
  const full = tree.fullVarDecl(member_node).?;
5705
5609
  const prev_decl_index = wip_decls.index;
5706
5610
  astgen.globalVarDecl(gz, scope, wip_decls, member_node, full) catch |err| switch (err) {
5707
- error.OutOfMemory => return error.OutOfMemory,
5611
+ error.OutOfMemory => |e| return e,
5708
5612
  error.AnalysisFail => {
5709
5613
  wip_decls.index = prev_decl_index;
5710
5614
  try addFailedDeclaration(
@@ -5722,7 +5626,7 @@ fn containerMember(
5722
5626
  .@"comptime" => {
5723
5627
  const prev_decl_index = wip_decls.index;
5724
5628
  astgen.comptimeDecl(gz, scope, wip_decls, member_node) catch |err| switch (err) {
5725
- error.OutOfMemory => return error.OutOfMemory,
5629
+ error.OutOfMemory => |e| return e,
5726
5630
  error.AnalysisFail => {
5727
5631
  wip_decls.index = prev_decl_index;
5728
5632
  try addFailedDeclaration(
@@ -5742,7 +5646,7 @@ fn containerMember(
5742
5646
  // Since it doesn't strictly matter *what* this is, let's save ourselves the trouble
5743
5647
  // of duplicating the test name logic, and just assume this is an unnamed test.
5744
5648
  astgen.testDecl(gz, scope, wip_decls, member_node) catch |err| switch (err) {
5745
- error.OutOfMemory => return error.OutOfMemory,
5649
+ error.OutOfMemory => |e| return e,
5746
5650
  error.AnalysisFail => {
5747
5651
  wip_decls.index = prev_decl_index;
5748
5652
  try addFailedDeclaration(
@@ -5876,7 +5780,7 @@ fn tryExpr(
5876
5780
  else => Zir.Inst.Tag.err_union_code,
5877
5781
  };
5878
5782
  const err_code = try else_scope.addUnNode(err_tag, operand, node);
5879
- try genDefers(&else_scope, &fn_block.base, scope, .{ .both = err_code });
5783
+ try genDefers(&else_scope, &fn_block.base, scope, .normal_and_error);
5880
5784
  try emitDbgStmt(&else_scope, try_lc);
5881
5785
  _ = try else_scope.addUnNode(.ret_node, err_code, node);
5882
5786
 
@@ -6656,9 +6560,16 @@ fn whileExpr(
6656
6560
  .operand = undefined,
6657
6561
  } },
6658
6562
  });
6563
+ if (!continue_scope.is_comptime) {
6564
+ _ = try continue_scope.addRestoreErrRetIndex(.{ .block = continue_block }, .always, then_node);
6565
+ }
6659
6566
  _ = try continue_scope.addBreak(break_tag, continue_block, .void_value);
6660
6567
  }
6661
6568
  try continue_scope.setBlockBody(continue_block);
6569
+ if (!then_scope.is_comptime) {
6570
+ const cont_node = while_full.ast.cont_expr.unwrap() orelse then_node;
6571
+ _ = try then_scope.addRestoreErrRetIndex(.{ .block = cond_block }, .always, cont_node);
6572
+ }
6662
6573
  _ = try then_scope.addBreak(break_tag, cond_block, .void_value);
6663
6574
 
6664
6575
  var else_scope = parent_gz.makeSubBlock(&cond_scope.base);
@@ -6703,6 +6614,9 @@ fn whileExpr(
6703
6614
 
6704
6615
  try checkUsed(parent_gz, &else_scope.base, sub_scope);
6705
6616
  if (!else_scope.endsWithNoReturn()) {
6617
+ if (!else_scope.is_comptime) {
6618
+ _ = try else_scope.addRestoreErrRetIndex(.{ .block = loop_block }, .always, else_node);
6619
+ }
6706
6620
  _ = try else_scope.addBreakWithSrcNode(break_tag, loop_block, else_result, else_node);
6707
6621
  }
6708
6622
  } else {
@@ -6973,6 +6887,9 @@ fn forExpr(
6973
6887
  });
6974
6888
 
6975
6889
  const break_tag: Zir.Inst.Tag = if (is_inline) .break_inline else .@"break";
6890
+ if (!then_scope.is_comptime) {
6891
+ _ = try then_scope.addRestoreErrRetIndex(.{ .block = cond_block }, .always, then_node);
6892
+ }
6976
6893
  _ = try then_scope.addBreak(break_tag, cond_block, .void_value);
6977
6894
 
6978
6895
  var else_scope = parent_gz.makeSubBlock(&cond_scope.base);
@@ -6990,6 +6907,9 @@ fn forExpr(
6990
6907
  _ = try addEnsureResult(&else_scope, else_result, else_node);
6991
6908
  }
6992
6909
  if (!else_scope.endsWithNoReturn()) {
6910
+ if (!else_scope.is_comptime) {
6911
+ _ = try else_scope.addRestoreErrRetIndex(.{ .block = loop_block }, .always, else_node);
6912
+ }
6993
6913
  _ = try else_scope.addBreakWithSrcNode(break_tag, loop_block, else_result, else_node);
6994
6914
  }
6995
6915
  } else {
@@ -8011,18 +7931,10 @@ fn ret(gz: *GenZir, scope: *Scope, node: Ast.Node.Index) InnerError!Zir.Inst.Ref
8011
7931
  // for detecting whether to add something to the function's inferred error set.
8012
7932
  const ident_token = tree.nodeMainToken(operand_node) + 2;
8013
7933
  const err_name_str_index = try astgen.identAsString(ident_token);
8014
- const defer_counts = countDefers(defer_outer, scope);
8015
- if (!defer_counts.need_err_code) {
8016
- try genDefers(gz, defer_outer, scope, .both_sans_err);
8017
- try emitDbgStmt(gz, ret_lc);
8018
- _ = try gz.addStrTok(.ret_err_value, err_name_str_index, ident_token);
8019
- return Zir.Inst.Ref.unreachable_value;
8020
- }
8021
- const err_code = try gz.addStrTok(.ret_err_value_code, err_name_str_index, ident_token);
8022
- try genDefers(gz, defer_outer, scope, .{ .both = err_code });
7934
+ try genDefers(gz, defer_outer, scope, .normal_and_error);
8023
7935
  try emitDbgStmt(gz, ret_lc);
8024
- _ = try gz.addUnNode(.ret_node, err_code, node);
8025
- return Zir.Inst.Ref.unreachable_value;
7936
+ _ = try gz.addStrTok(.ret_err_value, err_name_str_index, ident_token);
7937
+ return .unreachable_value;
8026
7938
  }
8027
7939
 
8028
7940
  const ri: ResultInfo = if (astgen.nodes_need_rl.contains(node)) .{
@@ -8049,15 +7961,13 @@ fn ret(gz: *GenZir, scope: *Scope, node: Ast.Node.Index) InnerError!Zir.Inst.Ref
8049
7961
  },
8050
7962
  .always => {
8051
7963
  // Value is always an error. Emit both error defers and regular defers.
8052
- const err_code = if (ri.rl == .ptr) try gz.addUnNode(.load, ri.rl.ptr.inst, node) else operand;
8053
- try genDefers(gz, defer_outer, scope, .{ .both = err_code });
7964
+ try genDefers(gz, defer_outer, scope, .normal_and_error);
8054
7965
  try emitDbgStmt(gz, ret_lc);
8055
7966
  try gz.addRet(ri, operand, node);
8056
7967
  return Zir.Inst.Ref.unreachable_value;
8057
7968
  },
8058
7969
  .maybe => {
8059
- const defer_counts = countDefers(defer_outer, scope);
8060
- if (!defer_counts.have_err) {
7970
+ if (!anyErrdefers(defer_outer, scope)) {
8061
7971
  // Only regular defers; no branch needed.
8062
7972
  try genDefers(gz, defer_outer, scope, .normal_only);
8063
7973
  try emitDbgStmt(gz, ret_lc);
@@ -8089,10 +7999,7 @@ fn ret(gz: *GenZir, scope: *Scope, node: Ast.Node.Index) InnerError!Zir.Inst.Ref
8089
7999
  var else_scope = gz.makeSubBlock(scope);
8090
8000
  defer else_scope.unstack();
8091
8001
 
8092
- const which_ones: DefersToEmit = if (!defer_counts.need_err_code) .both_sans_err else .{
8093
- .both = try else_scope.addUnNode(.err_union_code, result, node),
8094
- };
8095
- try genDefers(&else_scope, defer_outer, scope, which_ones);
8002
+ try genDefers(&else_scope, defer_outer, scope, .normal_and_error);
8096
8003
  try emitDbgStmt(&else_scope, ret_lc);
8097
8004
  try else_scope.addRet(ri, operand, node);
8098
8005
 
@@ -8151,39 +8058,42 @@ fn identifier(
8151
8058
  return rvalue(gz, ri, zir_const_ref, ident);
8152
8059
  }
8153
8060
 
8154
- if (ident_name_raw.len >= 2) integer: {
8155
- // Keep in sync with logic in `comptimeExpr2`.
8156
- const first_c = ident_name_raw[0];
8157
- if (first_c == 'i' or first_c == 'u') {
8158
- const signedness: std.builtin.Signedness = switch (first_c == 'i') {
8159
- true => .signed,
8160
- false => .unsigned,
8161
- };
8162
- if (ident_name_raw.len >= 3 and ident_name_raw[1] == '0') {
8163
- return astgen.failNode(
8164
- ident,
8165
- "primitive integer type '{s}' has leading zero",
8166
- .{ident_name_raw},
8167
- );
8168
- }
8169
- const bit_count = parseBitCount(ident_name_raw[1..]) catch |err| switch (err) {
8170
- error.Overflow => return astgen.failNode(
8171
- ident,
8172
- "primitive integer type '{s}' exceeds maximum bit width of 65535",
8173
- .{ident_name_raw},
8174
- ),
8175
- error.InvalidCharacter => break :integer,
8176
- };
8177
- const result = try gz.add(.{
8178
- .tag = .int_type,
8179
- .data = .{ .int_type = .{
8180
- .src_node = gz.nodeIndexToRelative(ident),
8181
- .signedness = signedness,
8182
- .bit_count = bit_count,
8183
- } },
8184
- });
8185
- return rvalue(gz, ri, result, ident);
8061
+ int_type: {
8062
+ if (ident_name_raw.len < 2) break :int_type;
8063
+ const signedness: std.lang.Signedness = switch (ident_name_raw[0]) {
8064
+ 'u' => .unsigned,
8065
+ 'i' => .signed,
8066
+ else => break :int_type,
8067
+ };
8068
+ // `u0` already handled by `primitive_instrs`
8069
+ if (std.mem.eql(u8, ident_name_raw, "i0")) {
8070
+ return astgen.failNode(ident, "signed integer cannot have bit width 0", .{});
8071
+ }
8072
+ if (ident_name_raw[1] == '0') {
8073
+ assert(ident_name_raw.len >= 3); // `u0` and `i0` handled
8074
+ return astgen.failNode(
8075
+ ident,
8076
+ "primitive integer type '{s}' has leading zero",
8077
+ .{ident_name_raw},
8078
+ );
8186
8079
  }
8080
+ const bit_count = parseBitCount(ident_name_raw[1..]) catch |err| switch (err) {
8081
+ error.Overflow => return astgen.failNode(
8082
+ ident,
8083
+ "primitive integer type '{s}' exceeds maximum bit width of 65535",
8084
+ .{ident_name_raw},
8085
+ ),
8086
+ error.InvalidCharacter => break :int_type,
8087
+ };
8088
+ const result = try gz.add(.{
8089
+ .tag = .int_type,
8090
+ .data = .{ .int_type = .{
8091
+ .src_node = gz.nodeIndexToRelative(ident),
8092
+ .signedness = signedness,
8093
+ .bit_count = bit_count,
8094
+ } },
8095
+ });
8096
+ return rvalue(gz, ri, result, ident);
8187
8097
  }
8188
8098
  }
8189
8099
 
@@ -8405,9 +8315,10 @@ fn tunnelThroughClosure(
8405
8315
 
8406
8316
  // Otherwise we need a tunnel. First, figure out the path of namespaces we
8407
8317
  // are tunneling through. This is usually only going to be one or two, so
8408
- // use an SFBA to optimize for the common case.
8409
- var sfba = std.heap.stackFallback(@sizeOf(usize) * 2, astgen.arena);
8410
- var intermediate_tunnels = try sfba.get().alloc(*Scope.Namespace, num_tunnels - 1);
8318
+ // use an BFA to optimize for the common case.
8319
+ var bfa_buf: [2]usize = undefined;
8320
+ var bfa: std.heap.BufferFirstAllocator = .init(@ptrCast(&bfa_buf), astgen.arena);
8321
+ var intermediate_tunnels = try bfa.allocator().alloc(*Scope.Namespace, num_tunnels - 1);
8411
8322
 
8412
8323
  const root_ns = ns: {
8413
8324
  var i: usize = num_tunnels - 1;
@@ -8562,7 +8473,7 @@ fn numberLiteral(gz: *GenZir, ri: ResultInfo, node: Ast.Node.Index, source_node:
8562
8473
  big_int.setString(@intFromEnum(base), bytes[prefix_offset..]) catch |err| switch (err) {
8563
8474
  error.InvalidCharacter => unreachable, // caught in `parseNumberLiteral`
8564
8475
  error.InvalidBase => unreachable, // we only pass 16, 8, 2, see above
8565
- error.OutOfMemory => return error.OutOfMemory,
8476
+ error.OutOfMemory => |e| return e,
8566
8477
  };
8567
8478
 
8568
8479
  const limbs = big_int.limbs[0..big_int.len()];
@@ -8739,7 +8650,7 @@ fn asmExpr(
8739
8650
 
8740
8651
  const clobbers: Zir.Inst.Ref = if (full.ast.clobbers.unwrap()) |clobbers_node|
8741
8652
  try comptimeExpr(gz, scope, .{ .rl = .{
8742
- .coerced_ty = try gz.addBuiltinValue(clobbers_node, .clobbers),
8653
+ .coerced_ty = try gz.addStdLangValue(clobbers_node, .clobbers),
8743
8654
  } }, clobbers_node, .clobber)
8744
8655
  else
8745
8656
  .none;
@@ -8955,7 +8866,6 @@ fn typeOf(
8955
8866
  var typeof_scope = gz.makeSubBlock(scope);
8956
8867
  typeof_scope.is_comptime = false;
8957
8868
  typeof_scope.is_typeof = true;
8958
- typeof_scope.c_import = false;
8959
8869
  defer typeof_scope.unstack();
8960
8870
 
8961
8871
  const ty_expr = try reachableExpr(&typeof_scope, &typeof_scope.base, .{ .rl = .none }, args[0], node);
@@ -9055,8 +8965,7 @@ fn builtinCall(
9055
8965
  const builtin_name = tree.tokenSlice(builtin_token);
9056
8966
 
9057
8967
  // We handle the different builtins manually because they have different semantics depending
9058
- // on the function. For example, `@as` and others participate in result location semantics,
9059
- // and `@cImport` creates a special scope that collects a .c source code text buffer.
8968
+ // on the function. For example, `@as` and others participate in result location semantics.
9060
8969
  // Also, some builtins have a variable number of parameters.
9061
8970
 
9062
8971
  const info = BuiltinFn.list.get(builtin_name) orelse {
@@ -9083,7 +8992,7 @@ fn builtinCall(
9083
8992
  if (!allow_branch_hint) {
9084
8993
  return astgen.failNode(node, "'@branchHint' must appear as the first statement in a function or conditional branch", .{});
9085
8994
  }
9086
- const hint_ty = try gz.addBuiltinValue(node, .branch_hint);
8995
+ const hint_ty = try gz.addStdLangValue(node, .branch_hint);
9087
8996
  const hint_val = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = hint_ty } }, params[0], .operand_branchHint);
9088
8997
  _ = try gz.addExtendedPayload(.branch_hint, Zir.Inst.UnNode{
9089
8998
  .node = gz.nodeIndexToRelative(node),
@@ -9175,14 +9084,13 @@ fn builtinCall(
9175
9084
  .bit_cast => return bitCast( gz, scope, ri, node, params[0]),
9176
9085
  .TypeOf => return typeOf( gz, scope, ri, node, params),
9177
9086
  .union_init => return unionInit(gz, scope, ri, node, params),
9178
- .c_import => return cImport( gz, scope, node, params[0]),
9179
9087
  .min => return minMax( gz, scope, ri, node, params, .min),
9180
9088
  .max => return minMax( gz, scope, ri, node, params, .max),
9181
9089
  // zig fmt: on
9182
9090
 
9183
9091
  .@"export" => {
9184
9092
  const exported = try expr(gz, scope, .{ .rl = .none }, params[0]);
9185
- const export_options_ty = try gz.addBuiltinValue(node, .export_options);
9093
+ const export_options_ty = try gz.addStdLangValue(node, .export_options);
9186
9094
  const options = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = export_options_ty } }, params[1], .export_options);
9187
9095
  _ = try gz.addPlNode(.@"export", node, Zir.Inst.Export{
9188
9096
  .exported = exported,
@@ -9192,7 +9100,7 @@ fn builtinCall(
9192
9100
  },
9193
9101
  .@"extern" => {
9194
9102
  const type_inst = try typeExpr(gz, scope, params[0]);
9195
- const extern_options_ty = try gz.addBuiltinValue(node, .extern_options);
9103
+ const extern_options_ty = try gz.addStdLangValue(node, .extern_options);
9196
9104
  const options = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = extern_options_ty } }, params[1], .extern_options);
9197
9105
  const result = try gz.addExtendedPayload(.builtin_extern, Zir.Inst.BinNode{
9198
9106
  .node = gz.nodeIndexToRelative(node),
@@ -9202,7 +9110,7 @@ fn builtinCall(
9202
9110
  return rvalue(gz, ri, result, node);
9203
9111
  },
9204
9112
  .set_float_mode => {
9205
- const float_mode_ty = try gz.addBuiltinValue(node, .float_mode);
9113
+ const float_mode_ty = try gz.addStdLangValue(node, .float_mode);
9206
9114
  const order = try expr(gz, scope, .{ .rl = .{ .coerced_ty = float_mode_ty } }, params[0]);
9207
9115
  _ = try gz.addExtendedPayload(.set_float_mode, Zir.Inst.UnNode{
9208
9116
  .node = gz.nodeIndexToRelative(node),
@@ -9288,7 +9196,7 @@ fn builtinCall(
9288
9196
 
9289
9197
  .EnumLiteral => return rvalue(gz, ri, .enum_literal_type, node),
9290
9198
  .Int => {
9291
- const signedness_ty = try gz.addBuiltinValue(node, .signedness);
9199
+ const signedness_ty = try gz.addStdLangValue(node, .signedness);
9292
9200
  const result = try gz.addPlNode(.reify_int, node, Zir.Inst.Bin{
9293
9201
  .lhs = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = signedness_ty } }, params[0], .int_signedness),
9294
9202
  .rhs = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = .u16_type } }, params[1], .int_bit_width),
@@ -9303,8 +9211,8 @@ fn builtinCall(
9303
9211
  return rvalue(gz, ri, result, node);
9304
9212
  },
9305
9213
  .Pointer => {
9306
- const ptr_size_ty = try gz.addBuiltinValue(node, .pointer_size);
9307
- const ptr_attrs_ty = try gz.addBuiltinValue(node, .pointer_attributes);
9214
+ const ptr_size_ty = try gz.addStdLangValue(node, .pointer_size);
9215
+ const ptr_attrs_ty = try gz.addStdLangValue(node, .pointer_attributes);
9308
9216
  const size = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = ptr_size_ty } }, params[0], .pointer_size);
9309
9217
  const attrs = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = ptr_attrs_ty } }, params[1], .pointer_attrs);
9310
9218
  const elem_ty = try typeExpr(gz, scope, params[2]);
@@ -9323,7 +9231,7 @@ fn builtinCall(
9323
9231
  return rvalue(gz, ri, result, node);
9324
9232
  },
9325
9233
  .Fn => {
9326
- const fn_attrs_ty = try gz.addBuiltinValue(node, .fn_attributes);
9234
+ const fn_attrs_ty = try gz.addStdLangValue(node, .fn_attributes);
9327
9235
  const param_types = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = .slice_const_type_type } }, params[0], .fn_param_types);
9328
9236
  const param_attrs_ty = try gz.addExtendedPayloadSmall(
9329
9237
  .reify_slice_arg_ty,
@@ -9343,7 +9251,7 @@ fn builtinCall(
9343
9251
  return rvalue(gz, ri, result, node);
9344
9252
  },
9345
9253
  .Struct => {
9346
- const container_layout_ty = try gz.addBuiltinValue(node, .container_layout);
9254
+ const container_layout_ty = try gz.addStdLangValue(node, .container_layout);
9347
9255
  const layout = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = container_layout_ty } }, params[0], .struct_layout);
9348
9256
  const backing_ty = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = .optional_type_type } }, params[1], .type);
9349
9257
  const field_names = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = .slice_const_slice_const_u8_type } }, params[2], .struct_field_names);
@@ -9371,7 +9279,7 @@ fn builtinCall(
9371
9279
  return rvalue(gz, ri, result, node);
9372
9280
  },
9373
9281
  .Union => {
9374
- const container_layout_ty = try gz.addBuiltinValue(node, .container_layout);
9282
+ const container_layout_ty = try gz.addStdLangValue(node, .container_layout);
9375
9283
  const layout = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = container_layout_ty } }, params[0], .union_layout);
9376
9284
  const arg_ty = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = .optional_type_type } }, params[1], .type);
9377
9285
  const field_names = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = .slice_const_slice_const_u8_type } }, params[2], .union_field_names);
@@ -9399,7 +9307,7 @@ fn builtinCall(
9399
9307
  return rvalue(gz, ri, result, node);
9400
9308
  },
9401
9309
  .Enum => {
9402
- const enum_mode_ty = try gz.addBuiltinValue(node, .enum_mode);
9310
+ const enum_mode_ty = try gz.addStdLangValue(node, .enum_mode);
9403
9311
  const tag_ty = try typeExpr(gz, scope, params[0]);
9404
9312
  const mode = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = enum_mode_ty } }, params[1], .type);
9405
9313
  const field_names = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = .slice_const_slice_const_u8_type } }, params[2], .enum_field_names);
@@ -9484,9 +9392,6 @@ fn builtinCall(
9484
9392
  .bit_offset_of => return offsetOf(gz, scope, ri, node, params[0], params[1], .bit_offset_of),
9485
9393
  .offset_of => return offsetOf(gz, scope, ri, node, params[0], params[1], .offset_of),
9486
9394
 
9487
- .c_undef => return simpleCBuiltin(gz, scope, ri, node, params[0], .c_undef),
9488
- .c_include => return simpleCBuiltin(gz, scope, ri, node, params[0], .c_include),
9489
-
9490
9395
  .cmpxchg_strong => return cmpxchg(gz, scope, ri, node, params, 1),
9491
9396
  .cmpxchg_weak => return cmpxchg(gz, scope, ri, node, params, 0),
9492
9397
  // zig fmt: on
@@ -9509,17 +9414,6 @@ fn builtinCall(
9509
9414
  });
9510
9415
  return rvalue(gz, ri, result, node);
9511
9416
  },
9512
- .c_define => {
9513
- if (!gz.c_import) return gz.astgen.failNode(node, "C define valid only inside C import block", .{});
9514
- const name = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = .slice_const_u8_type } }, params[0], .operand_cDefine_macro_name);
9515
- const value = try comptimeExpr(gz, scope, .{ .rl = .none }, params[1], .operand_cDefine_macro_value);
9516
- const result = try gz.addExtendedPayload(.c_define, Zir.Inst.BinNode{
9517
- .node = gz.nodeIndexToRelative(node),
9518
- .lhs = name,
9519
- .rhs = value,
9520
- });
9521
- return rvalue(gz, ri, result, node);
9522
- },
9523
9417
  .splat => {
9524
9418
  const result_type = try ri.rl.resultTypeForCast(gz, node, builtin_name);
9525
9419
  const elem_type = try gz.addUnNode(.splat_op_result_ty, result_type, node);
@@ -9531,7 +9425,7 @@ fn builtinCall(
9531
9425
  return rvalue(gz, ri, result, node);
9532
9426
  },
9533
9427
  .reduce => {
9534
- const reduce_op_ty = try gz.addBuiltinValue(node, .reduce_op);
9428
+ const reduce_op_ty = try gz.addStdLangValue(node, .reduce_op);
9535
9429
  const op = try expr(gz, scope, .{ .rl = .{ .coerced_ty = reduce_op_ty } }, params[0]);
9536
9430
  const scalar = try expr(gz, scope, .{ .rl = .none }, params[1]);
9537
9431
  const result = try gz.addPlNode(.reduce, node, Zir.Inst.Bin{
@@ -9547,7 +9441,7 @@ fn builtinCall(
9547
9441
  .shl_with_overflow => return overflowArithmetic(gz, scope, ri, node, params, .shl_with_overflow),
9548
9442
 
9549
9443
  .atomic_load => {
9550
- const atomic_order_type = try gz.addBuiltinValue(node, .atomic_order);
9444
+ const atomic_order_type = try gz.addStdLangValue(node, .atomic_order);
9551
9445
  const result = try gz.addPlNode(.atomic_load, node, Zir.Inst.AtomicLoad{
9552
9446
  // zig fmt: off
9553
9447
  .elem_type = try typeExpr(gz, scope, params[0]),
@@ -9558,8 +9452,8 @@ fn builtinCall(
9558
9452
  return rvalue(gz, ri, result, node);
9559
9453
  },
9560
9454
  .atomic_rmw => {
9561
- const atomic_order_type = try gz.addBuiltinValue(node, .atomic_order);
9562
- const atomic_rmw_op_type = try gz.addBuiltinValue(node, .atomic_rmw_op);
9455
+ const atomic_order_type = try gz.addStdLangValue(node, .atomic_order);
9456
+ const atomic_rmw_op_type = try gz.addStdLangValue(node, .atomic_rmw_op);
9563
9457
  const int_type = try typeExpr(gz, scope, params[0]);
9564
9458
  const result = try gz.addPlNode(.atomic_rmw, node, Zir.Inst.AtomicRmw{
9565
9459
  // zig fmt: off
@@ -9572,7 +9466,7 @@ fn builtinCall(
9572
9466
  return rvalue(gz, ri, result, node);
9573
9467
  },
9574
9468
  .atomic_store => {
9575
- const atomic_order_type = try gz.addBuiltinValue(node, .atomic_order);
9469
+ const atomic_order_type = try gz.addStdLangValue(node, .atomic_order);
9576
9470
  const int_type = try typeExpr(gz, scope, params[0]);
9577
9471
  _ = try gz.addPlNode(.atomic_store, node, Zir.Inst.AtomicStore{
9578
9472
  // zig fmt: off
@@ -9596,7 +9490,7 @@ fn builtinCall(
9596
9490
  return rvalue(gz, ri, result, node);
9597
9491
  },
9598
9492
  .call => {
9599
- const call_modifier_ty = try gz.addBuiltinValue(node, .call_modifier);
9493
+ const call_modifier_ty = try gz.addStdLangValue(node, .call_modifier);
9600
9494
  const modifier = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = call_modifier_ty } }, params[0], .call_modifier);
9601
9495
  const callee = try expr(gz, scope, .{ .rl = .none }, params[1]);
9602
9496
  const args = try expr(gz, scope, .{ .rl = .none }, params[2]);
@@ -9673,7 +9567,7 @@ fn builtinCall(
9673
9567
  return rvalue(gz, ri, result, node);
9674
9568
  },
9675
9569
  .prefetch => {
9676
- const prefetch_options_ty = try gz.addBuiltinValue(node, .prefetch_options);
9570
+ const prefetch_options_ty = try gz.addStdLangValue(node, .prefetch_options);
9677
9571
  const ptr = try expr(gz, scope, .{ .rl = .none }, params[0]);
9678
9572
  const options = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = prefetch_options_ty } }, params[1], .prefetch_options);
9679
9573
  _ = try gz.addExtendedPayload(.prefetch, Zir.Inst.BinNode{
@@ -9906,7 +9800,7 @@ fn cmpxchg(
9906
9800
  small: u16,
9907
9801
  ) InnerError!Zir.Inst.Ref {
9908
9802
  const int_type = try typeExpr(gz, scope, params[0]);
9909
- const atomic_order_type = try gz.addBuiltinValue(node, .atomic_order);
9803
+ const atomic_order_type = try gz.addStdLangValue(node, .atomic_order);
9910
9804
  const result = try gz.addExtendedPayloadSmall(.cmpxchg, small, Zir.Inst.Cmpxchg{
9911
9805
  // zig fmt: off
9912
9806
  .node = gz.nodeIndexToRelative(node),
@@ -9951,30 +9845,6 @@ fn divBuiltin(
9951
9845
  return rvalue(gz, ri, result, node);
9952
9846
  }
9953
9847
 
9954
- fn simpleCBuiltin(
9955
- gz: *GenZir,
9956
- scope: *Scope,
9957
- ri: ResultInfo,
9958
- node: Ast.Node.Index,
9959
- operand_node: Ast.Node.Index,
9960
- tag: Zir.Inst.Extended,
9961
- ) InnerError!Zir.Inst.Ref {
9962
- const name: []const u8 = if (tag == .c_undef) "C undef" else "C include";
9963
- if (!gz.c_import) return gz.astgen.failNode(node, "{s} valid only inside C import block", .{name});
9964
- const operand = try comptimeExpr(
9965
- gz,
9966
- scope,
9967
- .{ .rl = .{ .coerced_ty = .slice_const_u8_type } },
9968
- operand_node,
9969
- if (tag == .c_undef) .operand_cUndef_macro_name else .operand_cInclude_file_name,
9970
- );
9971
- _ = try gz.addExtendedPayload(tag, Zir.Inst.UnNode{
9972
- .node = gz.nodeIndexToRelative(node),
9973
- .operand = operand,
9974
- });
9975
- return rvalue(gz, ri, .void_value, node);
9976
- }
9977
-
9978
9848
  fn offsetOf(
9979
9849
  gz: *GenZir,
9980
9850
  scope: *Scope,
@@ -10024,35 +9894,6 @@ fn shiftOp(
10024
9894
  return rvalue(gz, ri, result, node);
10025
9895
  }
10026
9896
 
10027
- fn cImport(
10028
- gz: *GenZir,
10029
- scope: *Scope,
10030
- node: Ast.Node.Index,
10031
- body_node: Ast.Node.Index,
10032
- ) InnerError!Zir.Inst.Ref {
10033
- const astgen = gz.astgen;
10034
- const gpa = astgen.gpa;
10035
-
10036
- if (gz.c_import) return gz.astgen.failNode(node, "cannot nest @cImport", .{});
10037
-
10038
- var block_scope = gz.makeSubBlock(scope);
10039
- block_scope.is_comptime = true;
10040
- block_scope.c_import = true;
10041
- defer block_scope.unstack();
10042
-
10043
- const block_inst = try gz.makeBlockInst(.c_import, node);
10044
- const block_result = try fullBodyExpr(&block_scope, &block_scope.base, .{ .rl = .none }, body_node, .normal);
10045
- _ = try gz.addUnNode(.ensure_result_used, block_result, node);
10046
- if (!gz.refIsNoReturn(block_result)) {
10047
- _ = try block_scope.addBreak(.break_inline, block_inst, .void_value);
10048
- }
10049
- try block_scope.setBlockBody(block_inst);
10050
- // block_scope unstacked now, can add new instructions to gz
10051
- try gz.instructions.append(gpa, block_inst);
10052
-
10053
- return block_inst.toRef();
10054
- }
10055
-
10056
9897
  fn overflowArithmetic(
10057
9898
  gz: *GenZir,
10058
9899
  scope: *Scope,
@@ -10084,7 +9925,7 @@ fn callExpr(
10084
9925
  const astgen = gz.astgen;
10085
9926
 
10086
9927
  const callee = try calleeExpr(gz, scope, ri.rl, override_decl_literal_type, call.ast.fn_expr);
10087
- const modifier: std.builtin.CallModifier = blk: {
9928
+ const modifier: std.lang.CallModifier = blk: {
10088
9929
  if (gz.nosuspend_node != .none) {
10089
9930
  break :blk .no_suspend;
10090
9931
  }
@@ -10269,32 +10110,37 @@ const primitive_instrs = std.StaticStringMap(Zir.Inst.Ref).initComptime(.{
10269
10110
  .{ "c_ushort", .c_ushort_type },
10270
10111
  .{ "comptime_float", .comptime_float_type },
10271
10112
  .{ "comptime_int", .comptime_int_type },
10272
- .{ "f128", .f128_type },
10273
- .{ "f16", .f16_type },
10274
- .{ "f32", .f32_type },
10275
- .{ "f64", .f64_type },
10276
- .{ "f80", .f80_type },
10277
10113
  .{ "false", .bool_false },
10278
- .{ "i16", .i16_type },
10279
- .{ "i32", .i32_type },
10280
- .{ "i64", .i64_type },
10281
- .{ "i128", .i128_type },
10282
- .{ "i8", .i8_type },
10283
- .{ "isize", .isize_type },
10284
10114
  .{ "noreturn", .noreturn_type },
10285
10115
  .{ "null", .null_value },
10286
10116
  .{ "true", .bool_true },
10287
10117
  .{ "type", .type_type },
10118
+ .{ "undefined", .undef },
10119
+ .{ "void", .void_type },
10120
+
10121
+ .{ "f16", .f16_type },
10122
+ .{ "f32", .f32_type },
10123
+ .{ "f64", .f64_type },
10124
+ .{ "f80", .f80_type },
10125
+ .{ "f128", .f128_type },
10126
+
10127
+ .{ "u0", .u0_type },
10128
+ .{ "u1", .u1_type },
10129
+ .{ "u8", .u8_type },
10130
+ .{ "i8", .i8_type },
10288
10131
  .{ "u16", .u16_type },
10132
+ .{ "i16", .i16_type },
10289
10133
  .{ "u29", .u29_type },
10290
10134
  .{ "u32", .u32_type },
10135
+ .{ "i32", .i32_type },
10291
10136
  .{ "u64", .u64_type },
10137
+ .{ "i64", .i64_type },
10138
+ .{ "u80", .u80_type },
10292
10139
  .{ "u128", .u128_type },
10293
- .{ "u1", .u1_type },
10294
- .{ "u8", .u8_type },
10295
- .{ "undefined", .undef },
10140
+ .{ "i128", .i128_type },
10141
+ .{ "u256", .u256_type },
10296
10142
  .{ "usize", .usize_type },
10297
- .{ "void", .void_type },
10143
+ .{ "isize", .isize_type },
10298
10144
  });
10299
10145
 
10300
10146
  comptime {
@@ -10446,7 +10292,6 @@ fn nodeMayEvalToError(tree: *const Ast, start_node: Ast.Node.Index) BuiltinFn.Ev
10446
10292
  .add_wrap,
10447
10293
  .add_sat,
10448
10294
  .array_cat,
10449
- .array_mult,
10450
10295
  .assign,
10451
10296
  .assign_destructure,
10452
10297
  .assign_bit_and,
@@ -11286,7 +11131,6 @@ const Scope = struct {
11286
11131
  parent: *Scope,
11287
11132
  index: u32,
11288
11133
  len: u32,
11289
- remapped_err_code: Zir.Inst.OptionalIndex = .none,
11290
11134
  };
11291
11135
 
11292
11136
  /// Represents a global scope that has any number of declarations in it.
@@ -11339,7 +11183,6 @@ const GenZir = struct {
11339
11183
  /// This is set to true for a `GenZir` of a `block_inline`, indicating that
11340
11184
  /// exits from this block should use `break_inline` rather than `break`.
11341
11185
  is_inline: bool = false,
11342
- c_import: bool = false,
11343
11186
  /// The containing decl AST node.
11344
11187
  decl_node_index: Ast.Node.Index,
11345
11188
  /// The containing decl line index, absolute.
@@ -11427,7 +11270,6 @@ const GenZir = struct {
11427
11270
  return .{
11428
11271
  .is_comptime = gz.is_comptime,
11429
11272
  .is_typeof = gz.is_typeof,
11430
- .c_import = gz.c_import,
11431
11273
  .decl_node_index = gz.decl_node_index,
11432
11274
  .decl_line = gz.decl_line,
11433
11275
  .parent = scope,
@@ -11959,8 +11801,8 @@ const GenZir = struct {
11959
11801
  return new_index;
11960
11802
  }
11961
11803
 
11962
- fn addBuiltinValue(gz: *GenZir, src_node: Ast.Node.Index, val: Zir.Inst.BuiltinValue) !Zir.Inst.Ref {
11963
- return addExtendedNodeSmall(gz, .builtin_value, src_node, @intFromEnum(val));
11804
+ fn addStdLangValue(gz: *GenZir, src_node: Ast.Node.Index, val: Zir.Inst.StdLangValue) !Zir.Inst.Ref {
11805
+ return addExtendedNodeSmall(gz, .std_lang_value, src_node, @intFromEnum(val));
11964
11806
  }
11965
11807
 
11966
11808
  fn addExtendedPayload(gz: *GenZir, opcode: Zir.Inst.Extended, extra: anytype) !Zir.Inst.Ref {
@@ -12508,7 +12350,7 @@ const GenZir = struct {
12508
12350
  fn setStruct(gz: *GenZir, inst: Zir.Inst.Index, args: struct {
12509
12351
  src_node: Ast.Node.Index,
12510
12352
  name_strat: Zir.Inst.NameStrategy,
12511
- layout: std.builtin.Type.ContainerLayout,
12353
+ layout: std.lang.Type.ContainerLayout,
12512
12354
  backing_int_type_body_len: ?u32,
12513
12355
  decls_len: u32,
12514
12356
  fields_len: u32,
@@ -12999,17 +12841,18 @@ fn scanContainer(
12999
12841
  next: ?*@This(),
13000
12842
  };
13001
12843
 
13002
- // The maps below are allocated into this SFBA to avoid using the GPA for small namespaces.
13003
- var sfba_state = std.heap.stackFallback(512, astgen.gpa);
13004
- const sfba = sfba_state.get();
12844
+ // The maps below are allocated into this BFA to avoid using the GPA for small namespaces.
12845
+ var bfa_buf: [512]u8 = undefined;
12846
+ var bfa_state: std.heap.BufferFirstAllocator = .init(&bfa_buf, astgen.gpa);
12847
+ const bfa = bfa_state.allocator();
13005
12848
 
13006
12849
  var names: std.AutoArrayHashMapUnmanaged(Zir.NullTerminatedString, NameEntry) = .empty;
13007
12850
  var test_names: std.AutoArrayHashMapUnmanaged(Zir.NullTerminatedString, NameEntry) = .empty;
13008
12851
  var decltest_names: std.AutoArrayHashMapUnmanaged(Zir.NullTerminatedString, NameEntry) = .empty;
13009
12852
  defer {
13010
- names.deinit(sfba);
13011
- test_names.deinit(sfba);
13012
- decltest_names.deinit(sfba);
12853
+ names.deinit(bfa);
12854
+ test_names.deinit(bfa);
12855
+ decltest_names.deinit(bfa);
13013
12856
  }
13014
12857
 
13015
12858
  var any_duplicates = false;
@@ -13081,7 +12924,7 @@ fn scanContainer(
13081
12924
  else => {}, // unnamed test
13082
12925
  .string_literal => {
13083
12926
  const name = try astgen.strLitAsString(test_name_token);
13084
- const gop = try test_names.getOrPut(sfba, name.index);
12927
+ const gop = try test_names.getOrPut(bfa, name.index);
13085
12928
  if (gop.found_existing) {
13086
12929
  var e = gop.value_ptr;
13087
12930
  while (e.next) |n| e = n;
@@ -13094,7 +12937,7 @@ fn scanContainer(
13094
12937
  },
13095
12938
  .identifier => {
13096
12939
  const name = try astgen.identAsString(test_name_token);
13097
- const gop = try decltest_names.getOrPut(sfba, name);
12940
+ const gop = try decltest_names.getOrPut(bfa, name);
13098
12941
  if (gop.found_existing) {
13099
12942
  var e = gop.value_ptr;
13100
12943
  while (e.next) |n| e = n;
@@ -13121,7 +12964,7 @@ fn scanContainer(
13121
12964
  }
13122
12965
 
13123
12966
  {
13124
- const gop = try names.getOrPut(sfba, name_str_index);
12967
+ const gop = try names.getOrPut(bfa, name_str_index);
13125
12968
  const new_ent: NameEntry = .{
13126
12969
  .tok = name_token,
13127
12970
  .next = null,