wasmtime 22.0.0 → 23.0.2

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 (2164) hide show
  1. checksums.yaml +4 -4
  2. data/Cargo.lock +127 -90
  3. data/ext/Cargo.toml +5 -5
  4. data/ext/cargo-vendor/cranelift-bforest-0.110.2/.cargo-checksum.json +1 -0
  5. data/ext/cargo-vendor/cranelift-bforest-0.110.2/Cargo.toml +50 -0
  6. data/ext/cargo-vendor/cranelift-bitset-0.110.2/.cargo-checksum.json +1 -0
  7. data/ext/cargo-vendor/cranelift-bitset-0.110.2/Cargo.toml +60 -0
  8. data/ext/cargo-vendor/cranelift-bitset-0.110.2/src/compound.rs +508 -0
  9. data/ext/cargo-vendor/cranelift-bitset-0.110.2/src/lib.rs +19 -0
  10. data/ext/cargo-vendor/cranelift-bitset-0.110.2/src/scalar.rs +575 -0
  11. data/ext/cargo-vendor/cranelift-bitset-0.110.2/tests/bitset.rs +78 -0
  12. data/ext/cargo-vendor/cranelift-codegen-0.110.2/.cargo-checksum.json +1 -0
  13. data/ext/cargo-vendor/cranelift-codegen-0.110.2/Cargo.toml +206 -0
  14. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/binemit/stack_map.rs +141 -0
  15. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/context.rs +390 -0
  16. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/data_value.rs +410 -0
  17. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/ir/dfg.rs +1806 -0
  18. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/ir/globalvalue.rs +147 -0
  19. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/ir/immediates.rs +2109 -0
  20. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/ir/instructions.rs +1015 -0
  21. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/ir/jumptable.rs +168 -0
  22. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/ir/mod.rs +110 -0
  23. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/ir/trapcode.rs +148 -0
  24. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/ir/types.rs +643 -0
  25. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/ir/user_stack_maps.rs +101 -0
  26. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/isa/aarch64/inst/emit.rs +3605 -0
  27. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/isa/aarch64/inst/emit_tests.rs +7927 -0
  28. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/isa/aarch64/inst/mod.rs +3058 -0
  29. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/isa/aarch64/inst.isle +4221 -0
  30. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/isa/aarch64/lower.isle +2969 -0
  31. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/isa/aarch64/mod.rs +259 -0
  32. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/isa/mod.rs +462 -0
  33. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/isa/riscv64/inst/emit.rs +2741 -0
  34. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/isa/riscv64/inst/emit_tests.rs +2219 -0
  35. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/isa/riscv64/inst/mod.rs +1935 -0
  36. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/isa/riscv64/inst.isle +3153 -0
  37. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/isa/riscv64/lower/isle.rs +654 -0
  38. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/isa/riscv64/lower.isle +2953 -0
  39. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/isa/riscv64/mod.rs +265 -0
  40. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/isa/s390x/inst/emit.rs +3421 -0
  41. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/isa/s390x/inst/mod.rs +3395 -0
  42. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/isa/s390x/lower.isle +3983 -0
  43. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/isa/s390x/mod.rs +220 -0
  44. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/isa/x64/inst/emit.rs +4297 -0
  45. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/isa/x64/inst/emit_state.rs +65 -0
  46. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/isa/x64/inst/mod.rs +2818 -0
  47. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/isa/x64/inst.isle +5299 -0
  48. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/isa/x64/lower.isle +4819 -0
  49. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/isa/x64/mod.rs +239 -0
  50. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/isle_prelude.rs +965 -0
  51. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/legalizer/mod.rs +343 -0
  52. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/lib.rs +106 -0
  53. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/machinst/abi.rs +2427 -0
  54. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/machinst/buffer.rs +2544 -0
  55. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/machinst/helpers.rs +23 -0
  56. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/machinst/isle.rs +908 -0
  57. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/machinst/lower.rs +1462 -0
  58. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/machinst/mod.rs +564 -0
  59. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/machinst/vcode.rs +1840 -0
  60. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/prelude.isle +654 -0
  61. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/prelude_lower.isle +1070 -0
  62. data/ext/cargo-vendor/cranelift-codegen-0.110.2/src/write.rs +660 -0
  63. data/ext/cargo-vendor/cranelift-codegen-meta-0.110.2/.cargo-checksum.json +1 -0
  64. data/ext/cargo-vendor/cranelift-codegen-meta-0.110.2/Cargo.toml +45 -0
  65. data/ext/cargo-vendor/cranelift-codegen-meta-0.110.2/src/cdsl/types.rs +512 -0
  66. data/ext/cargo-vendor/cranelift-codegen-meta-0.110.2/src/cdsl/typevar.rs +980 -0
  67. data/ext/cargo-vendor/cranelift-codegen-meta-0.110.2/src/gen_inst.rs +1278 -0
  68. data/ext/cargo-vendor/cranelift-codegen-meta-0.110.2/src/shared/instructions.rs +3760 -0
  69. data/ext/cargo-vendor/cranelift-codegen-meta-0.110.2/src/shared/types.rs +143 -0
  70. data/ext/cargo-vendor/cranelift-codegen-shared-0.110.2/.cargo-checksum.json +1 -0
  71. data/ext/cargo-vendor/cranelift-codegen-shared-0.110.2/Cargo.toml +31 -0
  72. data/ext/cargo-vendor/cranelift-control-0.110.2/.cargo-checksum.json +1 -0
  73. data/ext/cargo-vendor/cranelift-control-0.110.2/Cargo.toml +39 -0
  74. data/ext/cargo-vendor/cranelift-entity-0.110.2/.cargo-checksum.json +1 -0
  75. data/ext/cargo-vendor/cranelift-entity-0.110.2/Cargo.toml +66 -0
  76. data/ext/cargo-vendor/cranelift-entity-0.110.2/src/set.rs +193 -0
  77. data/ext/cargo-vendor/cranelift-frontend-0.110.2/.cargo-checksum.json +1 -0
  78. data/ext/cargo-vendor/cranelift-frontend-0.110.2/Cargo.toml +87 -0
  79. data/ext/cargo-vendor/cranelift-frontend-0.110.2/src/frontend.rs +2867 -0
  80. data/ext/cargo-vendor/cranelift-isle-0.110.2/.cargo-checksum.json +1 -0
  81. data/ext/cargo-vendor/cranelift-isle-0.110.2/Cargo.toml +60 -0
  82. data/ext/cargo-vendor/cranelift-isle-0.110.2/src/codegen.rs +920 -0
  83. data/ext/cargo-vendor/cranelift-isle-0.110.2/src/parser.rs +562 -0
  84. data/ext/cargo-vendor/cranelift-isle-0.110.2/src/sema.rs +2503 -0
  85. data/ext/cargo-vendor/cranelift-isle-0.110.2/src/trie_again.rs +695 -0
  86. data/ext/cargo-vendor/cranelift-native-0.110.2/.cargo-checksum.json +1 -0
  87. data/ext/cargo-vendor/cranelift-native-0.110.2/Cargo.toml +52 -0
  88. data/ext/cargo-vendor/cranelift-native-0.110.2/src/lib.rs +188 -0
  89. data/ext/cargo-vendor/cranelift-wasm-0.110.2/.cargo-checksum.json +1 -0
  90. data/ext/cargo-vendor/cranelift-wasm-0.110.2/Cargo.toml +119 -0
  91. data/ext/cargo-vendor/cranelift-wasm-0.110.2/src/code_translator/bounds_checks.rs +731 -0
  92. data/ext/cargo-vendor/cranelift-wasm-0.110.2/src/code_translator.rs +3694 -0
  93. data/ext/cargo-vendor/cranelift-wasm-0.110.2/src/heap.rs +119 -0
  94. data/ext/cargo-vendor/cranelift-wasm-0.110.2/src/sections_translator.rs +333 -0
  95. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.23/.cargo-checksum.json +1 -0
  96. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.23/Cargo.toml +69 -0
  97. data/ext/cargo-vendor/termcolor-1.4.1/.cargo-checksum.json +1 -0
  98. data/ext/cargo-vendor/termcolor-1.4.1/COPYING +3 -0
  99. data/ext/cargo-vendor/termcolor-1.4.1/Cargo.toml +40 -0
  100. data/ext/cargo-vendor/termcolor-1.4.1/LICENSE-MIT +21 -0
  101. data/ext/cargo-vendor/termcolor-1.4.1/README.md +110 -0
  102. data/ext/cargo-vendor/termcolor-1.4.1/UNLICENSE +24 -0
  103. data/ext/cargo-vendor/termcolor-1.4.1/rustfmt.toml +2 -0
  104. data/ext/cargo-vendor/termcolor-1.4.1/src/lib.rs +2572 -0
  105. data/ext/cargo-vendor/wasi-common-23.0.2/.cargo-checksum.json +1 -0
  106. data/ext/cargo-vendor/wasi-common-23.0.2/Cargo.toml +234 -0
  107. data/ext/cargo-vendor/wasi-common-23.0.2/src/tokio/mod.rs +135 -0
  108. data/ext/cargo-vendor/wasi-common-23.0.2/tests/all/async_.rs +295 -0
  109. data/ext/cargo-vendor/wasi-common-23.0.2/tests/all/sync.rs +284 -0
  110. data/ext/cargo-vendor/wasm-encoder-0.212.0/.cargo-checksum.json +1 -0
  111. data/ext/cargo-vendor/wasm-encoder-0.212.0/Cargo.toml +49 -0
  112. data/ext/cargo-vendor/wasm-encoder-0.212.0/src/component/types.rs +771 -0
  113. data/ext/cargo-vendor/wasm-encoder-0.212.0/src/core/code.rs +3571 -0
  114. data/ext/cargo-vendor/wasm-encoder-0.212.0/src/core/exports.rs +85 -0
  115. data/ext/cargo-vendor/wasm-encoder-0.212.0/src/core/globals.rs +100 -0
  116. data/ext/cargo-vendor/wasm-encoder-0.212.0/src/core/imports.rs +143 -0
  117. data/ext/cargo-vendor/wasm-encoder-0.212.0/src/core/memories.rs +115 -0
  118. data/ext/cargo-vendor/wasm-encoder-0.212.0/src/core/tables.rs +121 -0
  119. data/ext/cargo-vendor/wasm-encoder-0.212.0/src/core/tags.rs +85 -0
  120. data/ext/cargo-vendor/wasm-encoder-0.212.0/src/core/types.rs +663 -0
  121. data/ext/cargo-vendor/wasm-encoder-0.212.0/src/lib.rs +218 -0
  122. data/ext/cargo-vendor/wasm-encoder-0.212.0/src/reencode.rs +1804 -0
  123. data/ext/cargo-vendor/wasm-encoder-0.215.0/.cargo-checksum.json +1 -0
  124. data/ext/cargo-vendor/wasm-encoder-0.215.0/Cargo.toml +65 -0
  125. data/ext/cargo-vendor/wasm-encoder-0.215.0/README.md +80 -0
  126. data/ext/cargo-vendor/wasm-encoder-0.215.0/src/component/aliases.rs +160 -0
  127. data/ext/cargo-vendor/wasm-encoder-0.215.0/src/component/builder.rs +455 -0
  128. data/ext/cargo-vendor/wasm-encoder-0.215.0/src/component/canonicals.rs +159 -0
  129. data/ext/cargo-vendor/wasm-encoder-0.215.0/src/component/components.rs +29 -0
  130. data/ext/cargo-vendor/wasm-encoder-0.215.0/src/component/exports.rs +124 -0
  131. data/ext/cargo-vendor/wasm-encoder-0.215.0/src/component/imports.rs +175 -0
  132. data/ext/cargo-vendor/wasm-encoder-0.215.0/src/component/instances.rs +200 -0
  133. data/ext/cargo-vendor/wasm-encoder-0.215.0/src/component/modules.rs +29 -0
  134. data/ext/cargo-vendor/wasm-encoder-0.215.0/src/component/names.rs +149 -0
  135. data/ext/cargo-vendor/wasm-encoder-0.215.0/src/component/start.rs +52 -0
  136. data/ext/cargo-vendor/wasm-encoder-0.215.0/src/component/types.rs +802 -0
  137. data/ext/cargo-vendor/wasm-encoder-0.215.0/src/component.rs +168 -0
  138. data/ext/cargo-vendor/wasm-encoder-0.215.0/src/core/code.rs +3947 -0
  139. data/ext/cargo-vendor/wasm-encoder-0.215.0/src/core/custom.rs +73 -0
  140. data/ext/cargo-vendor/wasm-encoder-0.215.0/src/core/data.rs +186 -0
  141. data/ext/cargo-vendor/wasm-encoder-0.215.0/src/core/dump.rs +627 -0
  142. data/ext/cargo-vendor/wasm-encoder-0.215.0/src/core/elements.rs +222 -0
  143. data/ext/cargo-vendor/wasm-encoder-0.215.0/src/core/exports.rs +85 -0
  144. data/ext/cargo-vendor/wasm-encoder-0.215.0/src/core/functions.rs +63 -0
  145. data/ext/cargo-vendor/wasm-encoder-0.215.0/src/core/globals.rs +100 -0
  146. data/ext/cargo-vendor/wasm-encoder-0.215.0/src/core/imports.rs +143 -0
  147. data/ext/cargo-vendor/wasm-encoder-0.215.0/src/core/linking.rs +263 -0
  148. data/ext/cargo-vendor/wasm-encoder-0.215.0/src/core/memories.rs +115 -0
  149. data/ext/cargo-vendor/wasm-encoder-0.215.0/src/core/names.rs +298 -0
  150. data/ext/cargo-vendor/wasm-encoder-0.215.0/src/core/producers.rs +181 -0
  151. data/ext/cargo-vendor/wasm-encoder-0.215.0/src/core/start.rs +39 -0
  152. data/ext/cargo-vendor/wasm-encoder-0.215.0/src/core/tables.rs +129 -0
  153. data/ext/cargo-vendor/wasm-encoder-0.215.0/src/core/tags.rs +85 -0
  154. data/ext/cargo-vendor/wasm-encoder-0.215.0/src/core/types.rs +678 -0
  155. data/ext/cargo-vendor/wasm-encoder-0.215.0/src/core.rs +168 -0
  156. data/ext/cargo-vendor/wasm-encoder-0.215.0/src/lib.rs +218 -0
  157. data/ext/cargo-vendor/wasm-encoder-0.215.0/src/raw.rs +30 -0
  158. data/ext/cargo-vendor/wasm-encoder-0.215.0/src/reencode.rs +2002 -0
  159. data/ext/cargo-vendor/wasmparser-0.212.0/.cargo-checksum.json +1 -0
  160. data/ext/cargo-vendor/wasmparser-0.212.0/Cargo.lock +669 -0
  161. data/ext/cargo-vendor/wasmparser-0.212.0/Cargo.toml +112 -0
  162. data/ext/cargo-vendor/wasmparser-0.212.0/src/binary_reader.rs +1968 -0
  163. data/ext/cargo-vendor/wasmparser-0.212.0/src/features.rs +166 -0
  164. data/ext/cargo-vendor/wasmparser-0.212.0/src/lib.rs +814 -0
  165. data/ext/cargo-vendor/wasmparser-0.212.0/src/parser.rs +1682 -0
  166. data/ext/cargo-vendor/wasmparser-0.212.0/src/readers/core/operators.rs +453 -0
  167. data/ext/cargo-vendor/wasmparser-0.212.0/src/readers/core/tables.rs +93 -0
  168. data/ext/cargo-vendor/wasmparser-0.212.0/src/readers/core/types.rs +1941 -0
  169. data/ext/cargo-vendor/wasmparser-0.212.0/src/resources.rs +234 -0
  170. data/ext/cargo-vendor/wasmparser-0.212.0/src/validator/component.rs +3252 -0
  171. data/ext/cargo-vendor/wasmparser-0.212.0/src/validator/core.rs +1454 -0
  172. data/ext/cargo-vendor/wasmparser-0.212.0/src/validator/operators.rs +4230 -0
  173. data/ext/cargo-vendor/wasmparser-0.212.0/src/validator/types.rs +4598 -0
  174. data/ext/cargo-vendor/wasmparser-0.212.0/src/validator.rs +1632 -0
  175. data/ext/cargo-vendor/wasmprinter-0.212.0/.cargo-checksum.json +1 -0
  176. data/ext/cargo-vendor/wasmprinter-0.212.0/Cargo.toml +54 -0
  177. data/ext/cargo-vendor/wasmprinter-0.212.0/src/lib.rs +3221 -0
  178. data/ext/cargo-vendor/wasmprinter-0.212.0/src/operator.rs +1189 -0
  179. data/ext/cargo-vendor/wasmprinter-0.212.0/src/print.rs +190 -0
  180. data/ext/cargo-vendor/wasmprinter-0.212.0/tests/all.rs +48 -0
  181. data/ext/cargo-vendor/wasmtime-23.0.2/.cargo-checksum.json +1 -0
  182. data/ext/cargo-vendor/wasmtime-23.0.2/Cargo.toml +399 -0
  183. data/ext/cargo-vendor/wasmtime-23.0.2/build.rs +38 -0
  184. data/ext/cargo-vendor/wasmtime-23.0.2/src/compile/code_builder.rs +274 -0
  185. data/ext/cargo-vendor/wasmtime-23.0.2/src/compile/runtime.rs +167 -0
  186. data/ext/cargo-vendor/wasmtime-23.0.2/src/compile.rs +881 -0
  187. data/ext/cargo-vendor/wasmtime-23.0.2/src/config.rs +2902 -0
  188. data/ext/cargo-vendor/wasmtime-23.0.2/src/engine/serialization.rs +893 -0
  189. data/ext/cargo-vendor/wasmtime-23.0.2/src/engine.rs +719 -0
  190. data/ext/cargo-vendor/wasmtime-23.0.2/src/lib.rs +406 -0
  191. data/ext/cargo-vendor/wasmtime-23.0.2/src/profiling_agent/jitdump.rs +65 -0
  192. data/ext/cargo-vendor/wasmtime-23.0.2/src/profiling_agent/perfmap.rs +47 -0
  193. data/ext/cargo-vendor/wasmtime-23.0.2/src/profiling_agent/vtune.rs +80 -0
  194. data/ext/cargo-vendor/wasmtime-23.0.2/src/profiling_agent.rs +104 -0
  195. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/code_memory.rs +337 -0
  196. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/component/bindgen_examples/mod.rs +488 -0
  197. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/component/component.rs +811 -0
  198. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/component/func/host.rs +439 -0
  199. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/component/func/options.rs +552 -0
  200. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/component/func/typed.rs +2497 -0
  201. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/component/func.rs +688 -0
  202. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/component/instance.rs +846 -0
  203. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/component/linker.rs +673 -0
  204. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/component/matching.rs +216 -0
  205. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/component/mod.rs +663 -0
  206. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/component/resources.rs +1132 -0
  207. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/component/values.rs +979 -0
  208. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/coredump.rs +339 -0
  209. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/debug.rs +165 -0
  210. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/externals/global.rs +310 -0
  211. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/externals/table.rs +480 -0
  212. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/func/typed.rs +788 -0
  213. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/func.rs +2593 -0
  214. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/gc/disabled/rooting.rs +224 -0
  215. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/gc/enabled/externref.rs +591 -0
  216. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/gc/enabled/rooting.rs +1590 -0
  217. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/instance.rs +989 -0
  218. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/instantiate.rs +332 -0
  219. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/limits.rs +398 -0
  220. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/linker.rs +1498 -0
  221. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/memory.rs +1101 -0
  222. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/module/registry.rs +353 -0
  223. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/module.rs +1179 -0
  224. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/profiling.rs +280 -0
  225. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/stack.rs +72 -0
  226. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/store/data.rs +301 -0
  227. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/store.rs +2873 -0
  228. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/trampoline/func.rs +93 -0
  229. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/trampoline/memory.rs +295 -0
  230. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/trampoline/table.rs +28 -0
  231. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/trampoline.rs +75 -0
  232. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/trap.rs +642 -0
  233. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/types/matching.rs +428 -0
  234. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/types.rs +2771 -0
  235. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/values.rs +966 -0
  236. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/arch/riscv64.rs +41 -0
  237. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/component/libcalls.rs +571 -0
  238. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/component/resources.rs +351 -0
  239. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/component.rs +857 -0
  240. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/const_expr.rs +102 -0
  241. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/cow.rs +988 -0
  242. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/gc/disabled.rs +23 -0
  243. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/gc/enabled/drc.rs +964 -0
  244. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/gc/enabled/free_list.rs +770 -0
  245. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/gc/gc_ref.rs +490 -0
  246. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/gc/gc_runtime.rs +505 -0
  247. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/gc.rs +244 -0
  248. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/instance/allocator/on_demand.rs +219 -0
  249. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/instance/allocator/pooling/decommit_queue.rs +199 -0
  250. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/instance/allocator/pooling/gc_heap_pool.rs +93 -0
  251. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/instance/allocator/pooling/generic_stack_pool.rs +78 -0
  252. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/instance/allocator/pooling/index_allocator.rs +703 -0
  253. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/instance/allocator/pooling/memory_pool.rs +990 -0
  254. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/instance/allocator/pooling/table_pool.rs +245 -0
  255. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/instance/allocator/pooling/unix_stack_pool.rs +279 -0
  256. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/instance/allocator/pooling.rs +793 -0
  257. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/instance/allocator.rs +808 -0
  258. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/instance.rs +1518 -0
  259. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/libcalls.rs +832 -0
  260. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/memory.rs +815 -0
  261. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/mmap.rs +217 -0
  262. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/mmap_vec.rs +159 -0
  263. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/module_id.rs +19 -0
  264. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/mpk/disabled.rs +43 -0
  265. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/mpk/enabled.rs +213 -0
  266. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/mpk/mod.rs +59 -0
  267. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/mpk/sys.rs +113 -0
  268. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/sys/custom/mmap.rs +112 -0
  269. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/sys/custom/mod.rs +34 -0
  270. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/sys/custom/unwind.rs +17 -0
  271. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/sys/custom/vm.rs +105 -0
  272. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/sys/miri/mmap.rs +98 -0
  273. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/sys/miri/unwind.rs +17 -0
  274. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/sys/unix/mmap.rs +159 -0
  275. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/sys/unix/signals.rs +407 -0
  276. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/sys/unix/unwind.rs +149 -0
  277. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/sys/windows/mmap.rs +220 -0
  278. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/sys/windows/unwind.rs +46 -0
  279. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/table.rs +898 -0
  280. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/threads/shared_memory.rs +235 -0
  281. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/threads/shared_memory_disabled.rs +104 -0
  282. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/traphandlers.rs +767 -0
  283. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/vmcontext/vm_host_func_context.rs +79 -0
  284. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm/vmcontext.rs +1246 -0
  285. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime/vm.rs +403 -0
  286. data/ext/cargo-vendor/wasmtime-23.0.2/src/runtime.rs +113 -0
  287. data/ext/cargo-vendor/wasmtime-asm-macros-23.0.2/.cargo-checksum.json +1 -0
  288. data/ext/cargo-vendor/wasmtime-asm-macros-23.0.2/Cargo.toml +32 -0
  289. data/ext/cargo-vendor/wasmtime-cache-23.0.2/.cargo-checksum.json +1 -0
  290. data/ext/cargo-vendor/wasmtime-cache-23.0.2/Cargo.toml +103 -0
  291. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/.cargo-checksum.json +1 -0
  292. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/Cargo.toml +106 -0
  293. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/src/bindgen.rs +500 -0
  294. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/codegen.rs +698 -0
  295. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/char.rs +268 -0
  296. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/char_async.rs +291 -0
  297. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/conventions.rs +706 -0
  298. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/conventions_async.rs +757 -0
  299. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/dead-code.rs +194 -0
  300. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/dead-code_async.rs +213 -0
  301. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/direct-import.rs +120 -0
  302. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/direct-import_async.rs +132 -0
  303. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/empty.rs +74 -0
  304. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/empty_async.rs +80 -0
  305. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/flags.rs +743 -0
  306. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/flags_async.rs +791 -0
  307. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/floats.rs +343 -0
  308. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/floats_async.rs +376 -0
  309. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/function-new.rs +94 -0
  310. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/function-new_async.rs +103 -0
  311. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/integers.rs +873 -0
  312. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/integers_async.rs +976 -0
  313. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/lists.rs +1924 -0
  314. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/lists_async.rs +2114 -0
  315. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/many-arguments.rs +614 -0
  316. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/many-arguments_async.rs +638 -0
  317. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/multi-return.rs +357 -0
  318. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/multi-return_async.rs +391 -0
  319. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/multiversion.rs +354 -0
  320. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/multiversion_async.rs +379 -0
  321. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/records.rs +940 -0
  322. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/records_async.rs +1008 -0
  323. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/rename.rs +183 -0
  324. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/rename_async.rs +202 -0
  325. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/resources-export.rs +657 -0
  326. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/resources-export_async.rs +712 -0
  327. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/resources-import.rs +1088 -0
  328. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/resources-import_async.rs +1166 -0
  329. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/share-types.rs +315 -0
  330. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/share-types_async.rs +337 -0
  331. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/simple-functions.rs +399 -0
  332. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/simple-functions_async.rs +439 -0
  333. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/simple-lists.rs +427 -0
  334. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/simple-lists_async.rs +464 -0
  335. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/simple-wasi.rs +245 -0
  336. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/simple-wasi_async.rs +264 -0
  337. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/small-anonymous.rs +338 -0
  338. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/small-anonymous_async.rs +356 -0
  339. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/smoke-default.rs +94 -0
  340. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/smoke-default_async.rs +103 -0
  341. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/smoke-export.rs +149 -0
  342. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/smoke-export_async.rs +158 -0
  343. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/smoke.rs +133 -0
  344. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/smoke_async.rs +146 -0
  345. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/strings.rs +316 -0
  346. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/strings_async.rs +344 -0
  347. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/unversioned-foo.rs +165 -0
  348. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/unversioned-foo_async.rs +178 -0
  349. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/use-paths.rs +317 -0
  350. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/use-paths_async.rs +349 -0
  351. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/variants.rs +1896 -0
  352. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/variants_async.rs +2019 -0
  353. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/wat.rs +145 -0
  354. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/wat_async.rs +151 -0
  355. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/worlds-with-types.rs +175 -0
  356. data/ext/cargo-vendor/wasmtime-component-macro-23.0.2/tests/expanded/worlds-with-types_async.rs +191 -0
  357. data/ext/cargo-vendor/wasmtime-component-util-23.0.2/.cargo-checksum.json +1 -0
  358. data/ext/cargo-vendor/wasmtime-component-util-23.0.2/Cargo.toml +35 -0
  359. data/ext/cargo-vendor/wasmtime-cranelift-23.0.2/.cargo-checksum.json +1 -0
  360. data/ext/cargo-vendor/wasmtime-cranelift-23.0.2/Cargo.toml +125 -0
  361. data/ext/cargo-vendor/wasmtime-cranelift-23.0.2/src/compiler.rs +1029 -0
  362. data/ext/cargo-vendor/wasmtime-cranelift-23.0.2/src/debug/gc.rs +257 -0
  363. data/ext/cargo-vendor/wasmtime-cranelift-23.0.2/src/debug/transform/address_transform.rs +841 -0
  364. data/ext/cargo-vendor/wasmtime-cranelift-23.0.2/src/debug/transform/attr.rs +328 -0
  365. data/ext/cargo-vendor/wasmtime-cranelift-23.0.2/src/debug/transform/expression.rs +1264 -0
  366. data/ext/cargo-vendor/wasmtime-cranelift-23.0.2/src/debug/transform/line_program.rs +287 -0
  367. data/ext/cargo-vendor/wasmtime-cranelift-23.0.2/src/debug/transform/mod.rs +273 -0
  368. data/ext/cargo-vendor/wasmtime-cranelift-23.0.2/src/debug/transform/range_info_builder.rs +234 -0
  369. data/ext/cargo-vendor/wasmtime-cranelift-23.0.2/src/debug/transform/simulate.rs +423 -0
  370. data/ext/cargo-vendor/wasmtime-cranelift-23.0.2/src/debug/transform/unit.rs +520 -0
  371. data/ext/cargo-vendor/wasmtime-cranelift-23.0.2/src/debug/transform/utils.rs +165 -0
  372. data/ext/cargo-vendor/wasmtime-cranelift-23.0.2/src/debug/write_debuginfo.rs +176 -0
  373. data/ext/cargo-vendor/wasmtime-cranelift-23.0.2/src/debug.rs +178 -0
  374. data/ext/cargo-vendor/wasmtime-cranelift-23.0.2/src/func_environ.rs +2721 -0
  375. data/ext/cargo-vendor/wasmtime-cranelift-23.0.2/src/gc/enabled.rs +648 -0
  376. data/ext/cargo-vendor/wasmtime-cranelift-23.0.2/src/lib.rs +458 -0
  377. data/ext/cargo-vendor/wasmtime-environ-23.0.2/.cargo-checksum.json +1 -0
  378. data/ext/cargo-vendor/wasmtime-environ-23.0.2/Cargo.lock +792 -0
  379. data/ext/cargo-vendor/wasmtime-environ-23.0.2/Cargo.toml +185 -0
  380. data/ext/cargo-vendor/wasmtime-environ-23.0.2/src/compile/mod.rs +379 -0
  381. data/ext/cargo-vendor/wasmtime-environ-23.0.2/src/compile/module_environ.rs +1264 -0
  382. data/ext/cargo-vendor/wasmtime-environ-23.0.2/src/component/dfg.rs +718 -0
  383. data/ext/cargo-vendor/wasmtime-environ-23.0.2/src/component/info.rs +683 -0
  384. data/ext/cargo-vendor/wasmtime-environ-23.0.2/src/component/names.rs +275 -0
  385. data/ext/cargo-vendor/wasmtime-environ-23.0.2/src/component/translate/inline.rs +1333 -0
  386. data/ext/cargo-vendor/wasmtime-environ-23.0.2/src/component/translate.rs +993 -0
  387. data/ext/cargo-vendor/wasmtime-environ-23.0.2/src/component/types.rs +1041 -0
  388. data/ext/cargo-vendor/wasmtime-environ-23.0.2/src/component/types_builder.rs +976 -0
  389. data/ext/cargo-vendor/wasmtime-environ-23.0.2/src/component.rs +109 -0
  390. data/ext/cargo-vendor/wasmtime-environ-23.0.2/src/lib.rs +64 -0
  391. data/ext/cargo-vendor/wasmtime-environ-23.0.2/src/module.rs +702 -0
  392. data/ext/cargo-vendor/wasmtime-environ-23.0.2/src/stack_map.rs +31 -0
  393. data/ext/cargo-vendor/wasmtime-environ-23.0.2/src/tunables.rs +165 -0
  394. data/ext/cargo-vendor/wasmtime-environ-23.0.2/src/vmoffsets.rs +897 -0
  395. data/ext/cargo-vendor/wasmtime-fiber-23.0.2/.cargo-checksum.json +1 -0
  396. data/ext/cargo-vendor/wasmtime-fiber-23.0.2/Cargo.toml +75 -0
  397. data/ext/cargo-vendor/wasmtime-jit-debug-23.0.2/.cargo-checksum.json +1 -0
  398. data/ext/cargo-vendor/wasmtime-jit-debug-23.0.2/Cargo.toml +77 -0
  399. data/ext/cargo-vendor/wasmtime-jit-icache-coherence-23.0.2/.cargo-checksum.json +1 -0
  400. data/ext/cargo-vendor/wasmtime-jit-icache-coherence-23.0.2/Cargo.toml +62 -0
  401. data/ext/cargo-vendor/wasmtime-slab-23.0.2/.cargo-checksum.json +1 -0
  402. data/ext/cargo-vendor/wasmtime-slab-23.0.2/Cargo.toml +31 -0
  403. data/ext/cargo-vendor/wasmtime-types-23.0.2/.cargo-checksum.json +1 -0
  404. data/ext/cargo-vendor/wasmtime-types-23.0.2/Cargo.toml +71 -0
  405. data/ext/cargo-vendor/wasmtime-types-23.0.2/src/lib.rs +1760 -0
  406. data/ext/cargo-vendor/wasmtime-types-23.0.2/src/prelude.rs +86 -0
  407. data/ext/cargo-vendor/wasmtime-versioned-export-macros-23.0.2/.cargo-checksum.json +1 -0
  408. data/ext/cargo-vendor/wasmtime-versioned-export-macros-23.0.2/Cargo.toml +40 -0
  409. data/ext/cargo-vendor/wasmtime-wasi-23.0.2/.cargo-checksum.json +1 -0
  410. data/ext/cargo-vendor/wasmtime-wasi-23.0.2/Cargo.toml +215 -0
  411. data/ext/cargo-vendor/wasmtime-wasi-23.0.2/src/bindings.rs +561 -0
  412. data/ext/cargo-vendor/wasmtime-wasi-23.0.2/src/filesystem.rs +448 -0
  413. data/ext/cargo-vendor/wasmtime-wasi-23.0.2/src/host/filesystem.rs +1091 -0
  414. data/ext/cargo-vendor/wasmtime-wasi-23.0.2/src/host/io.rs +391 -0
  415. data/ext/cargo-vendor/wasmtime-wasi-23.0.2/src/lib.rs +419 -0
  416. data/ext/cargo-vendor/wasmtime-wasi-23.0.2/src/preview1.rs +2801 -0
  417. data/ext/cargo-vendor/wasmtime-wasi-23.0.2/src/stdio.rs +596 -0
  418. data/ext/cargo-vendor/wasmtime-wasi-23.0.2/tests/all/api.rs +197 -0
  419. data/ext/cargo-vendor/wasmtime-wasi-23.0.2/tests/all/async_.rs +397 -0
  420. data/ext/cargo-vendor/wasmtime-wasi-23.0.2/tests/all/sync.rs +331 -0
  421. data/ext/cargo-vendor/wasmtime-winch-23.0.2/.cargo-checksum.json +1 -0
  422. data/ext/cargo-vendor/wasmtime-winch-23.0.2/Cargo.toml +92 -0
  423. data/ext/cargo-vendor/wasmtime-winch-23.0.2/src/compiler.rs +242 -0
  424. data/ext/cargo-vendor/wasmtime-wit-bindgen-23.0.2/.cargo-checksum.json +1 -0
  425. data/ext/cargo-vendor/wasmtime-wit-bindgen-23.0.2/Cargo.toml +57 -0
  426. data/ext/cargo-vendor/wasmtime-wit-bindgen-23.0.2/src/lib.rs +2777 -0
  427. data/ext/cargo-vendor/wast-215.0.0/.cargo-checksum.json +1 -0
  428. data/ext/cargo-vendor/wast-215.0.0/Cargo.toml +101 -0
  429. data/ext/cargo-vendor/wast-215.0.0/src/component/binary.rs +1014 -0
  430. data/ext/cargo-vendor/wast-215.0.0/src/component/component.rs +320 -0
  431. data/ext/cargo-vendor/wast-215.0.0/src/component/expand.rs +875 -0
  432. data/ext/cargo-vendor/wast-215.0.0/src/component/resolve.rs +988 -0
  433. data/ext/cargo-vendor/wast-215.0.0/src/component.rs +28 -0
  434. data/ext/cargo-vendor/wast-215.0.0/src/core/binary/dwarf.rs +610 -0
  435. data/ext/cargo-vendor/wast-215.0.0/src/core/binary/dwarf_disabled.rs +41 -0
  436. data/ext/cargo-vendor/wast-215.0.0/src/core/binary.rs +1542 -0
  437. data/ext/cargo-vendor/wast-215.0.0/src/core/expr.rs +2110 -0
  438. data/ext/cargo-vendor/wast-215.0.0/src/core/memory.rs +279 -0
  439. data/ext/cargo-vendor/wast-215.0.0/src/core/module.rs +215 -0
  440. data/ext/cargo-vendor/wast-215.0.0/src/core/resolve/deinline_import_export.rs +232 -0
  441. data/ext/cargo-vendor/wast-215.0.0/src/core/resolve/names.rs +791 -0
  442. data/ext/cargo-vendor/wast-215.0.0/src/core/resolve/types.rs +270 -0
  443. data/ext/cargo-vendor/wast-215.0.0/src/core/table.rs +308 -0
  444. data/ext/cargo-vendor/wast-215.0.0/src/core/types.rs +1057 -0
  445. data/ext/cargo-vendor/wast-215.0.0/src/core.rs +30 -0
  446. data/ext/cargo-vendor/wast-215.0.0/src/lib.rs +556 -0
  447. data/ext/cargo-vendor/wast-215.0.0/src/parser.rs +1434 -0
  448. data/ext/cargo-vendor/wast-215.0.0/src/wat.rs +68 -0
  449. data/ext/cargo-vendor/wat-1.215.0/.cargo-checksum.json +1 -0
  450. data/ext/cargo-vendor/wat-1.215.0/Cargo.toml +56 -0
  451. data/ext/cargo-vendor/wat-1.215.0/src/lib.rs +469 -0
  452. data/ext/cargo-vendor/wiggle-23.0.2/.cargo-checksum.json +1 -0
  453. data/ext/cargo-vendor/wiggle-23.0.2/Cargo.toml +110 -0
  454. data/ext/cargo-vendor/wiggle-generate-23.0.2/.cargo-checksum.json +1 -0
  455. data/ext/cargo-vendor/wiggle-generate-23.0.2/Cargo.toml +76 -0
  456. data/ext/cargo-vendor/wiggle-macro-23.0.2/.cargo-checksum.json +1 -0
  457. data/ext/cargo-vendor/wiggle-macro-23.0.2/Cargo.toml +59 -0
  458. data/ext/cargo-vendor/winapi-util-0.1.9/.cargo-checksum.json +1 -0
  459. data/ext/cargo-vendor/winapi-util-0.1.9/COPYING +3 -0
  460. data/ext/cargo-vendor/winapi-util-0.1.9/Cargo.toml +53 -0
  461. data/ext/cargo-vendor/winapi-util-0.1.9/LICENSE-MIT +21 -0
  462. data/ext/cargo-vendor/winapi-util-0.1.9/README.md +64 -0
  463. data/ext/cargo-vendor/winapi-util-0.1.9/UNLICENSE +24 -0
  464. data/ext/cargo-vendor/winapi-util-0.1.9/rustfmt.toml +2 -0
  465. data/ext/cargo-vendor/winapi-util-0.1.9/src/console.rs +407 -0
  466. data/ext/cargo-vendor/winapi-util-0.1.9/src/file.rs +166 -0
  467. data/ext/cargo-vendor/winapi-util-0.1.9/src/lib.rs +35 -0
  468. data/ext/cargo-vendor/winapi-util-0.1.9/src/sysinfo.rs +161 -0
  469. data/ext/cargo-vendor/winapi-util-0.1.9/src/win.rs +246 -0
  470. data/ext/cargo-vendor/winch-codegen-0.21.2/.cargo-checksum.json +1 -0
  471. data/ext/cargo-vendor/winch-codegen-0.21.2/Cargo.toml +87 -0
  472. data/ext/cargo-vendor/winch-codegen-0.21.2/src/codegen/env.rs +449 -0
  473. data/ext/cargo-vendor/winch-codegen-0.21.2/src/codegen/mod.rs +878 -0
  474. data/ext/cargo-vendor/winch-codegen-0.21.2/src/visitor.rs +2154 -0
  475. data/ext/cargo-vendor/wit-parser-0.212.0/.cargo-checksum.json +1 -0
  476. data/ext/cargo-vendor/wit-parser-0.212.0/Cargo.toml +112 -0
  477. data/ext/cargo-vendor/wit-parser-0.212.0/src/ast/lex.rs +751 -0
  478. data/ext/cargo-vendor/wit-parser-0.212.0/src/ast/resolve.rs +1539 -0
  479. data/ext/cargo-vendor/wit-parser-0.212.0/src/ast.rs +1851 -0
  480. data/ext/cargo-vendor/wit-parser-0.212.0/src/decoding.rs +1798 -0
  481. data/ext/cargo-vendor/wit-parser-0.212.0/src/lib.rs +888 -0
  482. data/ext/cargo-vendor/wit-parser-0.212.0/src/resolve.rs +2740 -0
  483. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/feature-gates.wit.json +308 -0
  484. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/multi-file-multi-package/a.wit +23 -0
  485. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/multi-file-multi-package/b.wit +23 -0
  486. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/multi-file-multi-package.wit.json +250 -0
  487. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/multi-package-shared-deps/deps/dep1/types.wit +2 -0
  488. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/multi-package-shared-deps/deps/dep2/types.wit +2 -0
  489. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/multi-package-shared-deps/packages.wit +13 -0
  490. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/multi-package-shared-deps.wit.json +83 -0
  491. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/multi-package-transitive-deps/deps/dep1/types.wit +9 -0
  492. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/multi-package-transitive-deps/deps/dep2/types.wit +5 -0
  493. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/multi-package-transitive-deps/packages.wit +11 -0
  494. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/multi-package-transitive-deps.wit.json +116 -0
  495. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/packages-explicit-colliding-decl-names.wit +23 -0
  496. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/packages-explicit-colliding-decl-names.wit.json +130 -0
  497. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/packages-explicit-internal-references.wit +15 -0
  498. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/packages-explicit-internal-references.wit.json +87 -0
  499. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/packages-explicit-with-semver.wit +23 -0
  500. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/packages-explicit-with-semver.wit.json +130 -0
  501. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/packages-multiple-explicit.wit +23 -0
  502. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/packages-multiple-explicit.wit.json +130 -0
  503. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/packages-single-explicit.wit +11 -0
  504. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/packages-single-explicit.wit.json +70 -0
  505. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/parse-fail/explicit-packages-colliding-names.wit +3 -0
  506. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/parse-fail/explicit-packages-colliding-names.wit.result +1 -0
  507. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/parse-fail/explicit-packages-with-error.wit +13 -0
  508. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/parse-fail/explicit-packages-with-error.wit.result +8 -0
  509. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/parse-fail/mix-explicit-then-implicit-package.wit +23 -0
  510. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/parse-fail/mix-explicit-then-implicit-package.wit.result +1 -0
  511. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/parse-fail/mix-implicit-then-explicit-package.wit +23 -0
  512. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/parse-fail/mix-implicit-then-explicit-package.wit.result +5 -0
  513. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/parse-fail/multi-file-missing-delimiter/observe.wit +5 -0
  514. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/parse-fail/multi-file-missing-delimiter/world.wit +5 -0
  515. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/parse-fail/multi-file-missing-delimiter.wit.result +9 -0
  516. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/parse-fail/multiple-package-inline-cycle.wit +11 -0
  517. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/parse-fail/multiple-package-inline-cycle.wit.result +5 -0
  518. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/parse-fail/multiple-packages-no-scope-blocks.wit +15 -0
  519. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/parse-fail/multiple-packages-no-scope-blocks.wit.result +5 -0
  520. data/ext/cargo-vendor/wit-parser-0.212.0/tests/ui/since-and-unstable.wit.json +583 -0
  521. data/ext/src/ruby_api/memory.rs +2 -1
  522. data/lib/wasmtime/version.rb +1 -1
  523. metadata +1736 -1643
  524. data/ext/cargo-vendor/cranelift-bforest-0.109.0/.cargo-checksum.json +0 -1
  525. data/ext/cargo-vendor/cranelift-bforest-0.109.0/Cargo.toml +0 -41
  526. data/ext/cargo-vendor/cranelift-codegen-0.109.0/.cargo-checksum.json +0 -1
  527. data/ext/cargo-vendor/cranelift-codegen-0.109.0/Cargo.toml +0 -193
  528. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/binemit/stack_map.rs +0 -155
  529. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/bitset.rs +0 -187
  530. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/context.rs +0 -384
  531. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/data_value.rs +0 -385
  532. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/ir/dfg.rs +0 -1777
  533. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/ir/globalvalue.rs +0 -147
  534. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/ir/immediates.rs +0 -1612
  535. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/ir/instructions.rs +0 -1020
  536. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/ir/jumptable.rs +0 -168
  537. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/ir/mod.rs +0 -108
  538. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/ir/trapcode.rs +0 -149
  539. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/ir/types.rs +0 -627
  540. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/isa/aarch64/inst/emit.rs +0 -3584
  541. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/isa/aarch64/inst/emit_tests.rs +0 -7901
  542. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/isa/aarch64/inst/mod.rs +0 -3060
  543. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/isa/aarch64/inst.isle +0 -4218
  544. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/isa/aarch64/lower.isle +0 -2933
  545. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/isa/aarch64/mod.rs +0 -242
  546. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/isa/mod.rs +0 -449
  547. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/isa/riscv64/inst/emit.rs +0 -2682
  548. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/isa/riscv64/inst/emit_tests.rs +0 -2215
  549. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/isa/riscv64/inst/mod.rs +0 -1938
  550. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/isa/riscv64/inst.isle +0 -3127
  551. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/isa/riscv64/lower/isle.rs +0 -649
  552. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/isa/riscv64/lower.isle +0 -2923
  553. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/isa/riscv64/mod.rs +0 -260
  554. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/isa/s390x/inst/emit.rs +0 -3401
  555. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/isa/s390x/inst/mod.rs +0 -3401
  556. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/isa/s390x/lower.isle +0 -3995
  557. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/isa/s390x/mod.rs +0 -215
  558. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/isa/x64/inst/emit.rs +0 -4287
  559. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/isa/x64/inst/emit_state.rs +0 -52
  560. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/isa/x64/inst/mod.rs +0 -2821
  561. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/isa/x64/inst.isle +0 -5289
  562. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/isa/x64/lower.isle +0 -4810
  563. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/isa/x64/mod.rs +0 -234
  564. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/isle_prelude.rs +0 -986
  565. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/legalizer/mod.rs +0 -348
  566. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/lib.rs +0 -106
  567. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/machinst/abi.rs +0 -2419
  568. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/machinst/buffer.rs +0 -2508
  569. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/machinst/helpers.rs +0 -33
  570. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/machinst/isle.rs +0 -909
  571. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/machinst/lower.rs +0 -1432
  572. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/machinst/mod.rs +0 -551
  573. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/machinst/vcode.rs +0 -1741
  574. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/prelude.isle +0 -664
  575. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/prelude_lower.isle +0 -1073
  576. data/ext/cargo-vendor/cranelift-codegen-0.109.0/src/write.rs +0 -638
  577. data/ext/cargo-vendor/cranelift-codegen-meta-0.109.0/.cargo-checksum.json +0 -1
  578. data/ext/cargo-vendor/cranelift-codegen-meta-0.109.0/Cargo.toml +0 -36
  579. data/ext/cargo-vendor/cranelift-codegen-meta-0.109.0/src/cdsl/types.rs +0 -496
  580. data/ext/cargo-vendor/cranelift-codegen-meta-0.109.0/src/cdsl/typevar.rs +0 -980
  581. data/ext/cargo-vendor/cranelift-codegen-meta-0.109.0/src/gen_inst.rs +0 -1278
  582. data/ext/cargo-vendor/cranelift-codegen-meta-0.109.0/src/shared/instructions.rs +0 -3791
  583. data/ext/cargo-vendor/cranelift-codegen-meta-0.109.0/src/shared/types.rs +0 -137
  584. data/ext/cargo-vendor/cranelift-codegen-shared-0.109.0/.cargo-checksum.json +0 -1
  585. data/ext/cargo-vendor/cranelift-codegen-shared-0.109.0/Cargo.toml +0 -22
  586. data/ext/cargo-vendor/cranelift-control-0.109.0/.cargo-checksum.json +0 -1
  587. data/ext/cargo-vendor/cranelift-control-0.109.0/Cargo.toml +0 -30
  588. data/ext/cargo-vendor/cranelift-entity-0.109.0/.cargo-checksum.json +0 -1
  589. data/ext/cargo-vendor/cranelift-entity-0.109.0/Cargo.toml +0 -53
  590. data/ext/cargo-vendor/cranelift-entity-0.109.0/src/set.rs +0 -290
  591. data/ext/cargo-vendor/cranelift-frontend-0.109.0/.cargo-checksum.json +0 -1
  592. data/ext/cargo-vendor/cranelift-frontend-0.109.0/Cargo.toml +0 -68
  593. data/ext/cargo-vendor/cranelift-frontend-0.109.0/src/frontend.rs +0 -1857
  594. data/ext/cargo-vendor/cranelift-isle-0.109.0/.cargo-checksum.json +0 -1
  595. data/ext/cargo-vendor/cranelift-isle-0.109.0/Cargo.toml +0 -47
  596. data/ext/cargo-vendor/cranelift-isle-0.109.0/src/codegen.rs +0 -886
  597. data/ext/cargo-vendor/cranelift-isle-0.109.0/src/parser.rs +0 -562
  598. data/ext/cargo-vendor/cranelift-isle-0.109.0/src/sema.rs +0 -2492
  599. data/ext/cargo-vendor/cranelift-isle-0.109.0/src/trie_again.rs +0 -684
  600. data/ext/cargo-vendor/cranelift-native-0.109.0/.cargo-checksum.json +0 -1
  601. data/ext/cargo-vendor/cranelift-native-0.109.0/Cargo.toml +0 -43
  602. data/ext/cargo-vendor/cranelift-native-0.109.0/src/lib.rs +0 -188
  603. data/ext/cargo-vendor/cranelift-wasm-0.109.0/.cargo-checksum.json +0 -1
  604. data/ext/cargo-vendor/cranelift-wasm-0.109.0/Cargo.toml +0 -110
  605. data/ext/cargo-vendor/cranelift-wasm-0.109.0/src/code_translator/bounds_checks.rs +0 -713
  606. data/ext/cargo-vendor/cranelift-wasm-0.109.0/src/code_translator.rs +0 -3695
  607. data/ext/cargo-vendor/cranelift-wasm-0.109.0/src/heap.rs +0 -116
  608. data/ext/cargo-vendor/cranelift-wasm-0.109.0/src/sections_translator.rs +0 -343
  609. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.22/.cargo-checksum.json +0 -1
  610. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.22/Cargo.toml +0 -48
  611. data/ext/cargo-vendor/memoffset-0.9.0/.cargo-checksum.json +0 -1
  612. data/ext/cargo-vendor/memoffset-0.9.0/Cargo.toml +0 -37
  613. data/ext/cargo-vendor/memoffset-0.9.0/LICENSE +0 -19
  614. data/ext/cargo-vendor/memoffset-0.9.0/README.md +0 -85
  615. data/ext/cargo-vendor/memoffset-0.9.0/build.rs +0 -25
  616. data/ext/cargo-vendor/memoffset-0.9.0/src/lib.rs +0 -94
  617. data/ext/cargo-vendor/memoffset-0.9.0/src/offset_of.rs +0 -400
  618. data/ext/cargo-vendor/memoffset-0.9.0/src/raw_field.rs +0 -226
  619. data/ext/cargo-vendor/memoffset-0.9.0/src/span_of.rs +0 -263
  620. data/ext/cargo-vendor/wasi-common-22.0.0/.cargo-checksum.json +0 -1
  621. data/ext/cargo-vendor/wasi-common-22.0.0/Cargo.toml +0 -224
  622. data/ext/cargo-vendor/wasi-common-22.0.0/src/tokio/mod.rs +0 -137
  623. data/ext/cargo-vendor/wasi-common-22.0.0/tests/all/async_.rs +0 -293
  624. data/ext/cargo-vendor/wasi-common-22.0.0/tests/all/sync.rs +0 -279
  625. data/ext/cargo-vendor/wasm-encoder-0.209.1/.cargo-checksum.json +0 -1
  626. data/ext/cargo-vendor/wasm-encoder-0.209.1/Cargo.toml +0 -46
  627. data/ext/cargo-vendor/wasm-encoder-0.209.1/src/component/types.rs +0 -792
  628. data/ext/cargo-vendor/wasm-encoder-0.209.1/src/core/code.rs +0 -3595
  629. data/ext/cargo-vendor/wasm-encoder-0.209.1/src/core/exports.rs +0 -98
  630. data/ext/cargo-vendor/wasm-encoder-0.209.1/src/core/globals.rs +0 -112
  631. data/ext/cargo-vendor/wasm-encoder-0.209.1/src/core/imports.rs +0 -157
  632. data/ext/cargo-vendor/wasm-encoder-0.209.1/src/core/memories.rs +0 -128
  633. data/ext/cargo-vendor/wasm-encoder-0.209.1/src/core/tables.rs +0 -134
  634. data/ext/cargo-vendor/wasm-encoder-0.209.1/src/core/tags.rs +0 -104
  635. data/ext/cargo-vendor/wasm-encoder-0.209.1/src/core/types.rs +0 -678
  636. data/ext/cargo-vendor/wasm-encoder-0.209.1/src/lib.rs +0 -215
  637. data/ext/cargo-vendor/wasmparser-0.209.1/.cargo-checksum.json +0 -1
  638. data/ext/cargo-vendor/wasmparser-0.209.1/Cargo.lock +0 -662
  639. data/ext/cargo-vendor/wasmparser-0.209.1/Cargo.toml +0 -109
  640. data/ext/cargo-vendor/wasmparser-0.209.1/src/binary_reader.rs +0 -1929
  641. data/ext/cargo-vendor/wasmparser-0.209.1/src/features.rs +0 -164
  642. data/ext/cargo-vendor/wasmparser-0.209.1/src/lib.rs +0 -814
  643. data/ext/cargo-vendor/wasmparser-0.209.1/src/parser.rs +0 -1682
  644. data/ext/cargo-vendor/wasmparser-0.209.1/src/readers/core/operators.rs +0 -423
  645. data/ext/cargo-vendor/wasmparser-0.209.1/src/readers/core/tables.rs +0 -93
  646. data/ext/cargo-vendor/wasmparser-0.209.1/src/readers/core/types.rs +0 -1788
  647. data/ext/cargo-vendor/wasmparser-0.209.1/src/resources.rs +0 -235
  648. data/ext/cargo-vendor/wasmparser-0.209.1/src/validator/component.rs +0 -3236
  649. data/ext/cargo-vendor/wasmparser-0.209.1/src/validator/core.rs +0 -1464
  650. data/ext/cargo-vendor/wasmparser-0.209.1/src/validator/operators.rs +0 -4231
  651. data/ext/cargo-vendor/wasmparser-0.209.1/src/validator/types.rs +0 -4550
  652. data/ext/cargo-vendor/wasmparser-0.209.1/src/validator.rs +0 -1633
  653. data/ext/cargo-vendor/wasmprinter-0.209.1/.cargo-checksum.json +0 -1
  654. data/ext/cargo-vendor/wasmprinter-0.209.1/Cargo.toml +0 -51
  655. data/ext/cargo-vendor/wasmprinter-0.209.1/src/lib.rs +0 -3225
  656. data/ext/cargo-vendor/wasmprinter-0.209.1/src/operator.rs +0 -1171
  657. data/ext/cargo-vendor/wasmprinter-0.209.1/tests/all.rs +0 -293
  658. data/ext/cargo-vendor/wasmtime-22.0.0/.cargo-checksum.json +0 -1
  659. data/ext/cargo-vendor/wasmtime-22.0.0/Cargo.toml +0 -387
  660. data/ext/cargo-vendor/wasmtime-22.0.0/build.rs +0 -42
  661. data/ext/cargo-vendor/wasmtime-22.0.0/src/compile/code_builder.rs +0 -275
  662. data/ext/cargo-vendor/wasmtime-22.0.0/src/compile/runtime.rs +0 -167
  663. data/ext/cargo-vendor/wasmtime-22.0.0/src/compile.rs +0 -917
  664. data/ext/cargo-vendor/wasmtime-22.0.0/src/config.rs +0 -2943
  665. data/ext/cargo-vendor/wasmtime-22.0.0/src/engine/serialization.rs +0 -890
  666. data/ext/cargo-vendor/wasmtime-22.0.0/src/engine.rs +0 -728
  667. data/ext/cargo-vendor/wasmtime-22.0.0/src/lib.rs +0 -389
  668. data/ext/cargo-vendor/wasmtime-22.0.0/src/profiling_agent/jitdump.rs +0 -67
  669. data/ext/cargo-vendor/wasmtime-22.0.0/src/profiling_agent/perfmap.rs +0 -48
  670. data/ext/cargo-vendor/wasmtime-22.0.0/src/profiling_agent/vtune.rs +0 -81
  671. data/ext/cargo-vendor/wasmtime-22.0.0/src/profiling_agent.rs +0 -106
  672. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/code_memory.rs +0 -338
  673. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/component/bindgen_examples/mod.rs +0 -489
  674. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/component/component.rs +0 -656
  675. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/component/func/host.rs +0 -440
  676. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/component/func/options.rs +0 -555
  677. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/component/func/typed.rs +0 -2498
  678. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/component/func.rs +0 -689
  679. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/component/instance.rs +0 -810
  680. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/component/linker.rs +0 -854
  681. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/component/matching.rs +0 -217
  682. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/component/mod.rs +0 -657
  683. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/component/resources.rs +0 -1133
  684. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/component/values.rs +0 -980
  685. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/coredump.rs +0 -342
  686. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/debug.rs +0 -166
  687. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/externals/global.rs +0 -310
  688. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/externals/table.rs +0 -481
  689. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/func/typed.rs +0 -780
  690. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/func.rs +0 -2564
  691. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/gc/disabled/rooting.rs +0 -224
  692. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/gc/enabled/externref.rs +0 -592
  693. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/gc/enabled/rooting.rs +0 -1588
  694. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/instance.rs +0 -992
  695. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/instantiate.rs +0 -337
  696. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/limits.rs +0 -399
  697. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/linker.rs +0 -1499
  698. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/memory.rs +0 -998
  699. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/module/registry.rs +0 -353
  700. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/module.rs +0 -1322
  701. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/profiling.rs +0 -221
  702. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/stack.rs +0 -73
  703. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/store/data.rs +0 -301
  704. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/store.rs +0 -2824
  705. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/trampoline/func.rs +0 -94
  706. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/trampoline/memory.rs +0 -287
  707. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/trampoline/table.rs +0 -29
  708. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/trampoline.rs +0 -78
  709. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/trap.rs +0 -642
  710. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/types/matching.rs +0 -421
  711. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/types.rs +0 -2580
  712. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/values.rs +0 -966
  713. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/arch/riscv64.rs +0 -41
  714. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/component/libcalls.rs +0 -571
  715. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/component/resources.rs +0 -352
  716. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/component.rs +0 -857
  717. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/const_expr.rs +0 -102
  718. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/cow.rs +0 -972
  719. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/gc/disabled.rs +0 -24
  720. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/gc/enabled/drc.rs +0 -968
  721. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/gc/enabled/free_list.rs +0 -771
  722. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/gc/gc_ref.rs +0 -491
  723. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/gc/gc_runtime.rs +0 -506
  724. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/gc.rs +0 -245
  725. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/instance/allocator/on_demand.rs +0 -220
  726. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/instance/allocator/pooling/decommit_queue.rs +0 -194
  727. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/instance/allocator/pooling/gc_heap_pool.rs +0 -94
  728. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/instance/allocator/pooling/generic_stack_pool.rs +0 -78
  729. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/instance/allocator/pooling/index_allocator.rs +0 -707
  730. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/instance/allocator/pooling/memory_pool.rs +0 -975
  731. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/instance/allocator/pooling/table_pool.rs +0 -245
  732. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/instance/allocator/pooling/unix_stack_pool.rs +0 -278
  733. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/instance/allocator/pooling.rs +0 -794
  734. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/instance/allocator.rs +0 -801
  735. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/instance.rs +0 -1514
  736. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/libcalls.rs +0 -834
  737. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/memory.rs +0 -736
  738. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/mmap.rs +0 -220
  739. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/mmap_vec.rs +0 -162
  740. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/module_id.rs +0 -43
  741. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/mpk/disabled.rs +0 -43
  742. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/mpk/enabled.rs +0 -214
  743. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/mpk/mod.rs +0 -54
  744. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/mpk/sys.rs +0 -114
  745. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/sys/custom/mmap.rs +0 -112
  746. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/sys/custom/mod.rs +0 -34
  747. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/sys/custom/unwind.rs +0 -17
  748. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/sys/custom/vm.rs +0 -105
  749. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/sys/miri/mmap.rs +0 -95
  750. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/sys/miri/unwind.rs +0 -17
  751. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/sys/unix/mmap.rs +0 -162
  752. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/sys/unix/signals.rs +0 -407
  753. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/sys/unix/unwind.rs +0 -150
  754. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/sys/windows/mmap.rs +0 -221
  755. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/sys/windows/unwind.rs +0 -46
  756. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/table.rs +0 -899
  757. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/threads/shared_memory.rs +0 -233
  758. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/threads/shared_memory_disabled.rs +0 -101
  759. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/traphandlers.rs +0 -768
  760. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/vmcontext/vm_host_func_context.rs +0 -79
  761. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm/vmcontext.rs +0 -1302
  762. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime/vm.rs +0 -277
  763. data/ext/cargo-vendor/wasmtime-22.0.0/src/runtime.rs +0 -113
  764. data/ext/cargo-vendor/wasmtime-asm-macros-22.0.0/.cargo-checksum.json +0 -1
  765. data/ext/cargo-vendor/wasmtime-asm-macros-22.0.0/Cargo.toml +0 -22
  766. data/ext/cargo-vendor/wasmtime-cache-22.0.0/.cargo-checksum.json +0 -1
  767. data/ext/cargo-vendor/wasmtime-cache-22.0.0/Cargo.toml +0 -89
  768. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/.cargo-checksum.json +0 -1
  769. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/Cargo.toml +0 -86
  770. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/src/bindgen.rs +0 -493
  771. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/codegen.rs +0 -651
  772. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/char.rs +0 -198
  773. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/char_async.rs +0 -215
  774. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/conventions.rs +0 -586
  775. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/conventions_async.rs +0 -631
  776. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/dead-code.rs +0 -165
  777. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/dead-code_async.rs +0 -178
  778. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/direct-import.rs +0 -91
  779. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/direct-import_async.rs +0 -97
  780. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/empty.rs +0 -45
  781. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/empty_async.rs +0 -45
  782. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/flags.rs +0 -637
  783. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/flags_async.rs +0 -679
  784. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/floats.rs +0 -255
  785. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/floats_async.rs +0 -282
  786. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/function-new.rs +0 -59
  787. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/function-new_async.rs +0 -62
  788. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/integers.rs +0 -722
  789. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/integers_async.rs +0 -819
  790. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/lists.rs +0 -1743
  791. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/lists_async.rs +0 -1927
  792. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/many-arguments.rs +0 -543
  793. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/many-arguments_async.rs +0 -561
  794. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/multi-return.rs +0 -270
  795. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/multi-return_async.rs +0 -298
  796. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/multiversion.rs +0 -251
  797. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/multiversion_async.rs +0 -270
  798. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/records.rs +0 -815
  799. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/records_async.rs +0 -877
  800. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/rename.rs +0 -154
  801. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/rename_async.rs +0 -167
  802. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/resources-export.rs +0 -467
  803. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/resources-export_async.rs +0 -516
  804. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/resources-import.rs +0 -1014
  805. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/resources-import_async.rs +0 -1086
  806. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/share-types.rs +0 -249
  807. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/share-types_async.rs +0 -265
  808. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/simple-functions.rs +0 -313
  809. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/simple-functions_async.rs +0 -347
  810. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/simple-lists.rs +0 -350
  811. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/simple-lists_async.rs +0 -381
  812. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/simple-wasi.rs +0 -216
  813. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/simple-wasi_async.rs +0 -229
  814. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/small-anonymous.rs +0 -275
  815. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/small-anonymous_async.rs +0 -287
  816. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/smoke-default.rs +0 -59
  817. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/smoke-default_async.rs +0 -62
  818. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/smoke-export.rs +0 -86
  819. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/smoke-export_async.rs +0 -89
  820. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/smoke.rs +0 -104
  821. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/smoke_async.rs +0 -111
  822. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/strings.rs +0 -247
  823. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/strings_async.rs +0 -269
  824. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/unversioned-foo.rs +0 -136
  825. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/unversioned-foo_async.rs +0 -143
  826. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/use-paths.rs +0 -288
  827. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/use-paths_async.rs +0 -314
  828. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/variants.rs +0 -1750
  829. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/variants_async.rs +0 -1867
  830. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/wat.rs +0 -84
  831. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/wat_async.rs +0 -84
  832. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/worlds-with-types.rs +0 -138
  833. data/ext/cargo-vendor/wasmtime-component-macro-22.0.0/tests/expanded/worlds-with-types_async.rs +0 -148
  834. data/ext/cargo-vendor/wasmtime-component-util-22.0.0/.cargo-checksum.json +0 -1
  835. data/ext/cargo-vendor/wasmtime-component-util-22.0.0/Cargo.toml +0 -25
  836. data/ext/cargo-vendor/wasmtime-cranelift-22.0.0/.cargo-checksum.json +0 -1
  837. data/ext/cargo-vendor/wasmtime-cranelift-22.0.0/Cargo.toml +0 -115
  838. data/ext/cargo-vendor/wasmtime-cranelift-22.0.0/src/compiler.rs +0 -1067
  839. data/ext/cargo-vendor/wasmtime-cranelift-22.0.0/src/debug/gc.rs +0 -252
  840. data/ext/cargo-vendor/wasmtime-cranelift-22.0.0/src/debug/transform/address_transform.rs +0 -783
  841. data/ext/cargo-vendor/wasmtime-cranelift-22.0.0/src/debug/transform/attr.rs +0 -320
  842. data/ext/cargo-vendor/wasmtime-cranelift-22.0.0/src/debug/transform/expression.rs +0 -1248
  843. data/ext/cargo-vendor/wasmtime-cranelift-22.0.0/src/debug/transform/line_program.rs +0 -287
  844. data/ext/cargo-vendor/wasmtime-cranelift-22.0.0/src/debug/transform/mod.rs +0 -256
  845. data/ext/cargo-vendor/wasmtime-cranelift-22.0.0/src/debug/transform/range_info_builder.rs +0 -221
  846. data/ext/cargo-vendor/wasmtime-cranelift-22.0.0/src/debug/transform/simulate.rs +0 -411
  847. data/ext/cargo-vendor/wasmtime-cranelift-22.0.0/src/debug/transform/unit.rs +0 -529
  848. data/ext/cargo-vendor/wasmtime-cranelift-22.0.0/src/debug/transform/utils.rs +0 -186
  849. data/ext/cargo-vendor/wasmtime-cranelift-22.0.0/src/debug/write_debuginfo.rs +0 -196
  850. data/ext/cargo-vendor/wasmtime-cranelift-22.0.0/src/debug.rs +0 -18
  851. data/ext/cargo-vendor/wasmtime-cranelift-22.0.0/src/func_environ.rs +0 -2910
  852. data/ext/cargo-vendor/wasmtime-cranelift-22.0.0/src/gc/enabled.rs +0 -648
  853. data/ext/cargo-vendor/wasmtime-cranelift-22.0.0/src/lib.rs +0 -462
  854. data/ext/cargo-vendor/wasmtime-environ-22.0.0/.cargo-checksum.json +0 -1
  855. data/ext/cargo-vendor/wasmtime-environ-22.0.0/Cargo.lock +0 -774
  856. data/ext/cargo-vendor/wasmtime-environ-22.0.0/Cargo.toml +0 -161
  857. data/ext/cargo-vendor/wasmtime-environ-22.0.0/src/compile/mod.rs +0 -374
  858. data/ext/cargo-vendor/wasmtime-environ-22.0.0/src/compile/module_environ.rs +0 -1348
  859. data/ext/cargo-vendor/wasmtime-environ-22.0.0/src/component/dfg.rs +0 -691
  860. data/ext/cargo-vendor/wasmtime-environ-22.0.0/src/component/info.rs +0 -672
  861. data/ext/cargo-vendor/wasmtime-environ-22.0.0/src/component/translate/inline.rs +0 -1332
  862. data/ext/cargo-vendor/wasmtime-environ-22.0.0/src/component/translate.rs +0 -985
  863. data/ext/cargo-vendor/wasmtime-environ-22.0.0/src/component/types.rs +0 -1038
  864. data/ext/cargo-vendor/wasmtime-environ-22.0.0/src/component/types_builder.rs +0 -1004
  865. data/ext/cargo-vendor/wasmtime-environ-22.0.0/src/component.rs +0 -107
  866. data/ext/cargo-vendor/wasmtime-environ-22.0.0/src/lib.rs +0 -151
  867. data/ext/cargo-vendor/wasmtime-environ-22.0.0/src/module.rs +0 -704
  868. data/ext/cargo-vendor/wasmtime-environ-22.0.0/src/stack_map.rs +0 -37
  869. data/ext/cargo-vendor/wasmtime-environ-22.0.0/src/tunables.rs +0 -175
  870. data/ext/cargo-vendor/wasmtime-environ-22.0.0/src/vmoffsets.rs +0 -989
  871. data/ext/cargo-vendor/wasmtime-fiber-22.0.0/.cargo-checksum.json +0 -1
  872. data/ext/cargo-vendor/wasmtime-fiber-22.0.0/Cargo.toml +0 -65
  873. data/ext/cargo-vendor/wasmtime-jit-debug-22.0.0/.cargo-checksum.json +0 -1
  874. data/ext/cargo-vendor/wasmtime-jit-debug-22.0.0/Cargo.toml +0 -68
  875. data/ext/cargo-vendor/wasmtime-jit-icache-coherence-22.0.0/.cargo-checksum.json +0 -1
  876. data/ext/cargo-vendor/wasmtime-jit-icache-coherence-22.0.0/Cargo.toml +0 -52
  877. data/ext/cargo-vendor/wasmtime-slab-22.0.0/.cargo-checksum.json +0 -1
  878. data/ext/cargo-vendor/wasmtime-slab-22.0.0/Cargo.toml +0 -21
  879. data/ext/cargo-vendor/wasmtime-types-22.0.0/.cargo-checksum.json +0 -1
  880. data/ext/cargo-vendor/wasmtime-types-22.0.0/Cargo.toml +0 -56
  881. data/ext/cargo-vendor/wasmtime-types-22.0.0/src/lib.rs +0 -1737
  882. data/ext/cargo-vendor/wasmtime-versioned-export-macros-22.0.0/.cargo-checksum.json +0 -1
  883. data/ext/cargo-vendor/wasmtime-versioned-export-macros-22.0.0/Cargo.toml +0 -32
  884. data/ext/cargo-vendor/wasmtime-wasi-22.0.0/.cargo-checksum.json +0 -1
  885. data/ext/cargo-vendor/wasmtime-wasi-22.0.0/Cargo.toml +0 -201
  886. data/ext/cargo-vendor/wasmtime-wasi-22.0.0/src/bindings.rs +0 -289
  887. data/ext/cargo-vendor/wasmtime-wasi-22.0.0/src/filesystem.rs +0 -446
  888. data/ext/cargo-vendor/wasmtime-wasi-22.0.0/src/host/filesystem.rs +0 -1091
  889. data/ext/cargo-vendor/wasmtime-wasi-22.0.0/src/host/io.rs +0 -388
  890. data/ext/cargo-vendor/wasmtime-wasi-22.0.0/src/lib.rs +0 -417
  891. data/ext/cargo-vendor/wasmtime-wasi-22.0.0/src/preview1.rs +0 -2801
  892. data/ext/cargo-vendor/wasmtime-wasi-22.0.0/src/stdio.rs +0 -533
  893. data/ext/cargo-vendor/wasmtime-wasi-22.0.0/tests/all/api.rs +0 -198
  894. data/ext/cargo-vendor/wasmtime-wasi-22.0.0/tests/all/async_.rs +0 -397
  895. data/ext/cargo-vendor/wasmtime-wasi-22.0.0/tests/all/sync.rs +0 -331
  896. data/ext/cargo-vendor/wasmtime-winch-22.0.0/.cargo-checksum.json +0 -1
  897. data/ext/cargo-vendor/wasmtime-winch-22.0.0/Cargo.toml +0 -82
  898. data/ext/cargo-vendor/wasmtime-winch-22.0.0/src/compiler.rs +0 -239
  899. data/ext/cargo-vendor/wasmtime-wit-bindgen-22.0.0/.cargo-checksum.json +0 -1
  900. data/ext/cargo-vendor/wasmtime-wit-bindgen-22.0.0/Cargo.toml +0 -47
  901. data/ext/cargo-vendor/wasmtime-wit-bindgen-22.0.0/src/lib.rs +0 -2639
  902. data/ext/cargo-vendor/wast-209.0.1/.cargo-checksum.json +0 -1
  903. data/ext/cargo-vendor/wast-209.0.1/Cargo.toml +0 -60
  904. data/ext/cargo-vendor/wast-209.0.1/src/component/binary.rs +0 -1000
  905. data/ext/cargo-vendor/wast-209.0.1/src/component/component.rs +0 -321
  906. data/ext/cargo-vendor/wast-209.0.1/src/component/expand.rs +0 -875
  907. data/ext/cargo-vendor/wast-209.0.1/src/component/resolve.rs +0 -999
  908. data/ext/cargo-vendor/wast-209.0.1/src/component.rs +0 -28
  909. data/ext/cargo-vendor/wast-209.0.1/src/core/binary.rs +0 -1396
  910. data/ext/cargo-vendor/wast-209.0.1/src/core/expr.rs +0 -2016
  911. data/ext/cargo-vendor/wast-209.0.1/src/core/memory.rs +0 -284
  912. data/ext/cargo-vendor/wast-209.0.1/src/core/module.rs +0 -218
  913. data/ext/cargo-vendor/wast-209.0.1/src/core/resolve/deinline_import_export.rs +0 -235
  914. data/ext/cargo-vendor/wast-209.0.1/src/core/resolve/names.rs +0 -751
  915. data/ext/cargo-vendor/wast-209.0.1/src/core/resolve/types.rs +0 -267
  916. data/ext/cargo-vendor/wast-209.0.1/src/core/table.rs +0 -302
  917. data/ext/cargo-vendor/wast-209.0.1/src/core/types.rs +0 -901
  918. data/ext/cargo-vendor/wast-209.0.1/src/core.rs +0 -29
  919. data/ext/cargo-vendor/wast-209.0.1/src/lib.rs +0 -551
  920. data/ext/cargo-vendor/wast-209.0.1/src/parser.rs +0 -1414
  921. data/ext/cargo-vendor/wast-209.0.1/src/wat.rs +0 -71
  922. data/ext/cargo-vendor/wat-1.209.1/.cargo-checksum.json +0 -1
  923. data/ext/cargo-vendor/wat-1.209.1/Cargo.toml +0 -34
  924. data/ext/cargo-vendor/wat-1.209.1/src/lib.rs +0 -401
  925. data/ext/cargo-vendor/wiggle-22.0.0/.cargo-checksum.json +0 -1
  926. data/ext/cargo-vendor/wiggle-22.0.0/Cargo.toml +0 -124
  927. data/ext/cargo-vendor/wiggle-generate-22.0.0/.cargo-checksum.json +0 -1
  928. data/ext/cargo-vendor/wiggle-generate-22.0.0/Cargo.toml +0 -67
  929. data/ext/cargo-vendor/wiggle-generate-22.0.0/LICENSE +0 -220
  930. data/ext/cargo-vendor/wiggle-macro-22.0.0/.cargo-checksum.json +0 -1
  931. data/ext/cargo-vendor/wiggle-macro-22.0.0/Cargo.toml +0 -51
  932. data/ext/cargo-vendor/wiggle-macro-22.0.0/LICENSE +0 -220
  933. data/ext/cargo-vendor/winch-codegen-0.20.0/.cargo-checksum.json +0 -1
  934. data/ext/cargo-vendor/winch-codegen-0.20.0/Cargo.toml +0 -77
  935. data/ext/cargo-vendor/winch-codegen-0.20.0/src/codegen/env.rs +0 -448
  936. data/ext/cargo-vendor/winch-codegen-0.20.0/src/codegen/mod.rs +0 -882
  937. data/ext/cargo-vendor/winch-codegen-0.20.0/src/visitor.rs +0 -2149
  938. data/ext/cargo-vendor/wit-parser-0.209.1/.cargo-checksum.json +0 -1
  939. data/ext/cargo-vendor/wit-parser-0.209.1/Cargo.toml +0 -112
  940. data/ext/cargo-vendor/wit-parser-0.209.1/src/ast/lex.rs +0 -747
  941. data/ext/cargo-vendor/wit-parser-0.209.1/src/ast/resolve.rs +0 -1524
  942. data/ext/cargo-vendor/wit-parser-0.209.1/src/ast.rs +0 -1668
  943. data/ext/cargo-vendor/wit-parser-0.209.1/src/decoding.rs +0 -1795
  944. data/ext/cargo-vendor/wit-parser-0.209.1/src/lib.rs +0 -873
  945. data/ext/cargo-vendor/wit-parser-0.209.1/src/resolve.rs +0 -2498
  946. data/ext/cargo-vendor/wit-parser-0.209.1/tests/ui/feature-gates.wit.json +0 -288
  947. data/ext/cargo-vendor/wit-parser-0.209.1/tests/ui/since-and-unstable.wit.json +0 -549
  948. /data/ext/cargo-vendor/{cranelift-bforest-0.109.0 → cranelift-bforest-0.110.2}/LICENSE +0 -0
  949. /data/ext/cargo-vendor/{cranelift-bforest-0.109.0 → cranelift-bforest-0.110.2}/README.md +0 -0
  950. /data/ext/cargo-vendor/{cranelift-bforest-0.109.0 → cranelift-bforest-0.110.2}/src/lib.rs +0 -0
  951. /data/ext/cargo-vendor/{cranelift-bforest-0.109.0 → cranelift-bforest-0.110.2}/src/map.rs +0 -0
  952. /data/ext/cargo-vendor/{cranelift-bforest-0.109.0 → cranelift-bforest-0.110.2}/src/node.rs +0 -0
  953. /data/ext/cargo-vendor/{cranelift-bforest-0.109.0 → cranelift-bforest-0.110.2}/src/path.rs +0 -0
  954. /data/ext/cargo-vendor/{cranelift-bforest-0.109.0 → cranelift-bforest-0.110.2}/src/pool.rs +0 -0
  955. /data/ext/cargo-vendor/{cranelift-bforest-0.109.0 → cranelift-bforest-0.110.2}/src/set.rs +0 -0
  956. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/LICENSE +0 -0
  957. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/README.md +0 -0
  958. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/benches/x64-evex-encoding.rs +0 -0
  959. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/build.rs +0 -0
  960. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/alias_analysis.rs +0 -0
  961. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/binemit/mod.rs +0 -0
  962. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/cfg_printer.rs +0 -0
  963. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/constant_hash.rs +0 -0
  964. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/ctxhash.rs +0 -0
  965. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/cursor.rs +0 -0
  966. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/dbg.rs +0 -0
  967. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/dominator_tree.rs +0 -0
  968. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/egraph/cost.rs +0 -0
  969. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/egraph/elaborate.rs +0 -0
  970. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/egraph.rs +0 -0
  971. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/flowgraph.rs +0 -0
  972. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/incremental_cache.rs +0 -0
  973. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/inst_predicates.rs +0 -0
  974. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/ir/atomic_rmw_op.rs +0 -0
  975. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/ir/builder.rs +0 -0
  976. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/ir/condcodes.rs +0 -0
  977. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/ir/constant.rs +0 -0
  978. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/ir/dynamic_type.rs +0 -0
  979. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/ir/entities.rs +0 -0
  980. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/ir/extfunc.rs +0 -0
  981. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/ir/extname.rs +0 -0
  982. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/ir/function.rs +0 -0
  983. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/ir/known_symbol.rs +0 -0
  984. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/ir/layout.rs +0 -0
  985. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/ir/libcall.rs +0 -0
  986. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/ir/memflags.rs +0 -0
  987. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/ir/memtype.rs +0 -0
  988. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/ir/pcc.rs +0 -0
  989. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/ir/progpoint.rs +0 -0
  990. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/ir/sourceloc.rs +0 -0
  991. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/ir/stackslot.rs +0 -0
  992. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/aarch64/abi.rs +0 -0
  993. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/aarch64/inst/args.rs +0 -0
  994. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/aarch64/inst/imms.rs +0 -0
  995. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/aarch64/inst/regs.rs +0 -0
  996. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/aarch64/inst/unwind/systemv.rs +0 -0
  997. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/aarch64/inst/unwind.rs +0 -0
  998. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/aarch64/inst_neon.isle +0 -0
  999. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/aarch64/lower/isle/generated_code.rs +0 -0
  1000. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/aarch64/lower/isle.rs +0 -0
  1001. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/aarch64/lower.rs +0 -0
  1002. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/aarch64/lower_dynamic_neon.isle +0 -0
  1003. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/aarch64/pcc.rs +0 -0
  1004. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/aarch64/settings.rs +0 -0
  1005. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/call_conv.rs +0 -0
  1006. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/riscv64/abi.rs +0 -0
  1007. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/riscv64/inst/args.rs +0 -0
  1008. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/riscv64/inst/encode.rs +0 -0
  1009. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/riscv64/inst/imms.rs +0 -0
  1010. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/riscv64/inst/regs.rs +0 -0
  1011. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/riscv64/inst/unwind/systemv.rs +0 -0
  1012. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/riscv64/inst/unwind.rs +0 -0
  1013. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/riscv64/inst/vector.rs +0 -0
  1014. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/riscv64/inst_vector.isle +0 -0
  1015. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/riscv64/lower/isle/generated_code.rs +0 -0
  1016. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/riscv64/lower.rs +0 -0
  1017. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/riscv64/settings.rs +0 -0
  1018. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/s390x/abi.rs +0 -0
  1019. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/s390x/inst/args.rs +0 -0
  1020. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/s390x/inst/emit_tests.rs +0 -0
  1021. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/s390x/inst/imms.rs +0 -0
  1022. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/s390x/inst/regs.rs +0 -0
  1023. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/s390x/inst/unwind/systemv.rs +0 -0
  1024. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/s390x/inst/unwind.rs +0 -0
  1025. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/s390x/inst.isle +0 -0
  1026. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/s390x/lower/isle/generated_code.rs +0 -0
  1027. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/s390x/lower/isle.rs +0 -0
  1028. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/s390x/lower.rs +0 -0
  1029. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/s390x/settings.rs +0 -0
  1030. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/unwind/systemv.rs +0 -0
  1031. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/unwind/winx64.rs +0 -0
  1032. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/unwind.rs +0 -0
  1033. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/x64/abi.rs +0 -0
  1034. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/x64/encoding/evex.rs +0 -0
  1035. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/x64/encoding/mod.rs +0 -0
  1036. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/x64/encoding/rex.rs +0 -0
  1037. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/x64/encoding/vex.rs +0 -0
  1038. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/x64/inst/args.rs +0 -0
  1039. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/x64/inst/emit_tests.rs +0 -0
  1040. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/x64/inst/regs.rs +0 -0
  1041. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/x64/inst/unwind/systemv.rs +0 -0
  1042. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/x64/inst/unwind/winx64.rs +0 -0
  1043. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/x64/inst/unwind.rs +0 -0
  1044. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/x64/lower/isle/generated_code.rs +0 -0
  1045. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/x64/lower/isle.rs +0 -0
  1046. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/x64/lower.rs +0 -0
  1047. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/x64/pcc.rs +0 -0
  1048. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/isa/x64/settings.rs +0 -0
  1049. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/iterators.rs +0 -0
  1050. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/legalizer/globalvalue.rs +0 -0
  1051. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/loop_analysis.rs +0 -0
  1052. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/machinst/blockorder.rs +0 -0
  1053. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/machinst/compile.rs +0 -0
  1054. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/machinst/inst_common.rs +0 -0
  1055. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/machinst/pcc.rs +0 -0
  1056. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/machinst/reg.rs +0 -0
  1057. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/machinst/valueregs.rs +0 -0
  1058. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/nan_canonicalization.rs +0 -0
  1059. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/opts/README.md +0 -0
  1060. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/opts/arithmetic.isle +0 -0
  1061. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/opts/bitops.isle +0 -0
  1062. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/opts/cprop.isle +0 -0
  1063. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/opts/extends.isle +0 -0
  1064. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/opts/generated_code.rs +0 -0
  1065. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/opts/icmp.isle +0 -0
  1066. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/opts/remat.isle +0 -0
  1067. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/opts/selects.isle +0 -0
  1068. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/opts/shifts.isle +0 -0
  1069. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/opts/spaceship.isle +0 -0
  1070. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/opts/spectre.isle +0 -0
  1071. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/opts/vector.isle +0 -0
  1072. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/opts.rs +0 -0
  1073. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/prelude_opt.isle +0 -0
  1074. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/print_errors.rs +0 -0
  1075. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/ranges.rs +0 -0
  1076. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/remove_constant_phis.rs +0 -0
  1077. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/result.rs +0 -0
  1078. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/scoped_hash_map.rs +0 -0
  1079. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/settings.rs +0 -0
  1080. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/souper_harvest.rs +0 -0
  1081. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/timing.rs +0 -0
  1082. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/traversals.rs +0 -0
  1083. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/unionfind.rs +0 -0
  1084. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/unreachable_code.rs +0 -0
  1085. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/value_label.rs +0 -0
  1086. /data/ext/cargo-vendor/{cranelift-codegen-0.109.0 → cranelift-codegen-0.110.2}/src/verifier/mod.rs +0 -0
  1087. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.109.0 → cranelift-codegen-meta-0.110.2}/LICENSE +0 -0
  1088. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.109.0 → cranelift-codegen-meta-0.110.2}/README.md +0 -0
  1089. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.109.0 → cranelift-codegen-meta-0.110.2}/src/cdsl/formats.rs +0 -0
  1090. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.109.0 → cranelift-codegen-meta-0.110.2}/src/cdsl/instructions.rs +0 -0
  1091. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.109.0 → cranelift-codegen-meta-0.110.2}/src/cdsl/isa.rs +0 -0
  1092. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.109.0 → cranelift-codegen-meta-0.110.2}/src/cdsl/mod.rs +0 -0
  1093. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.109.0 → cranelift-codegen-meta-0.110.2}/src/cdsl/operands.rs +0 -0
  1094. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.109.0 → cranelift-codegen-meta-0.110.2}/src/cdsl/settings.rs +0 -0
  1095. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.109.0 → cranelift-codegen-meta-0.110.2}/src/constant_hash.rs +0 -0
  1096. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.109.0 → cranelift-codegen-meta-0.110.2}/src/error.rs +0 -0
  1097. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.109.0 → cranelift-codegen-meta-0.110.2}/src/gen_isle.rs +0 -0
  1098. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.109.0 → cranelift-codegen-meta-0.110.2}/src/gen_settings.rs +0 -0
  1099. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.109.0 → cranelift-codegen-meta-0.110.2}/src/gen_types.rs +0 -0
  1100. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.109.0 → cranelift-codegen-meta-0.110.2}/src/isa/arm64.rs +0 -0
  1101. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.109.0 → cranelift-codegen-meta-0.110.2}/src/isa/mod.rs +0 -0
  1102. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.109.0 → cranelift-codegen-meta-0.110.2}/src/isa/riscv64.rs +0 -0
  1103. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.109.0 → cranelift-codegen-meta-0.110.2}/src/isa/s390x.rs +0 -0
  1104. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.109.0 → cranelift-codegen-meta-0.110.2}/src/isa/x86.rs +0 -0
  1105. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.109.0 → cranelift-codegen-meta-0.110.2}/src/isle.rs +0 -0
  1106. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.109.0 → cranelift-codegen-meta-0.110.2}/src/lib.rs +0 -0
  1107. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.109.0 → cranelift-codegen-meta-0.110.2}/src/shared/entities.rs +0 -0
  1108. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.109.0 → cranelift-codegen-meta-0.110.2}/src/shared/formats.rs +0 -0
  1109. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.109.0 → cranelift-codegen-meta-0.110.2}/src/shared/immediates.rs +0 -0
  1110. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.109.0 → cranelift-codegen-meta-0.110.2}/src/shared/mod.rs +0 -0
  1111. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.109.0 → cranelift-codegen-meta-0.110.2}/src/shared/settings.rs +0 -0
  1112. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.109.0 → cranelift-codegen-meta-0.110.2}/src/srcgen.rs +0 -0
  1113. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.109.0 → cranelift-codegen-meta-0.110.2}/src/unique_table.rs +0 -0
  1114. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.109.0 → cranelift-codegen-shared-0.110.2}/LICENSE +0 -0
  1115. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.109.0 → cranelift-codegen-shared-0.110.2}/README.md +0 -0
  1116. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.109.0 → cranelift-codegen-shared-0.110.2}/src/constant_hash.rs +0 -0
  1117. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.109.0 → cranelift-codegen-shared-0.110.2}/src/constants.rs +0 -0
  1118. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.109.0 → cranelift-codegen-shared-0.110.2}/src/lib.rs +0 -0
  1119. /data/ext/cargo-vendor/{cranelift-control-0.109.0 → cranelift-control-0.110.2}/LICENSE +0 -0
  1120. /data/ext/cargo-vendor/{cranelift-control-0.109.0 → cranelift-control-0.110.2}/README.md +0 -0
  1121. /data/ext/cargo-vendor/{cranelift-control-0.109.0 → cranelift-control-0.110.2}/src/chaos.rs +0 -0
  1122. /data/ext/cargo-vendor/{cranelift-control-0.109.0 → cranelift-control-0.110.2}/src/lib.rs +0 -0
  1123. /data/ext/cargo-vendor/{cranelift-control-0.109.0 → cranelift-control-0.110.2}/src/zero_sized.rs +0 -0
  1124. /data/ext/cargo-vendor/{cranelift-entity-0.109.0 → cranelift-entity-0.110.2}/LICENSE +0 -0
  1125. /data/ext/cargo-vendor/{cranelift-entity-0.109.0 → cranelift-entity-0.110.2}/README.md +0 -0
  1126. /data/ext/cargo-vendor/{cranelift-entity-0.109.0 → cranelift-entity-0.110.2}/src/boxed_slice.rs +0 -0
  1127. /data/ext/cargo-vendor/{cranelift-entity-0.109.0 → cranelift-entity-0.110.2}/src/iter.rs +0 -0
  1128. /data/ext/cargo-vendor/{cranelift-entity-0.109.0 → cranelift-entity-0.110.2}/src/keys.rs +0 -0
  1129. /data/ext/cargo-vendor/{cranelift-entity-0.109.0 → cranelift-entity-0.110.2}/src/lib.rs +0 -0
  1130. /data/ext/cargo-vendor/{cranelift-entity-0.109.0 → cranelift-entity-0.110.2}/src/list.rs +0 -0
  1131. /data/ext/cargo-vendor/{cranelift-entity-0.109.0 → cranelift-entity-0.110.2}/src/map.rs +0 -0
  1132. /data/ext/cargo-vendor/{cranelift-entity-0.109.0 → cranelift-entity-0.110.2}/src/packed_option.rs +0 -0
  1133. /data/ext/cargo-vendor/{cranelift-entity-0.109.0 → cranelift-entity-0.110.2}/src/primary.rs +0 -0
  1134. /data/ext/cargo-vendor/{cranelift-entity-0.109.0 → cranelift-entity-0.110.2}/src/sparse.rs +0 -0
  1135. /data/ext/cargo-vendor/{cranelift-entity-0.109.0 → cranelift-entity-0.110.2}/src/unsigned.rs +0 -0
  1136. /data/ext/cargo-vendor/{cranelift-frontend-0.109.0 → cranelift-frontend-0.110.2}/LICENSE +0 -0
  1137. /data/ext/cargo-vendor/{cranelift-frontend-0.109.0 → cranelift-frontend-0.110.2}/README.md +0 -0
  1138. /data/ext/cargo-vendor/{cranelift-frontend-0.109.0 → cranelift-frontend-0.110.2}/src/lib.rs +0 -0
  1139. /data/ext/cargo-vendor/{cranelift-frontend-0.109.0 → cranelift-frontend-0.110.2}/src/ssa.rs +0 -0
  1140. /data/ext/cargo-vendor/{cranelift-frontend-0.109.0 → cranelift-frontend-0.110.2}/src/switch.rs +0 -0
  1141. /data/ext/cargo-vendor/{cranelift-frontend-0.109.0 → cranelift-frontend-0.110.2}/src/variable.rs +0 -0
  1142. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/README.md +0 -0
  1143. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/build.rs +0 -0
  1144. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/fail/bad_converters.isle +0 -0
  1145. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/fail/bound_var_type_mismatch.isle +0 -0
  1146. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/fail/converter_extractor_constructor.isle +0 -0
  1147. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/fail/error1.isle +0 -0
  1148. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/fail/extra_parens.isle +0 -0
  1149. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/fail/impure_expression.isle +0 -0
  1150. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/fail/impure_rhs.isle +0 -0
  1151. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/fail/multi_internal_etor.isle +0 -0
  1152. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/fail/multi_prio.isle +0 -0
  1153. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/link/borrows.isle +0 -0
  1154. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/link/borrows_main.rs +0 -0
  1155. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/link/iflets.isle +0 -0
  1156. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/link/iflets_main.rs +0 -0
  1157. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/link/multi_constructor.isle +0 -0
  1158. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/link/multi_constructor_main.rs +0 -0
  1159. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/link/multi_extractor.isle +0 -0
  1160. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/link/multi_extractor_main.rs +0 -0
  1161. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/link/test.isle +0 -0
  1162. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/link/test_main.rs +0 -0
  1163. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/pass/bound_var.isle +0 -0
  1164. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/pass/construct_and_extract.isle +0 -0
  1165. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/pass/conversions.isle +0 -0
  1166. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/pass/conversions_extern.isle +0 -0
  1167. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/pass/let.isle +0 -0
  1168. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/pass/nodebug.isle +0 -0
  1169. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/pass/prio_trie_bug.isle +0 -0
  1170. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/pass/test2.isle +0 -0
  1171. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/pass/test3.isle +0 -0
  1172. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/pass/test4.isle +0 -0
  1173. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/pass/tutorial.isle +0 -0
  1174. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/run/iconst.isle +0 -0
  1175. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/run/iconst_main.rs +0 -0
  1176. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/run/let_shadowing.isle +0 -0
  1177. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/isle_examples/run/let_shadowing_main.rs +0 -0
  1178. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/src/ast.rs +0 -0
  1179. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/src/compile.rs +0 -0
  1180. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/src/disjointsets.rs +0 -0
  1181. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/src/error.rs +0 -0
  1182. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/src/lexer.rs +0 -0
  1183. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/src/lib.rs +0 -0
  1184. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/src/log.rs +0 -0
  1185. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/src/overlap.rs +0 -0
  1186. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/src/serialize.rs +0 -0
  1187. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/src/stablemapset.rs +0 -0
  1188. /data/ext/cargo-vendor/{cranelift-isle-0.109.0 → cranelift-isle-0.110.2}/tests/run_tests.rs +0 -0
  1189. /data/ext/cargo-vendor/{cranelift-native-0.109.0 → cranelift-native-0.110.2}/LICENSE +0 -0
  1190. /data/ext/cargo-vendor/{cranelift-native-0.109.0 → cranelift-native-0.110.2}/README.md +0 -0
  1191. /data/ext/cargo-vendor/{cranelift-native-0.109.0 → cranelift-native-0.110.2}/src/riscv.rs +0 -0
  1192. /data/ext/cargo-vendor/{cranelift-wasm-0.109.0 → cranelift-wasm-0.110.2}/LICENSE +0 -0
  1193. /data/ext/cargo-vendor/{cranelift-wasm-0.109.0 → cranelift-wasm-0.110.2}/README.md +0 -0
  1194. /data/ext/cargo-vendor/{cranelift-wasm-0.109.0 → cranelift-wasm-0.110.2}/src/environ/dummy.rs +0 -0
  1195. /data/ext/cargo-vendor/{cranelift-wasm-0.109.0 → cranelift-wasm-0.110.2}/src/environ/mod.rs +0 -0
  1196. /data/ext/cargo-vendor/{cranelift-wasm-0.109.0 → cranelift-wasm-0.110.2}/src/environ/spec.rs +0 -0
  1197. /data/ext/cargo-vendor/{cranelift-wasm-0.109.0 → cranelift-wasm-0.110.2}/src/func_translator.rs +0 -0
  1198. /data/ext/cargo-vendor/{cranelift-wasm-0.109.0 → cranelift-wasm-0.110.2}/src/lib.rs +0 -0
  1199. /data/ext/cargo-vendor/{cranelift-wasm-0.109.0 → cranelift-wasm-0.110.2}/src/module_translator.rs +0 -0
  1200. /data/ext/cargo-vendor/{cranelift-wasm-0.109.0 → cranelift-wasm-0.110.2}/src/state.rs +0 -0
  1201. /data/ext/cargo-vendor/{cranelift-wasm-0.109.0 → cranelift-wasm-0.110.2}/src/table.rs +0 -0
  1202. /data/ext/cargo-vendor/{cranelift-wasm-0.109.0 → cranelift-wasm-0.110.2}/src/translation_utils.rs +0 -0
  1203. /data/ext/cargo-vendor/{deterministic-wasi-ctx-0.1.22 → deterministic-wasi-ctx-0.1.23}/README.md +0 -0
  1204. /data/ext/cargo-vendor/{deterministic-wasi-ctx-0.1.22 → deterministic-wasi-ctx-0.1.23}/src/clocks.rs +0 -0
  1205. /data/ext/cargo-vendor/{deterministic-wasi-ctx-0.1.22 → deterministic-wasi-ctx-0.1.23}/src/lib.rs +0 -0
  1206. /data/ext/cargo-vendor/{deterministic-wasi-ctx-0.1.22 → deterministic-wasi-ctx-0.1.23}/src/noop_scheduler.rs +0 -0
  1207. /data/ext/cargo-vendor/{deterministic-wasi-ctx-0.1.22 → deterministic-wasi-ctx-0.1.23}/tests/clocks.rs +0 -0
  1208. /data/ext/cargo-vendor/{deterministic-wasi-ctx-0.1.22 → deterministic-wasi-ctx-0.1.23}/tests/common/mod.rs +0 -0
  1209. /data/ext/cargo-vendor/{deterministic-wasi-ctx-0.1.22 → deterministic-wasi-ctx-0.1.23}/tests/random.rs +0 -0
  1210. /data/ext/cargo-vendor/{deterministic-wasi-ctx-0.1.22 → deterministic-wasi-ctx-0.1.23}/tests/scheduler.rs +0 -0
  1211. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/LICENSE +0 -0
  1212. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/README.md +0 -0
  1213. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/src/clocks.rs +0 -0
  1214. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/src/ctx.rs +0 -0
  1215. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/src/dir.rs +0 -0
  1216. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/src/error.rs +0 -0
  1217. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/src/file.rs +0 -0
  1218. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/src/lib.rs +0 -0
  1219. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/src/pipe.rs +0 -0
  1220. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/src/random.rs +0 -0
  1221. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/src/sched/subscription.rs +0 -0
  1222. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/src/sched.rs +0 -0
  1223. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/src/snapshots/mod.rs +0 -0
  1224. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/src/snapshots/preview_0.rs +0 -0
  1225. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/src/snapshots/preview_1/error.rs +0 -0
  1226. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/src/snapshots/preview_1.rs +0 -0
  1227. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/src/string_array.rs +0 -0
  1228. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/src/sync/clocks.rs +0 -0
  1229. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/src/sync/dir.rs +0 -0
  1230. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/src/sync/file.rs +0 -0
  1231. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/src/sync/mod.rs +0 -0
  1232. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/src/sync/net.rs +0 -0
  1233. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/src/sync/sched/unix.rs +0 -0
  1234. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/src/sync/sched/windows.rs +0 -0
  1235. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/src/sync/sched.rs +0 -0
  1236. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/src/sync/stdio.rs +0 -0
  1237. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/src/table.rs +0 -0
  1238. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/src/tokio/dir.rs +0 -0
  1239. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/src/tokio/file.rs +0 -0
  1240. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/src/tokio/net.rs +0 -0
  1241. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/src/tokio/sched/unix.rs +0 -0
  1242. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/src/tokio/sched/windows.rs +0 -0
  1243. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/src/tokio/sched.rs +0 -0
  1244. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/src/tokio/stdio.rs +0 -0
  1245. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/tests/all/main.rs +0 -0
  1246. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/witx/preview0/typenames.witx +0 -0
  1247. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/witx/preview0/wasi_unstable.witx +0 -0
  1248. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/witx/preview1/typenames.witx +0 -0
  1249. /data/ext/cargo-vendor/{wasi-common-22.0.0 → wasi-common-23.0.2}/witx/preview1/wasi_snapshot_preview1.witx +0 -0
  1250. /data/ext/cargo-vendor/{wasm-encoder-0.209.1 → wasm-encoder-0.212.0}/LICENSE +0 -0
  1251. /data/ext/cargo-vendor/{wasm-encoder-0.209.1 → wasm-encoder-0.212.0}/README.md +0 -0
  1252. /data/ext/cargo-vendor/{wasm-encoder-0.209.1 → wasm-encoder-0.212.0}/src/component/aliases.rs +0 -0
  1253. /data/ext/cargo-vendor/{wasm-encoder-0.209.1 → wasm-encoder-0.212.0}/src/component/builder.rs +0 -0
  1254. /data/ext/cargo-vendor/{wasm-encoder-0.209.1 → wasm-encoder-0.212.0}/src/component/canonicals.rs +0 -0
  1255. /data/ext/cargo-vendor/{wasm-encoder-0.209.1 → wasm-encoder-0.212.0}/src/component/components.rs +0 -0
  1256. /data/ext/cargo-vendor/{wasm-encoder-0.209.1 → wasm-encoder-0.212.0}/src/component/exports.rs +0 -0
  1257. /data/ext/cargo-vendor/{wasm-encoder-0.209.1 → wasm-encoder-0.212.0}/src/component/imports.rs +0 -0
  1258. /data/ext/cargo-vendor/{wasm-encoder-0.209.1 → wasm-encoder-0.212.0}/src/component/instances.rs +0 -0
  1259. /data/ext/cargo-vendor/{wasm-encoder-0.209.1 → wasm-encoder-0.212.0}/src/component/modules.rs +0 -0
  1260. /data/ext/cargo-vendor/{wasm-encoder-0.209.1 → wasm-encoder-0.212.0}/src/component/names.rs +0 -0
  1261. /data/ext/cargo-vendor/{wasm-encoder-0.209.1 → wasm-encoder-0.212.0}/src/component/start.rs +0 -0
  1262. /data/ext/cargo-vendor/{wasm-encoder-0.209.1 → wasm-encoder-0.212.0}/src/component.rs +0 -0
  1263. /data/ext/cargo-vendor/{wasm-encoder-0.209.1 → wasm-encoder-0.212.0}/src/core/custom.rs +0 -0
  1264. /data/ext/cargo-vendor/{wasm-encoder-0.209.1 → wasm-encoder-0.212.0}/src/core/data.rs +0 -0
  1265. /data/ext/cargo-vendor/{wasm-encoder-0.209.1 → wasm-encoder-0.212.0}/src/core/dump.rs +0 -0
  1266. /data/ext/cargo-vendor/{wasm-encoder-0.209.1 → wasm-encoder-0.212.0}/src/core/elements.rs +0 -0
  1267. /data/ext/cargo-vendor/{wasm-encoder-0.209.1 → wasm-encoder-0.212.0}/src/core/functions.rs +0 -0
  1268. /data/ext/cargo-vendor/{wasm-encoder-0.209.1 → wasm-encoder-0.212.0}/src/core/linking.rs +0 -0
  1269. /data/ext/cargo-vendor/{wasm-encoder-0.209.1 → wasm-encoder-0.212.0}/src/core/names.rs +0 -0
  1270. /data/ext/cargo-vendor/{wasm-encoder-0.209.1 → wasm-encoder-0.212.0}/src/core/producers.rs +0 -0
  1271. /data/ext/cargo-vendor/{wasm-encoder-0.209.1 → wasm-encoder-0.212.0}/src/core/start.rs +0 -0
  1272. /data/ext/cargo-vendor/{wasm-encoder-0.209.1 → wasm-encoder-0.212.0}/src/core.rs +0 -0
  1273. /data/ext/cargo-vendor/{wasm-encoder-0.209.1 → wasm-encoder-0.212.0}/src/raw.rs +0 -0
  1274. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/README.md +0 -0
  1275. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/benches/benchmark.rs +0 -0
  1276. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/examples/simple.rs +0 -0
  1277. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/collections/hash.rs +0 -0
  1278. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/collections/index_map/detail.rs +0 -0
  1279. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/collections/index_map/tests.rs +0 -0
  1280. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/collections/index_map.rs +0 -0
  1281. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/collections/index_set.rs +0 -0
  1282. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/collections/map.rs +0 -0
  1283. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/collections/mod.rs +0 -0
  1284. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/collections/set.rs +0 -0
  1285. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/limits.rs +0 -0
  1286. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/readers/component/aliases.rs +0 -0
  1287. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/readers/component/canonicals.rs +0 -0
  1288. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/readers/component/exports.rs +0 -0
  1289. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/readers/component/imports.rs +0 -0
  1290. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/readers/component/instances.rs +0 -0
  1291. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/readers/component/names.rs +0 -0
  1292. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/readers/component/start.rs +0 -0
  1293. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/readers/component/types.rs +0 -0
  1294. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/readers/component.rs +0 -0
  1295. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/readers/core/branch_hinting.rs +0 -0
  1296. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/readers/core/code.rs +0 -0
  1297. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/readers/core/coredumps.rs +0 -0
  1298. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/readers/core/custom.rs +0 -0
  1299. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/readers/core/data.rs +0 -0
  1300. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/readers/core/dylink0.rs +0 -0
  1301. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/readers/core/elements.rs +0 -0
  1302. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/readers/core/exports.rs +0 -0
  1303. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/readers/core/functions.rs +0 -0
  1304. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/readers/core/globals.rs +0 -0
  1305. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/readers/core/imports.rs +0 -0
  1306. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/readers/core/init.rs +0 -0
  1307. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/readers/core/linking.rs +0 -0
  1308. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/readers/core/memories.rs +0 -0
  1309. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/readers/core/names.rs +0 -0
  1310. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/readers/core/producers.rs +0 -0
  1311. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/readers/core/reloc.rs +0 -0
  1312. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/readers/core/tags.rs +0 -0
  1313. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/readers/core/types/matches.rs +0 -0
  1314. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/readers/core.rs +0 -0
  1315. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/readers.rs +0 -0
  1316. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/validator/core/canonical.rs +0 -0
  1317. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/validator/func.rs +0 -0
  1318. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/src/validator/names.rs +0 -0
  1319. /data/ext/cargo-vendor/{wasmparser-0.209.1 → wasmparser-0.212.0}/tests/big-module.rs +0 -0
  1320. /data/ext/cargo-vendor/{wasmprinter-0.209.1 → wasmprinter-0.212.0}/LICENSE +0 -0
  1321. /data/ext/cargo-vendor/{wasmprinter-0.209.1 → wasmprinter-0.212.0}/README.md +0 -0
  1322. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/LICENSE +0 -0
  1323. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/README.md +0 -0
  1324. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/proptest-regressions/runtime/vm/instance/allocator/pooling/memory_pool.txt +0 -0
  1325. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/code.rs +0 -0
  1326. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/component/bindgen_examples/_0_hello_world.rs +0 -0
  1327. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/component/bindgen_examples/_1_world_imports.rs +0 -0
  1328. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/component/bindgen_examples/_2_world_exports.rs +0 -0
  1329. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/component/bindgen_examples/_3_interface_imports.rs +0 -0
  1330. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/component/bindgen_examples/_4_imported_resources.rs +0 -0
  1331. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/component/bindgen_examples/_5_all_world_export_kinds.rs +0 -0
  1332. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/component/bindgen_examples/_6_exported_resources.rs +0 -0
  1333. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/component/resource_table.rs +0 -0
  1334. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/component/storage.rs +0 -0
  1335. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/component/store.rs +0 -0
  1336. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/component/types.rs +0 -0
  1337. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/externals.rs +0 -0
  1338. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/gc/disabled/anyref.rs +0 -0
  1339. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/gc/disabled/externref.rs +0 -0
  1340. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/gc/disabled/i31.rs +0 -0
  1341. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/gc/disabled.rs +0 -0
  1342. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/gc/enabled/anyref.rs +0 -0
  1343. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/gc/enabled/i31.rs +0 -0
  1344. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/gc/enabled.rs +0 -0
  1345. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/gc/noextern.rs +0 -0
  1346. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/gc.rs +0 -0
  1347. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/resources.rs +0 -0
  1348. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/signatures.rs +0 -0
  1349. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/store/context.rs +0 -0
  1350. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/store/func_refs.rs +0 -0
  1351. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/trampoline/global.rs +0 -0
  1352. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/type_registry.rs +0 -0
  1353. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/uninhabited.rs +0 -0
  1354. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/unix.rs +0 -0
  1355. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/v128.rs +0 -0
  1356. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/arch/aarch64.rs +0 -0
  1357. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/arch/mod.rs +0 -0
  1358. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/arch/s390x.S +0 -0
  1359. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/arch/s390x.rs +0 -0
  1360. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/arch/x86_64.rs +0 -0
  1361. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/async_yield.rs +0 -0
  1362. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/debug_builtins.rs +0 -0
  1363. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/export.rs +0 -0
  1364. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/gc/enabled/externref.rs +0 -0
  1365. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/gc/enabled.rs +0 -0
  1366. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/gc/host_data.rs +0 -0
  1367. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/gc/i31.rs +0 -0
  1368. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/helpers.c +0 -0
  1369. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/imports.rs +0 -0
  1370. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/mpk/pkru.rs +0 -0
  1371. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/send_sync_ptr.rs +0 -0
  1372. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/store_box.rs +0 -0
  1373. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/sys/custom/capi.rs +0 -0
  1374. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/sys/custom/traphandlers.rs +0 -0
  1375. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/sys/miri/mod.rs +0 -0
  1376. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/sys/miri/traphandlers.rs +0 -0
  1377. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/sys/miri/vm.rs +0 -0
  1378. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/sys/mod.rs +0 -0
  1379. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/sys/unix/machports.rs +0 -0
  1380. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/sys/unix/macos_traphandlers.rs +0 -0
  1381. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/sys/unix/mod.rs +0 -0
  1382. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/sys/unix/vm.rs +0 -0
  1383. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/sys/windows/mod.rs +0 -0
  1384. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/sys/windows/traphandlers.rs +0 -0
  1385. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/sys/windows/vm.rs +0 -0
  1386. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/threads/mod.rs +0 -0
  1387. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/threads/parking_spot.rs +0 -0
  1388. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/traphandlers/backtrace.rs +0 -0
  1389. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/traphandlers/coredump_disabled.rs +0 -0
  1390. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/vm/traphandlers/coredump_enabled.rs +0 -0
  1391. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/runtime/windows.rs +0 -0
  1392. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/sync_nostd.rs +0 -0
  1393. /data/ext/cargo-vendor/{wasmtime-22.0.0 → wasmtime-23.0.2}/src/sync_std.rs +0 -0
  1394. /data/ext/cargo-vendor/{wasmtime-asm-macros-22.0.0 → wasmtime-asm-macros-23.0.2}/src/lib.rs +0 -0
  1395. /data/ext/cargo-vendor/{wasmtime-cache-22.0.0 → wasmtime-cache-23.0.2}/LICENSE +0 -0
  1396. /data/ext/cargo-vendor/{wasmtime-cache-22.0.0 → wasmtime-cache-23.0.2}/build.rs +0 -0
  1397. /data/ext/cargo-vendor/{wasmtime-cache-22.0.0 → wasmtime-cache-23.0.2}/src/config/tests.rs +0 -0
  1398. /data/ext/cargo-vendor/{wasmtime-cache-22.0.0 → wasmtime-cache-23.0.2}/src/config.rs +0 -0
  1399. /data/ext/cargo-vendor/{wasmtime-cache-22.0.0 → wasmtime-cache-23.0.2}/src/lib.rs +0 -0
  1400. /data/ext/cargo-vendor/{wasmtime-cache-22.0.0 → wasmtime-cache-23.0.2}/src/tests.rs +0 -0
  1401. /data/ext/cargo-vendor/{wasmtime-cache-22.0.0 → wasmtime-cache-23.0.2}/src/worker/tests/system_time_stub.rs +0 -0
  1402. /data/ext/cargo-vendor/{wasmtime-cache-22.0.0 → wasmtime-cache-23.0.2}/src/worker/tests.rs +0 -0
  1403. /data/ext/cargo-vendor/{wasmtime-cache-22.0.0 → wasmtime-cache-23.0.2}/src/worker.rs +0 -0
  1404. /data/ext/cargo-vendor/{wasmtime-cache-22.0.0 → wasmtime-cache-23.0.2}/tests/cache_write_default_config.rs +0 -0
  1405. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/build.rs +0 -0
  1406. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/src/component.rs +0 -0
  1407. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/src/lib.rs +0 -0
  1408. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen/char.wit +0 -0
  1409. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen/conventions.wit +0 -0
  1410. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen/dead-code.wit +0 -0
  1411. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen/direct-import.wit +0 -0
  1412. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen/empty.wit +0 -0
  1413. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen/flags.wit +0 -0
  1414. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen/floats.wit +0 -0
  1415. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen/function-new.wit +0 -0
  1416. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen/integers.wit +0 -0
  1417. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen/lists.wit +0 -0
  1418. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen/many-arguments.wit +0 -0
  1419. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen/multi-return.wit +0 -0
  1420. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen/multiversion/deps/v1/root.wit +0 -0
  1421. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen/multiversion/deps/v2/root.wit +0 -0
  1422. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen/multiversion/root.wit +0 -0
  1423. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen/records.wit +0 -0
  1424. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen/rename.wit +0 -0
  1425. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen/resources-export.wit +0 -0
  1426. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen/resources-import.wit +0 -0
  1427. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen/share-types.wit +0 -0
  1428. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen/simple-functions.wit +0 -0
  1429. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen/simple-lists.wit +0 -0
  1430. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen/simple-wasi.wit +0 -0
  1431. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen/small-anonymous.wit +0 -0
  1432. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen/smoke-default.wit +0 -0
  1433. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen/smoke-export.wit +0 -0
  1434. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen/smoke.wit +0 -0
  1435. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen/strings.wit +0 -0
  1436. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen/unversioned-foo.wit +0 -0
  1437. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen/use-paths.wit +0 -0
  1438. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen/variants.wit +0 -0
  1439. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen/wat.wit +0 -0
  1440. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen/worlds-with-types.wit +0 -0
  1441. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/codegen_no_std.rs +0 -0
  1442. /data/ext/cargo-vendor/{wasmtime-component-macro-22.0.0 → wasmtime-component-macro-23.0.2}/tests/expanded.rs +0 -0
  1443. /data/ext/cargo-vendor/{wasmtime-component-util-22.0.0 → wasmtime-component-util-23.0.2}/src/lib.rs +0 -0
  1444. /data/ext/cargo-vendor/{wasmtime-cranelift-22.0.0 → wasmtime-cranelift-23.0.2}/LICENSE +0 -0
  1445. /data/ext/cargo-vendor/{wasmtime-cranelift-22.0.0 → wasmtime-cranelift-23.0.2}/SECURITY.md +0 -0
  1446. /data/ext/cargo-vendor/{wasmtime-cranelift-22.0.0 → wasmtime-cranelift-23.0.2}/src/builder.rs +0 -0
  1447. /data/ext/cargo-vendor/{wasmtime-cranelift-22.0.0 → wasmtime-cranelift-23.0.2}/src/compiled_function.rs +0 -0
  1448. /data/ext/cargo-vendor/{wasmtime-cranelift-22.0.0 → wasmtime-cranelift-23.0.2}/src/compiler/component.rs +0 -0
  1449. /data/ext/cargo-vendor/{wasmtime-cranelift-22.0.0 → wasmtime-cranelift-23.0.2}/src/debug/transform/refs.rs +0 -0
  1450. /data/ext/cargo-vendor/{wasmtime-cranelift-22.0.0 → wasmtime-cranelift-23.0.2}/src/gc/disabled.rs +0 -0
  1451. /data/ext/cargo-vendor/{wasmtime-cranelift-22.0.0 → wasmtime-cranelift-23.0.2}/src/gc.rs +0 -0
  1452. /data/ext/cargo-vendor/{wasmtime-cranelift-22.0.0 → wasmtime-cranelift-23.0.2}/src/isa_builder.rs +0 -0
  1453. /data/ext/cargo-vendor/{wasmtime-cranelift-22.0.0 → wasmtime-cranelift-23.0.2}/src/obj.rs +0 -0
  1454. /data/ext/cargo-vendor/{wasmtime-environ-22.0.0 → wasmtime-environ-23.0.2}/LICENSE +0 -0
  1455. /data/ext/cargo-vendor/{wasmtime-environ-22.0.0 → wasmtime-environ-23.0.2}/examples/factc.rs +0 -0
  1456. /data/ext/cargo-vendor/{wasmtime-environ-22.0.0 → wasmtime-environ-23.0.2}/src/address_map.rs +0 -0
  1457. /data/ext/cargo-vendor/{wasmtime-environ-22.0.0 → wasmtime-environ-23.0.2}/src/builtin.rs +0 -0
  1458. /data/ext/cargo-vendor/{wasmtime-environ-22.0.0 → wasmtime-environ-23.0.2}/src/compile/address_map.rs +0 -0
  1459. /data/ext/cargo-vendor/{wasmtime-environ-22.0.0 → wasmtime-environ-23.0.2}/src/compile/module_artifacts.rs +0 -0
  1460. /data/ext/cargo-vendor/{wasmtime-environ-22.0.0 → wasmtime-environ-23.0.2}/src/compile/module_types.rs +0 -0
  1461. /data/ext/cargo-vendor/{wasmtime-environ-22.0.0 → wasmtime-environ-23.0.2}/src/compile/trap_encoding.rs +0 -0
  1462. /data/ext/cargo-vendor/{wasmtime-environ-22.0.0 → wasmtime-environ-23.0.2}/src/component/artifacts.rs +0 -0
  1463. /data/ext/cargo-vendor/{wasmtime-environ-22.0.0 → wasmtime-environ-23.0.2}/src/component/compiler.rs +0 -0
  1464. /data/ext/cargo-vendor/{wasmtime-environ-22.0.0 → wasmtime-environ-23.0.2}/src/component/translate/adapt.rs +0 -0
  1465. /data/ext/cargo-vendor/{wasmtime-environ-22.0.0 → wasmtime-environ-23.0.2}/src/component/types_builder/resources.rs +0 -0
  1466. /data/ext/cargo-vendor/{wasmtime-environ-22.0.0 → wasmtime-environ-23.0.2}/src/component/vmcomponent_offsets.rs +0 -0
  1467. /data/ext/cargo-vendor/{wasmtime-environ-22.0.0 → wasmtime-environ-23.0.2}/src/demangling.rs +0 -0
  1468. /data/ext/cargo-vendor/{wasmtime-environ-22.0.0 → wasmtime-environ-23.0.2}/src/fact/core_types.rs +0 -0
  1469. /data/ext/cargo-vendor/{wasmtime-environ-22.0.0 → wasmtime-environ-23.0.2}/src/fact/signature.rs +0 -0
  1470. /data/ext/cargo-vendor/{wasmtime-environ-22.0.0 → wasmtime-environ-23.0.2}/src/fact/trampoline.rs +0 -0
  1471. /data/ext/cargo-vendor/{wasmtime-environ-22.0.0 → wasmtime-environ-23.0.2}/src/fact/transcode.rs +0 -0
  1472. /data/ext/cargo-vendor/{wasmtime-environ-22.0.0 → wasmtime-environ-23.0.2}/src/fact/traps.rs +0 -0
  1473. /data/ext/cargo-vendor/{wasmtime-environ-22.0.0 → wasmtime-environ-23.0.2}/src/fact.rs +0 -0
  1474. /data/ext/cargo-vendor/{wasmtime-environ-22.0.0 → wasmtime-environ-23.0.2}/src/gc.rs +0 -0
  1475. /data/ext/cargo-vendor/{wasmtime-environ-22.0.0 → wasmtime-environ-23.0.2}/src/module_artifacts.rs +0 -0
  1476. /data/ext/cargo-vendor/{wasmtime-environ-22.0.0 → wasmtime-environ-23.0.2}/src/module_types.rs +0 -0
  1477. /data/ext/cargo-vendor/{wasmtime-environ-22.0.0 → wasmtime-environ-23.0.2}/src/obj.rs +0 -0
  1478. /data/ext/cargo-vendor/{wasmtime-environ-22.0.0 → wasmtime-environ-23.0.2}/src/ref_bits.rs +0 -0
  1479. /data/ext/cargo-vendor/{wasmtime-environ-22.0.0 → wasmtime-environ-23.0.2}/src/scopevec.rs +0 -0
  1480. /data/ext/cargo-vendor/{wasmtime-environ-22.0.0 → wasmtime-environ-23.0.2}/src/trap_encoding.rs +0 -0
  1481. /data/ext/cargo-vendor/{wasmtime-fiber-22.0.0 → wasmtime-fiber-23.0.2}/LICENSE +0 -0
  1482. /data/ext/cargo-vendor/{wasmtime-fiber-22.0.0 → wasmtime-fiber-23.0.2}/build.rs +0 -0
  1483. /data/ext/cargo-vendor/{wasmtime-fiber-22.0.0 → wasmtime-fiber-23.0.2}/src/lib.rs +0 -0
  1484. /data/ext/cargo-vendor/{wasmtime-fiber-22.0.0 → wasmtime-fiber-23.0.2}/src/unix/aarch64.rs +0 -0
  1485. /data/ext/cargo-vendor/{wasmtime-fiber-22.0.0 → wasmtime-fiber-23.0.2}/src/unix/arm.rs +0 -0
  1486. /data/ext/cargo-vendor/{wasmtime-fiber-22.0.0 → wasmtime-fiber-23.0.2}/src/unix/riscv64.rs +0 -0
  1487. /data/ext/cargo-vendor/{wasmtime-fiber-22.0.0 → wasmtime-fiber-23.0.2}/src/unix/s390x.S +0 -0
  1488. /data/ext/cargo-vendor/{wasmtime-fiber-22.0.0 → wasmtime-fiber-23.0.2}/src/unix/x86.rs +0 -0
  1489. /data/ext/cargo-vendor/{wasmtime-fiber-22.0.0 → wasmtime-fiber-23.0.2}/src/unix/x86_64.rs +0 -0
  1490. /data/ext/cargo-vendor/{wasmtime-fiber-22.0.0 → wasmtime-fiber-23.0.2}/src/unix.rs +0 -0
  1491. /data/ext/cargo-vendor/{wasmtime-fiber-22.0.0 → wasmtime-fiber-23.0.2}/src/windows.c +0 -0
  1492. /data/ext/cargo-vendor/{wasmtime-fiber-22.0.0 → wasmtime-fiber-23.0.2}/src/windows.rs +0 -0
  1493. /data/ext/cargo-vendor/{wasmtime-jit-debug-22.0.0 → wasmtime-jit-debug-23.0.2}/README.md +0 -0
  1494. /data/ext/cargo-vendor/{wasmtime-jit-debug-22.0.0 → wasmtime-jit-debug-23.0.2}/src/gdb_jit_int.rs +0 -0
  1495. /data/ext/cargo-vendor/{wasmtime-jit-debug-22.0.0 → wasmtime-jit-debug-23.0.2}/src/lib.rs +0 -0
  1496. /data/ext/cargo-vendor/{wasmtime-jit-debug-22.0.0 → wasmtime-jit-debug-23.0.2}/src/perf_jitdump.rs +0 -0
  1497. /data/ext/cargo-vendor/{wasmtime-jit-icache-coherence-22.0.0 → wasmtime-jit-icache-coherence-23.0.2}/src/lib.rs +0 -0
  1498. /data/ext/cargo-vendor/{wasmtime-jit-icache-coherence-22.0.0 → wasmtime-jit-icache-coherence-23.0.2}/src/libc.rs +0 -0
  1499. /data/ext/cargo-vendor/{wasmtime-jit-icache-coherence-22.0.0 → wasmtime-jit-icache-coherence-23.0.2}/src/miri.rs +0 -0
  1500. /data/ext/cargo-vendor/{wasmtime-jit-icache-coherence-22.0.0 → wasmtime-jit-icache-coherence-23.0.2}/src/win.rs +0 -0
  1501. /data/ext/cargo-vendor/{wasmtime-slab-22.0.0 → wasmtime-slab-23.0.2}/src/lib.rs +0 -0
  1502. /data/ext/cargo-vendor/{wasmtime-types-22.0.0 → wasmtime-types-23.0.2}/LICENSE +0 -0
  1503. /data/ext/cargo-vendor/{wasmtime-types-22.0.0 → wasmtime-types-23.0.2}/src/error.rs +0 -0
  1504. /data/ext/cargo-vendor/{wasmtime-versioned-export-macros-22.0.0 → wasmtime-versioned-export-macros-23.0.2}/src/lib.rs +0 -0
  1505. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/LICENSE +0 -0
  1506. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/README.md +0 -0
  1507. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/src/clocks/host.rs +0 -0
  1508. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/src/clocks.rs +0 -0
  1509. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/src/ctx.rs +0 -0
  1510. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/src/error.rs +0 -0
  1511. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/src/host/clocks.rs +0 -0
  1512. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/src/host/env.rs +0 -0
  1513. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/src/host/exit.rs +0 -0
  1514. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/src/host/filesystem/sync.rs +0 -0
  1515. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/src/host/instance_network.rs +0 -0
  1516. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/src/host/mod.rs +0 -0
  1517. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/src/host/network.rs +0 -0
  1518. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/src/host/random.rs +0 -0
  1519. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/src/host/tcp.rs +0 -0
  1520. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/src/host/tcp_create_socket.rs +0 -0
  1521. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/src/host/udp.rs +0 -0
  1522. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/src/host/udp_create_socket.rs +0 -0
  1523. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/src/ip_name_lookup.rs +0 -0
  1524. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/src/network.rs +0 -0
  1525. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/src/pipe.rs +0 -0
  1526. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/src/poll.rs +0 -0
  1527. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/src/preview0.rs +0 -0
  1528. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/src/random.rs +0 -0
  1529. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/src/runtime.rs +0 -0
  1530. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/src/stdio/worker_thread_stdin.rs +0 -0
  1531. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/src/stream.rs +0 -0
  1532. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/src/tcp.rs +0 -0
  1533. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/src/udp.rs +0 -0
  1534. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/src/write_stream.rs +0 -0
  1535. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/tests/all/main.rs +0 -0
  1536. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/tests/all/preview1.rs +0 -0
  1537. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/tests/process_stdin.rs +0 -0
  1538. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/command-extended.wit +0 -0
  1539. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/deps/cli/command.wit +0 -0
  1540. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/deps/cli/environment.wit +0 -0
  1541. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/deps/cli/exit.wit +0 -0
  1542. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/deps/cli/imports.wit +0 -0
  1543. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/deps/cli/run.wit +0 -0
  1544. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/deps/cli/stdio.wit +0 -0
  1545. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/deps/cli/terminal.wit +0 -0
  1546. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/deps/clocks/monotonic-clock.wit +0 -0
  1547. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/deps/clocks/wall-clock.wit +0 -0
  1548. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/deps/clocks/world.wit +0 -0
  1549. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/deps/filesystem/preopens.wit +0 -0
  1550. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/deps/filesystem/types.wit +0 -0
  1551. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/deps/filesystem/world.wit +0 -0
  1552. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/deps/http/handler.wit +0 -0
  1553. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/deps/http/proxy.wit +0 -0
  1554. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/deps/http/types.wit +0 -0
  1555. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/deps/io/error.wit +0 -0
  1556. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/deps/io/poll.wit +0 -0
  1557. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/deps/io/streams.wit +0 -0
  1558. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/deps/io/world.wit +0 -0
  1559. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/deps/random/insecure-seed.wit +0 -0
  1560. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/deps/random/insecure.wit +0 -0
  1561. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/deps/random/random.wit +0 -0
  1562. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/deps/random/world.wit +0 -0
  1563. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/deps/sockets/instance-network.wit +0 -0
  1564. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/deps/sockets/ip-name-lookup.wit +0 -0
  1565. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/deps/sockets/network.wit +0 -0
  1566. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/deps/sockets/tcp-create-socket.wit +0 -0
  1567. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/deps/sockets/tcp.wit +0 -0
  1568. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/deps/sockets/udp-create-socket.wit +0 -0
  1569. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/deps/sockets/udp.wit +0 -0
  1570. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/deps/sockets/world.wit +0 -0
  1571. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/wit/test.wit +0 -0
  1572. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/witx/preview0/typenames.witx +0 -0
  1573. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/witx/preview0/wasi_unstable.witx +0 -0
  1574. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/witx/preview1/typenames.witx +0 -0
  1575. /data/ext/cargo-vendor/{wasmtime-wasi-22.0.0 → wasmtime-wasi-23.0.2}/witx/preview1/wasi_snapshot_preview1.witx +0 -0
  1576. /data/ext/cargo-vendor/{wasmtime-winch-22.0.0 → wasmtime-winch-23.0.2}/LICENSE +0 -0
  1577. /data/ext/cargo-vendor/{wasmtime-winch-22.0.0 → wasmtime-winch-23.0.2}/src/builder.rs +0 -0
  1578. /data/ext/cargo-vendor/{wasmtime-winch-22.0.0 → wasmtime-winch-23.0.2}/src/lib.rs +0 -0
  1579. /data/ext/cargo-vendor/{wasmtime-wit-bindgen-22.0.0 → wasmtime-wit-bindgen-23.0.2}/src/rust.rs +0 -0
  1580. /data/ext/cargo-vendor/{wasmtime-wit-bindgen-22.0.0 → wasmtime-wit-bindgen-23.0.2}/src/source.rs +0 -0
  1581. /data/ext/cargo-vendor/{wasmtime-wit-bindgen-22.0.0 → wasmtime-wit-bindgen-23.0.2}/src/types.rs +0 -0
  1582. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/README.md +0 -0
  1583. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/src/component/alias.rs +0 -0
  1584. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/src/component/custom.rs +0 -0
  1585. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/src/component/export.rs +0 -0
  1586. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/src/component/func.rs +0 -0
  1587. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/src/component/import.rs +0 -0
  1588. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/src/component/instance.rs +0 -0
  1589. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/src/component/item_ref.rs +0 -0
  1590. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/src/component/module.rs +0 -0
  1591. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/src/component/types.rs +0 -0
  1592. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/src/component/wast.rs +0 -0
  1593. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/src/core/custom.rs +0 -0
  1594. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/src/core/export.rs +0 -0
  1595. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/src/core/func.rs +0 -0
  1596. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/src/core/global.rs +0 -0
  1597. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/src/core/import.rs +0 -0
  1598. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/src/core/resolve/mod.rs +0 -0
  1599. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/src/core/tag.rs +0 -0
  1600. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/src/core/wast.rs +0 -0
  1601. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/src/encode.rs +0 -0
  1602. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/src/error.rs +0 -0
  1603. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/src/gensym.rs +0 -0
  1604. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/src/lexer.rs +0 -0
  1605. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/src/names.rs +0 -0
  1606. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/src/token.rs +0 -0
  1607. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/src/wast.rs +0 -0
  1608. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/annotations.rs +0 -0
  1609. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/comments.rs +0 -0
  1610. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/bad-core-func-alias.wat +0 -0
  1611. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/bad-core-func-alias.wat.err +0 -0
  1612. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/bad-func-alias.wat +0 -0
  1613. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/bad-func-alias.wat.err +0 -0
  1614. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/bad-index.wat +0 -0
  1615. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/bad-index.wat.err +0 -0
  1616. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/bad-name.wat +0 -0
  1617. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/bad-name.wat.err +0 -0
  1618. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/bad-name2.wat +0 -0
  1619. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/bad-name2.wat.err +0 -0
  1620. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/bad-name3.wat +0 -0
  1621. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/bad-name3.wat.err +0 -0
  1622. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/block1.wat +0 -0
  1623. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/block1.wat.err +0 -0
  1624. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/block2.wat +0 -0
  1625. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/block2.wat.err +0 -0
  1626. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/block3.wat +0 -0
  1627. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/block3.wat.err +0 -0
  1628. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-block-comment0.wat +0 -0
  1629. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-block-comment0.wat.err +0 -0
  1630. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-block-comment1.wat +0 -0
  1631. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-block-comment1.wat.err +0 -0
  1632. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-block-comment2.wat +0 -0
  1633. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-block-comment2.wat.err +0 -0
  1634. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-block-comment3.wat +0 -0
  1635. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-block-comment3.wat.err +0 -0
  1636. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-block-comment4.wat +0 -0
  1637. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-block-comment4.wat.err +0 -0
  1638. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-block-comment5.wat +0 -0
  1639. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-block-comment5.wat.err +0 -0
  1640. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-block-comment6.wat +0 -0
  1641. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-block-comment6.wat.err +0 -0
  1642. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-block-comment7.wat +0 -0
  1643. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-block-comment7.wat.err +0 -0
  1644. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-block-comment8.wat +0 -0
  1645. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-block-comment8.wat.err +0 -0
  1646. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-line-comment0.wat +0 -0
  1647. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-line-comment0.wat.err +0 -0
  1648. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-line-comment1.wat +0 -0
  1649. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-line-comment1.wat.err +0 -0
  1650. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-line-comment2.wat +0 -0
  1651. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-line-comment2.wat.err +0 -0
  1652. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-line-comment3.wat +0 -0
  1653. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-line-comment3.wat.err +0 -0
  1654. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-line-comment4.wat +0 -0
  1655. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-line-comment4.wat.err +0 -0
  1656. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-line-comment5.wat +0 -0
  1657. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-line-comment5.wat.err +0 -0
  1658. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-line-comment6.wat +0 -0
  1659. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-line-comment6.wat.err +0 -0
  1660. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-line-comment7.wat +0 -0
  1661. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-line-comment7.wat.err +0 -0
  1662. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-line-comment8.wat +0 -0
  1663. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-line-comment8.wat.err +0 -0
  1664. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-string0.wat +0 -0
  1665. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-string0.wat.err +0 -0
  1666. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-string1.wat +0 -0
  1667. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-string1.wat.err +0 -0
  1668. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-string2.wat +0 -0
  1669. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-string2.wat.err +0 -0
  1670. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-string3.wat +0 -0
  1671. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-string3.wat.err +0 -0
  1672. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-string4.wat +0 -0
  1673. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-string4.wat.err +0 -0
  1674. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-string5.wat +0 -0
  1675. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-string5.wat.err +0 -0
  1676. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-string6.wat +0 -0
  1677. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-string6.wat.err +0 -0
  1678. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-string7.wat +0 -0
  1679. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-string7.wat.err +0 -0
  1680. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-string8.wat +0 -0
  1681. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/confusing-string8.wat.err +0 -0
  1682. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/inline1.wat +0 -0
  1683. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/inline1.wat.err +0 -0
  1684. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/newline-in-string.wat +0 -0
  1685. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/newline-in-string.wat.err +0 -0
  1686. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/string1.wat +0 -0
  1687. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/string1.wat.err +0 -0
  1688. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/string10.wat +0 -0
  1689. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/string10.wat.err +0 -0
  1690. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/string11.wat +0 -0
  1691. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/string11.wat.err +0 -0
  1692. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/string12.wat +0 -0
  1693. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/string12.wat.err +0 -0
  1694. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/string13.wat +0 -0
  1695. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/string13.wat.err +0 -0
  1696. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/string14.wat +0 -0
  1697. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/string14.wat.err +0 -0
  1698. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/string15.wat +0 -0
  1699. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/string15.wat.err +0 -0
  1700. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/string16.wat +0 -0
  1701. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/string16.wat.err +0 -0
  1702. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/string2.wat +0 -0
  1703. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/string2.wat.err +0 -0
  1704. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/string3.wat +0 -0
  1705. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/string3.wat.err +0 -0
  1706. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/string4.wat +0 -0
  1707. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/string4.wat.err +0 -0
  1708. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/string5.wat +0 -0
  1709. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/string5.wat.err +0 -0
  1710. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/string6.wat +0 -0
  1711. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/string6.wat.err +0 -0
  1712. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/string7.wat +0 -0
  1713. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/string7.wat.err +0 -0
  1714. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/string8.wat +0 -0
  1715. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/string8.wat.err +0 -0
  1716. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/string9.wat +0 -0
  1717. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/string9.wat.err +0 -0
  1718. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/unbalanced.wat +0 -0
  1719. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail/unbalanced.wat.err +0 -0
  1720. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/parse-fail.rs +0 -0
  1721. /data/ext/cargo-vendor/{wast-209.0.1 → wast-215.0.0}/tests/recursive.rs +0 -0
  1722. /data/ext/cargo-vendor/{wat-1.209.1 → wat-1.215.0}/README.md +0 -0
  1723. /data/ext/cargo-vendor/{wast-209.0.1 → wiggle-23.0.2}/LICENSE +0 -0
  1724. /data/ext/cargo-vendor/{wiggle-22.0.0 → wiggle-23.0.2}/README.md +0 -0
  1725. /data/ext/cargo-vendor/{wiggle-22.0.0 → wiggle-23.0.2}/src/error.rs +0 -0
  1726. /data/ext/cargo-vendor/{wiggle-22.0.0 → wiggle-23.0.2}/src/guest_type.rs +0 -0
  1727. /data/ext/cargo-vendor/{wiggle-22.0.0 → wiggle-23.0.2}/src/lib.rs +0 -0
  1728. /data/ext/cargo-vendor/{wiggle-22.0.0 → wiggle-23.0.2}/src/region.rs +0 -0
  1729. /data/ext/cargo-vendor/{wat-1.209.1 → wiggle-generate-23.0.2}/LICENSE +0 -0
  1730. /data/ext/cargo-vendor/{wiggle-generate-22.0.0 → wiggle-generate-23.0.2}/README.md +0 -0
  1731. /data/ext/cargo-vendor/{wiggle-generate-22.0.0 → wiggle-generate-23.0.2}/src/codegen_settings.rs +0 -0
  1732. /data/ext/cargo-vendor/{wiggle-generate-22.0.0 → wiggle-generate-23.0.2}/src/config.rs +0 -0
  1733. /data/ext/cargo-vendor/{wiggle-generate-22.0.0 → wiggle-generate-23.0.2}/src/funcs.rs +0 -0
  1734. /data/ext/cargo-vendor/{wiggle-generate-22.0.0 → wiggle-generate-23.0.2}/src/lib.rs +0 -0
  1735. /data/ext/cargo-vendor/{wiggle-generate-22.0.0 → wiggle-generate-23.0.2}/src/lifetimes.rs +0 -0
  1736. /data/ext/cargo-vendor/{wiggle-generate-22.0.0 → wiggle-generate-23.0.2}/src/module_trait.rs +0 -0
  1737. /data/ext/cargo-vendor/{wiggle-generate-22.0.0 → wiggle-generate-23.0.2}/src/names.rs +0 -0
  1738. /data/ext/cargo-vendor/{wiggle-generate-22.0.0 → wiggle-generate-23.0.2}/src/types/error.rs +0 -0
  1739. /data/ext/cargo-vendor/{wiggle-generate-22.0.0 → wiggle-generate-23.0.2}/src/types/flags.rs +0 -0
  1740. /data/ext/cargo-vendor/{wiggle-generate-22.0.0 → wiggle-generate-23.0.2}/src/types/handle.rs +0 -0
  1741. /data/ext/cargo-vendor/{wiggle-generate-22.0.0 → wiggle-generate-23.0.2}/src/types/mod.rs +0 -0
  1742. /data/ext/cargo-vendor/{wiggle-generate-22.0.0 → wiggle-generate-23.0.2}/src/types/record.rs +0 -0
  1743. /data/ext/cargo-vendor/{wiggle-generate-22.0.0 → wiggle-generate-23.0.2}/src/types/variant.rs +0 -0
  1744. /data/ext/cargo-vendor/{wiggle-generate-22.0.0 → wiggle-generate-23.0.2}/src/wasmtime.rs +0 -0
  1745. /data/ext/cargo-vendor/{wiggle-22.0.0 → wiggle-macro-23.0.2}/LICENSE +0 -0
  1746. /data/ext/cargo-vendor/{wiggle-macro-22.0.0 → wiggle-macro-23.0.2}/build.rs +0 -0
  1747. /data/ext/cargo-vendor/{wiggle-macro-22.0.0 → wiggle-macro-23.0.2}/src/lib.rs +0 -0
  1748. /data/ext/cargo-vendor/{winch-codegen-0.20.0 → winch-codegen-0.21.2}/LICENSE +0 -0
  1749. /data/ext/cargo-vendor/{winch-codegen-0.20.0 → winch-codegen-0.21.2}/build.rs +0 -0
  1750. /data/ext/cargo-vendor/{winch-codegen-0.20.0 → winch-codegen-0.21.2}/src/abi/local.rs +0 -0
  1751. /data/ext/cargo-vendor/{winch-codegen-0.20.0 → winch-codegen-0.21.2}/src/abi/mod.rs +0 -0
  1752. /data/ext/cargo-vendor/{winch-codegen-0.20.0 → winch-codegen-0.21.2}/src/codegen/bounds.rs +0 -0
  1753. /data/ext/cargo-vendor/{winch-codegen-0.20.0 → winch-codegen-0.21.2}/src/codegen/builtin.rs +0 -0
  1754. /data/ext/cargo-vendor/{winch-codegen-0.20.0 → winch-codegen-0.21.2}/src/codegen/call.rs +0 -0
  1755. /data/ext/cargo-vendor/{winch-codegen-0.20.0 → winch-codegen-0.21.2}/src/codegen/context.rs +0 -0
  1756. /data/ext/cargo-vendor/{winch-codegen-0.20.0 → winch-codegen-0.21.2}/src/codegen/control.rs +0 -0
  1757. /data/ext/cargo-vendor/{winch-codegen-0.20.0 → winch-codegen-0.21.2}/src/frame/mod.rs +0 -0
  1758. /data/ext/cargo-vendor/{winch-codegen-0.20.0 → winch-codegen-0.21.2}/src/isa/aarch64/abi.rs +0 -0
  1759. /data/ext/cargo-vendor/{winch-codegen-0.20.0 → winch-codegen-0.21.2}/src/isa/aarch64/address.rs +0 -0
  1760. /data/ext/cargo-vendor/{winch-codegen-0.20.0 → winch-codegen-0.21.2}/src/isa/aarch64/asm.rs +0 -0
  1761. /data/ext/cargo-vendor/{winch-codegen-0.20.0 → winch-codegen-0.21.2}/src/isa/aarch64/masm.rs +0 -0
  1762. /data/ext/cargo-vendor/{winch-codegen-0.20.0 → winch-codegen-0.21.2}/src/isa/aarch64/mod.rs +0 -0
  1763. /data/ext/cargo-vendor/{winch-codegen-0.20.0 → winch-codegen-0.21.2}/src/isa/aarch64/regs.rs +0 -0
  1764. /data/ext/cargo-vendor/{winch-codegen-0.20.0 → winch-codegen-0.21.2}/src/isa/mod.rs +0 -0
  1765. /data/ext/cargo-vendor/{winch-codegen-0.20.0 → winch-codegen-0.21.2}/src/isa/reg.rs +0 -0
  1766. /data/ext/cargo-vendor/{winch-codegen-0.20.0 → winch-codegen-0.21.2}/src/isa/x64/abi.rs +0 -0
  1767. /data/ext/cargo-vendor/{winch-codegen-0.20.0 → winch-codegen-0.21.2}/src/isa/x64/address.rs +0 -0
  1768. /data/ext/cargo-vendor/{winch-codegen-0.20.0 → winch-codegen-0.21.2}/src/isa/x64/asm.rs +0 -0
  1769. /data/ext/cargo-vendor/{winch-codegen-0.20.0 → winch-codegen-0.21.2}/src/isa/x64/masm.rs +0 -0
  1770. /data/ext/cargo-vendor/{winch-codegen-0.20.0 → winch-codegen-0.21.2}/src/isa/x64/mod.rs +0 -0
  1771. /data/ext/cargo-vendor/{winch-codegen-0.20.0 → winch-codegen-0.21.2}/src/isa/x64/regs.rs +0 -0
  1772. /data/ext/cargo-vendor/{winch-codegen-0.20.0 → winch-codegen-0.21.2}/src/lib.rs +0 -0
  1773. /data/ext/cargo-vendor/{winch-codegen-0.20.0 → winch-codegen-0.21.2}/src/masm.rs +0 -0
  1774. /data/ext/cargo-vendor/{winch-codegen-0.20.0 → winch-codegen-0.21.2}/src/regalloc.rs +0 -0
  1775. /data/ext/cargo-vendor/{winch-codegen-0.20.0 → winch-codegen-0.21.2}/src/regset.rs +0 -0
  1776. /data/ext/cargo-vendor/{winch-codegen-0.20.0 → winch-codegen-0.21.2}/src/stack.rs +0 -0
  1777. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/README.md +0 -0
  1778. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/src/abi.rs +0 -0
  1779. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/src/ast/toposort.rs +0 -0
  1780. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/src/live.rs +0 -0
  1781. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/src/metadata.rs +0 -0
  1782. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/src/serde_.rs +0 -0
  1783. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/src/sizealign.rs +0 -0
  1784. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/all.rs +0 -0
  1785. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/comments.wit +0 -0
  1786. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/comments.wit.json +0 -0
  1787. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/complex-include/deps/bar/root.wit +0 -0
  1788. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/complex-include/deps/baz/root.wit +0 -0
  1789. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/complex-include/root.wit +0 -0
  1790. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/complex-include.wit.json +0 -0
  1791. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/cross-package-resource/deps/foo/foo.wit +0 -0
  1792. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/cross-package-resource/foo.wit +0 -0
  1793. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/cross-package-resource.wit.json +0 -0
  1794. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/diamond1/deps/dep1/types.wit +0 -0
  1795. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/diamond1/deps/dep2/types.wit +0 -0
  1796. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/diamond1/join.wit +0 -0
  1797. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/diamond1.wit.json +0 -0
  1798. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/disambiguate-diamond/shared1.wit +0 -0
  1799. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/disambiguate-diamond/shared2.wit +0 -0
  1800. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/disambiguate-diamond/world.wit +0 -0
  1801. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/disambiguate-diamond.wit.json +0 -0
  1802. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/empty.wit +0 -0
  1803. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/empty.wit.json +0 -0
  1804. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/feature-gates.wit +0 -0
  1805. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/foreign-deps/deps/another-pkg/other-doc.wit +0 -0
  1806. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/foreign-deps/deps/corp/saas.wit +0 -0
  1807. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/foreign-deps/deps/different-pkg/the-doc.wit +0 -0
  1808. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/foreign-deps/deps/foreign-pkg/the-doc.wit +0 -0
  1809. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/foreign-deps/deps/some-pkg/some-doc.wit +0 -0
  1810. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/foreign-deps/deps/wasi/clocks.wit +0 -0
  1811. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/foreign-deps/deps/wasi/filesystem.wit +0 -0
  1812. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/foreign-deps/root.wit +0 -0
  1813. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/foreign-deps-union/deps/another-pkg/other-doc.wit +0 -0
  1814. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/foreign-deps-union/deps/corp/saas.wit +0 -0
  1815. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/foreign-deps-union/deps/different-pkg/the-doc.wit +0 -0
  1816. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/foreign-deps-union/deps/foreign-pkg/the-doc.wit +0 -0
  1817. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/foreign-deps-union/deps/some-pkg/some-doc.wit +0 -0
  1818. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/foreign-deps-union/deps/wasi/clocks.wit +0 -0
  1819. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/foreign-deps-union/deps/wasi/filesystem.wit +0 -0
  1820. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/foreign-deps-union/deps/wasi/wasi.wit +0 -0
  1821. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/foreign-deps-union/root.wit +0 -0
  1822. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/foreign-deps-union.wit.json +0 -0
  1823. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/foreign-deps.wit.json +0 -0
  1824. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/functions.wit +0 -0
  1825. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/functions.wit.json +0 -0
  1826. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/ignore-files-deps/deps/bar/types.wit +0 -0
  1827. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/ignore-files-deps/deps/ignore-me.txt +0 -0
  1828. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/ignore-files-deps/world.wit +0 -0
  1829. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/ignore-files-deps.wit.json +0 -0
  1830. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/import-export-overlap1.wit +0 -0
  1831. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/import-export-overlap1.wit.json +0 -0
  1832. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/import-export-overlap2.wit +0 -0
  1833. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/import-export-overlap2.wit.json +0 -0
  1834. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/include-reps.wit +0 -0
  1835. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/include-reps.wit.json +0 -0
  1836. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/kebab-name-include-with.wit +0 -0
  1837. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/kebab-name-include-with.wit.json +0 -0
  1838. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/kinds-of-deps/a.wit +0 -0
  1839. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/kinds-of-deps/deps/b/root.wit +0 -0
  1840. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/kinds-of-deps/deps/c.wit +0 -0
  1841. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/kinds-of-deps/deps/d.wat +0 -0
  1842. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/kinds-of-deps/deps/e.wasm +0 -0
  1843. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/kinds-of-deps.wit.json +0 -0
  1844. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/many-names/a.wit +0 -0
  1845. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/many-names/b.wit +0 -0
  1846. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/many-names.wit.json +0 -0
  1847. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/multi-file/bar.wit +0 -0
  1848. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/multi-file/cycle-a.wit +0 -0
  1849. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/multi-file/cycle-b.wit +0 -0
  1850. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/multi-file/foo.wit +0 -0
  1851. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/multi-file.wit.json +0 -0
  1852. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/name-both-resource-and-type/deps/dep/foo.wit +0 -0
  1853. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/name-both-resource-and-type/foo.wit +0 -0
  1854. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/name-both-resource-and-type.wit.json +0 -0
  1855. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/package-syntax1.wit +0 -0
  1856. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/package-syntax1.wit.json +0 -0
  1857. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/package-syntax3.wit +0 -0
  1858. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/package-syntax3.wit.json +0 -0
  1859. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/package-syntax4.wit +0 -0
  1860. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/package-syntax4.wit.json +0 -0
  1861. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/alias-no-type.wit +0 -0
  1862. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/alias-no-type.wit.result +0 -0
  1863. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/async.wit.result +0 -0
  1864. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/async1.wit.result +0 -0
  1865. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-function.wit +0 -0
  1866. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-function.wit.result +0 -0
  1867. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-function2.wit +0 -0
  1868. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-function2.wit.result +0 -0
  1869. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-gate1.wit +0 -0
  1870. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-gate1.wit.result +0 -0
  1871. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-gate2.wit +0 -0
  1872. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-gate2.wit.result +0 -0
  1873. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-gate3.wit +0 -0
  1874. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-gate3.wit.result +0 -0
  1875. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-gate4.wit +0 -0
  1876. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-gate4.wit.result +0 -0
  1877. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-gate5.wit +0 -0
  1878. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-gate5.wit.result +0 -0
  1879. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-include1.wit +0 -0
  1880. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-include1.wit.result +0 -0
  1881. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-include2.wit +0 -0
  1882. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-include2.wit.result +0 -0
  1883. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-include3.wit +0 -0
  1884. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-include3.wit.result +0 -0
  1885. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-list.wit +0 -0
  1886. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-list.wit.result +0 -0
  1887. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-pkg1/root.wit +0 -0
  1888. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-pkg1.wit.result +0 -0
  1889. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-pkg2/deps/bar/empty.wit +0 -0
  1890. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-pkg2/root.wit +0 -0
  1891. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-pkg2.wit.result +0 -0
  1892. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-pkg3/deps/bar/baz.wit +0 -0
  1893. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-pkg3/root.wit +0 -0
  1894. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-pkg3.wit.result +0 -0
  1895. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-pkg4/deps/bar/baz.wit +0 -0
  1896. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-pkg4/root.wit +0 -0
  1897. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-pkg4.wit.result +0 -0
  1898. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-pkg5/deps/bar/baz.wit +0 -0
  1899. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-pkg5/root.wit +0 -0
  1900. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-pkg5.wit.result +0 -0
  1901. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-pkg6/deps/bar/baz.wit +0 -0
  1902. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-pkg6/root.wit +0 -0
  1903. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-pkg6.wit.result +0 -0
  1904. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-resource1.wit +0 -0
  1905. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-resource1.wit.result +0 -0
  1906. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-resource10.wit +0 -0
  1907. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-resource10.wit.result +0 -0
  1908. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-resource11.wit +0 -0
  1909. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-resource11.wit.result +0 -0
  1910. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-resource12.wit +0 -0
  1911. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-resource12.wit.result +0 -0
  1912. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-resource13.wit +0 -0
  1913. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-resource13.wit.result +0 -0
  1914. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-resource14.wit +0 -0
  1915. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-resource14.wit.result +0 -0
  1916. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-resource15/deps/foo/foo.wit +0 -0
  1917. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-resource15/foo.wit +0 -0
  1918. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-resource15.wit.result +0 -0
  1919. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-resource2.wit +0 -0
  1920. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-resource2.wit.result +0 -0
  1921. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-resource3.wit +0 -0
  1922. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-resource3.wit.result +0 -0
  1923. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-resource4.wit +0 -0
  1924. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-resource4.wit.result +0 -0
  1925. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-resource5.wit +0 -0
  1926. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-resource5.wit.result +0 -0
  1927. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-resource6.wit +0 -0
  1928. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-resource6.wit.result +0 -0
  1929. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-resource7.wit +0 -0
  1930. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-resource7.wit.result +0 -0
  1931. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-resource8.wit +0 -0
  1932. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-resource8.wit.result +0 -0
  1933. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-resource9.wit +0 -0
  1934. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-resource9.wit.result +0 -0
  1935. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-since1.wit +0 -0
  1936. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-since1.wit.result +0 -0
  1937. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-since3.wit +0 -0
  1938. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-since3.wit.result +0 -0
  1939. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-world-type1.wit +0 -0
  1940. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/bad-world-type1.wit.result +0 -0
  1941. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/conflicting-package/a.wit +0 -0
  1942. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/conflicting-package/b.wit +0 -0
  1943. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/conflicting-package.wit.result +0 -0
  1944. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/cycle.wit +0 -0
  1945. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/cycle.wit.result +0 -0
  1946. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/cycle2.wit +0 -0
  1947. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/cycle2.wit.result +0 -0
  1948. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/cycle3.wit +0 -0
  1949. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/cycle3.wit.result +0 -0
  1950. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/cycle4.wit +0 -0
  1951. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/cycle4.wit.result +0 -0
  1952. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/cycle5.wit +0 -0
  1953. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/cycle5.wit.result +0 -0
  1954. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/dangling-type.wit +0 -0
  1955. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/dangling-type.wit.result +0 -0
  1956. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/duplicate-function-params.wit +0 -0
  1957. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/duplicate-function-params.wit.result +0 -0
  1958. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/duplicate-functions.wit +0 -0
  1959. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/duplicate-functions.wit.result +0 -0
  1960. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/duplicate-interface.wit +0 -0
  1961. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/duplicate-interface.wit.result +0 -0
  1962. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/duplicate-interface2/foo.wit +0 -0
  1963. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/duplicate-interface2/foo2.wit +0 -0
  1964. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/duplicate-interface2.wit.result +0 -0
  1965. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/duplicate-type.wit +0 -0
  1966. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/duplicate-type.wit.result +0 -0
  1967. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/empty-enum.wit +0 -0
  1968. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/empty-enum.wit.result +0 -0
  1969. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/empty-variant1.wit +0 -0
  1970. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/empty-variant1.wit.result +0 -0
  1971. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/export-twice.wit +0 -0
  1972. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/export-twice.wit.result +0 -0
  1973. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/import-and-export1.wit +0 -0
  1974. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/import-and-export1.wit.result +0 -0
  1975. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/import-and-export2.wit +0 -0
  1976. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/import-and-export2.wit.result +0 -0
  1977. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/import-and-export3.wit +0 -0
  1978. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/import-and-export3.wit.result +0 -0
  1979. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/import-and-export4.wit +0 -0
  1980. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/import-and-export4.wit.result +0 -0
  1981. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/import-and-export5.wit +0 -0
  1982. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/import-and-export5.wit.result +0 -0
  1983. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/import-twice.wit +0 -0
  1984. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/import-twice.wit.result +0 -0
  1985. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/include-cycle.wit +0 -0
  1986. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/include-cycle.wit.result +0 -0
  1987. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/include-foreign/deps/bar/empty.wit +0 -0
  1988. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/include-foreign/root.wit +0 -0
  1989. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/include-foreign.wit.result +0 -0
  1990. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/include-with-id.wit +0 -0
  1991. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/include-with-id.wit.result +0 -0
  1992. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/include-with-on-id.wit +0 -0
  1993. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/include-with-on-id.wit.result +0 -0
  1994. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/invalid-toplevel.wit +0 -0
  1995. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/invalid-toplevel.wit.result +0 -0
  1996. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/invalid-type-reference.wit +0 -0
  1997. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/invalid-type-reference.wit.result +0 -0
  1998. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/invalid-type-reference2.wit +0 -0
  1999. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/invalid-type-reference2.wit.result +0 -0
  2000. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/kebab-name-include-not-found.wit +0 -0
  2001. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/kebab-name-include-not-found.wit.result +0 -0
  2002. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/kebab-name-include.wit +0 -0
  2003. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/kebab-name-include.wit.result +0 -0
  2004. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/keyword.wit +0 -0
  2005. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/keyword.wit.result +0 -0
  2006. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/missing-package.wit +0 -0
  2007. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/missing-package.wit.result +0 -0
  2008. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/multiple-package-docs/a.wit +0 -0
  2009. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/multiple-package-docs/b.wit +0 -0
  2010. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/multiple-package-docs.wit.result +0 -0
  2011. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/no-access-to-sibling-use/bar.wit +0 -0
  2012. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/no-access-to-sibling-use/foo.wit +0 -0
  2013. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/no-access-to-sibling-use.wit.result +0 -0
  2014. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/non-existance-world-include/deps/bar/baz.wit +0 -0
  2015. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/non-existance-world-include/root.wit +0 -0
  2016. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/non-existance-world-include.wit.result +0 -0
  2017. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/pkg-cycle/deps/a1/root.wit +0 -0
  2018. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/pkg-cycle/root.wit +0 -0
  2019. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/pkg-cycle.wit.result +0 -0
  2020. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/pkg-cycle2/deps/a1/root.wit +0 -0
  2021. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/pkg-cycle2/deps/a2/root.wit +0 -0
  2022. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/pkg-cycle2/root.wit +0 -0
  2023. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/pkg-cycle2.wit.result +0 -0
  2024. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/resources-multiple-returns-borrow.wit +0 -0
  2025. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/resources-multiple-returns-borrow.wit.result +0 -0
  2026. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/resources-return-borrow.wit +0 -0
  2027. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/resources-return-borrow.wit.result +0 -0
  2028. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/return-borrow1.wit +0 -0
  2029. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/return-borrow1.wit.result +0 -0
  2030. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/return-borrow2.wit +0 -0
  2031. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/return-borrow2.wit.result +0 -0
  2032. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/return-borrow3.wit +0 -0
  2033. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/return-borrow3.wit.result +0 -0
  2034. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/return-borrow4.wit +0 -0
  2035. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/return-borrow4.wit.result +0 -0
  2036. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/return-borrow5.wit +0 -0
  2037. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/return-borrow5.wit.result +0 -0
  2038. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/return-borrow6.wit +0 -0
  2039. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/return-borrow6.wit.result +0 -0
  2040. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/return-borrow7.wit +0 -0
  2041. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/return-borrow7.wit.result +0 -0
  2042. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/return-borrow8/deps/baz.wit +0 -0
  2043. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/return-borrow8/foo.wit +0 -0
  2044. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/return-borrow8.wit.result +0 -0
  2045. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/type-and-resource-same-name/deps/dep/foo.wit +0 -0
  2046. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/type-and-resource-same-name/foo.wit +0 -0
  2047. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/type-and-resource-same-name.wit.result +0 -0
  2048. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/undefined-typed.wit +0 -0
  2049. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/undefined-typed.wit.result +0 -0
  2050. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/unknown-interface.wit +0 -0
  2051. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/unknown-interface.wit.result +0 -0
  2052. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/unresolved-interface1.wit +0 -0
  2053. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/unresolved-interface1.wit.result +0 -0
  2054. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/unresolved-interface2.wit +0 -0
  2055. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/unresolved-interface2.wit.result +0 -0
  2056. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/unresolved-interface3.wit +0 -0
  2057. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/unresolved-interface3.wit.result +0 -0
  2058. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/unresolved-interface4.wit +0 -0
  2059. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/unresolved-interface4.wit.result +0 -0
  2060. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/unresolved-use1.wit +0 -0
  2061. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/unresolved-use1.wit.result +0 -0
  2062. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/unresolved-use10/bar.wit +0 -0
  2063. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/unresolved-use10/foo.wit +0 -0
  2064. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/unresolved-use10.wit.result +0 -0
  2065. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/unresolved-use2.wit +0 -0
  2066. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/unresolved-use2.wit.result +0 -0
  2067. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/unresolved-use3.wit +0 -0
  2068. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/unresolved-use3.wit.result +0 -0
  2069. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/unresolved-use7.wit +0 -0
  2070. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/unresolved-use7.wit.result +0 -0
  2071. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/unresolved-use8.wit +0 -0
  2072. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/unresolved-use8.wit.result +0 -0
  2073. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/unresolved-use9.wit +0 -0
  2074. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/unresolved-use9.wit.result +0 -0
  2075. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/unterminated-string.wit.result +0 -0
  2076. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/use-and-include-world/deps/bar/baz.wit +0 -0
  2077. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/use-and-include-world/root.wit +0 -0
  2078. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/use-and-include-world.wit.result +0 -0
  2079. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/use-conflict.wit +0 -0
  2080. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/use-conflict.wit.result +0 -0
  2081. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/use-conflict2.wit +0 -0
  2082. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/use-conflict2.wit.result +0 -0
  2083. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/use-conflict3.wit +0 -0
  2084. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/use-conflict3.wit.result +0 -0
  2085. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/use-cycle1.wit +0 -0
  2086. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/use-cycle1.wit.result +0 -0
  2087. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/use-cycle4.wit +0 -0
  2088. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/use-cycle4.wit.result +0 -0
  2089. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/use-shadow1.wit +0 -0
  2090. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/use-shadow1.wit.result +0 -0
  2091. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/use-world/deps/bar/baz.wit +0 -0
  2092. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/use-world/root.wit +0 -0
  2093. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/use-world.wit.result +0 -0
  2094. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/world-interface-clash.wit +0 -0
  2095. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/world-interface-clash.wit.result +0 -0
  2096. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/world-same-fields2.wit +0 -0
  2097. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/world-same-fields2.wit.result +0 -0
  2098. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/world-same-fields3.wit +0 -0
  2099. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/world-same-fields3.wit.result +0 -0
  2100. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/world-top-level-func.wit +0 -0
  2101. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/world-top-level-func.wit.result +0 -0
  2102. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/world-top-level-func2.wit +0 -0
  2103. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/parse-fail/world-top-level-func2.wit.result +0 -0
  2104. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/random.wit +0 -0
  2105. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/random.wit.json +0 -0
  2106. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/resources-empty.wit +0 -0
  2107. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/resources-empty.wit.json +0 -0
  2108. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/resources-multiple-returns-own.wit +0 -0
  2109. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/resources-multiple-returns-own.wit.json +0 -0
  2110. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/resources-multiple.wit +0 -0
  2111. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/resources-multiple.wit.json +0 -0
  2112. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/resources-return-own.wit +0 -0
  2113. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/resources-return-own.wit.json +0 -0
  2114. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/resources.wit +0 -0
  2115. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/resources.wit.json +0 -0
  2116. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/resources1.wit +0 -0
  2117. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/resources1.wit.json +0 -0
  2118. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/same-name-import-export.wit +0 -0
  2119. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/same-name-import-export.wit.json +0 -0
  2120. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/shared-types.wit +0 -0
  2121. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/shared-types.wit.json +0 -0
  2122. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/simple-wasm-text.wat +0 -0
  2123. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/simple-wasm-text.wit.json +0 -0
  2124. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/since-and-unstable.wit +0 -0
  2125. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/stress-export-elaborate.wit +0 -0
  2126. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/stress-export-elaborate.wit.json +0 -0
  2127. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/type-then-eof.wit +0 -0
  2128. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/type-then-eof.wit.json +0 -0
  2129. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/types.wit +0 -0
  2130. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/types.wit.json +0 -0
  2131. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/union-fuzz-1.wit +0 -0
  2132. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/union-fuzz-1.wit.json +0 -0
  2133. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/union-fuzz-2.wit +0 -0
  2134. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/union-fuzz-2.wit.json +0 -0
  2135. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/use-chain.wit +0 -0
  2136. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/use-chain.wit.json +0 -0
  2137. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/use.wit +0 -0
  2138. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/use.wit.json +0 -0
  2139. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/versions/deps/a1/foo.wit +0 -0
  2140. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/versions/deps/a2/foo.wit +0 -0
  2141. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/versions/foo.wit +0 -0
  2142. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/versions.wit.json +0 -0
  2143. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/wasi.wit +0 -0
  2144. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/wasi.wit.json +0 -0
  2145. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/world-diamond.wit +0 -0
  2146. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/world-diamond.wit.json +0 -0
  2147. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/world-iface-no-collide.wit +0 -0
  2148. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/world-iface-no-collide.wit.json +0 -0
  2149. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/world-implicit-import1.wit +0 -0
  2150. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/world-implicit-import1.wit.json +0 -0
  2151. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/world-implicit-import2.wit +0 -0
  2152. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/world-implicit-import2.wit.json +0 -0
  2153. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/world-implicit-import3.wit +0 -0
  2154. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/world-implicit-import3.wit.json +0 -0
  2155. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/world-same-fields4.wit +0 -0
  2156. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/world-same-fields4.wit.json +0 -0
  2157. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/world-top-level-funcs.wit +0 -0
  2158. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/world-top-level-funcs.wit.json +0 -0
  2159. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/world-top-level-resources.wit +0 -0
  2160. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/world-top-level-resources.wit.json +0 -0
  2161. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/worlds-union-dedup.wit +0 -0
  2162. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/worlds-union-dedup.wit.json +0 -0
  2163. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/worlds-with-types.wit +0 -0
  2164. /data/ext/cargo-vendor/{wit-parser-0.209.1 → wit-parser-0.212.0}/tests/ui/worlds-with-types.wit.json +0 -0
@@ -0,0 +1,4598 @@
1
+ //! Types relating to type information provided by validation.
2
+
3
+ use super::{
4
+ component::{ComponentState, ExternKind},
5
+ core::Module,
6
+ };
7
+ use crate::prelude::*;
8
+ use crate::{collections::map::Entry, AbstractHeapType};
9
+ use crate::{validator::names::KebabString, HeapType, ValidatorId};
10
+ use crate::{
11
+ BinaryReaderError, CompositeType, Export, ExternalKind, FuncType, GlobalType, Import, Matches,
12
+ MemoryType, PackedIndex, PrimitiveValType, RecGroup, RefType, Result, SubType, TableType,
13
+ TypeRef, UnpackedIndex, ValType, WithRecGroup,
14
+ };
15
+ use alloc::sync::Arc;
16
+ use core::ops::{Deref, DerefMut, Index, Range};
17
+ use core::sync::atomic::{AtomicUsize, Ordering};
18
+ use core::{
19
+ borrow::Borrow,
20
+ hash::{Hash, Hasher},
21
+ mem,
22
+ };
23
+
24
+ /// The maximum number of parameters in the canonical ABI that can be passed by value.
25
+ ///
26
+ /// Functions that exceed this limit will instead pass parameters indirectly from
27
+ /// linear memory via a single pointer parameter.
28
+ const MAX_FLAT_FUNC_PARAMS: usize = 16;
29
+ /// The maximum number of results in the canonical ABI that can be returned by a function.
30
+ ///
31
+ /// Functions that exceed this limit have their results written to linear memory via an
32
+ /// additional pointer parameter (imports) or return a single pointer value (exports).
33
+ const MAX_FLAT_FUNC_RESULTS: usize = 1;
34
+
35
+ /// The maximum lowered types, including a possible type for a return pointer parameter.
36
+ const MAX_LOWERED_TYPES: usize = MAX_FLAT_FUNC_PARAMS + 1;
37
+
38
+ /// A simple alloc-free list of types used for calculating lowered function signatures.
39
+ pub(crate) struct LoweredTypes {
40
+ types: [ValType; MAX_LOWERED_TYPES],
41
+ len: usize,
42
+ max: usize,
43
+ }
44
+
45
+ impl LoweredTypes {
46
+ fn new(max: usize) -> Self {
47
+ assert!(max <= MAX_LOWERED_TYPES);
48
+ Self {
49
+ types: [ValType::I32; MAX_LOWERED_TYPES],
50
+ len: 0,
51
+ max,
52
+ }
53
+ }
54
+
55
+ fn len(&self) -> usize {
56
+ self.len
57
+ }
58
+
59
+ fn maxed(&self) -> bool {
60
+ self.len == self.max
61
+ }
62
+
63
+ fn get_mut(&mut self, index: usize) -> Option<&mut ValType> {
64
+ if index < self.len {
65
+ Some(&mut self.types[index])
66
+ } else {
67
+ None
68
+ }
69
+ }
70
+
71
+ fn push(&mut self, ty: ValType) -> bool {
72
+ if self.maxed() {
73
+ return false;
74
+ }
75
+
76
+ self.types[self.len] = ty;
77
+ self.len += 1;
78
+ true
79
+ }
80
+
81
+ fn clear(&mut self) {
82
+ self.len = 0;
83
+ }
84
+
85
+ pub fn as_slice(&self) -> &[ValType] {
86
+ &self.types[..self.len]
87
+ }
88
+
89
+ pub fn iter(&self) -> impl Iterator<Item = ValType> + '_ {
90
+ self.as_slice().iter().copied()
91
+ }
92
+ }
93
+
94
+ /// Represents information about a component function type lowering.
95
+ pub(crate) struct LoweringInfo {
96
+ pub(crate) params: LoweredTypes,
97
+ pub(crate) results: LoweredTypes,
98
+ pub(crate) requires_memory: bool,
99
+ pub(crate) requires_realloc: bool,
100
+ }
101
+
102
+ impl LoweringInfo {
103
+ pub(crate) fn into_func_type(self) -> FuncType {
104
+ FuncType::new(
105
+ self.params.as_slice().iter().copied(),
106
+ self.results.as_slice().iter().copied(),
107
+ )
108
+ }
109
+ }
110
+
111
+ impl Default for LoweringInfo {
112
+ fn default() -> Self {
113
+ Self {
114
+ params: LoweredTypes::new(MAX_FLAT_FUNC_PARAMS),
115
+ results: LoweredTypes::new(MAX_FLAT_FUNC_RESULTS),
116
+ requires_memory: false,
117
+ requires_realloc: false,
118
+ }
119
+ }
120
+ }
121
+
122
+ fn push_primitive_wasm_types(ty: &PrimitiveValType, lowered_types: &mut LoweredTypes) -> bool {
123
+ match ty {
124
+ PrimitiveValType::Bool
125
+ | PrimitiveValType::S8
126
+ | PrimitiveValType::U8
127
+ | PrimitiveValType::S16
128
+ | PrimitiveValType::U16
129
+ | PrimitiveValType::S32
130
+ | PrimitiveValType::U32
131
+ | PrimitiveValType::Char => lowered_types.push(ValType::I32),
132
+ PrimitiveValType::S64 | PrimitiveValType::U64 => lowered_types.push(ValType::I64),
133
+ PrimitiveValType::F32 => lowered_types.push(ValType::F32),
134
+ PrimitiveValType::F64 => lowered_types.push(ValType::F64),
135
+ PrimitiveValType::String => {
136
+ lowered_types.push(ValType::I32) && lowered_types.push(ValType::I32)
137
+ }
138
+ }
139
+ }
140
+
141
+ /// A trait shared by all type identifiers.
142
+ ///
143
+ /// Any id that can be used to get a type from a `Types`.
144
+ //
145
+ // Or, internally, from a `TypeList`.
146
+ pub trait TypeIdentifier: core::fmt::Debug + Copy + Eq + Sized + 'static {
147
+ /// The data pointed to by this type of id.
148
+ type Data: TypeData<Id = Self>;
149
+
150
+ /// Create a type id from an index.
151
+ #[doc(hidden)]
152
+ fn from_index(index: u32) -> Self;
153
+
154
+ /// Get a shared reference to the list where this id's type data is stored
155
+ /// within.
156
+ #[doc(hidden)]
157
+ fn list(types: &TypeList) -> &SnapshotList<Self::Data>;
158
+
159
+ /// Get an exclusive reference to the list where this id's type data is
160
+ /// stored within.
161
+ #[doc(hidden)]
162
+ fn list_mut(types: &mut TypeList) -> &mut SnapshotList<Self::Data>;
163
+
164
+ /// The raw index of this id.
165
+ #[doc(hidden)]
166
+ fn index(&self) -> usize;
167
+ }
168
+
169
+ /// A trait shared by all types within a `Types`.
170
+ ///
171
+ /// This is the data that can be retreived by indexing with the associated
172
+ /// [`TypeIdentifier`].
173
+ pub trait TypeData: core::fmt::Debug {
174
+ /// The identifier for this type data.
175
+ type Id: TypeIdentifier<Data = Self>;
176
+
177
+ /// Get the info for this type.
178
+ #[doc(hidden)]
179
+ fn type_info(&self, types: &TypeList) -> TypeInfo;
180
+ }
181
+
182
+ /// A type that can be aliased in the component model.
183
+ pub trait Aliasable {
184
+ #[doc(hidden)]
185
+ fn alias_id(&self) -> u32;
186
+
187
+ #[doc(hidden)]
188
+ fn set_alias_id(&mut self, alias_id: u32);
189
+ }
190
+
191
+ /// A fresh alias id that means the entity is not an alias of anything.
192
+ ///
193
+ /// Note that the `TypeList::alias_counter` starts at zero, so we can't use that
194
+ /// as this sentinel. The implementation limits are such that we can't ever
195
+ /// generate `u32::MAX` aliases, so we don't need to worryabout running into
196
+ /// this value in practice either.
197
+ const NO_ALIAS: u32 = u32::MAX;
198
+
199
+ macro_rules! define_type_id {
200
+ ($name:ident, $data:ty, $list:ident, $type_str:expr) => {
201
+ #[doc = "Represents a unique identifier for a "]
202
+ #[doc = $type_str]
203
+ #[doc = " type known to a [`crate::Validator`]."]
204
+ #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
205
+ #[repr(C)] // Use fixed field layout to ensure minimal size.
206
+ pub struct $name {
207
+ /// The index into the associated list of types.
208
+ index: u32,
209
+ }
210
+
211
+ impl TypeIdentifier for $name {
212
+ type Data = $data;
213
+
214
+ fn from_index(index: u32) -> Self {
215
+ $name { index }
216
+ }
217
+
218
+ fn list(types: &TypeList) -> &SnapshotList<Self::Data> {
219
+ &types.$list
220
+ }
221
+
222
+ fn list_mut(types: &mut TypeList) -> &mut SnapshotList<Self::Data> {
223
+ &mut types.$list
224
+ }
225
+
226
+ fn index(&self) -> usize {
227
+ usize::try_from(self.index).unwrap()
228
+ }
229
+ }
230
+
231
+ impl Aliasable for $name {
232
+ fn alias_id(&self) -> u32 {
233
+ NO_ALIAS
234
+ }
235
+
236
+ fn set_alias_id(&mut self, _: u32) {}
237
+ }
238
+
239
+ // The size of type IDs was seen to have a large-ish impact in #844, so
240
+ // this assert ensures that it stays relatively small.
241
+ const _: () = {
242
+ assert!(core::mem::size_of::<$name>() <= 4);
243
+ };
244
+ };
245
+ }
246
+
247
+ /// A core WebAssembly type, in the core WebAssembly types index space.
248
+ pub enum CoreType {
249
+ /// A sub type.
250
+ Sub(SubType),
251
+
252
+ /// A module type.
253
+ ///
254
+ /// Does not actually appear in core Wasm at the moment. Only used for the
255
+ /// core types index space within components.
256
+ Module(ModuleType),
257
+ }
258
+
259
+ /// Represents a unique identifier for a core type type known to a
260
+ /// [`crate::Validator`]
261
+ #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
262
+ #[repr(C)]
263
+ pub struct CoreTypeId {
264
+ index: u32,
265
+ }
266
+
267
+ const _: () = {
268
+ assert!(core::mem::size_of::<CoreTypeId>() <= 4);
269
+ };
270
+
271
+ impl TypeIdentifier for CoreTypeId {
272
+ type Data = SubType;
273
+
274
+ fn from_index(index: u32) -> Self {
275
+ CoreTypeId { index }
276
+ }
277
+
278
+ fn list(types: &TypeList) -> &SnapshotList<Self::Data> {
279
+ &types.core_types
280
+ }
281
+
282
+ fn list_mut(types: &mut TypeList) -> &mut SnapshotList<Self::Data> {
283
+ &mut types.core_types
284
+ }
285
+
286
+ fn index(&self) -> usize {
287
+ usize::try_from(self.index).unwrap()
288
+ }
289
+ }
290
+
291
+ impl TypeData for SubType {
292
+ type Id = CoreTypeId;
293
+
294
+ fn type_info(&self, _types: &TypeList) -> TypeInfo {
295
+ // TODO(#1036): calculate actual size for func, array, struct.
296
+ let size = 1 + match &self.composite_type {
297
+ CompositeType::Func(ty) => 1 + (ty.params().len() + ty.results().len()) as u32,
298
+ CompositeType::Array(_) => 2,
299
+ CompositeType::Struct(ty) => 1 + 2 * ty.fields.len() as u32,
300
+ };
301
+ TypeInfo::core(size)
302
+ }
303
+ }
304
+
305
+ impl CoreType {
306
+ /// Get the underlying `SubType` or panic.
307
+ pub fn unwrap_sub(&self) -> &SubType {
308
+ match self {
309
+ CoreType::Sub(s) => s,
310
+ CoreType::Module(_) => panic!("`unwrap_sub` on module type"),
311
+ }
312
+ }
313
+
314
+ /// Get the underlying `FuncType` within this `SubType` or panic.
315
+ pub fn unwrap_func(&self) -> &FuncType {
316
+ match &self.unwrap_sub().composite_type {
317
+ CompositeType::Func(f) => f,
318
+ CompositeType::Array(_) | CompositeType::Struct(_) => {
319
+ panic!("`unwrap_func` on non-func composite type")
320
+ }
321
+ }
322
+ }
323
+
324
+ /// Get the underlying `ModuleType` or panic.
325
+ pub fn unwrap_module(&self) -> &ModuleType {
326
+ match self {
327
+ CoreType::Module(m) => m,
328
+ CoreType::Sub(_) => panic!("`unwrap_module` on a subtype"),
329
+ }
330
+ }
331
+ }
332
+
333
+ macro_rules! define_wrapper_id {
334
+ (
335
+ $(#[$outer_attrs:meta])*
336
+ pub enum $name:ident {
337
+ $(
338
+ #[unwrap = $unwrap:ident]
339
+ $(#[$inner_attrs:meta])*
340
+ $variant:ident ( $inner:ty ) ,
341
+ )*
342
+ }
343
+ ) => {
344
+ $(#[$outer_attrs])*
345
+ pub enum $name {
346
+ $(
347
+ $(#[$inner_attrs])*
348
+ $variant ( $inner ) ,
349
+ )*
350
+ }
351
+
352
+ $(
353
+ impl From<$inner> for $name {
354
+ #[inline]
355
+ fn from(x: $inner) -> Self {
356
+ Self::$variant(x)
357
+ }
358
+ }
359
+
360
+ impl TryFrom<$name> for $inner {
361
+ type Error = ();
362
+
363
+ #[inline]
364
+ fn try_from(x: $name) -> Result<Self, Self::Error> {
365
+ match x {
366
+ $name::$variant(x) => Ok(x),
367
+ _ => Err(())
368
+ }
369
+ }
370
+ }
371
+ )*
372
+
373
+ impl $name {
374
+ $(
375
+ #[doc = "Unwrap a `"]
376
+ #[doc = stringify!($inner)]
377
+ #[doc = "` or panic."]
378
+ #[inline]
379
+ pub fn $unwrap(self) -> $inner {
380
+ <$inner>::try_from(self).unwrap()
381
+ }
382
+ )*
383
+ }
384
+ };
385
+ }
386
+
387
+ macro_rules! define_transitive_conversions {
388
+ (
389
+ $(
390
+ $outer:ty,
391
+ $middle:ty,
392
+ $inner:ty,
393
+ $unwrap:ident;
394
+ )*
395
+ ) => {
396
+ $(
397
+ impl From<$inner> for $outer {
398
+ #[inline]
399
+ fn from(x: $inner) -> Self {
400
+ <$middle>::from(x).into()
401
+ }
402
+ }
403
+
404
+ impl TryFrom<$outer> for $inner {
405
+ type Error = ();
406
+
407
+ #[inline]
408
+ fn try_from(x: $outer) -> Result<Self, Self::Error> {
409
+ let middle = <$middle>::try_from(x)?;
410
+ <$inner>::try_from(middle)
411
+ }
412
+ }
413
+
414
+ impl $outer {
415
+ #[doc = "Unwrap a `"]
416
+ #[doc = stringify!($inner)]
417
+ #[doc = "` or panic."]
418
+ #[inline]
419
+ pub fn $unwrap(self) -> $inner {
420
+ <$inner>::try_from(self).unwrap()
421
+ }
422
+ }
423
+ )*
424
+ };
425
+ }
426
+
427
+ define_wrapper_id! {
428
+ /// An identifier pointing to any kind of type, component or core.
429
+ #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]
430
+ pub enum AnyTypeId {
431
+ #[unwrap = unwrap_component_core_type]
432
+ /// A core type.
433
+ Core(ComponentCoreTypeId),
434
+
435
+ #[unwrap = unwrap_component_any_type]
436
+ /// A component type.
437
+ Component(ComponentAnyTypeId),
438
+ }
439
+ }
440
+
441
+ define_transitive_conversions! {
442
+ AnyTypeId, ComponentCoreTypeId, CoreTypeId, unwrap_core_type;
443
+ AnyTypeId, ComponentCoreTypeId, ComponentCoreModuleTypeId, unwrap_component_core_module_type;
444
+ AnyTypeId, ComponentAnyTypeId, AliasableResourceId, unwrap_aliasable_resource;
445
+ AnyTypeId, ComponentAnyTypeId, ComponentDefinedTypeId, unwrap_component_defined_type;
446
+ AnyTypeId, ComponentAnyTypeId, ComponentFuncTypeId, unwrap_component_func_type;
447
+ AnyTypeId, ComponentAnyTypeId, ComponentInstanceTypeId, unwrap_component_instance_type;
448
+ AnyTypeId, ComponentAnyTypeId, ComponentTypeId, unwrap_component_type;
449
+ }
450
+
451
+ impl AnyTypeId {
452
+ /// Peel off one layer of aliasing from this type and return the aliased
453
+ /// inner type, or `None` if this type is not aliasing anything.
454
+ pub fn peel_alias(&self, types: &Types) -> Option<Self> {
455
+ match *self {
456
+ Self::Core(id) => id.peel_alias(types).map(Self::Core),
457
+ Self::Component(id) => types.peel_alias(id).map(Self::Component),
458
+ }
459
+ }
460
+ }
461
+
462
+ define_wrapper_id! {
463
+ /// An identifier for a core type or a core module's type.
464
+ #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]
465
+ pub enum ComponentCoreTypeId {
466
+ #[unwrap = unwrap_sub]
467
+ /// A core type.
468
+ Sub(CoreTypeId),
469
+
470
+ #[unwrap = unwrap_module]
471
+ /// A core module's type.
472
+ Module(ComponentCoreModuleTypeId),
473
+ }
474
+ }
475
+
476
+ impl ComponentCoreTypeId {
477
+ /// Peel off one layer of aliasing from this type and return the aliased
478
+ /// inner type, or `None` if this type is not aliasing anything.
479
+ pub fn peel_alias(&self, types: &Types) -> Option<Self> {
480
+ match *self {
481
+ Self::Sub(_) => None,
482
+ Self::Module(id) => types.peel_alias(id).map(Self::Module),
483
+ }
484
+ }
485
+ }
486
+
487
+ /// An aliasable resource identifier.
488
+ #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]
489
+ pub struct AliasableResourceId {
490
+ id: ResourceId,
491
+ alias_id: u32,
492
+ }
493
+
494
+ impl Aliasable for AliasableResourceId {
495
+ fn alias_id(&self) -> u32 {
496
+ self.alias_id
497
+ }
498
+
499
+ fn set_alias_id(&mut self, alias_id: u32) {
500
+ self.alias_id = alias_id;
501
+ }
502
+ }
503
+
504
+ impl AliasableResourceId {
505
+ /// Create a new instance with the specified resource ID and `self`'s alias
506
+ /// ID.
507
+ pub fn with_resource_id(&self, id: ResourceId) -> Self {
508
+ Self {
509
+ id,
510
+ alias_id: self.alias_id,
511
+ }
512
+ }
513
+
514
+ /// Get the underlying resource.
515
+ pub fn resource(&self) -> ResourceId {
516
+ self.id
517
+ }
518
+
519
+ pub(crate) fn resource_mut(&mut self) -> &mut ResourceId {
520
+ &mut self.id
521
+ }
522
+ }
523
+
524
+ define_wrapper_id! {
525
+ /// An identifier for any kind of component type.
526
+ #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]
527
+ pub enum ComponentAnyTypeId {
528
+ #[unwrap = unwrap_resource]
529
+ /// The type is a resource with the specified id.
530
+ Resource(AliasableResourceId),
531
+
532
+ #[unwrap = unwrap_defined]
533
+ /// The type is a defined type with the specified id.
534
+ Defined(ComponentDefinedTypeId),
535
+
536
+ #[unwrap = unwrap_func]
537
+ /// The type is a function type with the specified id.
538
+ Func(ComponentFuncTypeId),
539
+
540
+ #[unwrap = unwrap_instance]
541
+ /// The type is an instance type with the specified id.
542
+ Instance(ComponentInstanceTypeId),
543
+
544
+ #[unwrap = unwrap_component]
545
+ /// The type is a component type with the specified id.
546
+ Component(ComponentTypeId),
547
+ }
548
+ }
549
+
550
+ impl Aliasable for ComponentAnyTypeId {
551
+ fn alias_id(&self) -> u32 {
552
+ match self {
553
+ ComponentAnyTypeId::Resource(x) => x.alias_id(),
554
+ ComponentAnyTypeId::Defined(x) => x.alias_id(),
555
+ ComponentAnyTypeId::Func(x) => x.alias_id(),
556
+ ComponentAnyTypeId::Instance(x) => x.alias_id(),
557
+ ComponentAnyTypeId::Component(x) => x.alias_id(),
558
+ }
559
+ }
560
+
561
+ fn set_alias_id(&mut self, alias_id: u32) {
562
+ match self {
563
+ ComponentAnyTypeId::Resource(x) => x.set_alias_id(alias_id),
564
+ ComponentAnyTypeId::Defined(x) => x.set_alias_id(alias_id),
565
+ ComponentAnyTypeId::Func(x) => x.set_alias_id(alias_id),
566
+ ComponentAnyTypeId::Instance(x) => x.set_alias_id(alias_id),
567
+ ComponentAnyTypeId::Component(x) => x.set_alias_id(alias_id),
568
+ }
569
+ }
570
+ }
571
+
572
+ impl ComponentAnyTypeId {
573
+ pub(crate) fn info(&self, types: &TypeList) -> TypeInfo {
574
+ match *self {
575
+ Self::Resource(_) => TypeInfo::new(),
576
+ Self::Defined(id) => types[id].type_info(types),
577
+ Self::Func(id) => types[id].type_info(types),
578
+ Self::Instance(id) => types[id].type_info(types),
579
+ Self::Component(id) => types[id].type_info(types),
580
+ }
581
+ }
582
+
583
+ pub(crate) fn desc(&self) -> &'static str {
584
+ match self {
585
+ Self::Resource(_) => "resource",
586
+ Self::Defined(_) => "defined type",
587
+ Self::Func(_) => "func",
588
+ Self::Instance(_) => "instance",
589
+ Self::Component(_) => "component",
590
+ }
591
+ }
592
+ }
593
+
594
+ define_type_id!(
595
+ RecGroupId,
596
+ Range<CoreTypeId>,
597
+ rec_group_elements,
598
+ "recursion group"
599
+ );
600
+
601
+ impl TypeData for Range<CoreTypeId> {
602
+ type Id = RecGroupId;
603
+
604
+ fn type_info(&self, _types: &TypeList) -> TypeInfo {
605
+ let size = self.end.index() - self.start.index();
606
+ TypeInfo::core(u32::try_from(size).unwrap())
607
+ }
608
+ }
609
+
610
+ define_type_id!(ComponentTypeId, ComponentType, components, "component");
611
+
612
+ define_type_id!(
613
+ ComponentValueTypeId,
614
+ ComponentValType,
615
+ component_values,
616
+ "component value"
617
+ );
618
+
619
+ define_type_id!(
620
+ ComponentInstanceTypeId,
621
+ ComponentInstanceType,
622
+ component_instances,
623
+ "component instance"
624
+ );
625
+
626
+ define_type_id!(
627
+ ComponentFuncTypeId,
628
+ ComponentFuncType,
629
+ component_funcs,
630
+ "component function"
631
+ );
632
+
633
+ define_type_id!(
634
+ ComponentCoreInstanceTypeId,
635
+ InstanceType,
636
+ core_instances,
637
+ "component's core instance"
638
+ );
639
+
640
+ define_type_id!(
641
+ ComponentCoreModuleTypeId,
642
+ ModuleType,
643
+ core_modules,
644
+ "component's core module"
645
+ );
646
+
647
+ /// Represents a unique identifier for a component type type known to a
648
+ /// [`crate::Validator`].
649
+ #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
650
+ #[repr(C)]
651
+ pub struct ComponentDefinedTypeId {
652
+ index: u32,
653
+ alias_id: u32,
654
+ }
655
+
656
+ const _: () = {
657
+ assert!(core::mem::size_of::<ComponentDefinedTypeId>() <= 8);
658
+ };
659
+
660
+ impl TypeIdentifier for ComponentDefinedTypeId {
661
+ type Data = ComponentDefinedType;
662
+
663
+ fn from_index(index: u32) -> Self {
664
+ ComponentDefinedTypeId {
665
+ index,
666
+ alias_id: NO_ALIAS,
667
+ }
668
+ }
669
+
670
+ fn list(types: &TypeList) -> &SnapshotList<Self::Data> {
671
+ &types.component_defined_types
672
+ }
673
+
674
+ fn list_mut(types: &mut TypeList) -> &mut SnapshotList<Self::Data> {
675
+ &mut types.component_defined_types
676
+ }
677
+
678
+ fn index(&self) -> usize {
679
+ usize::try_from(self.index).unwrap()
680
+ }
681
+ }
682
+
683
+ impl Aliasable for ComponentDefinedTypeId {
684
+ fn alias_id(&self) -> u32 {
685
+ self.alias_id
686
+ }
687
+
688
+ fn set_alias_id(&mut self, alias_id: u32) {
689
+ self.alias_id = alias_id;
690
+ }
691
+ }
692
+
693
+ /// Metadata about a type and its transitive structure.
694
+ ///
695
+ /// Currently contains two properties:
696
+ ///
697
+ /// * The "size" of a type - a proxy to the recursive size of a type if
698
+ /// everything in the type were unique (e.g. no shared references). Not an
699
+ /// approximation of runtime size, but instead of type-complexity size if
700
+ /// someone were to visit each element of the type individually. For example
701
+ /// `u32` has size 1 and `(list u32)` has size 2 (roughly). Used to prevent
702
+ /// massive trees of types.
703
+ ///
704
+ /// * Whether or not a type contains a "borrow" transitively inside of it. For
705
+ /// example `(borrow $t)` and `(list (borrow $t))` both contain borrows, but
706
+ /// `(list u32)` does not. Used to validate that component function results do
707
+ /// not contain borrows.
708
+ ///
709
+ /// Currently this is represented as a compact 32-bit integer to ensure that
710
+ /// `TypeId`, which this is stored in, remains relatively small. The maximum
711
+ /// type size allowed in wasmparser is 1M at this time which is 20 bits of
712
+ /// information, and then one more bit is used for whether or not a borrow is
713
+ /// used. Currently this uses the low 24 bits for the type size and the MSB for
714
+ /// the borrow bit.
715
+ #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
716
+ // Only public because it shows up in a public trait's `doc(hidden)` method.
717
+ #[doc(hidden)]
718
+ pub struct TypeInfo(u32);
719
+
720
+ impl TypeInfo {
721
+ /// Creates a new blank set of type information.
722
+ ///
723
+ /// Defaults to size 1 to ensure that this consumes space in the final type
724
+ /// structure.
725
+ pub(crate) fn new() -> TypeInfo {
726
+ TypeInfo::_new(1, false)
727
+ }
728
+
729
+ /// Creates a new blank set of information about a leaf "borrow" type which
730
+ /// has size 1.
731
+ pub(crate) fn borrow() -> TypeInfo {
732
+ TypeInfo::_new(1, true)
733
+ }
734
+
735
+ /// Creates type information corresponding to a core type of the `size`
736
+ /// specified, meaning no borrows are contained within.
737
+ pub(crate) fn core(size: u32) -> TypeInfo {
738
+ TypeInfo::_new(size, false)
739
+ }
740
+
741
+ fn _new(size: u32, contains_borrow: bool) -> TypeInfo {
742
+ assert!(size < (1 << 24));
743
+ TypeInfo(size | ((contains_borrow as u32) << 31))
744
+ }
745
+
746
+ /// Combines another set of type information into this one, for example if
747
+ /// this is a record which has `other` as a field.
748
+ ///
749
+ /// Updates the size of `self` and whether or not this type contains a
750
+ /// borrow based on whether `other` contains a borrow.
751
+ ///
752
+ /// Returns an error if the type size would exceed this crate's static limit
753
+ /// of a type size.
754
+ pub(crate) fn combine(&mut self, other: TypeInfo, offset: usize) -> Result<()> {
755
+ *self = TypeInfo::_new(
756
+ super::combine_type_sizes(self.size(), other.size(), offset)?,
757
+ self.contains_borrow() || other.contains_borrow(),
758
+ );
759
+ Ok(())
760
+ }
761
+
762
+ pub(crate) fn size(&self) -> u32 {
763
+ self.0 & 0xffffff
764
+ }
765
+
766
+ pub(crate) fn contains_borrow(&self) -> bool {
767
+ (self.0 >> 31) != 0
768
+ }
769
+ }
770
+
771
+ /// A component value type.
772
+ #[derive(Debug, Clone, Copy)]
773
+ pub enum ComponentValType {
774
+ /// The value type is one of the primitive types.
775
+ Primitive(PrimitiveValType),
776
+ /// The type is represented with the given type identifier.
777
+ Type(ComponentDefinedTypeId),
778
+ }
779
+
780
+ impl TypeData for ComponentValType {
781
+ type Id = ComponentValueTypeId;
782
+
783
+ fn type_info(&self, types: &TypeList) -> TypeInfo {
784
+ match self {
785
+ ComponentValType::Primitive(_) => TypeInfo::new(),
786
+ ComponentValType::Type(id) => types[*id].type_info(types),
787
+ }
788
+ }
789
+ }
790
+
791
+ impl ComponentValType {
792
+ pub(crate) fn contains_ptr(&self, types: &TypeList) -> bool {
793
+ match self {
794
+ ComponentValType::Primitive(ty) => ty.contains_ptr(),
795
+ ComponentValType::Type(ty) => types[*ty].contains_ptr(types),
796
+ }
797
+ }
798
+
799
+ fn push_wasm_types(&self, types: &TypeList, lowered_types: &mut LoweredTypes) -> bool {
800
+ match self {
801
+ Self::Primitive(ty) => push_primitive_wasm_types(ty, lowered_types),
802
+ Self::Type(id) => types[*id].push_wasm_types(types, lowered_types),
803
+ }
804
+ }
805
+
806
+ pub(crate) fn info(&self, types: &TypeList) -> TypeInfo {
807
+ match self {
808
+ Self::Primitive(_) => TypeInfo::new(),
809
+ Self::Type(id) => types[*id].type_info(types),
810
+ }
811
+ }
812
+ }
813
+
814
+ /// The entity type for imports and exports of a module.
815
+ #[derive(Debug, Clone, Copy)]
816
+ pub enum EntityType {
817
+ /// The entity is a function.
818
+ Func(CoreTypeId),
819
+ /// The entity is a table.
820
+ Table(TableType),
821
+ /// The entity is a memory.
822
+ Memory(MemoryType),
823
+ /// The entity is a global.
824
+ Global(GlobalType),
825
+ /// The entity is a tag.
826
+ Tag(CoreTypeId),
827
+ }
828
+
829
+ impl EntityType {
830
+ pub(crate) fn desc(&self) -> &'static str {
831
+ match self {
832
+ Self::Func(_) => "func",
833
+ Self::Table(_) => "table",
834
+ Self::Memory(_) => "memory",
835
+ Self::Global(_) => "global",
836
+ Self::Tag(_) => "tag",
837
+ }
838
+ }
839
+
840
+ pub(crate) fn info(&self, types: &TypeList) -> TypeInfo {
841
+ match self {
842
+ Self::Func(id) | Self::Tag(id) => types[*id].type_info(types),
843
+ Self::Table(_) | Self::Memory(_) | Self::Global(_) => TypeInfo::new(),
844
+ }
845
+ }
846
+ }
847
+
848
+ trait ModuleImportKey {
849
+ fn module(&self) -> &str;
850
+ fn name(&self) -> &str;
851
+ }
852
+
853
+ impl<'a> Borrow<dyn ModuleImportKey + 'a> for (String, String) {
854
+ fn borrow(&self) -> &(dyn ModuleImportKey + 'a) {
855
+ self
856
+ }
857
+ }
858
+
859
+ impl Hash for (dyn ModuleImportKey + '_) {
860
+ fn hash<H: Hasher>(&self, state: &mut H) {
861
+ self.module().hash(state);
862
+ self.name().hash(state);
863
+ }
864
+ }
865
+
866
+ impl PartialEq for (dyn ModuleImportKey + '_) {
867
+ fn eq(&self, other: &Self) -> bool {
868
+ self.module() == other.module() && self.name() == other.name()
869
+ }
870
+ }
871
+
872
+ impl Eq for (dyn ModuleImportKey + '_) {}
873
+
874
+ impl Ord for (dyn ModuleImportKey + '_) {
875
+ fn cmp(&self, other: &Self) -> core::cmp::Ordering {
876
+ match self.module().cmp(other.module()) {
877
+ core::cmp::Ordering::Equal => (),
878
+ order => return order,
879
+ };
880
+ self.name().cmp(other.name())
881
+ }
882
+ }
883
+
884
+ impl PartialOrd for (dyn ModuleImportKey + '_) {
885
+ fn partial_cmp(&self, other: &Self) -> Option<core::cmp::Ordering> {
886
+ Some(self.cmp(other))
887
+ }
888
+ }
889
+
890
+ impl ModuleImportKey for (String, String) {
891
+ fn module(&self) -> &str {
892
+ &self.0
893
+ }
894
+
895
+ fn name(&self) -> &str {
896
+ &self.1
897
+ }
898
+ }
899
+
900
+ impl ModuleImportKey for (&str, &str) {
901
+ fn module(&self) -> &str {
902
+ self.0
903
+ }
904
+
905
+ fn name(&self) -> &str {
906
+ self.1
907
+ }
908
+ }
909
+
910
+ /// Represents a core module type.
911
+ #[derive(Debug, Clone)]
912
+ pub struct ModuleType {
913
+ /// Metadata about this module type
914
+ pub(crate) info: TypeInfo,
915
+ /// The imports of the module type.
916
+ pub imports: IndexMap<(String, String), EntityType>,
917
+ /// The exports of the module type.
918
+ pub exports: IndexMap<String, EntityType>,
919
+ }
920
+
921
+ impl TypeData for ModuleType {
922
+ type Id = ComponentCoreModuleTypeId;
923
+
924
+ fn type_info(&self, _types: &TypeList) -> TypeInfo {
925
+ self.info
926
+ }
927
+ }
928
+
929
+ impl ModuleType {
930
+ /// Looks up an import by its module and name.
931
+ ///
932
+ /// Returns `None` if the import was not found.
933
+ pub fn lookup_import(&self, module: &str, name: &str) -> Option<&EntityType> {
934
+ self.imports.get(&(module, name) as &dyn ModuleImportKey)
935
+ }
936
+ }
937
+
938
+ /// Represents the kind of module instance type.
939
+ #[derive(Debug, Clone)]
940
+ pub enum CoreInstanceTypeKind {
941
+ /// The instance type is the result of instantiating a module type.
942
+ Instantiated(ComponentCoreModuleTypeId),
943
+
944
+ /// The instance type is the result of instantiating from exported items.
945
+ Exports(IndexMap<String, EntityType>),
946
+ }
947
+
948
+ /// Represents a module instance type.
949
+ #[derive(Debug, Clone)]
950
+ pub struct InstanceType {
951
+ /// Metadata about this instance type
952
+ pub(crate) info: TypeInfo,
953
+ /// The kind of module instance type.
954
+ pub kind: CoreInstanceTypeKind,
955
+ }
956
+
957
+ impl TypeData for InstanceType {
958
+ type Id = ComponentCoreInstanceTypeId;
959
+
960
+ fn type_info(&self, _types: &TypeList) -> TypeInfo {
961
+ self.info
962
+ }
963
+ }
964
+
965
+ impl InstanceType {
966
+ /// Gets the exports of the instance type.
967
+ pub fn exports<'a>(&'a self, types: TypesRef<'a>) -> &'a IndexMap<String, EntityType> {
968
+ self.internal_exports(types.list)
969
+ }
970
+
971
+ pub(crate) fn internal_exports<'a>(
972
+ &'a self,
973
+ types: &'a TypeList,
974
+ ) -> &'a IndexMap<String, EntityType> {
975
+ match &self.kind {
976
+ CoreInstanceTypeKind::Instantiated(id) => &types[*id].exports,
977
+ CoreInstanceTypeKind::Exports(exports) => exports,
978
+ }
979
+ }
980
+ }
981
+
982
+ /// The entity type for imports and exports of a component.
983
+ #[derive(Debug, Clone, Copy)]
984
+ pub enum ComponentEntityType {
985
+ /// The entity is a core module.
986
+ Module(ComponentCoreModuleTypeId),
987
+ /// The entity is a function.
988
+ Func(ComponentFuncTypeId),
989
+ /// The entity is a value.
990
+ Value(ComponentValType),
991
+ /// The entity is a type.
992
+ Type {
993
+ /// This is the identifier of the type that was referenced when this
994
+ /// entity was created.
995
+ referenced: ComponentAnyTypeId,
996
+ /// This is the identifier of the type that was created when this type
997
+ /// was imported or exported from the component.
998
+ ///
999
+ /// Note that the underlying type information for the `referenced`
1000
+ /// field and for this `created` field is the same, but these two types
1001
+ /// will hash to different values.
1002
+ created: ComponentAnyTypeId,
1003
+ },
1004
+ /// The entity is a component instance.
1005
+ Instance(ComponentInstanceTypeId),
1006
+ /// The entity is a component.
1007
+ Component(ComponentTypeId),
1008
+ }
1009
+
1010
+ impl ComponentEntityType {
1011
+ /// Determines if component entity type `a` is a subtype of `b`.
1012
+ pub fn is_subtype_of(a: &Self, at: TypesRef, b: &Self, bt: TypesRef) -> bool {
1013
+ SubtypeCx::new(at.list, bt.list)
1014
+ .component_entity_type(a, b, 0)
1015
+ .is_ok()
1016
+ }
1017
+
1018
+ pub(crate) fn desc(&self) -> &'static str {
1019
+ match self {
1020
+ Self::Module(_) => "module",
1021
+ Self::Func(_) => "func",
1022
+ Self::Value(_) => "value",
1023
+ Self::Type { .. } => "type",
1024
+ Self::Instance(_) => "instance",
1025
+ Self::Component(_) => "component",
1026
+ }
1027
+ }
1028
+
1029
+ pub(crate) fn info(&self, types: &TypeList) -> TypeInfo {
1030
+ match self {
1031
+ Self::Module(ty) => types[*ty].type_info(types),
1032
+ Self::Func(ty) => types[*ty].type_info(types),
1033
+ Self::Type { referenced: ty, .. } => ty.info(types),
1034
+ Self::Instance(ty) => types[*ty].type_info(types),
1035
+ Self::Component(ty) => types[*ty].type_info(types),
1036
+ Self::Value(ty) => ty.info(types),
1037
+ }
1038
+ }
1039
+ }
1040
+
1041
+ /// Represents a type of a component.
1042
+ #[derive(Debug, Clone)]
1043
+ pub struct ComponentType {
1044
+ /// Metadata about this component type
1045
+ pub(crate) info: TypeInfo,
1046
+
1047
+ /// The imports of the component type.
1048
+ ///
1049
+ /// Each import has its own kebab-name and an optional URL listed. Note that
1050
+ /// the set of import names is disjoint with the set of export names.
1051
+ pub imports: IndexMap<String, ComponentEntityType>,
1052
+
1053
+ /// The exports of the component type.
1054
+ ///
1055
+ /// Each export has its own kebab-name and an optional URL listed. Note that
1056
+ /// the set of export names is disjoint with the set of import names.
1057
+ pub exports: IndexMap<String, ComponentEntityType>,
1058
+
1059
+ /// Universally quantified resources required to be provided when
1060
+ /// instantiating this component type.
1061
+ ///
1062
+ /// Each resource in this map is explicitly imported somewhere in the
1063
+ /// `imports` map. The "path" to where it's imported is specified by the
1064
+ /// `Vec<usize>` payload here. For more information about the indexes see
1065
+ /// the documentation on `ComponentState::imported_resources`.
1066
+ ///
1067
+ /// This should technically be inferrable from the structure of `imports`,
1068
+ /// but it's stored as an auxiliary set for subtype checking and
1069
+ /// instantiation.
1070
+ ///
1071
+ /// Note that this is not a set of all resources referred to by the
1072
+ /// `imports`. Instead it's only those created, relative to the internals of
1073
+ /// this component, by the imports.
1074
+ pub imported_resources: Vec<(ResourceId, Vec<usize>)>,
1075
+
1076
+ /// The dual of the `imported_resources`, or the set of defined
1077
+ /// resources -- those created through the instantiation process which are
1078
+ /// unique to this component.
1079
+ ///
1080
+ /// This set is similar to the `imported_resources` set but it's those
1081
+ /// contained within the `exports`. Instantiating this component will
1082
+ /// create fresh new versions of all of these resources. The path here is
1083
+ /// within the `exports` array.
1084
+ pub defined_resources: Vec<(ResourceId, Vec<usize>)>,
1085
+
1086
+ /// The set of all resources which are explicitly exported by this
1087
+ /// component, and where they're exported.
1088
+ ///
1089
+ /// This mapping is stored separately from `defined_resources` to ensure
1090
+ /// that it contains all exported resources, not just those which are
1091
+ /// defined. That means that this can cover reexports of imported
1092
+ /// resources, exports of local resources, or exports of closed-over
1093
+ /// resources for example.
1094
+ pub explicit_resources: IndexMap<ResourceId, Vec<usize>>,
1095
+ }
1096
+
1097
+ impl TypeData for ComponentType {
1098
+ type Id = ComponentTypeId;
1099
+
1100
+ fn type_info(&self, _types: &TypeList) -> TypeInfo {
1101
+ self.info
1102
+ }
1103
+ }
1104
+
1105
+ /// Represents a type of a component instance.
1106
+ #[derive(Debug, Clone)]
1107
+ pub struct ComponentInstanceType {
1108
+ /// Metadata about this instance type
1109
+ pub(crate) info: TypeInfo,
1110
+
1111
+ /// The list of exports, keyed by name, that this instance has.
1112
+ ///
1113
+ /// An optional URL and type of each export is provided as well.
1114
+ pub exports: IndexMap<String, ComponentEntityType>,
1115
+
1116
+ /// The list of "defined resources" or those which are closed over in
1117
+ /// this instance type.
1118
+ ///
1119
+ /// This list is populated, for example, when the type of an instance is
1120
+ /// declared and it contains its own resource type exports defined
1121
+ /// internally. For example:
1122
+ ///
1123
+ /// ```wasm
1124
+ /// (component
1125
+ /// (type (instance
1126
+ /// (export "x" (type sub resource)) ;; one `defined_resources` entry
1127
+ /// ))
1128
+ /// )
1129
+ /// ```
1130
+ ///
1131
+ /// This list is also a bit of an oddity, however, because the type of a
1132
+ /// concrete instance will always have this as empty. For example:
1133
+ ///
1134
+ /// ```wasm
1135
+ /// (component
1136
+ /// (type $t (instance (export "x" (type sub resource))))
1137
+ ///
1138
+ /// ;; the type of this instance has no defined resources
1139
+ /// (import "i" (instance (type $t)))
1140
+ /// )
1141
+ /// ```
1142
+ ///
1143
+ /// This list ends up only being populated for instance types declared in a
1144
+ /// module which aren't yet "attached" to anything. Once something is
1145
+ /// instantiated, imported, exported, or otherwise refers to a concrete
1146
+ /// instance then this list is always empty. For concrete instances
1147
+ /// defined resources are tracked in the component state or component type.
1148
+ pub defined_resources: Vec<ResourceId>,
1149
+
1150
+ /// The list of all resources that are explicitly exported from this
1151
+ /// instance type along with the path they're exported at.
1152
+ pub explicit_resources: IndexMap<ResourceId, Vec<usize>>,
1153
+ }
1154
+
1155
+ impl TypeData for ComponentInstanceType {
1156
+ type Id = ComponentInstanceTypeId;
1157
+
1158
+ fn type_info(&self, _types: &TypeList) -> TypeInfo {
1159
+ self.info
1160
+ }
1161
+ }
1162
+
1163
+ /// Represents a type of a component function.
1164
+ #[derive(Debug, Clone)]
1165
+ pub struct ComponentFuncType {
1166
+ /// Metadata about this function type.
1167
+ pub(crate) info: TypeInfo,
1168
+ /// The function parameters.
1169
+ pub params: Box<[(KebabString, ComponentValType)]>,
1170
+ /// The function's results.
1171
+ pub results: Box<[(Option<KebabString>, ComponentValType)]>,
1172
+ }
1173
+
1174
+ impl TypeData for ComponentFuncType {
1175
+ type Id = ComponentFuncTypeId;
1176
+
1177
+ fn type_info(&self, _types: &TypeList) -> TypeInfo {
1178
+ self.info
1179
+ }
1180
+ }
1181
+
1182
+ impl ComponentFuncType {
1183
+ /// Lowers the component function type to core parameter and result types for the
1184
+ /// canonical ABI.
1185
+ pub(crate) fn lower(&self, types: &TypeList, is_lower: bool) -> LoweringInfo {
1186
+ let mut info = LoweringInfo::default();
1187
+
1188
+ for (_, ty) in self.params.iter() {
1189
+ // Check to see if `ty` has a pointer somewhere in it, needed for
1190
+ // any type that transitively contains either a string or a list.
1191
+ // In this situation lowered functions must specify `memory`, and
1192
+ // lifted functions must specify `realloc` as well. Lifted functions
1193
+ // gain their memory requirement through the final clause of this
1194
+ // function.
1195
+ if is_lower {
1196
+ if !info.requires_memory {
1197
+ info.requires_memory = ty.contains_ptr(types);
1198
+ }
1199
+ } else {
1200
+ if !info.requires_realloc {
1201
+ info.requires_realloc = ty.contains_ptr(types);
1202
+ }
1203
+ }
1204
+
1205
+ if !ty.push_wasm_types(types, &mut info.params) {
1206
+ // Too many parameters to pass directly
1207
+ // Function will have a single pointer parameter to pass the arguments
1208
+ // via linear memory
1209
+ info.params.clear();
1210
+ assert!(info.params.push(ValType::I32));
1211
+ info.requires_memory = true;
1212
+
1213
+ // We need realloc as well when lifting a function
1214
+ if !is_lower {
1215
+ info.requires_realloc = true;
1216
+ }
1217
+ break;
1218
+ }
1219
+ }
1220
+
1221
+ for (_, ty) in self.results.iter() {
1222
+ // Results of lowered functions that contains pointers must be
1223
+ // allocated by the callee meaning that realloc is required.
1224
+ // Results of lifted function are allocated by the guest which
1225
+ // means that no realloc option is necessary.
1226
+ if is_lower && !info.requires_realloc {
1227
+ info.requires_realloc = ty.contains_ptr(types);
1228
+ }
1229
+
1230
+ if !ty.push_wasm_types(types, &mut info.results) {
1231
+ // Too many results to return directly, either a retptr parameter will be used (import)
1232
+ // or a single pointer will be returned (export)
1233
+ info.results.clear();
1234
+ if is_lower {
1235
+ info.params.max = MAX_LOWERED_TYPES;
1236
+ assert!(info.params.push(ValType::I32));
1237
+ } else {
1238
+ assert!(info.results.push(ValType::I32));
1239
+ }
1240
+ info.requires_memory = true;
1241
+ break;
1242
+ }
1243
+ }
1244
+
1245
+ // Memory is always required when realloc is required
1246
+ info.requires_memory |= info.requires_realloc;
1247
+
1248
+ info
1249
+ }
1250
+ }
1251
+
1252
+ /// Represents a variant case.
1253
+ #[derive(Debug, Clone)]
1254
+ pub struct VariantCase {
1255
+ /// The variant case type.
1256
+ pub ty: Option<ComponentValType>,
1257
+ /// The name of the variant case refined by this one.
1258
+ pub refines: Option<KebabString>,
1259
+ }
1260
+
1261
+ /// Represents a record type.
1262
+ #[derive(Debug, Clone)]
1263
+ pub struct RecordType {
1264
+ /// Metadata about this record type.
1265
+ pub(crate) info: TypeInfo,
1266
+ /// The map of record fields.
1267
+ pub fields: IndexMap<KebabString, ComponentValType>,
1268
+ }
1269
+
1270
+ /// Represents a variant type.
1271
+ #[derive(Debug, Clone)]
1272
+ pub struct VariantType {
1273
+ /// Metadata about this variant type.
1274
+ pub(crate) info: TypeInfo,
1275
+ /// The map of variant cases.
1276
+ pub cases: IndexMap<KebabString, VariantCase>,
1277
+ }
1278
+
1279
+ /// Represents a tuple type.
1280
+ #[derive(Debug, Clone)]
1281
+ pub struct TupleType {
1282
+ /// Metadata about this tuple type.
1283
+ pub(crate) info: TypeInfo,
1284
+ /// The types of the tuple.
1285
+ pub types: Box<[ComponentValType]>,
1286
+ }
1287
+
1288
+ /// Represents a component defined type.
1289
+ #[derive(Debug, Clone)]
1290
+ pub enum ComponentDefinedType {
1291
+ /// The type is a primitive value type.
1292
+ Primitive(PrimitiveValType),
1293
+ /// The type is a record.
1294
+ Record(RecordType),
1295
+ /// The type is a variant.
1296
+ Variant(VariantType),
1297
+ /// The type is a list.
1298
+ List(ComponentValType),
1299
+ /// The type is a tuple.
1300
+ Tuple(TupleType),
1301
+ /// The type is a set of flags.
1302
+ Flags(IndexSet<KebabString>),
1303
+ /// The type is an enumeration.
1304
+ Enum(IndexSet<KebabString>),
1305
+ /// The type is an `option`.
1306
+ Option(ComponentValType),
1307
+ /// The type is a `result`.
1308
+ Result {
1309
+ /// The `ok` type.
1310
+ ok: Option<ComponentValType>,
1311
+ /// The `error` type.
1312
+ err: Option<ComponentValType>,
1313
+ },
1314
+ /// The type is an owned handle to the specified resource.
1315
+ Own(AliasableResourceId),
1316
+ /// The type is a borrowed handle to the specified resource.
1317
+ Borrow(AliasableResourceId),
1318
+ }
1319
+
1320
+ impl TypeData for ComponentDefinedType {
1321
+ type Id = ComponentDefinedTypeId;
1322
+
1323
+ fn type_info(&self, types: &TypeList) -> TypeInfo {
1324
+ match self {
1325
+ Self::Primitive(_) | Self::Flags(_) | Self::Enum(_) | Self::Own(_) => TypeInfo::new(),
1326
+ Self::Borrow(_) => TypeInfo::borrow(),
1327
+ Self::Record(r) => r.info,
1328
+ Self::Variant(v) => v.info,
1329
+ Self::Tuple(t) => t.info,
1330
+ Self::List(ty) | Self::Option(ty) => ty.info(types),
1331
+ Self::Result { ok, err } => {
1332
+ let default = TypeInfo::new();
1333
+ let mut info = ok.map(|ty| ty.type_info(types)).unwrap_or(default);
1334
+ info.combine(err.map(|ty| ty.type_info(types)).unwrap_or(default), 0)
1335
+ .unwrap();
1336
+ info
1337
+ }
1338
+ }
1339
+ }
1340
+ }
1341
+
1342
+ impl ComponentDefinedType {
1343
+ pub(crate) fn contains_ptr(&self, types: &TypeList) -> bool {
1344
+ match self {
1345
+ Self::Primitive(ty) => ty.contains_ptr(),
1346
+ Self::Record(r) => r.fields.values().any(|ty| ty.contains_ptr(types)),
1347
+ Self::Variant(v) => v
1348
+ .cases
1349
+ .values()
1350
+ .any(|case| case.ty.map(|ty| ty.contains_ptr(types)).unwrap_or(false)),
1351
+ Self::List(_) => true,
1352
+ Self::Tuple(t) => t.types.iter().any(|ty| ty.contains_ptr(types)),
1353
+ Self::Flags(_) | Self::Enum(_) | Self::Own(_) | Self::Borrow(_) => false,
1354
+ Self::Option(ty) => ty.contains_ptr(types),
1355
+ Self::Result { ok, err } => {
1356
+ ok.map(|ty| ty.contains_ptr(types)).unwrap_or(false)
1357
+ || err.map(|ty| ty.contains_ptr(types)).unwrap_or(false)
1358
+ }
1359
+ }
1360
+ }
1361
+
1362
+ fn push_wasm_types(&self, types: &TypeList, lowered_types: &mut LoweredTypes) -> bool {
1363
+ match self {
1364
+ Self::Primitive(ty) => push_primitive_wasm_types(ty, lowered_types),
1365
+ Self::Record(r) => r
1366
+ .fields
1367
+ .iter()
1368
+ .all(|(_, ty)| ty.push_wasm_types(types, lowered_types)),
1369
+ Self::Variant(v) => Self::push_variant_wasm_types(
1370
+ v.cases.iter().filter_map(|(_, case)| case.ty.as_ref()),
1371
+ types,
1372
+ lowered_types,
1373
+ ),
1374
+ Self::List(_) => lowered_types.push(ValType::I32) && lowered_types.push(ValType::I32),
1375
+ Self::Tuple(t) => t
1376
+ .types
1377
+ .iter()
1378
+ .all(|ty| ty.push_wasm_types(types, lowered_types)),
1379
+ Self::Flags(names) => {
1380
+ (0..(names.len() + 31) / 32).all(|_| lowered_types.push(ValType::I32))
1381
+ }
1382
+ Self::Enum(_) | Self::Own(_) | Self::Borrow(_) => lowered_types.push(ValType::I32),
1383
+ Self::Option(ty) => {
1384
+ Self::push_variant_wasm_types([ty].into_iter(), types, lowered_types)
1385
+ }
1386
+ Self::Result { ok, err } => {
1387
+ Self::push_variant_wasm_types(ok.iter().chain(err.iter()), types, lowered_types)
1388
+ }
1389
+ }
1390
+ }
1391
+
1392
+ fn push_variant_wasm_types<'a>(
1393
+ cases: impl Iterator<Item = &'a ComponentValType>,
1394
+ types: &TypeList,
1395
+ lowered_types: &mut LoweredTypes,
1396
+ ) -> bool {
1397
+ // Push the discriminant
1398
+ if !lowered_types.push(ValType::I32) {
1399
+ return false;
1400
+ }
1401
+
1402
+ let start = lowered_types.len();
1403
+
1404
+ for ty in cases {
1405
+ let mut temp = LoweredTypes::new(lowered_types.max);
1406
+
1407
+ if !ty.push_wasm_types(types, &mut temp) {
1408
+ return false;
1409
+ }
1410
+
1411
+ for (i, ty) in temp.iter().enumerate() {
1412
+ match lowered_types.get_mut(start + i) {
1413
+ Some(prev) => *prev = Self::join_types(*prev, ty),
1414
+ None => {
1415
+ if !lowered_types.push(ty) {
1416
+ return false;
1417
+ }
1418
+ }
1419
+ }
1420
+ }
1421
+ }
1422
+
1423
+ true
1424
+ }
1425
+
1426
+ fn join_types(a: ValType, b: ValType) -> ValType {
1427
+ use ValType::*;
1428
+
1429
+ match (a, b) {
1430
+ (I32, I32) | (I64, I64) | (F32, F32) | (F64, F64) => a,
1431
+ (I32, F32) | (F32, I32) => I32,
1432
+ (_, I64 | F64) | (I64 | F64, _) => I64,
1433
+ _ => panic!("unexpected wasm type for canonical ABI"),
1434
+ }
1435
+ }
1436
+
1437
+ fn desc(&self) -> &'static str {
1438
+ match self {
1439
+ ComponentDefinedType::Record(_) => "record",
1440
+ ComponentDefinedType::Primitive(_) => "primitive",
1441
+ ComponentDefinedType::Variant(_) => "variant",
1442
+ ComponentDefinedType::Tuple(_) => "tuple",
1443
+ ComponentDefinedType::Enum(_) => "enum",
1444
+ ComponentDefinedType::Flags(_) => "flags",
1445
+ ComponentDefinedType::Option(_) => "option",
1446
+ ComponentDefinedType::List(_) => "list",
1447
+ ComponentDefinedType::Result { .. } => "result",
1448
+ ComponentDefinedType::Own(_) => "own",
1449
+ ComponentDefinedType::Borrow(_) => "borrow",
1450
+ }
1451
+ }
1452
+ }
1453
+
1454
+ /// An opaque identifier intended to be used to distinguish whether two
1455
+ /// resource types are equivalent or not.
1456
+ #[derive(Debug, Clone, PartialEq, Eq, Hash, Ord, PartialOrd, Copy)]
1457
+ #[repr(packed(4))] // try to not waste 4 bytes in padding
1458
+ pub struct ResourceId {
1459
+ // This is a globally unique identifier which is assigned once per
1460
+ // `TypeAlloc`. This ensures that resource identifiers from different
1461
+ // instances of `Types`, for example, are considered unique.
1462
+ //
1463
+ // Technically 64-bits should be enough for all resource ids ever, but
1464
+ // they're allocated so often it's predicted that an atomic increment
1465
+ // per resource id is probably too expensive. To amortize that cost each
1466
+ // top-level wasm component gets a single globally unique identifier, and
1467
+ // then within a component contextually unique identifiers are handed out.
1468
+ globally_unique_id: usize,
1469
+
1470
+ // A contextually unique id within the globally unique id above. This is
1471
+ // allocated within a `TypeAlloc` with its own counter, and allocations of
1472
+ // this are cheap as nothing atomic is required.
1473
+ //
1474
+ // The 32-bit storage here should ideally be enough for any component
1475
+ // containing resources. If memory usage becomes an issue (this struct is
1476
+ // 12 bytes instead of 8 or 4) then this could get folded into the globally
1477
+ // unique id with everything using an atomic increment perhaps.
1478
+ contextually_unique_id: u32,
1479
+ }
1480
+
1481
+ #[allow(clippy::large_enum_variant)]
1482
+ enum TypesKind {
1483
+ Module(Arc<Module>),
1484
+ Component(ComponentState),
1485
+ }
1486
+
1487
+ /// Represents the types known to a [`crate::Validator`] once validation has completed.
1488
+ ///
1489
+ /// The type information is returned via the [`crate::Validator::end`] method.
1490
+ pub struct Types {
1491
+ id: ValidatorId,
1492
+ list: TypeList,
1493
+ kind: TypesKind,
1494
+ }
1495
+
1496
+ #[derive(Clone, Copy)]
1497
+ enum TypesRefKind<'a> {
1498
+ Module(&'a Module),
1499
+ Component(&'a ComponentState),
1500
+ }
1501
+
1502
+ /// Represents the types known to a [`crate::Validator`] during validation.
1503
+ ///
1504
+ /// Retrieved via the [`crate::Validator::types`] method.
1505
+ #[derive(Clone, Copy)]
1506
+ pub struct TypesRef<'a> {
1507
+ id: ValidatorId,
1508
+ list: &'a TypeList,
1509
+ kind: TypesRefKind<'a>,
1510
+ }
1511
+
1512
+ impl<'a> TypesRef<'a> {
1513
+ pub(crate) fn from_module(id: ValidatorId, types: &'a TypeList, module: &'a Module) -> Self {
1514
+ Self {
1515
+ id,
1516
+ list: types,
1517
+ kind: TypesRefKind::Module(module),
1518
+ }
1519
+ }
1520
+
1521
+ pub(crate) fn from_component(
1522
+ id: ValidatorId,
1523
+ types: &'a TypeList,
1524
+ component: &'a ComponentState,
1525
+ ) -> Self {
1526
+ Self {
1527
+ id,
1528
+ list: types,
1529
+ kind: TypesRefKind::Component(component),
1530
+ }
1531
+ }
1532
+
1533
+ /// Get the id of the validator that these types are associated with.
1534
+ #[inline]
1535
+ pub fn id(&self) -> ValidatorId {
1536
+ self.id
1537
+ }
1538
+
1539
+ /// Gets a type based on its type id.
1540
+ ///
1541
+ /// Returns `None` if the type id is unknown.
1542
+ pub fn get<T>(&self, id: T) -> Option<&'a T::Data>
1543
+ where
1544
+ T: TypeIdentifier,
1545
+ {
1546
+ self.list.get(id)
1547
+ }
1548
+
1549
+ /// Get the id of the rec group that the given type id was defined within.
1550
+ pub fn rec_group_id_of(&self, id: CoreTypeId) -> RecGroupId {
1551
+ self.list.rec_group_id_of(id)
1552
+ }
1553
+
1554
+ /// Get the types within a rec group.
1555
+ pub fn rec_group_elements(&self, id: RecGroupId) -> impl ExactSizeIterator<Item = CoreTypeId> {
1556
+ let range = &self.list.rec_group_elements[id];
1557
+ (range.start.index..range.end.index).map(|index| CoreTypeId { index })
1558
+ }
1559
+
1560
+ /// Get the super type of the given type id, if any.
1561
+ pub fn supertype_of(&self, id: CoreTypeId) -> Option<CoreTypeId> {
1562
+ self.list.supertype_of(id)
1563
+ }
1564
+
1565
+ /// Gets a core WebAssembly type id from a type index.
1566
+ ///
1567
+ /// Note that this is in contrast to [`TypesRef::component_type_at`] which
1568
+ /// gets a component type from its index.
1569
+ ///
1570
+ /// # Panics
1571
+ ///
1572
+ /// This will panic if the `index` provided is out of bounds.
1573
+ pub fn core_type_at(&self, index: u32) -> ComponentCoreTypeId {
1574
+ match &self.kind {
1575
+ TypesRefKind::Module(module) => ComponentCoreTypeId::Sub(module.types[index as usize]),
1576
+ TypesRefKind::Component(component) => component.core_types[index as usize],
1577
+ }
1578
+ }
1579
+
1580
+ /// Gets a type id from a type index.
1581
+ ///
1582
+ /// # Panics
1583
+ ///
1584
+ /// Panics if `index` is not a valid type index or if this type information
1585
+ /// represents a core module.
1586
+ pub fn component_any_type_at(&self, index: u32) -> ComponentAnyTypeId {
1587
+ match &self.kind {
1588
+ TypesRefKind::Module(_) => panic!("not a component"),
1589
+ TypesRefKind::Component(component) => component.types[index as usize],
1590
+ }
1591
+ }
1592
+
1593
+ /// Gets a component type id from a type index.
1594
+ ///
1595
+ /// # Panics
1596
+ ///
1597
+ /// Panics if `index` is not a valid component type index or if this type
1598
+ /// information represents a core module.
1599
+ pub fn component_type_at(&self, index: u32) -> ComponentTypeId {
1600
+ match self.component_any_type_at(index) {
1601
+ ComponentAnyTypeId::Component(id) => id,
1602
+ _ => panic!("not a component type"),
1603
+ }
1604
+ }
1605
+
1606
+ /// Gets a type id from a type index.
1607
+ ///
1608
+ /// # Panics
1609
+ ///
1610
+ /// Panics if `index` is not a valid function index or if this type
1611
+ /// information represents a core module.
1612
+ pub fn component_defined_type_at(&self, index: u32) -> ComponentDefinedTypeId {
1613
+ match self.component_any_type_at(index) {
1614
+ ComponentAnyTypeId::Defined(id) => id,
1615
+ _ => panic!("not a defined type"),
1616
+ }
1617
+ }
1618
+
1619
+ /// Returns the number of core types defined so far.
1620
+ pub fn core_type_count(&self) -> u32 {
1621
+ match &self.kind {
1622
+ TypesRefKind::Module(module) => module.types.len() as u32,
1623
+ TypesRefKind::Component(component) => component.core_types.len() as u32,
1624
+ }
1625
+ }
1626
+
1627
+ /// Returns the number of component types defined so far.
1628
+ pub fn component_type_count(&self) -> u32 {
1629
+ match &self.kind {
1630
+ TypesRefKind::Module(_module) => 0,
1631
+ TypesRefKind::Component(component) => component.types.len() as u32,
1632
+ }
1633
+ }
1634
+
1635
+ /// Gets the type of a table at the given table index.
1636
+ ///
1637
+ /// # Panics
1638
+ ///
1639
+ /// This will panic if the `index` provided is out of bounds.
1640
+ pub fn table_at(&self, index: u32) -> TableType {
1641
+ let tables = match &self.kind {
1642
+ TypesRefKind::Module(module) => &module.tables,
1643
+ TypesRefKind::Component(component) => &component.core_tables,
1644
+ };
1645
+ tables[index as usize]
1646
+ }
1647
+
1648
+ /// Returns the number of tables defined so far.
1649
+ pub fn table_count(&self) -> u32 {
1650
+ match &self.kind {
1651
+ TypesRefKind::Module(module) => module.tables.len() as u32,
1652
+ TypesRefKind::Component(component) => component.core_tables.len() as u32,
1653
+ }
1654
+ }
1655
+
1656
+ /// Gets the type of a memory at the given memory index.
1657
+ ///
1658
+ /// # Panics
1659
+ ///
1660
+ /// This will panic if the `index` provided is out of bounds.
1661
+ pub fn memory_at(&self, index: u32) -> MemoryType {
1662
+ let memories = match &self.kind {
1663
+ TypesRefKind::Module(module) => &module.memories,
1664
+ TypesRefKind::Component(component) => &component.core_memories,
1665
+ };
1666
+
1667
+ memories[index as usize]
1668
+ }
1669
+
1670
+ /// Returns the number of memories defined so far.
1671
+ pub fn memory_count(&self) -> u32 {
1672
+ match &self.kind {
1673
+ TypesRefKind::Module(module) => module.memories.len() as u32,
1674
+ TypesRefKind::Component(component) => component.core_memories.len() as u32,
1675
+ }
1676
+ }
1677
+
1678
+ /// Gets the type of a global at the given global index.
1679
+ ///
1680
+ /// # Panics
1681
+ ///
1682
+ /// This will panic if the `index` provided is out of bounds.
1683
+ pub fn global_at(&self, index: u32) -> GlobalType {
1684
+ let globals = match &self.kind {
1685
+ TypesRefKind::Module(module) => &module.globals,
1686
+ TypesRefKind::Component(component) => &component.core_globals,
1687
+ };
1688
+
1689
+ globals[index as usize]
1690
+ }
1691
+
1692
+ /// Returns the number of globals defined so far.
1693
+ pub fn global_count(&self) -> u32 {
1694
+ match &self.kind {
1695
+ TypesRefKind::Module(module) => module.globals.len() as u32,
1696
+ TypesRefKind::Component(component) => component.core_globals.len() as u32,
1697
+ }
1698
+ }
1699
+
1700
+ /// Gets the type of a tag at the given tag index.
1701
+ ///
1702
+ /// # Panics
1703
+ ///
1704
+ /// This will panic if the `index` provided is out of bounds.
1705
+ pub fn tag_at(&self, index: u32) -> CoreTypeId {
1706
+ let tags = match &self.kind {
1707
+ TypesRefKind::Module(module) => &module.tags,
1708
+ TypesRefKind::Component(component) => &component.core_tags,
1709
+ };
1710
+ tags[index as usize]
1711
+ }
1712
+
1713
+ /// Returns the number of tags defined so far.
1714
+ pub fn tag_count(&self) -> u32 {
1715
+ match &self.kind {
1716
+ TypesRefKind::Module(module) => module.tags.len() as u32,
1717
+ TypesRefKind::Component(component) => component.core_tags.len() as u32,
1718
+ }
1719
+ }
1720
+
1721
+ /// Gets the type of a core function at the given function index.
1722
+ ///
1723
+ /// # Panics
1724
+ ///
1725
+ /// This will panic if the `index` provided is out of bounds.
1726
+ pub fn core_function_at(&self, index: u32) -> CoreTypeId {
1727
+ match &self.kind {
1728
+ TypesRefKind::Module(module) => module.types[module.functions[index as usize] as usize],
1729
+ TypesRefKind::Component(component) => component.core_funcs[index as usize],
1730
+ }
1731
+ }
1732
+
1733
+ /// Gets the count of core functions defined so far.
1734
+ ///
1735
+ /// Note that this includes imported functions, defined functions, and for
1736
+ /// components lowered/aliased functions.
1737
+ pub fn function_count(&self) -> u32 {
1738
+ match &self.kind {
1739
+ TypesRefKind::Module(module) => module.functions.len() as u32,
1740
+ TypesRefKind::Component(component) => component.core_funcs.len() as u32,
1741
+ }
1742
+ }
1743
+
1744
+ /// Gets the type of an element segment at the given element segment index.
1745
+ ///
1746
+ /// # Panics
1747
+ ///
1748
+ /// This will panic if the `index` provided is out of bounds.
1749
+ pub fn element_at(&self, index: u32) -> RefType {
1750
+ match &self.kind {
1751
+ TypesRefKind::Module(module) => module.element_types[index as usize],
1752
+ TypesRefKind::Component(_) => {
1753
+ panic!("no elements on a component")
1754
+ }
1755
+ }
1756
+ }
1757
+
1758
+ /// Returns the number of elements defined so far.
1759
+ pub fn element_count(&self) -> u32 {
1760
+ match &self.kind {
1761
+ TypesRefKind::Module(module) => module.element_types.len() as u32,
1762
+ TypesRefKind::Component(_) => 0,
1763
+ }
1764
+ }
1765
+
1766
+ /// Gets the type of a component function at the given function index.
1767
+ ///
1768
+ /// # Panics
1769
+ ///
1770
+ /// This will panic if the `index` provided is out of bounds or if this type
1771
+ /// information represents a core module.
1772
+ pub fn component_function_at(&self, index: u32) -> ComponentFuncTypeId {
1773
+ match &self.kind {
1774
+ TypesRefKind::Module(_) => panic!("not a component"),
1775
+ TypesRefKind::Component(component) => component.funcs[index as usize],
1776
+ }
1777
+ }
1778
+
1779
+ /// Returns the number of component functions defined so far.
1780
+ pub fn component_function_count(&self) -> u32 {
1781
+ match &self.kind {
1782
+ TypesRefKind::Module(_module) => 0,
1783
+ TypesRefKind::Component(component) => component.funcs.len() as u32,
1784
+ }
1785
+ }
1786
+
1787
+ /// Gets the type of a module at the given module index.
1788
+ ///
1789
+ /// # Panics
1790
+ ///
1791
+ /// This will panic if the `index` provided is out of bounds or if this type
1792
+ /// information represents a core module.
1793
+ pub fn module_at(&self, index: u32) -> ComponentCoreModuleTypeId {
1794
+ match &self.kind {
1795
+ TypesRefKind::Module(_) => panic!("not a component"),
1796
+ TypesRefKind::Component(component) => component.core_modules[index as usize],
1797
+ }
1798
+ }
1799
+
1800
+ /// Returns the number of core wasm modules defined so far.
1801
+ pub fn module_count(&self) -> u32 {
1802
+ match &self.kind {
1803
+ TypesRefKind::Module(_module) => 0,
1804
+ TypesRefKind::Component(component) => component.core_modules.len() as u32,
1805
+ }
1806
+ }
1807
+
1808
+ /// Gets the type of a module instance at the given module instance index.
1809
+ ///
1810
+ /// # Panics
1811
+ ///
1812
+ /// This will panic if the `index` provided is out of bounds or if this type
1813
+ /// information represents a core module.
1814
+ pub fn core_instance_at(&self, index: u32) -> ComponentCoreInstanceTypeId {
1815
+ match &self.kind {
1816
+ TypesRefKind::Module(_) => panic!("not a component"),
1817
+ TypesRefKind::Component(component) => component.core_instances[index as usize],
1818
+ }
1819
+ }
1820
+
1821
+ /// Returns the number of core wasm instances defined so far.
1822
+ pub fn core_instance_count(&self) -> u32 {
1823
+ match &self.kind {
1824
+ TypesRefKind::Module(_module) => 0,
1825
+ TypesRefKind::Component(component) => component.core_instances.len() as u32,
1826
+ }
1827
+ }
1828
+
1829
+ /// Gets the type of a component at the given component index.
1830
+ ///
1831
+ /// # Panics
1832
+ ///
1833
+ /// This will panic if the `index` provided is out of bounds or if this type
1834
+ /// information represents a core module.
1835
+ pub fn component_at(&self, index: u32) -> ComponentTypeId {
1836
+ match &self.kind {
1837
+ TypesRefKind::Module(_) => panic!("not a component"),
1838
+ TypesRefKind::Component(component) => component.components[index as usize],
1839
+ }
1840
+ }
1841
+
1842
+ /// Returns the number of components defined so far.
1843
+ pub fn component_count(&self) -> u32 {
1844
+ match &self.kind {
1845
+ TypesRefKind::Module(_module) => 0,
1846
+ TypesRefKind::Component(component) => component.components.len() as u32,
1847
+ }
1848
+ }
1849
+
1850
+ /// Gets the type of an component instance at the given component instance index.
1851
+ ///
1852
+ /// # Panics
1853
+ ///
1854
+ /// This will panic if the `index` provided is out of bounds or if this type
1855
+ /// information represents a core module.
1856
+ pub fn component_instance_at(&self, index: u32) -> ComponentInstanceTypeId {
1857
+ match &self.kind {
1858
+ TypesRefKind::Module(_) => panic!("not a component"),
1859
+ TypesRefKind::Component(component) => component.instances[index as usize],
1860
+ }
1861
+ }
1862
+
1863
+ /// Returns the number of component instances defined so far.
1864
+ pub fn component_instance_count(&self) -> u32 {
1865
+ match &self.kind {
1866
+ TypesRefKind::Module(_module) => 0,
1867
+ TypesRefKind::Component(component) => component.instances.len() as u32,
1868
+ }
1869
+ }
1870
+
1871
+ /// Gets the type of a value at the given value index.
1872
+ ///
1873
+ /// # Panics
1874
+ ///
1875
+ /// This will panic if the `index` provided is out of bounds or if this type
1876
+ /// information represents a core module.
1877
+ pub fn value_at(&self, index: u32) -> ComponentValType {
1878
+ match &self.kind {
1879
+ TypesRefKind::Module(_) => panic!("not a component"),
1880
+ TypesRefKind::Component(component) => component.values[index as usize].0,
1881
+ }
1882
+ }
1883
+
1884
+ /// Gets the entity type for the given import.
1885
+ pub fn entity_type_from_import(&self, import: &Import) -> Option<EntityType> {
1886
+ match &self.kind {
1887
+ TypesRefKind::Module(module) => Some(match import.ty {
1888
+ TypeRef::Func(idx) => EntityType::Func(*module.types.get(idx as usize)?),
1889
+ TypeRef::Table(ty) => EntityType::Table(ty),
1890
+ TypeRef::Memory(ty) => EntityType::Memory(ty),
1891
+ TypeRef::Global(ty) => EntityType::Global(ty),
1892
+ TypeRef::Tag(ty) => EntityType::Tag(*module.types.get(ty.func_type_idx as usize)?),
1893
+ }),
1894
+ TypesRefKind::Component(_) => None,
1895
+ }
1896
+ }
1897
+
1898
+ /// Gets the entity type from the given export.
1899
+ pub fn entity_type_from_export(&self, export: &Export) -> Option<EntityType> {
1900
+ match &self.kind {
1901
+ TypesRefKind::Module(module) => Some(match export.kind {
1902
+ ExternalKind::Func => EntityType::Func(
1903
+ module.types[*module.functions.get(export.index as usize)? as usize],
1904
+ ),
1905
+ ExternalKind::Table => {
1906
+ EntityType::Table(*module.tables.get(export.index as usize)?)
1907
+ }
1908
+ ExternalKind::Memory => {
1909
+ EntityType::Memory(*module.memories.get(export.index as usize)?)
1910
+ }
1911
+ ExternalKind::Global => {
1912
+ EntityType::Global(*module.globals.get(export.index as usize)?)
1913
+ }
1914
+ ExternalKind::Tag => EntityType::Tag(
1915
+ module.types[*module.functions.get(export.index as usize)? as usize],
1916
+ ),
1917
+ }),
1918
+ TypesRefKind::Component(_) => None,
1919
+ }
1920
+ }
1921
+
1922
+ /// Gets the component entity type for the given component import.
1923
+ pub fn component_entity_type_of_import(&self, name: &str) -> Option<ComponentEntityType> {
1924
+ match &self.kind {
1925
+ TypesRefKind::Module(_) => None,
1926
+ TypesRefKind::Component(component) => Some(*component.imports.get(name)?),
1927
+ }
1928
+ }
1929
+
1930
+ /// Gets the component entity type for the given component export.
1931
+ pub fn component_entity_type_of_export(&self, name: &str) -> Option<ComponentEntityType> {
1932
+ match &self.kind {
1933
+ TypesRefKind::Module(_) => None,
1934
+ TypesRefKind::Component(component) => Some(*component.exports.get(name)?),
1935
+ }
1936
+ }
1937
+
1938
+ /// Attempts to lookup the type id that `ty` is an alias of.
1939
+ ///
1940
+ /// Returns `None` if `ty` wasn't listed as aliasing a prior type.
1941
+ pub fn peel_alias<T>(&self, ty: T) -> Option<T>
1942
+ where
1943
+ T: Aliasable,
1944
+ {
1945
+ self.list.peel_alias(ty)
1946
+ }
1947
+ }
1948
+
1949
+ impl<T> Index<T> for TypesRef<'_>
1950
+ where
1951
+ T: TypeIdentifier,
1952
+ {
1953
+ type Output = T::Data;
1954
+
1955
+ fn index(&self, index: T) -> &Self::Output {
1956
+ &self.list[index]
1957
+ }
1958
+ }
1959
+
1960
+ impl Types {
1961
+ pub(crate) fn from_module(id: ValidatorId, types: TypeList, module: Arc<Module>) -> Self {
1962
+ Self {
1963
+ id,
1964
+ list: types,
1965
+ kind: TypesKind::Module(module),
1966
+ }
1967
+ }
1968
+
1969
+ pub(crate) fn from_component(
1970
+ id: ValidatorId,
1971
+ types: TypeList,
1972
+ component: ComponentState,
1973
+ ) -> Self {
1974
+ Self {
1975
+ id,
1976
+ list: types,
1977
+ kind: TypesKind::Component(component),
1978
+ }
1979
+ }
1980
+
1981
+ /// Get the id of the validator that these types are associated with.
1982
+ #[inline]
1983
+ pub fn id(&self) -> ValidatorId {
1984
+ self.id
1985
+ }
1986
+
1987
+ /// Gets a reference to this validation type information.
1988
+ pub fn as_ref(&self) -> TypesRef {
1989
+ TypesRef {
1990
+ id: self.id,
1991
+ list: &self.list,
1992
+ kind: match &self.kind {
1993
+ TypesKind::Module(module) => TypesRefKind::Module(module),
1994
+ TypesKind::Component(component) => TypesRefKind::Component(component),
1995
+ },
1996
+ }
1997
+ }
1998
+
1999
+ /// Gets a type based on its type id.
2000
+ ///
2001
+ /// Returns `None` if the type id is unknown.
2002
+ pub fn get<T>(&self, id: T) -> Option<&T::Data>
2003
+ where
2004
+ T: TypeIdentifier,
2005
+ {
2006
+ self.as_ref().get(id)
2007
+ }
2008
+
2009
+ /// Gets a core WebAssembly type at the given type index.
2010
+ ///
2011
+ /// Note that this is in contrast to [`TypesRef::component_type_at`] which
2012
+ /// gets a component type from its index.
2013
+ ///
2014
+ /// # Panics
2015
+ ///
2016
+ /// Panics if `index` is not a valid function index.
2017
+ pub fn core_type_at(&self, index: u32) -> ComponentCoreTypeId {
2018
+ self.as_ref().core_type_at(index)
2019
+ }
2020
+
2021
+ /// Gets a component WebAssembly type at the given type index.
2022
+ ///
2023
+ /// Note that this is in contrast to [`TypesRef::core_type_at`] which gets a
2024
+ /// core type from its index.
2025
+ ///
2026
+ /// # Panics
2027
+ ///
2028
+ /// Panics if `index` is not a valid type index.
2029
+ pub fn component_any_type_at(&self, index: u32) -> ComponentAnyTypeId {
2030
+ self.as_ref().component_any_type_at(index)
2031
+ }
2032
+
2033
+ /// Gets a component type at the given type index.
2034
+ ///
2035
+ /// # Panics
2036
+ ///
2037
+ /// Panics if `index` is not a valid component type index.
2038
+ pub fn component_type_at(&self, index: u32) -> ComponentTypeId {
2039
+ self.as_ref().component_type_at(index)
2040
+ }
2041
+
2042
+ /// Gets a component type from the given component type index.
2043
+ ///
2044
+ /// # Panics
2045
+ ///
2046
+ /// Panics if `index` is not a valid defined type index or if this type
2047
+ /// information represents a core module.
2048
+ pub fn component_defined_type_at(&self, index: u32) -> ComponentDefinedTypeId {
2049
+ self.as_ref().component_defined_type_at(index)
2050
+ }
2051
+
2052
+ /// Gets the count of core types.
2053
+ pub fn type_count(&self) -> usize {
2054
+ match &self.kind {
2055
+ TypesKind::Module(module) => module.types.len(),
2056
+ TypesKind::Component(component) => component.core_types.len(),
2057
+ }
2058
+ }
2059
+
2060
+ /// Gets the type of a table at the given table index.
2061
+ ///
2062
+ /// # Panics
2063
+ ///
2064
+ /// Panics if `index` is not a valid function index.
2065
+ pub fn table_at(&self, index: u32) -> TableType {
2066
+ self.as_ref().table_at(index)
2067
+ }
2068
+
2069
+ /// Gets the count of imported and defined tables.
2070
+ pub fn table_count(&self) -> usize {
2071
+ match &self.kind {
2072
+ TypesKind::Module(module) => module.tables.len(),
2073
+ TypesKind::Component(component) => component.core_tables.len(),
2074
+ }
2075
+ }
2076
+
2077
+ /// Gets the type of a memory at the given memory index.
2078
+ ///
2079
+ /// # Panics
2080
+ ///
2081
+ /// Panics if `index` is not a valid function index.
2082
+ pub fn memory_at(&self, index: u32) -> MemoryType {
2083
+ self.as_ref().memory_at(index)
2084
+ }
2085
+
2086
+ /// Gets the count of imported and defined memories.
2087
+ pub fn memory_count(&self) -> u32 {
2088
+ self.as_ref().memory_count()
2089
+ }
2090
+
2091
+ /// Gets the type of a global at the given global index.
2092
+ ///
2093
+ /// # Panics
2094
+ ///
2095
+ /// Panics if `index` is not a valid function index.
2096
+ pub fn global_at(&self, index: u32) -> GlobalType {
2097
+ self.as_ref().global_at(index)
2098
+ }
2099
+
2100
+ /// Gets the count of imported and defined globals.
2101
+ pub fn global_count(&self) -> u32 {
2102
+ self.as_ref().global_count()
2103
+ }
2104
+
2105
+ /// Gets the type of a tag at the given tag index.
2106
+ ///
2107
+ /// # Panics
2108
+ ///
2109
+ /// Panics if `index` is not a valid function index.
2110
+ pub fn tag_at(&self, index: u32) -> CoreTypeId {
2111
+ self.as_ref().tag_at(index)
2112
+ }
2113
+
2114
+ /// Gets the count of imported and defined tags.
2115
+ pub fn tag_count(&self) -> u32 {
2116
+ self.as_ref().tag_count()
2117
+ }
2118
+
2119
+ /// Gets the type of a core function at the given function index.
2120
+ ///
2121
+ /// # Panics
2122
+ ///
2123
+ /// Panics if `index` is not a valid function index.
2124
+ pub fn core_function_at(&self, index: u32) -> CoreTypeId {
2125
+ self.as_ref().core_function_at(index)
2126
+ }
2127
+
2128
+ /// Gets the count of core functions defined so far.
2129
+ ///
2130
+ /// Note that this includes imported functions, defined functions, and for
2131
+ /// components lowered/aliased functions.
2132
+ pub fn core_function_count(&self) -> u32 {
2133
+ self.as_ref().function_count()
2134
+ }
2135
+
2136
+ /// Gets the type of an element segment at the given element segment index.
2137
+ ///
2138
+ /// # Panics
2139
+ ///
2140
+ /// This will panic if the `index` provided is out of bounds.
2141
+ pub fn element_at(&self, index: u32) -> RefType {
2142
+ self.as_ref().element_at(index)
2143
+ }
2144
+
2145
+ /// Gets the count of element segments.
2146
+ pub fn element_count(&self) -> u32 {
2147
+ self.as_ref().element_count()
2148
+ }
2149
+
2150
+ /// Gets the type of a component function at the given function index.
2151
+ ///
2152
+ /// # Panics
2153
+ ///
2154
+ /// This will panic if the `index` provided is out of bounds or if this type
2155
+ /// information represents a core module.
2156
+ pub fn component_function_at(&self, index: u32) -> ComponentFuncTypeId {
2157
+ self.as_ref().component_function_at(index)
2158
+ }
2159
+
2160
+ /// Gets the count of imported, exported, or aliased component functions.
2161
+ pub fn component_function_count(&self) -> u32 {
2162
+ self.as_ref().component_function_count()
2163
+ }
2164
+
2165
+ /// Gets the type of a module at the given module index.
2166
+ ///
2167
+ /// # Panics
2168
+ ///
2169
+ /// This will panic if the `index` provided is out of bounds or if this type
2170
+ /// information represents a core module.
2171
+ pub fn module_at(&self, index: u32) -> ComponentCoreModuleTypeId {
2172
+ self.as_ref().module_at(index)
2173
+ }
2174
+
2175
+ /// Gets the count of imported, exported, or aliased modules.
2176
+ pub fn module_count(&self) -> usize {
2177
+ match &self.kind {
2178
+ TypesKind::Module(_) => 0,
2179
+ TypesKind::Component(component) => component.core_modules.len(),
2180
+ }
2181
+ }
2182
+
2183
+ /// Gets the type of a module instance at the given module instance index.
2184
+ ///
2185
+ /// # Panics
2186
+ ///
2187
+ /// This will panic if the `index` provided is out of bounds or if this type
2188
+ /// information represents a core module.
2189
+ pub fn core_instance_at(&self, index: u32) -> ComponentCoreInstanceTypeId {
2190
+ self.as_ref().core_instance_at(index)
2191
+ }
2192
+
2193
+ /// Gets the count of imported, exported, or aliased core module instances.
2194
+ pub fn core_instance_count(&self) -> usize {
2195
+ match &self.kind {
2196
+ TypesKind::Module(_) => 0,
2197
+ TypesKind::Component(component) => component.core_instances.len(),
2198
+ }
2199
+ }
2200
+
2201
+ /// Gets the type of a component at the given component index.
2202
+ ///
2203
+ /// # Panics
2204
+ ///
2205
+ /// This will panic if the `index` provided is out of bounds or if this type
2206
+ /// information represents a core module.
2207
+ pub fn component_at(&self, index: u32) -> ComponentTypeId {
2208
+ self.as_ref().component_at(index)
2209
+ }
2210
+
2211
+ /// Gets the count of imported, exported, or aliased components.
2212
+ pub fn component_count(&self) -> usize {
2213
+ match &self.kind {
2214
+ TypesKind::Module(_) => 0,
2215
+ TypesKind::Component(component) => component.components.len(),
2216
+ }
2217
+ }
2218
+
2219
+ /// Gets the type of an component instance at the given component instance index.
2220
+ ///
2221
+ /// # Panics
2222
+ ///
2223
+ /// This will panic if the `index` provided is out of bounds or if this type
2224
+ /// information represents a core module.
2225
+ pub fn component_instance_at(&self, index: u32) -> ComponentInstanceTypeId {
2226
+ self.as_ref().component_instance_at(index)
2227
+ }
2228
+
2229
+ /// Gets the count of imported, exported, or aliased component instances.
2230
+ pub fn component_instance_count(&self) -> usize {
2231
+ match &self.kind {
2232
+ TypesKind::Module(_) => 0,
2233
+ TypesKind::Component(component) => component.instances.len(),
2234
+ }
2235
+ }
2236
+
2237
+ /// Gets the type of a value at the given value index.
2238
+ ///
2239
+ /// # Panics
2240
+ ///
2241
+ /// This will panic if the `index` provided is out of bounds or if this type
2242
+ /// information represents a core module.
2243
+ pub fn value_at(&self, index: u32) -> ComponentValType {
2244
+ self.as_ref().value_at(index)
2245
+ }
2246
+
2247
+ /// Gets the count of imported, exported, or aliased values.
2248
+ pub fn value_count(&self) -> usize {
2249
+ match &self.kind {
2250
+ TypesKind::Module(_) => 0,
2251
+ TypesKind::Component(component) => component.values.len(),
2252
+ }
2253
+ }
2254
+
2255
+ /// Gets the entity type from the given import.
2256
+ pub fn entity_type_from_import(&self, import: &Import) -> Option<EntityType> {
2257
+ self.as_ref().entity_type_from_import(import)
2258
+ }
2259
+
2260
+ /// Gets the entity type from the given export.
2261
+ pub fn entity_type_from_export(&self, export: &Export) -> Option<EntityType> {
2262
+ self.as_ref().entity_type_from_export(export)
2263
+ }
2264
+
2265
+ /// Gets the component entity type for the given component import name.
2266
+ pub fn component_entity_type_of_import(&self, name: &str) -> Option<ComponentEntityType> {
2267
+ self.as_ref().component_entity_type_of_import(name)
2268
+ }
2269
+
2270
+ /// Gets the component entity type for the given component export name.
2271
+ pub fn component_entity_type_of_export(&self, name: &str) -> Option<ComponentEntityType> {
2272
+ self.as_ref().component_entity_type_of_export(name)
2273
+ }
2274
+
2275
+ /// Attempts to lookup the type id that `ty` is an alias of.
2276
+ ///
2277
+ /// Returns `None` if `ty` wasn't listed as aliasing a prior type.
2278
+ pub fn peel_alias<T>(&self, ty: T) -> Option<T>
2279
+ where
2280
+ T: Aliasable,
2281
+ {
2282
+ self.list.peel_alias(ty)
2283
+ }
2284
+ }
2285
+
2286
+ impl<T> Index<T> for Types
2287
+ where
2288
+ T: TypeIdentifier,
2289
+ {
2290
+ type Output = T::Data;
2291
+
2292
+ fn index(&self, id: T) -> &Self::Output {
2293
+ &self.list[id]
2294
+ }
2295
+ }
2296
+
2297
+ /// This is a type which mirrors a subset of the `Vec<T>` API, but is intended
2298
+ /// to be able to be cheaply snapshotted and cloned.
2299
+ ///
2300
+ /// When each module's code sections start we "commit" the current list of types
2301
+ /// in the global list of types. This means that the temporary `cur` vec here is
2302
+ /// pushed onto `snapshots` and wrapped up in an `Arc`. At that point we clone
2303
+ /// this entire list (which is then O(modules), not O(types in all modules)) and
2304
+ /// pass out as a context to each function validator.
2305
+ ///
2306
+ /// Otherwise, though, this type behaves as if it were a large `Vec<T>`, but
2307
+ /// it's represented by lists of contiguous chunks.
2308
+ //
2309
+ // Only public because it shows up in a public trait's `doc(hidden)` method.
2310
+ #[doc(hidden)]
2311
+ #[derive(Debug)]
2312
+ pub struct SnapshotList<T> {
2313
+ // All previous snapshots, the "head" of the list that this type represents.
2314
+ // The first entry in this pair is the starting index for all elements
2315
+ // contained in the list, and the second element is the list itself. Note
2316
+ // the `Arc` wrapper around sub-lists, which makes cloning time for this
2317
+ // `SnapshotList` O(snapshots) rather than O(snapshots_total), which for
2318
+ // us in this context means the number of modules, not types.
2319
+ //
2320
+ // Note that this list is sorted least-to-greatest in order of the index for
2321
+ // binary searching.
2322
+ snapshots: Vec<Arc<Snapshot<T>>>,
2323
+
2324
+ // This is the total length of all lists in the `snapshots` array.
2325
+ snapshots_total: usize,
2326
+
2327
+ // The current list of types for the current snapshot that are being built.
2328
+ cur: Vec<T>,
2329
+ }
2330
+
2331
+ #[derive(Debug)]
2332
+ struct Snapshot<T> {
2333
+ prior_types: usize,
2334
+ items: Vec<T>,
2335
+ }
2336
+
2337
+ impl<T> SnapshotList<T> {
2338
+ /// Same as `<&[T]>::get`
2339
+ pub(crate) fn get(&self, index: usize) -> Option<&T> {
2340
+ // Check to see if this index falls on our local list
2341
+ if index >= self.snapshots_total {
2342
+ return self.cur.get(index - self.snapshots_total);
2343
+ }
2344
+ // ... and failing that we do a binary search to figure out which bucket
2345
+ // it's in. Note the `i-1` in the `Err` case because if we don't find an
2346
+ // exact match the type is located in the previous bucket.
2347
+ let i = match self
2348
+ .snapshots
2349
+ .binary_search_by_key(&index, |snapshot| snapshot.prior_types)
2350
+ {
2351
+ Ok(i) => i,
2352
+ Err(i) => i - 1,
2353
+ };
2354
+ let snapshot = &self.snapshots[i];
2355
+ Some(&snapshot.items[index - snapshot.prior_types])
2356
+ }
2357
+
2358
+ /// Same as `Vec::push`
2359
+ pub(crate) fn push(&mut self, val: T) {
2360
+ self.cur.push(val);
2361
+ }
2362
+
2363
+ /// Same as `<[T]>::len`
2364
+ pub(crate) fn len(&self) -> usize {
2365
+ self.cur.len() + self.snapshots_total
2366
+ }
2367
+
2368
+ /// Same as `Vec::truncate` but can only truncate uncommitted elements.
2369
+ pub(crate) fn truncate(&mut self, len: usize) {
2370
+ assert!(len >= self.snapshots_total);
2371
+ self.cur.truncate(len - self.snapshots_total);
2372
+ }
2373
+
2374
+ /// Commits previously pushed types into this snapshot vector, and returns a
2375
+ /// clone of this list.
2376
+ ///
2377
+ /// The returned `SnapshotList` can be used to access all the same types as
2378
+ /// this list itself. This list also is not changed (from an external
2379
+ /// perspective) and can continue to access all the same types.
2380
+ pub(crate) fn commit(&mut self) -> SnapshotList<T> {
2381
+ // If the current chunk has new elements, commit them in to an
2382
+ // `Arc`-wrapped vector in the snapshots list. Note the `shrink_to_fit`
2383
+ // ahead of time to hopefully keep memory usage lower than it would
2384
+ // otherwise be.
2385
+ let len = self.cur.len();
2386
+ if len > 0 {
2387
+ self.cur.shrink_to_fit();
2388
+ self.snapshots.push(Arc::new(Snapshot {
2389
+ prior_types: self.snapshots_total,
2390
+ items: mem::take(&mut self.cur),
2391
+ }));
2392
+ self.snapshots_total += len;
2393
+ }
2394
+ SnapshotList {
2395
+ snapshots: self.snapshots.clone(),
2396
+ snapshots_total: self.snapshots_total,
2397
+ cur: Vec::new(),
2398
+ }
2399
+ }
2400
+ }
2401
+
2402
+ impl<T> Index<usize> for SnapshotList<T> {
2403
+ type Output = T;
2404
+
2405
+ #[inline]
2406
+ fn index(&self, index: usize) -> &T {
2407
+ self.get(index).unwrap()
2408
+ }
2409
+ }
2410
+
2411
+ impl<T, U> Index<U> for SnapshotList<T>
2412
+ where
2413
+ U: TypeIdentifier<Data = T>,
2414
+ {
2415
+ type Output = T;
2416
+
2417
+ #[inline]
2418
+ fn index(&self, id: U) -> &T {
2419
+ self.get(id.index()).unwrap()
2420
+ }
2421
+ }
2422
+
2423
+ impl<T> Default for SnapshotList<T> {
2424
+ fn default() -> SnapshotList<T> {
2425
+ SnapshotList {
2426
+ snapshots: Vec::new(),
2427
+ snapshots_total: 0,
2428
+ cur: Vec::new(),
2429
+ }
2430
+ }
2431
+ }
2432
+
2433
+ /// A snapshot list of types.
2434
+ ///
2435
+ /// Note that the snapshot lists below do not correspond with index spaces. Many
2436
+ /// different kinds of types are in the same index space (e.g. all of the
2437
+ /// component model's {component, instance, defined, func} types are in the same
2438
+ /// index space). However, we store each of them in their own type-specific
2439
+ /// snapshot list and give each of them their own identifier type.
2440
+ #[derive(Default, Debug)]
2441
+ // Only public because it shows up in a public trait's `doc(hidden)` method.
2442
+ #[doc(hidden)]
2443
+ pub struct TypeList {
2444
+ // Keeps track of which `alias_id` is an alias of which other `alias_id`.
2445
+ alias_mappings: Map<u32, u32>,
2446
+ // Counter for generating new `alias_id`s.
2447
+ alias_counter: u32,
2448
+ // Snapshots of previously committed `TypeList`s' aliases.
2449
+ alias_snapshots: Vec<TypeListAliasSnapshot>,
2450
+
2451
+ // Core Wasm types.
2452
+ //
2453
+ // A primary map from `CoreTypeId` to `SubType`.
2454
+ core_types: SnapshotList<SubType>,
2455
+ // The id of each core Wasm type's rec group.
2456
+ //
2457
+ // A secondary map from `CoreTypeId` to `RecGroupId`.
2458
+ core_type_to_rec_group: SnapshotList<RecGroupId>,
2459
+ // The supertype of each core type.
2460
+ //
2461
+ // A secondary map from `CoreTypeId` to `Option<CoreTypeId>`.
2462
+ core_type_to_supertype: SnapshotList<Option<CoreTypeId>>,
2463
+ // The subtyping depth of each core type. We use `u8::MAX` as a sentinel for
2464
+ // an uninitialized entry.
2465
+ //
2466
+ // A secondary map from `CoreTypeId` to `u8`.
2467
+ core_type_to_depth: Option<IndexMap<CoreTypeId, u8>>,
2468
+ // A primary map from `RecGroupId` to the range of the rec group's elements
2469
+ // within `core_types`.
2470
+ rec_group_elements: SnapshotList<Range<CoreTypeId>>,
2471
+ // A hash map from rec group elements to their canonical `RecGroupId`.
2472
+ //
2473
+ // This is `None` when a list is "committed" meaning that no more insertions
2474
+ // can happen.
2475
+ canonical_rec_groups: Option<Map<RecGroup, RecGroupId>>,
2476
+
2477
+ // Component model types.
2478
+ components: SnapshotList<ComponentType>,
2479
+ component_defined_types: SnapshotList<ComponentDefinedType>,
2480
+ component_values: SnapshotList<ComponentValType>,
2481
+ component_instances: SnapshotList<ComponentInstanceType>,
2482
+ component_funcs: SnapshotList<ComponentFuncType>,
2483
+ core_modules: SnapshotList<ModuleType>,
2484
+ core_instances: SnapshotList<InstanceType>,
2485
+ }
2486
+
2487
+ #[derive(Clone, Debug)]
2488
+ struct TypeListAliasSnapshot {
2489
+ // The `alias_counter` at the time that this snapshot was taken.
2490
+ alias_counter: u32,
2491
+
2492
+ // The alias mappings in this snapshot.
2493
+ alias_mappings: Map<u32, u32>,
2494
+ }
2495
+
2496
+ struct TypeListCheckpoint {
2497
+ core_types: usize,
2498
+ components: usize,
2499
+ component_defined_types: usize,
2500
+ component_values: usize,
2501
+ component_instances: usize,
2502
+ component_funcs: usize,
2503
+ core_modules: usize,
2504
+ core_instances: usize,
2505
+ core_type_to_rec_group: usize,
2506
+ core_type_to_supertype: usize,
2507
+ core_type_to_depth: usize,
2508
+ rec_group_elements: usize,
2509
+ canonical_rec_groups: usize,
2510
+ }
2511
+
2512
+ impl TypeList {
2513
+ pub fn get<T>(&self, id: T) -> Option<&T::Data>
2514
+ where
2515
+ T: TypeIdentifier,
2516
+ {
2517
+ T::list(self).get(id.index())
2518
+ }
2519
+
2520
+ pub fn push<T>(&mut self, ty: T) -> T::Id
2521
+ where
2522
+ T: TypeData,
2523
+ {
2524
+ let index = u32::try_from(T::Id::list(self).len()).unwrap();
2525
+ let id = T::Id::from_index(index);
2526
+ T::Id::list_mut(self).push(ty);
2527
+ id
2528
+ }
2529
+
2530
+ /// Intern the given recursion group (that has already been canonicalized)
2531
+ /// and return its associated id and whether this was a new recursion group
2532
+ /// or not.
2533
+ pub fn intern_canonical_rec_group(&mut self, rec_group: RecGroup) -> (bool, RecGroupId) {
2534
+ let canonical_rec_groups = self
2535
+ .canonical_rec_groups
2536
+ .as_mut()
2537
+ .expect("cannot intern into a committed list");
2538
+ let entry = match canonical_rec_groups.entry(rec_group) {
2539
+ Entry::Occupied(e) => return (false, *e.get()),
2540
+ Entry::Vacant(e) => e,
2541
+ };
2542
+
2543
+ let rec_group_id = self.rec_group_elements.len();
2544
+ let rec_group_id = u32::try_from(rec_group_id).unwrap();
2545
+ let rec_group_id = RecGroupId::from_index(rec_group_id);
2546
+
2547
+ let start = self.core_types.len();
2548
+ let start = u32::try_from(start).unwrap();
2549
+ let start = CoreTypeId::from_index(start);
2550
+
2551
+ for ty in entry.key().types() {
2552
+ debug_assert_eq!(self.core_types.len(), self.core_type_to_supertype.len());
2553
+ debug_assert_eq!(self.core_types.len(), self.core_type_to_rec_group.len());
2554
+
2555
+ self.core_type_to_supertype
2556
+ .push(ty.supertype_idx.map(|idx| match idx.unpack() {
2557
+ UnpackedIndex::RecGroup(offset) => CoreTypeId::from_index(start.index + offset),
2558
+ UnpackedIndex::Id(id) => id,
2559
+ UnpackedIndex::Module(_) => unreachable!("in canonical form"),
2560
+ }));
2561
+ let mut ty = ty.clone();
2562
+ ty.remap_indices(&mut |index| {
2563
+ match index.unpack() {
2564
+ UnpackedIndex::Id(_) => {}
2565
+ UnpackedIndex::Module(_) => unreachable!(),
2566
+ UnpackedIndex::RecGroup(offset) => {
2567
+ *index = UnpackedIndex::Id(CoreTypeId::from_index(start.index + offset))
2568
+ .pack()
2569
+ .unwrap();
2570
+ }
2571
+ };
2572
+ Ok(())
2573
+ })
2574
+ .expect("cannot fail");
2575
+ self.core_types.push(ty);
2576
+ self.core_type_to_rec_group.push(rec_group_id);
2577
+ }
2578
+
2579
+ let end = self.core_types.len();
2580
+ let end = u32::try_from(end).unwrap();
2581
+ let end = CoreTypeId::from_index(end);
2582
+
2583
+ let range = start..end;
2584
+
2585
+ self.rec_group_elements.push(range.clone());
2586
+
2587
+ entry.insert(rec_group_id);
2588
+ return (true, rec_group_id);
2589
+ }
2590
+
2591
+ /// Get the `CoreTypeId` for a local index into a rec group.
2592
+ pub fn rec_group_local_id(
2593
+ &self,
2594
+ rec_group: RecGroupId,
2595
+ index: u32,
2596
+ offset: usize,
2597
+ ) -> Result<CoreTypeId> {
2598
+ let elems = &self[rec_group];
2599
+ let len = elems.end.index() - elems.start.index();
2600
+ let len = u32::try_from(len).unwrap();
2601
+ if index < len {
2602
+ let id = u32::try_from(elems.start.index()).unwrap() + index;
2603
+ let id = CoreTypeId::from_index(id);
2604
+ Ok(id)
2605
+ } else {
2606
+ bail!(
2607
+ offset,
2608
+ "unknown type {index}: type index out of rec group bounds"
2609
+ )
2610
+ }
2611
+ }
2612
+
2613
+ /// Get the id of the rec group that the given type id was defined within.
2614
+ pub fn rec_group_id_of(&self, id: CoreTypeId) -> RecGroupId {
2615
+ self.core_type_to_rec_group[id.index()]
2616
+ }
2617
+
2618
+ /// Get the super type of the given type id, if any.
2619
+ pub fn supertype_of(&self, id: CoreTypeId) -> Option<CoreTypeId> {
2620
+ self.core_type_to_supertype[id.index()]
2621
+ }
2622
+
2623
+ /// Get the subtyping depth of the given type. A type without any supertype
2624
+ /// has depth 0.
2625
+ pub fn get_subtyping_depth(&self, id: CoreTypeId) -> u8 {
2626
+ let depth = self
2627
+ .core_type_to_depth
2628
+ .as_ref()
2629
+ .expect("cannot get subtype depth from a committed list")[id.index()];
2630
+ debug_assert!(usize::from(depth) <= crate::limits::MAX_WASM_SUBTYPING_DEPTH);
2631
+ depth
2632
+ }
2633
+
2634
+ /// Set the subtyping depth of the given type. This may only be done once
2635
+ /// per type.
2636
+ pub fn set_subtyping_depth(&mut self, id: CoreTypeId, depth: u8) {
2637
+ debug_assert!(usize::from(depth) <= crate::limits::MAX_WASM_SUBTYPING_DEPTH);
2638
+ let map = self
2639
+ .core_type_to_depth
2640
+ .as_mut()
2641
+ .expect("cannot set a subtype depth in a committed list");
2642
+ debug_assert!(!map.contains_key(&id));
2643
+ map.insert(id, depth);
2644
+ }
2645
+
2646
+ /// Get the `CoreTypeId` for a canonicalized `PackedIndex`.
2647
+ ///
2648
+ /// Panics when given a non-canonicalized `PackedIndex`.
2649
+ pub fn at_canonicalized_packed_index(
2650
+ &self,
2651
+ rec_group: RecGroupId,
2652
+ index: PackedIndex,
2653
+ offset: usize,
2654
+ ) -> Result<CoreTypeId> {
2655
+ self.at_canonicalized_unpacked_index(rec_group, index.unpack(), offset)
2656
+ }
2657
+
2658
+ /// Get the `CoreTypeId` for a canonicalized `UnpackedIndex`.
2659
+ ///
2660
+ /// Panics when given a non-canonicalized `PackedIndex`.
2661
+ pub fn at_canonicalized_unpacked_index(
2662
+ &self,
2663
+ rec_group: RecGroupId,
2664
+ index: UnpackedIndex,
2665
+ offset: usize,
2666
+ ) -> Result<CoreTypeId> {
2667
+ match index {
2668
+ UnpackedIndex::Module(_) => panic!("not canonicalized"),
2669
+ UnpackedIndex::Id(id) => Ok(id),
2670
+ UnpackedIndex::RecGroup(idx) => self.rec_group_local_id(rec_group, idx, offset),
2671
+ }
2672
+ }
2673
+
2674
+ /// Does `a` structurally match `b`?
2675
+ pub fn matches(&self, a: CoreTypeId, b: CoreTypeId) -> bool {
2676
+ let a = WithRecGroup::new(self, a);
2677
+ let a = WithRecGroup::map(a, |a| &self[a]);
2678
+
2679
+ let b = WithRecGroup::new(self, b);
2680
+ let b = WithRecGroup::map(b, |b| &self[b]);
2681
+
2682
+ Matches::matches(self, a, b)
2683
+ }
2684
+
2685
+ /// Is `a == b` or was `a` declared (potentially transitively) to be a
2686
+ /// subtype of `b`?
2687
+ pub fn id_is_subtype(&self, mut a: CoreTypeId, b: CoreTypeId) -> bool {
2688
+ loop {
2689
+ if a == b {
2690
+ return true;
2691
+ }
2692
+
2693
+ // TODO: maintain supertype vectors and implement this check in O(1)
2694
+ // instead of O(n) time.
2695
+ a = match self.supertype_of(a) {
2696
+ Some(a) => a,
2697
+ None => return false,
2698
+ };
2699
+ }
2700
+ }
2701
+
2702
+ /// Like `id_is_subtype` but for `RefType`s.
2703
+ ///
2704
+ /// Both `a` and `b` must be canonicalized already.
2705
+ pub fn reftype_is_subtype(&self, a: RefType, b: RefType) -> bool {
2706
+ // NB: Don't need `RecGroupId`s since we are calling from outside of the
2707
+ // rec group, and so any `PackedIndex`es we encounter have already been
2708
+ // canonicalized to `CoreTypeId`s directly.
2709
+ self.reftype_is_subtype_impl(a, None, b, None)
2710
+ }
2711
+
2712
+ /// Implementation of `RefType` and `HeapType` subtyping.
2713
+ ///
2714
+ /// Panics if we need rec groups but aren't given them. Rec groups only need
2715
+ /// to be passed in when checking subtyping of `RefType`s that we encounter
2716
+ /// while validating a rec group itself.
2717
+ pub(crate) fn reftype_is_subtype_impl(
2718
+ &self,
2719
+ a: RefType,
2720
+ a_group: Option<RecGroupId>,
2721
+ b: RefType,
2722
+ b_group: Option<RecGroupId>,
2723
+ ) -> bool {
2724
+ if a == b && a_group == b_group {
2725
+ return true;
2726
+ }
2727
+
2728
+ if a.is_nullable() && !b.is_nullable() {
2729
+ return false;
2730
+ }
2731
+
2732
+ let core_type_id = |group: Option<RecGroupId>, index: UnpackedIndex| -> CoreTypeId {
2733
+ if let Some(id) = index.as_core_type_id() {
2734
+ id
2735
+ } else {
2736
+ self.at_canonicalized_unpacked_index(group.unwrap(), index, usize::MAX)
2737
+ .expect("type references are checked during canonicalization")
2738
+ }
2739
+ };
2740
+
2741
+ let subtype = |group, index| -> &SubType {
2742
+ let id = core_type_id(group, index);
2743
+ &self[id]
2744
+ };
2745
+
2746
+ use AbstractHeapType::*;
2747
+ use HeapType as HT;
2748
+ match (a.heap_type(), b.heap_type()) {
2749
+ (a, b) if a == b => true,
2750
+
2751
+ (
2752
+ HT::Abstract {
2753
+ shared: a_shared,
2754
+ ty: a_ty,
2755
+ },
2756
+ HT::Abstract {
2757
+ shared: b_shared,
2758
+ ty: b_ty,
2759
+ },
2760
+ ) => {
2761
+ a_shared == b_shared
2762
+ && match (a_ty, b_ty) {
2763
+ (Eq | I31 | Struct | Array | None, Any) => true,
2764
+ (I31 | Struct | Array | None, Eq) => true,
2765
+ (NoExtern, Extern) => true,
2766
+ (NoFunc, Func) => true,
2767
+ (None, I31 | Array | Struct) => true,
2768
+ (NoExn, Exn) => true,
2769
+ // Nothing else matches. (Avoid full wildcard matches so
2770
+ // that adding/modifying variants is easier in the
2771
+ // future.)
2772
+ (
2773
+ Func | Extern | Exn | Any | Eq | Array | I31 | Struct | None | NoFunc
2774
+ | NoExtern | NoExn,
2775
+ _,
2776
+ ) => false,
2777
+ }
2778
+ }
2779
+
2780
+ (HT::Concrete(a), HT::Abstract { shared, ty }) => {
2781
+ if shared {
2782
+ // TODO: handle shared
2783
+ todo!("check shared-ness of concrete type");
2784
+ }
2785
+ match ty {
2786
+ Any | Eq => matches!(
2787
+ subtype(a_group, a).composite_type,
2788
+ CompositeType::Array(_) | CompositeType::Struct(_)
2789
+ ),
2790
+ Struct => {
2791
+ matches!(subtype(a_group, a).composite_type, CompositeType::Struct(_))
2792
+ }
2793
+ Array => {
2794
+ matches!(subtype(a_group, a).composite_type, CompositeType::Array(_))
2795
+ }
2796
+ Func => {
2797
+ matches!(subtype(a_group, a).composite_type, CompositeType::Func(_))
2798
+ }
2799
+ // Nothing else matches. (Avoid full wildcard matches so
2800
+ // that adding/modifying variants is easier in the future.)
2801
+ Extern | Exn | I31 | None | NoFunc | NoExtern | NoExn => false,
2802
+ }
2803
+ }
2804
+
2805
+ (HT::Abstract { shared, ty }, HT::Concrete(b)) => {
2806
+ if shared {
2807
+ // TODO: handle shared
2808
+ todo!("check shared-ness of concrete type");
2809
+ }
2810
+ match ty {
2811
+ None => matches!(
2812
+ subtype(b_group, b).composite_type,
2813
+ CompositeType::Array(_) | CompositeType::Struct(_)
2814
+ ),
2815
+ NoFunc => matches!(subtype(b_group, b).composite_type, CompositeType::Func(_)),
2816
+ // Nothing else matches. (Avoid full wildcard matches so
2817
+ // that adding/modifying variants is easier in the future.)
2818
+ Func | Extern | Exn | Any | Eq | Array | I31 | Struct | NoExtern | NoExn => {
2819
+ false
2820
+ }
2821
+ }
2822
+ }
2823
+
2824
+ (HT::Concrete(a), HT::Concrete(b)) => {
2825
+ self.id_is_subtype(core_type_id(a_group, a), core_type_id(b_group, b))
2826
+ }
2827
+ }
2828
+ }
2829
+
2830
+ /// Like `id_is_subtype` but for `RefType`s.
2831
+ ///
2832
+ /// Both `a` and `b` must be canonicalized already.
2833
+ pub fn valtype_is_subtype(&self, a: ValType, b: ValType) -> bool {
2834
+ match (a, b) {
2835
+ (a, b) if a == b => true,
2836
+ (ValType::Ref(a), ValType::Ref(b)) => self.reftype_is_subtype(a, b),
2837
+ (ValType::Ref(_), _)
2838
+ | (ValType::I32, _)
2839
+ | (ValType::I64, _)
2840
+ | (ValType::F32, _)
2841
+ | (ValType::F64, _)
2842
+ | (ValType::V128, _) => false,
2843
+ }
2844
+ }
2845
+
2846
+ /// Is `ty` shared?
2847
+ ///
2848
+ /// This is complicated by reference types, since they may have concrete
2849
+ /// heap types whose shared-ness must be checked by looking at the type they
2850
+ /// point to.
2851
+ pub fn valtype_is_shared(&self, ty: ValType) -> bool {
2852
+ match ty {
2853
+ ValType::I32 | ValType::I64 | ValType::F32 | ValType::F64 | ValType::V128 => true,
2854
+ ValType::Ref(rt) => match rt.heap_type() {
2855
+ HeapType::Abstract { shared, .. } => shared,
2856
+ HeapType::Concrete(index) => self[index.as_core_type_id().unwrap()]
2857
+ .composite_type
2858
+ .is_shared(),
2859
+ },
2860
+ }
2861
+ }
2862
+
2863
+ /// Get the top type of the given heap type.
2864
+ ///
2865
+ /// Concrete types must have had their indices canonicalized to core type
2866
+ /// ids, otherwise this method will panic.
2867
+ pub fn top_type(&self, heap_type: &HeapType) -> HeapType {
2868
+ use AbstractHeapType::*;
2869
+ match *heap_type {
2870
+ HeapType::Concrete(idx) => match self[idx.as_core_type_id().unwrap()].composite_type {
2871
+ CompositeType::Func(_) => HeapType::Abstract {
2872
+ shared: false, // TODO: handle shared--retrieve from `func` type.
2873
+ ty: Func,
2874
+ },
2875
+ CompositeType::Array(_) | CompositeType::Struct(_) => HeapType::Abstract {
2876
+ shared: false, // TODO: handle shared--retrieve from `array` or `struct` type.
2877
+ ty: Any,
2878
+ },
2879
+ },
2880
+ HeapType::Abstract { shared, ty } => {
2881
+ let ty = match ty {
2882
+ Func | NoFunc => Func,
2883
+ Extern | NoExtern => Extern,
2884
+ Any | Eq | Struct | Array | I31 | None => Any,
2885
+ Exn | NoExn => Exn,
2886
+ };
2887
+ HeapType::Abstract { shared, ty }
2888
+ }
2889
+ }
2890
+ }
2891
+
2892
+ fn checkpoint(&self) -> TypeListCheckpoint {
2893
+ let TypeList {
2894
+ alias_mappings: _,
2895
+ alias_counter: _,
2896
+ alias_snapshots: _,
2897
+ core_types,
2898
+ components,
2899
+ component_defined_types,
2900
+ component_values,
2901
+ component_instances,
2902
+ component_funcs,
2903
+ core_modules,
2904
+ core_instances,
2905
+ core_type_to_rec_group,
2906
+ core_type_to_supertype,
2907
+ core_type_to_depth,
2908
+ rec_group_elements,
2909
+ canonical_rec_groups,
2910
+ } = self;
2911
+
2912
+ TypeListCheckpoint {
2913
+ core_types: core_types.len(),
2914
+ components: components.len(),
2915
+ component_defined_types: component_defined_types.len(),
2916
+ component_values: component_values.len(),
2917
+ component_instances: component_instances.len(),
2918
+ component_funcs: component_funcs.len(),
2919
+ core_modules: core_modules.len(),
2920
+ core_instances: core_instances.len(),
2921
+ core_type_to_rec_group: core_type_to_rec_group.len(),
2922
+ core_type_to_supertype: core_type_to_supertype.len(),
2923
+ core_type_to_depth: core_type_to_depth.as_ref().map(|m| m.len()).unwrap_or(0),
2924
+ rec_group_elements: rec_group_elements.len(),
2925
+ canonical_rec_groups: canonical_rec_groups.as_ref().map(|m| m.len()).unwrap_or(0),
2926
+ }
2927
+ }
2928
+
2929
+ fn reset_to_checkpoint(&mut self, checkpoint: TypeListCheckpoint) {
2930
+ let TypeList {
2931
+ alias_mappings: _,
2932
+ alias_counter: _,
2933
+ alias_snapshots: _,
2934
+ core_types,
2935
+ components,
2936
+ component_defined_types,
2937
+ component_values,
2938
+ component_instances,
2939
+ component_funcs,
2940
+ core_modules,
2941
+ core_instances,
2942
+ core_type_to_rec_group,
2943
+ core_type_to_supertype,
2944
+ core_type_to_depth,
2945
+ rec_group_elements,
2946
+ canonical_rec_groups,
2947
+ } = self;
2948
+
2949
+ core_types.truncate(checkpoint.core_types);
2950
+ components.truncate(checkpoint.components);
2951
+ component_defined_types.truncate(checkpoint.component_defined_types);
2952
+ component_values.truncate(checkpoint.component_values);
2953
+ component_instances.truncate(checkpoint.component_instances);
2954
+ component_funcs.truncate(checkpoint.component_funcs);
2955
+ core_modules.truncate(checkpoint.core_modules);
2956
+ core_instances.truncate(checkpoint.core_instances);
2957
+ core_type_to_rec_group.truncate(checkpoint.core_type_to_rec_group);
2958
+ core_type_to_supertype.truncate(checkpoint.core_type_to_supertype);
2959
+ rec_group_elements.truncate(checkpoint.rec_group_elements);
2960
+
2961
+ if let Some(core_type_to_depth) = core_type_to_depth {
2962
+ assert_eq!(
2963
+ core_type_to_depth.len(),
2964
+ checkpoint.core_type_to_depth,
2965
+ "checkpointing does not support resetting `core_type_to_depth` (it would require a \
2966
+ proper immutable and persistent hash map) so adding new groups is disallowed"
2967
+ );
2968
+ }
2969
+ if let Some(canonical_rec_groups) = canonical_rec_groups {
2970
+ assert_eq!(
2971
+ canonical_rec_groups.len(),
2972
+ checkpoint.canonical_rec_groups,
2973
+ "checkpointing does not support resetting `canonical_rec_groups` (it would require a \
2974
+ proper immutable and persistent hash map) so adding new groups is disallowed"
2975
+ );
2976
+ }
2977
+ }
2978
+
2979
+ pub fn commit(&mut self) -> TypeList {
2980
+ // Note that the `alias_counter` is bumped here to ensure that the
2981
+ // previous value of the unique counter is never used for an actual type
2982
+ // so it's suitable for lookup via a binary search.
2983
+ let alias_counter = self.alias_counter;
2984
+ self.alias_counter += 1;
2985
+
2986
+ self.alias_snapshots.push(TypeListAliasSnapshot {
2987
+ alias_counter,
2988
+ alias_mappings: mem::take(&mut self.alias_mappings),
2989
+ });
2990
+
2991
+ TypeList {
2992
+ alias_mappings: Map::default(),
2993
+ alias_counter: self.alias_counter,
2994
+ alias_snapshots: self.alias_snapshots.clone(),
2995
+ core_types: self.core_types.commit(),
2996
+ components: self.components.commit(),
2997
+ component_defined_types: self.component_defined_types.commit(),
2998
+ component_values: self.component_values.commit(),
2999
+ component_instances: self.component_instances.commit(),
3000
+ component_funcs: self.component_funcs.commit(),
3001
+ core_modules: self.core_modules.commit(),
3002
+ core_instances: self.core_instances.commit(),
3003
+ core_type_to_rec_group: self.core_type_to_rec_group.commit(),
3004
+ core_type_to_supertype: self.core_type_to_supertype.commit(),
3005
+ core_type_to_depth: None,
3006
+ rec_group_elements: self.rec_group_elements.commit(),
3007
+ canonical_rec_groups: None,
3008
+ }
3009
+ }
3010
+
3011
+ /// See `SnapshotList::with_unique`.
3012
+ pub fn with_unique<T>(&mut self, mut ty: T) -> T
3013
+ where
3014
+ T: Aliasable,
3015
+ {
3016
+ self.alias_mappings
3017
+ .insert(self.alias_counter, ty.alias_id());
3018
+ ty.set_alias_id(self.alias_counter);
3019
+ self.alias_counter += 1;
3020
+ ty
3021
+ }
3022
+
3023
+ /// Attempts to lookup the type id that `ty` is an alias of.
3024
+ ///
3025
+ /// Returns `None` if `ty` wasn't listed as aliasing a prior type.
3026
+ pub fn peel_alias<T>(&self, mut ty: T) -> Option<T>
3027
+ where
3028
+ T: Aliasable,
3029
+ {
3030
+ let alias_id = ty.alias_id();
3031
+
3032
+ // The unique counter in each snapshot is the unique counter at the
3033
+ // time of the snapshot so it's guaranteed to never be used, meaning
3034
+ // that `Ok` should never show up here. With an `Err` it's where the
3035
+ // index would be placed meaning that the index in question is the
3036
+ // smallest value over the unique id's value, meaning that slot has the
3037
+ // mapping we're interested in.
3038
+ let i = match self
3039
+ .alias_snapshots
3040
+ .binary_search_by_key(&alias_id, |snapshot| snapshot.alias_counter)
3041
+ {
3042
+ Ok(_) => unreachable!(),
3043
+ Err(i) => i,
3044
+ };
3045
+
3046
+ // If the `i` index is beyond the snapshot array then lookup in the
3047
+ // current mappings instead since it may refer to a type not snapshot
3048
+ // yet.
3049
+ ty.set_alias_id(match self.alias_snapshots.get(i) {
3050
+ Some(snapshot) => *snapshot.alias_mappings.get(&alias_id)?,
3051
+ None => *self.alias_mappings.get(&alias_id)?,
3052
+ });
3053
+ Some(ty)
3054
+ }
3055
+ }
3056
+
3057
+ impl<T> Index<T> for TypeList
3058
+ where
3059
+ T: TypeIdentifier,
3060
+ {
3061
+ type Output = T::Data;
3062
+
3063
+ fn index(&self, id: T) -> &Self::Output {
3064
+ let arena = T::list(self);
3065
+ &arena[id.index()]
3066
+ }
3067
+ }
3068
+
3069
+ /// Thin wrapper around `TypeList` which provides an allocator of unique ids for
3070
+ /// types contained within this list.
3071
+ pub(crate) struct TypeAlloc {
3072
+ list: TypeList,
3073
+
3074
+ // This is assigned at creation of a `TypeAlloc` and then never changed.
3075
+ // It's used in one entry for all `ResourceId`s contained within.
3076
+ globally_unique_id: usize,
3077
+
3078
+ // This is a counter that's incremeneted each time `alloc_resource_id` is
3079
+ // called.
3080
+ next_resource_id: u32,
3081
+ }
3082
+
3083
+ impl Default for TypeAlloc {
3084
+ fn default() -> TypeAlloc {
3085
+ static NEXT_GLOBAL_ID: AtomicUsize = AtomicUsize::new(0);
3086
+ let mut ret = TypeAlloc {
3087
+ list: TypeList::default(),
3088
+ globally_unique_id: {
3089
+ let id = NEXT_GLOBAL_ID.fetch_add(1, Ordering::Relaxed);
3090
+ if id > usize::MAX - 10_000 {
3091
+ NEXT_GLOBAL_ID.store(usize::MAX - 10_000, Ordering::Relaxed);
3092
+ panic!("overflow on the global id counter");
3093
+ }
3094
+ id
3095
+ },
3096
+ next_resource_id: 0,
3097
+ };
3098
+ ret.list.core_type_to_depth = Some(Default::default());
3099
+ ret.list.canonical_rec_groups = Some(Default::default());
3100
+ ret
3101
+ }
3102
+ }
3103
+
3104
+ impl Deref for TypeAlloc {
3105
+ type Target = TypeList;
3106
+ fn deref(&self) -> &TypeList {
3107
+ &self.list
3108
+ }
3109
+ }
3110
+
3111
+ impl DerefMut for TypeAlloc {
3112
+ fn deref_mut(&mut self) -> &mut TypeList {
3113
+ &mut self.list
3114
+ }
3115
+ }
3116
+
3117
+ impl TypeAlloc {
3118
+ /// Pushes a new type into this list, returning an identifier which can be
3119
+ /// used to later retrieve it.
3120
+ ///
3121
+ /// The returned identifier is unique within this `TypeAlloc` and won't be
3122
+ /// hash-equivalent to anything else.
3123
+ pub fn push_ty<T>(&mut self, ty: T) -> T::Id
3124
+ where
3125
+ T: TypeData,
3126
+ {
3127
+ self.list.push(ty)
3128
+ }
3129
+
3130
+ /// Allocates a new unique resource identifier.
3131
+ ///
3132
+ /// Note that uniqueness is only a property within this `TypeAlloc`.
3133
+ pub fn alloc_resource_id(&mut self) -> AliasableResourceId {
3134
+ let contextually_unique_id = self.next_resource_id;
3135
+ self.next_resource_id = self.next_resource_id.checked_add(1).unwrap();
3136
+ AliasableResourceId {
3137
+ id: ResourceId {
3138
+ globally_unique_id: self.globally_unique_id,
3139
+ contextually_unique_id,
3140
+ },
3141
+ alias_id: NO_ALIAS,
3142
+ }
3143
+ }
3144
+
3145
+ /// Adds the set of "free variables" of the `id` provided to the `set`
3146
+ /// provided.
3147
+ ///
3148
+ /// Free variables are defined as resources. Any resource, perhaps
3149
+ /// transitively, referred to but not defined by `id` is added to the `set`
3150
+ /// and returned.
3151
+ pub fn free_variables_any_type_id(
3152
+ &self,
3153
+ id: ComponentAnyTypeId,
3154
+ set: &mut IndexSet<ResourceId>,
3155
+ ) {
3156
+ match id {
3157
+ ComponentAnyTypeId::Resource(r) => {
3158
+ set.insert(r.resource());
3159
+ }
3160
+ ComponentAnyTypeId::Defined(id) => {
3161
+ self.free_variables_component_defined_type_id(id, set)
3162
+ }
3163
+ ComponentAnyTypeId::Func(id) => self.free_variables_component_func_type_id(id, set),
3164
+ ComponentAnyTypeId::Instance(id) => {
3165
+ self.free_variables_component_instance_type_id(id, set)
3166
+ }
3167
+ ComponentAnyTypeId::Component(id) => self.free_variables_component_type_id(id, set),
3168
+ }
3169
+ }
3170
+
3171
+ pub fn free_variables_component_defined_type_id(
3172
+ &self,
3173
+ id: ComponentDefinedTypeId,
3174
+ set: &mut IndexSet<ResourceId>,
3175
+ ) {
3176
+ match &self[id] {
3177
+ ComponentDefinedType::Primitive(_)
3178
+ | ComponentDefinedType::Flags(_)
3179
+ | ComponentDefinedType::Enum(_) => {}
3180
+ ComponentDefinedType::Record(r) => {
3181
+ for ty in r.fields.values() {
3182
+ self.free_variables_valtype(ty, set);
3183
+ }
3184
+ }
3185
+ ComponentDefinedType::Tuple(r) => {
3186
+ for ty in r.types.iter() {
3187
+ self.free_variables_valtype(ty, set);
3188
+ }
3189
+ }
3190
+ ComponentDefinedType::Variant(r) => {
3191
+ for ty in r.cases.values() {
3192
+ if let Some(ty) = &ty.ty {
3193
+ self.free_variables_valtype(ty, set);
3194
+ }
3195
+ }
3196
+ }
3197
+ ComponentDefinedType::List(ty) | ComponentDefinedType::Option(ty) => {
3198
+ self.free_variables_valtype(ty, set);
3199
+ }
3200
+ ComponentDefinedType::Result { ok, err } => {
3201
+ if let Some(ok) = ok {
3202
+ self.free_variables_valtype(ok, set);
3203
+ }
3204
+ if let Some(err) = err {
3205
+ self.free_variables_valtype(err, set);
3206
+ }
3207
+ }
3208
+ ComponentDefinedType::Own(id) | ComponentDefinedType::Borrow(id) => {
3209
+ set.insert(id.resource());
3210
+ }
3211
+ }
3212
+ }
3213
+
3214
+ pub fn free_variables_component_type_id(
3215
+ &self,
3216
+ id: ComponentTypeId,
3217
+ set: &mut IndexSet<ResourceId>,
3218
+ ) {
3219
+ let i = &self[id];
3220
+ // Recurse on the imports/exports of components, but remove the
3221
+ // imported and defined resources within the component itself.
3222
+ //
3223
+ // Technically this needs to add all the free variables of the
3224
+ // exports, remove the defined resources, then add the free
3225
+ // variables of imports, then remove the imported resources. Given
3226
+ // prior validation of component types, however, the defined
3227
+ // and imported resources are disjoint and imports can't refer to
3228
+ // defined resources, so doing this all in one go should be
3229
+ // equivalent.
3230
+ for ty in i.imports.values().chain(i.exports.values()) {
3231
+ self.free_variables_component_entity(ty, set);
3232
+ }
3233
+ for (id, _path) in i.imported_resources.iter().chain(&i.defined_resources) {
3234
+ set.swap_remove(id);
3235
+ }
3236
+ }
3237
+
3238
+ pub fn free_variables_component_instance_type_id(
3239
+ &self,
3240
+ id: ComponentInstanceTypeId,
3241
+ set: &mut IndexSet<ResourceId>,
3242
+ ) {
3243
+ let i = &self[id];
3244
+ // Like components, add in all the free variables of referenced
3245
+ // types but then remove those defined by this component instance
3246
+ // itself.
3247
+ for ty in i.exports.values() {
3248
+ self.free_variables_component_entity(ty, set);
3249
+ }
3250
+ for id in i.defined_resources.iter() {
3251
+ set.swap_remove(id);
3252
+ }
3253
+ }
3254
+
3255
+ pub fn free_variables_component_func_type_id(
3256
+ &self,
3257
+ id: ComponentFuncTypeId,
3258
+ set: &mut IndexSet<ResourceId>,
3259
+ ) {
3260
+ let i = &self[id];
3261
+ for ty in i
3262
+ .params
3263
+ .iter()
3264
+ .map(|(_, ty)| ty)
3265
+ .chain(i.results.iter().map(|(_, ty)| ty))
3266
+ {
3267
+ self.free_variables_valtype(ty, set);
3268
+ }
3269
+ }
3270
+
3271
+ /// Same as `free_variables_type_id`, but for `ComponentEntityType`.
3272
+ pub fn free_variables_component_entity(
3273
+ &self,
3274
+ ty: &ComponentEntityType,
3275
+ set: &mut IndexSet<ResourceId>,
3276
+ ) {
3277
+ match ty {
3278
+ ComponentEntityType::Module(_) => {}
3279
+ ComponentEntityType::Func(id) => self.free_variables_component_func_type_id(*id, set),
3280
+ ComponentEntityType::Instance(id) => {
3281
+ self.free_variables_component_instance_type_id(*id, set)
3282
+ }
3283
+ ComponentEntityType::Component(id) => self.free_variables_component_type_id(*id, set),
3284
+ ComponentEntityType::Type { created, .. } => {
3285
+ self.free_variables_any_type_id(*created, set);
3286
+ }
3287
+ ComponentEntityType::Value(ty) => self.free_variables_valtype(ty, set),
3288
+ }
3289
+ }
3290
+
3291
+ /// Same as `free_variables_type_id`, but for `ComponentValType`.
3292
+ fn free_variables_valtype(&self, ty: &ComponentValType, set: &mut IndexSet<ResourceId>) {
3293
+ match ty {
3294
+ ComponentValType::Primitive(_) => {}
3295
+ ComponentValType::Type(id) => self.free_variables_component_defined_type_id(*id, set),
3296
+ }
3297
+ }
3298
+
3299
+ /// Returns whether the type `id` is "named" where named types are presented
3300
+ /// via the provided `set`.
3301
+ ///
3302
+ /// This requires that `id` is a `Defined` type.
3303
+ pub(crate) fn type_named_type_id(
3304
+ &self,
3305
+ id: ComponentDefinedTypeId,
3306
+ set: &Set<ComponentAnyTypeId>,
3307
+ ) -> bool {
3308
+ let ty = &self[id];
3309
+ match ty {
3310
+ // Primitives are always considered named
3311
+ ComponentDefinedType::Primitive(_) => true,
3312
+
3313
+ // These structures are never allowed to be anonymous, so they
3314
+ // themselves must be named.
3315
+ ComponentDefinedType::Flags(_)
3316
+ | ComponentDefinedType::Enum(_)
3317
+ | ComponentDefinedType::Record(_)
3318
+ | ComponentDefinedType::Variant(_) => set.contains(&ComponentAnyTypeId::from(id)),
3319
+
3320
+ // All types below here are allowed to be anonymous, but their
3321
+ // own components must be appropriately named.
3322
+ ComponentDefinedType::Tuple(r) => {
3323
+ r.types.iter().all(|t| self.type_named_valtype(t, set))
3324
+ }
3325
+ ComponentDefinedType::Result { ok, err } => {
3326
+ ok.as_ref()
3327
+ .map(|t| self.type_named_valtype(t, set))
3328
+ .unwrap_or(true)
3329
+ && err
3330
+ .as_ref()
3331
+ .map(|t| self.type_named_valtype(t, set))
3332
+ .unwrap_or(true)
3333
+ }
3334
+ ComponentDefinedType::List(ty) | ComponentDefinedType::Option(ty) => {
3335
+ self.type_named_valtype(ty, set)
3336
+ }
3337
+
3338
+ // own/borrow themselves don't have to be named, but the resource
3339
+ // they refer to must be named.
3340
+ ComponentDefinedType::Own(id) | ComponentDefinedType::Borrow(id) => {
3341
+ set.contains(&ComponentAnyTypeId::from(*id))
3342
+ }
3343
+ }
3344
+ }
3345
+
3346
+ pub(crate) fn type_named_valtype(
3347
+ &self,
3348
+ ty: &ComponentValType,
3349
+ set: &Set<ComponentAnyTypeId>,
3350
+ ) -> bool {
3351
+ match ty {
3352
+ ComponentValType::Primitive(_) => true,
3353
+ ComponentValType::Type(id) => self.type_named_type_id(*id, set),
3354
+ }
3355
+ }
3356
+ }
3357
+
3358
+ /// A helper trait to provide the functionality necessary to resources within a
3359
+ /// type.
3360
+ ///
3361
+ /// This currently exists to abstract over `TypeAlloc` and `SubtypeArena` which
3362
+ /// both need to perform remapping operations.
3363
+ pub trait Remap
3364
+ where
3365
+ Self: Index<ComponentTypeId, Output = ComponentType>,
3366
+ Self: Index<ComponentDefinedTypeId, Output = ComponentDefinedType>,
3367
+ Self: Index<ComponentInstanceTypeId, Output = ComponentInstanceType>,
3368
+ Self: Index<ComponentFuncTypeId, Output = ComponentFuncType>,
3369
+ {
3370
+ /// Pushes a new anonymous type within this object, returning an identifier
3371
+ /// which can be used to refer to it.
3372
+ fn push_ty<T>(&mut self, ty: T) -> T::Id
3373
+ where
3374
+ T: TypeData;
3375
+
3376
+ /// Apply `map` to the keys of `tmp`, setting `*any_changed = true` if any
3377
+ /// keys were remapped.
3378
+ fn map_map(
3379
+ tmp: &mut IndexMap<ResourceId, Vec<usize>>,
3380
+ any_changed: &mut bool,
3381
+ map: &Remapping,
3382
+ ) {
3383
+ for (id, path) in mem::take(tmp) {
3384
+ let id = match map.resources.get(&id) {
3385
+ Some(id) => {
3386
+ *any_changed = true;
3387
+ *id
3388
+ }
3389
+ None => id,
3390
+ };
3391
+ tmp.insert(id, path);
3392
+ }
3393
+ }
3394
+
3395
+ /// If `any_changed` is true, push `ty`, update `map` to point `id` to the
3396
+ /// new type ID, set `id` equal to the new type ID, and return `true`.
3397
+ /// Otherwise, update `map` to point `id` to itself and return `false`.
3398
+ fn insert_if_any_changed<T>(
3399
+ &mut self,
3400
+ map: &mut Remapping,
3401
+ any_changed: bool,
3402
+ id: &mut T::Id,
3403
+ ty: T,
3404
+ ) -> bool
3405
+ where
3406
+ T: TypeData,
3407
+ T::Id: Into<ComponentAnyTypeId>,
3408
+ {
3409
+ let new = if any_changed { self.push_ty(ty) } else { *id };
3410
+ map.types.insert((*id).into(), new.into());
3411
+ let changed = *id != new;
3412
+ *id = new;
3413
+ changed
3414
+ }
3415
+
3416
+ /// Recursively search for any resource types reachable from `id`, updating
3417
+ /// it and `map` if any are found and remapped, returning `true` iff at last
3418
+ /// one is remapped.
3419
+ fn remap_component_any_type_id(
3420
+ &mut self,
3421
+ id: &mut ComponentAnyTypeId,
3422
+ map: &mut Remapping,
3423
+ ) -> bool {
3424
+ match id {
3425
+ ComponentAnyTypeId::Resource(id) => self.remap_resource_id(id, map),
3426
+ ComponentAnyTypeId::Defined(id) => self.remap_component_defined_type_id(id, map),
3427
+ ComponentAnyTypeId::Func(id) => self.remap_component_func_type_id(id, map),
3428
+ ComponentAnyTypeId::Instance(id) => self.remap_component_instance_type_id(id, map),
3429
+ ComponentAnyTypeId::Component(id) => self.remap_component_type_id(id, map),
3430
+ }
3431
+ }
3432
+
3433
+ /// If `map` indicates `id` should be remapped, update it and return `true`.
3434
+ /// Otherwise, do nothing and return `false`.
3435
+ fn remap_resource_id(&mut self, id: &mut AliasableResourceId, map: &Remapping) -> bool {
3436
+ if let Some(changed) = map.remap_id(id) {
3437
+ return changed;
3438
+ }
3439
+
3440
+ match map.resources.get(&id.resource()) {
3441
+ None => false,
3442
+ Some(new_id) => {
3443
+ *id.resource_mut() = *new_id;
3444
+ true
3445
+ }
3446
+ }
3447
+ }
3448
+
3449
+ /// Recursively search for any resource types reachable from `id`, updating
3450
+ /// it and `map` if any are found and remapped, returning `true` iff at last
3451
+ /// one is remapped.
3452
+ fn remap_component_type_id(&mut self, id: &mut ComponentTypeId, map: &mut Remapping) -> bool {
3453
+ if let Some(changed) = map.remap_id(id) {
3454
+ return changed;
3455
+ }
3456
+
3457
+ let mut any_changed = false;
3458
+ let mut ty = self[*id].clone();
3459
+ for ty in ty.imports.values_mut().chain(ty.exports.values_mut()) {
3460
+ any_changed |= self.remap_component_entity(ty, map);
3461
+ }
3462
+ for (id, _) in ty
3463
+ .imported_resources
3464
+ .iter_mut()
3465
+ .chain(&mut ty.defined_resources)
3466
+ {
3467
+ if let Some(new) = map.resources.get(id) {
3468
+ *id = *new;
3469
+ any_changed = true;
3470
+ }
3471
+ }
3472
+ Self::map_map(&mut ty.explicit_resources, &mut any_changed, map);
3473
+ self.insert_if_any_changed(map, any_changed, id, ty)
3474
+ }
3475
+
3476
+ /// Recursively search for any resource types reachable from `id`, updating
3477
+ /// it and `map` if any are found and remapped, returning `true` iff at last
3478
+ /// one is remapped.
3479
+ fn remap_component_defined_type_id(
3480
+ &mut self,
3481
+ id: &mut ComponentDefinedTypeId,
3482
+ map: &mut Remapping,
3483
+ ) -> bool {
3484
+ if let Some(changed) = map.remap_id(id) {
3485
+ return changed;
3486
+ }
3487
+
3488
+ let mut any_changed = false;
3489
+ let mut tmp = self[*id].clone();
3490
+ match &mut tmp {
3491
+ ComponentDefinedType::Primitive(_)
3492
+ | ComponentDefinedType::Flags(_)
3493
+ | ComponentDefinedType::Enum(_) => {}
3494
+ ComponentDefinedType::Record(r) => {
3495
+ for ty in r.fields.values_mut() {
3496
+ any_changed |= self.remap_valtype(ty, map);
3497
+ }
3498
+ }
3499
+ ComponentDefinedType::Tuple(r) => {
3500
+ for ty in r.types.iter_mut() {
3501
+ any_changed |= self.remap_valtype(ty, map);
3502
+ }
3503
+ }
3504
+ ComponentDefinedType::Variant(r) => {
3505
+ for ty in r.cases.values_mut() {
3506
+ if let Some(ty) = &mut ty.ty {
3507
+ any_changed |= self.remap_valtype(ty, map);
3508
+ }
3509
+ }
3510
+ }
3511
+ ComponentDefinedType::List(ty) | ComponentDefinedType::Option(ty) => {
3512
+ any_changed |= self.remap_valtype(ty, map);
3513
+ }
3514
+ ComponentDefinedType::Result { ok, err } => {
3515
+ if let Some(ok) = ok {
3516
+ any_changed |= self.remap_valtype(ok, map);
3517
+ }
3518
+ if let Some(err) = err {
3519
+ any_changed |= self.remap_valtype(err, map);
3520
+ }
3521
+ }
3522
+ ComponentDefinedType::Own(id) | ComponentDefinedType::Borrow(id) => {
3523
+ any_changed |= self.remap_resource_id(id, map);
3524
+ }
3525
+ }
3526
+ self.insert_if_any_changed(map, any_changed, id, tmp)
3527
+ }
3528
+
3529
+ /// Recursively search for any resource types reachable from `id`, updating
3530
+ /// it and `map` if any are found and remapped, returning `true` iff at last
3531
+ /// one is remapped.
3532
+ fn remap_component_instance_type_id(
3533
+ &mut self,
3534
+ id: &mut ComponentInstanceTypeId,
3535
+ map: &mut Remapping,
3536
+ ) -> bool {
3537
+ if let Some(changed) = map.remap_id(id) {
3538
+ return changed;
3539
+ }
3540
+
3541
+ let mut any_changed = false;
3542
+ let mut tmp = self[*id].clone();
3543
+ for ty in tmp.exports.values_mut() {
3544
+ any_changed |= self.remap_component_entity(ty, map);
3545
+ }
3546
+ for id in tmp.defined_resources.iter_mut() {
3547
+ if let Some(new) = map.resources.get(id) {
3548
+ *id = *new;
3549
+ any_changed = true;
3550
+ }
3551
+ }
3552
+ Self::map_map(&mut tmp.explicit_resources, &mut any_changed, map);
3553
+ self.insert_if_any_changed(map, any_changed, id, tmp)
3554
+ }
3555
+
3556
+ /// Recursively search for any resource types reachable from `id`, updating
3557
+ /// it and `map` if any are found and remapped, returning `true` iff at last
3558
+ /// one is remapped.
3559
+ fn remap_component_func_type_id(
3560
+ &mut self,
3561
+ id: &mut ComponentFuncTypeId,
3562
+ map: &mut Remapping,
3563
+ ) -> bool {
3564
+ if let Some(changed) = map.remap_id(id) {
3565
+ return changed;
3566
+ }
3567
+
3568
+ let mut any_changed = false;
3569
+ let mut tmp = self[*id].clone();
3570
+ for ty in tmp
3571
+ .params
3572
+ .iter_mut()
3573
+ .map(|(_, ty)| ty)
3574
+ .chain(tmp.results.iter_mut().map(|(_, ty)| ty))
3575
+ {
3576
+ any_changed |= self.remap_valtype(ty, map);
3577
+ }
3578
+ self.insert_if_any_changed(map, any_changed, id, tmp)
3579
+ }
3580
+
3581
+ /// Same as `remap_type_id`, but works with `ComponentEntityType`.
3582
+ fn remap_component_entity(
3583
+ &mut self,
3584
+ ty: &mut ComponentEntityType,
3585
+ map: &mut Remapping,
3586
+ ) -> bool {
3587
+ match ty {
3588
+ ComponentEntityType::Module(_) => {
3589
+ // Can't reference resources.
3590
+ false
3591
+ }
3592
+ ComponentEntityType::Func(id) => self.remap_component_func_type_id(id, map),
3593
+ ComponentEntityType::Instance(id) => self.remap_component_instance_type_id(id, map),
3594
+ ComponentEntityType::Component(id) => self.remap_component_type_id(id, map),
3595
+ ComponentEntityType::Type {
3596
+ referenced,
3597
+ created,
3598
+ } => {
3599
+ let mut changed = self.remap_component_any_type_id(referenced, map);
3600
+ if *referenced == *created {
3601
+ *created = *referenced;
3602
+ } else {
3603
+ changed |= self.remap_component_any_type_id(created, map);
3604
+ }
3605
+ changed
3606
+ }
3607
+ ComponentEntityType::Value(ty) => self.remap_valtype(ty, map),
3608
+ }
3609
+ }
3610
+
3611
+ /// Same as `remap_type_id`, but works with `ComponentValType`.
3612
+ fn remap_valtype(&mut self, ty: &mut ComponentValType, map: &mut Remapping) -> bool {
3613
+ match ty {
3614
+ ComponentValType::Primitive(_) => false,
3615
+ ComponentValType::Type(id) => self.remap_component_defined_type_id(id, map),
3616
+ }
3617
+ }
3618
+ }
3619
+
3620
+ /// Utility for mapping equivalent `ResourceId`s to each other and (when paired with the `Remap` trait)
3621
+ /// non-destructively edit type lists to reflect those mappings.
3622
+ #[derive(Debug, Default)]
3623
+ pub struct Remapping {
3624
+ /// A mapping from old resource ID to new resource ID.
3625
+ pub(crate) resources: Map<ResourceId, ResourceId>,
3626
+
3627
+ /// A mapping filled in during the remapping process which records how a
3628
+ /// type was remapped, if applicable. This avoids remapping multiple
3629
+ /// references to the same type and instead only processing it once.
3630
+ types: Map<ComponentAnyTypeId, ComponentAnyTypeId>,
3631
+ }
3632
+
3633
+ impl Remap for TypeAlloc {
3634
+ fn push_ty<T>(&mut self, ty: T) -> T::Id
3635
+ where
3636
+ T: TypeData,
3637
+ {
3638
+ <TypeList>::push(self, ty)
3639
+ }
3640
+ }
3641
+
3642
+ impl<T> Index<T> for TypeAlloc
3643
+ where
3644
+ T: TypeIdentifier,
3645
+ {
3646
+ type Output = T::Data;
3647
+
3648
+ #[inline]
3649
+ fn index(&self, id: T) -> &T::Data {
3650
+ &self.list[id]
3651
+ }
3652
+ }
3653
+
3654
+ impl Remapping {
3655
+ /// Add a mapping from the specified old resource ID to the new resource ID
3656
+ pub fn add(&mut self, old: ResourceId, new: ResourceId) {
3657
+ self.resources.insert(old, new);
3658
+ }
3659
+
3660
+ /// Clear the type cache while leaving the resource mappings intact.
3661
+ pub fn reset_type_cache(&mut self) {
3662
+ self.types.clear()
3663
+ }
3664
+
3665
+ fn remap_id<T>(&self, id: &mut T) -> Option<bool>
3666
+ where
3667
+ T: Copy + Into<ComponentAnyTypeId> + TryFrom<ComponentAnyTypeId>,
3668
+ T::Error: core::fmt::Debug,
3669
+ {
3670
+ let old: ComponentAnyTypeId = (*id).into();
3671
+ let new = self.types.get(&old)?;
3672
+ if *new == old {
3673
+ Some(false)
3674
+ } else {
3675
+ *id = T::try_from(*new).expect("should never remap across different kinds");
3676
+ Some(true)
3677
+ }
3678
+ }
3679
+ }
3680
+
3681
+ /// Helper structure used to perform subtyping computations.
3682
+ ///
3683
+ /// This type is used whenever a subtype needs to be tested in one direction or
3684
+ /// the other. The methods of this type are the various entry points for
3685
+ /// subtyping.
3686
+ ///
3687
+ /// Internally this contains arenas for two lists of types. The `a` arena is
3688
+ /// intended to be used for lookup of the first argument to all of the methods
3689
+ /// below, and the `b` arena is used for lookup of the second argument.
3690
+ ///
3691
+ /// Arenas here are used specifically for component-based subtyping queries. In
3692
+ /// these situations new types must be created based on substitution mappings,
3693
+ /// but the types all have temporary lifetimes. Everything in these arenas is
3694
+ /// thrown away once the subtyping computation has finished.
3695
+ ///
3696
+ /// Note that this subtyping context also explicitly supports being created
3697
+ /// from to different lists `a` and `b` originally, for testing subtyping
3698
+ /// between two different components for example.
3699
+ pub struct SubtypeCx<'a> {
3700
+ /// Lookup arena for first type argument
3701
+ pub a: SubtypeArena<'a>,
3702
+ /// Lookup arena for second type argument
3703
+ pub b: SubtypeArena<'a>,
3704
+ }
3705
+
3706
+ impl<'a> SubtypeCx<'a> {
3707
+ /// Create a new instance with the specified type lists
3708
+ pub fn new_with_refs(a: TypesRef<'a>, b: TypesRef<'a>) -> SubtypeCx<'a> {
3709
+ Self::new(a.list, b.list)
3710
+ }
3711
+
3712
+ pub(crate) fn new(a: &'a TypeList, b: &'a TypeList) -> SubtypeCx<'a> {
3713
+ SubtypeCx {
3714
+ a: SubtypeArena::new(a),
3715
+ b: SubtypeArena::new(b),
3716
+ }
3717
+ }
3718
+
3719
+ /// Swap the type lists
3720
+ pub fn swap(&mut self) {
3721
+ mem::swap(&mut self.a, &mut self.b);
3722
+ }
3723
+
3724
+ /// Executes the closure `f`, resetting the internal arenas to their
3725
+ /// original size after the closure finishes.
3726
+ ///
3727
+ /// This enables `f` to modify the internal arenas while relying on all
3728
+ /// changes being discarded after the closure finishes.
3729
+ fn with_checkpoint<T>(&mut self, f: impl FnOnce(&mut Self) -> T) -> T {
3730
+ let a = self.a.list.checkpoint();
3731
+ let b = self.b.list.checkpoint();
3732
+ let result = f(self);
3733
+ self.a.list.reset_to_checkpoint(a);
3734
+ self.b.list.reset_to_checkpoint(b);
3735
+ result
3736
+ }
3737
+
3738
+ /// Tests whether `a` is a subtype of `b`.
3739
+ ///
3740
+ /// Errors are reported at the `offset` specified.
3741
+ pub fn component_entity_type(
3742
+ &mut self,
3743
+ a: &ComponentEntityType,
3744
+ b: &ComponentEntityType,
3745
+ offset: usize,
3746
+ ) -> Result<()> {
3747
+ use ComponentEntityType::*;
3748
+
3749
+ match (a, b) {
3750
+ (Module(a), Module(b)) => self.module_type(*a, *b, offset),
3751
+ (Module(_), b) => bail!(offset, "expected {}, found module", b.desc()),
3752
+
3753
+ (Func(a), Func(b)) => self.component_func_type(*a, *b, offset),
3754
+ (Func(_), b) => bail!(offset, "expected {}, found func", b.desc()),
3755
+
3756
+ (Value(a), Value(b)) => self.component_val_type(a, b, offset),
3757
+ (Value(_), b) => bail!(offset, "expected {}, found value", b.desc()),
3758
+
3759
+ (Type { referenced: a, .. }, Type { referenced: b, .. }) => {
3760
+ self.component_any_type_id(*a, *b, offset)
3761
+ }
3762
+ (Type { .. }, b) => bail!(offset, "expected {}, found type", b.desc()),
3763
+
3764
+ (Instance(a), Instance(b)) => self.component_instance_type(*a, *b, offset),
3765
+ (Instance(_), b) => bail!(offset, "expected {}, found instance", b.desc()),
3766
+
3767
+ (Component(a), Component(b)) => self.component_type(*a, *b, offset),
3768
+ (Component(_), b) => bail!(offset, "expected {}, found component", b.desc()),
3769
+ }
3770
+ }
3771
+
3772
+ /// Tests whether `a` is a subtype of `b`.
3773
+ ///
3774
+ /// Errors are reported at the `offset` specified.
3775
+ pub fn component_type(
3776
+ &mut self,
3777
+ a: ComponentTypeId,
3778
+ b: ComponentTypeId,
3779
+ offset: usize,
3780
+ ) -> Result<()> {
3781
+ // Components are ... tricky. They follow the same basic
3782
+ // structure as core wasm modules, but they also have extra
3783
+ // logic to handle resource types. Resources are effectively
3784
+ // abstract types so this is sort of where an ML module system
3785
+ // in the component model becomes a reality.
3786
+ //
3787
+ // This also leverages the `open_instance_type` method below
3788
+ // heavily which internally has its own quite large suite of
3789
+ // logic. More-or-less what's happening here is:
3790
+ //
3791
+ // 1. Pretend that the imports of B are given as values to the
3792
+ // imports of A. If A didn't import anything, for example,
3793
+ // that's great and the subtyping definitely passes there.
3794
+ // This operation produces a mapping of all the resources of
3795
+ // A's imports to resources in B's imports.
3796
+ //
3797
+ // 2. This mapping is applied to all of A's exports. This means
3798
+ // that all exports of A referring to A's imported resources
3799
+ // now instead refer to B's. Note, though that A's exports
3800
+ // still refer to its own defined resources.
3801
+ //
3802
+ // 3. The same `open_instance_type` method used during the
3803
+ // first step is used again, but this time on the exports
3804
+ // in the reverse direction. This performs a similar
3805
+ // operation, though, by creating a mapping from B's
3806
+ // defined resources to A's defined resources. The map
3807
+ // itself is discarded as it's not needed.
3808
+ //
3809
+ // The order that everything passed here is intentional, but
3810
+ // also subtle. I personally think of it as
3811
+ // `open_instance_type` takes a list of things to satisfy a
3812
+ // signature and produces a mapping of resources in the
3813
+ // signature to those provided in the list of things. The
3814
+ // order of operations then goes:
3815
+ //
3816
+ // * Someone thinks they have a component of type B, but they
3817
+ // actually have a component of type A (e.g. due to this
3818
+ // subtype check passing).
3819
+ // * This person provides the imports of B and that must be
3820
+ // sufficient to satisfy the imports of A. This is the first
3821
+ // `open_instance_type` check.
3822
+ // * Now though the resources provided by B are substituted
3823
+ // into A's exports since that's what was provided.
3824
+ // * A's exports are then handed back to the original person,
3825
+ // and these exports must satisfy the signature required by B
3826
+ // since that's what they're expecting.
3827
+ // * This is the second `open_instance_type` which, to get
3828
+ // resource types to line up, will map from A's defined
3829
+ // resources to B's defined resources.
3830
+ //
3831
+ // If all that passes then the resources should all line up
3832
+ // perfectly. Any misalignment is reported as a subtyping
3833
+ // error.
3834
+ let b_imports = self.b[b]
3835
+ .imports
3836
+ .iter()
3837
+ .map(|(name, ty)| (name.clone(), ty.clone()))
3838
+ .collect();
3839
+ self.swap();
3840
+ let mut import_mapping =
3841
+ self.open_instance_type(&b_imports, a, ExternKind::Import, offset)?;
3842
+ self.swap();
3843
+ self.with_checkpoint(|this| {
3844
+ let mut a_exports = this.a[a]
3845
+ .exports
3846
+ .iter()
3847
+ .map(|(name, ty)| (name.clone(), ty.clone()))
3848
+ .collect::<IndexMap<_, _>>();
3849
+ for ty in a_exports.values_mut() {
3850
+ this.a.remap_component_entity(ty, &mut import_mapping);
3851
+ }
3852
+ this.open_instance_type(&a_exports, b, ExternKind::Export, offset)?;
3853
+ Ok(())
3854
+ })
3855
+ }
3856
+
3857
+ /// Tests whether `a` is a subtype of `b`.
3858
+ ///
3859
+ /// Errors are reported at the `offset` specified.
3860
+ pub fn component_instance_type(
3861
+ &mut self,
3862
+ a_id: ComponentInstanceTypeId,
3863
+ b_id: ComponentInstanceTypeId,
3864
+ offset: usize,
3865
+ ) -> Result<()> {
3866
+ // For instance type subtyping, all exports in the other
3867
+ // instance type must be present in this instance type's
3868
+ // exports (i.e. it can export *more* than what this instance
3869
+ // type needs).
3870
+ let a = &self.a[a_id];
3871
+ let b = &self.b[b_id];
3872
+
3873
+ let mut exports = Vec::with_capacity(b.exports.len());
3874
+ for (k, b) in b.exports.iter() {
3875
+ match a.exports.get(k) {
3876
+ Some(a) => exports.push((*a, *b)),
3877
+ None => bail!(offset, "missing expected export `{k}`"),
3878
+ }
3879
+ }
3880
+ for (i, (a, b)) in exports.iter().enumerate() {
3881
+ let err = match self.component_entity_type(a, b, offset) {
3882
+ Ok(()) => continue,
3883
+ Err(e) => e,
3884
+ };
3885
+ // On failure attach the name of this export as context to
3886
+ // the error message to leave a breadcrumb trail.
3887
+ let (name, _) = self.b[b_id].exports.get_index(i).unwrap();
3888
+ return Err(err.with_context(|| format!("type mismatch in instance export `{name}`")));
3889
+ }
3890
+ Ok(())
3891
+ }
3892
+
3893
+ /// Tests whether `a` is a subtype of `b`.
3894
+ ///
3895
+ /// Errors are reported at the `offset` specified.
3896
+ pub fn component_func_type(
3897
+ &mut self,
3898
+ a: ComponentFuncTypeId,
3899
+ b: ComponentFuncTypeId,
3900
+ offset: usize,
3901
+ ) -> Result<()> {
3902
+ let a = &self.a[a];
3903
+ let b = &self.b[b];
3904
+
3905
+ // Note that this intentionally diverges from the upstream
3906
+ // specification in terms of subtyping. This is a full
3907
+ // type-equality check which ensures that the structure of `a`
3908
+ // exactly matches the structure of `b`. The rationale for this
3909
+ // is:
3910
+ //
3911
+ // * Primarily in Wasmtime subtyping based on function types is
3912
+ // not implemented. This includes both subtyping a host
3913
+ // import and additionally handling subtyping as functions
3914
+ // cross component boundaries. The host import subtyping (or
3915
+ // component export subtyping) is not clear how to handle at
3916
+ // all at this time. The subtyping of functions between
3917
+ // components can more easily be handled by extending the
3918
+ // `fact` compiler, but that hasn't been done yet.
3919
+ //
3920
+ // * The upstream specification is currently pretty
3921
+ // intentionally vague precisely what subtyping is allowed.
3922
+ // Implementing a strict check here is intended to be a
3923
+ // conservative starting point for the component model which
3924
+ // can be extended in the future if necessary.
3925
+ //
3926
+ // * The interaction with subtyping on bindings generation, for
3927
+ // example, is a tricky problem that doesn't have a clear
3928
+ // answer at this time. Effectively this is more rationale
3929
+ // for being conservative in the first pass of the component
3930
+ // model.
3931
+ //
3932
+ // So, in conclusion, the test here (and other places that
3933
+ // reference this comment) is for exact type equality with no
3934
+ // differences.
3935
+ if a.params.len() != b.params.len() {
3936
+ bail!(
3937
+ offset,
3938
+ "expected {} parameters, found {}",
3939
+ b.params.len(),
3940
+ a.params.len(),
3941
+ );
3942
+ }
3943
+ if a.results.len() != b.results.len() {
3944
+ bail!(
3945
+ offset,
3946
+ "expected {} results, found {}",
3947
+ b.results.len(),
3948
+ a.results.len(),
3949
+ );
3950
+ }
3951
+ for ((an, a), (bn, b)) in a.params.iter().zip(b.params.iter()) {
3952
+ if an != bn {
3953
+ bail!(offset, "expected parameter named `{bn}`, found `{an}`");
3954
+ }
3955
+ self.component_val_type(a, b, offset)
3956
+ .with_context(|| format!("type mismatch in function parameter `{an}`"))?;
3957
+ }
3958
+ for ((an, a), (bn, b)) in a.results.iter().zip(b.results.iter()) {
3959
+ if an != bn {
3960
+ bail!(offset, "mismatched result names");
3961
+ }
3962
+ self.component_val_type(a, b, offset)
3963
+ .with_context(|| "type mismatch with result type")?;
3964
+ }
3965
+ Ok(())
3966
+ }
3967
+
3968
+ /// Tests whether `a` is a subtype of `b`.
3969
+ ///
3970
+ /// Errors are reported at the `offset` specified.
3971
+ pub fn module_type(
3972
+ &mut self,
3973
+ a: ComponentCoreModuleTypeId,
3974
+ b: ComponentCoreModuleTypeId,
3975
+ offset: usize,
3976
+ ) -> Result<()> {
3977
+ // For module type subtyping, all exports in the other module
3978
+ // type must be present in this module type's exports (i.e. it
3979
+ // can export *more* than what this module type needs).
3980
+ // However, for imports, the check is reversed (i.e. it is okay
3981
+ // to import *less* than what this module type needs).
3982
+ self.swap();
3983
+ let a_imports = &self.b[a].imports;
3984
+ let b_imports = &self.a[b].imports;
3985
+ for (k, a) in a_imports {
3986
+ match b_imports.get(k) {
3987
+ Some(b) => self
3988
+ .entity_type(b, a, offset)
3989
+ .with_context(|| format!("type mismatch in import `{}::{}`", k.0, k.1))?,
3990
+ None => bail!(offset, "missing expected import `{}::{}`", k.0, k.1),
3991
+ }
3992
+ }
3993
+ self.swap();
3994
+ let a = &self.a[a];
3995
+ let b = &self.b[b];
3996
+ for (k, b) in b.exports.iter() {
3997
+ match a.exports.get(k) {
3998
+ Some(a) => self
3999
+ .entity_type(a, b, offset)
4000
+ .with_context(|| format!("type mismatch in export `{k}`"))?,
4001
+ None => bail!(offset, "missing expected export `{k}`"),
4002
+ }
4003
+ }
4004
+ Ok(())
4005
+ }
4006
+
4007
+ /// Tests whether `a` is a subtype of `b`.
4008
+ ///
4009
+ /// Errors are reported at the `offset` specified.
4010
+ pub fn component_any_type_id(
4011
+ &mut self,
4012
+ a: ComponentAnyTypeId,
4013
+ b: ComponentAnyTypeId,
4014
+ offset: usize,
4015
+ ) -> Result<()> {
4016
+ match (a, b) {
4017
+ (ComponentAnyTypeId::Resource(a), ComponentAnyTypeId::Resource(b)) => {
4018
+ if a.resource() == b.resource() {
4019
+ Ok(())
4020
+ } else {
4021
+ bail!(
4022
+ offset,
4023
+ "resource types are not the same ({:?} vs. {:?})",
4024
+ a.resource(),
4025
+ b.resource()
4026
+ )
4027
+ }
4028
+ }
4029
+ (ComponentAnyTypeId::Resource(_), b) => {
4030
+ bail!(offset, "expected {}, found resource", b.desc())
4031
+ }
4032
+ (ComponentAnyTypeId::Defined(a), ComponentAnyTypeId::Defined(b)) => {
4033
+ self.component_defined_type(a, b, offset)
4034
+ }
4035
+ (ComponentAnyTypeId::Defined(_), b) => {
4036
+ bail!(offset, "expected {}, found defined type", b.desc())
4037
+ }
4038
+
4039
+ (ComponentAnyTypeId::Func(a), ComponentAnyTypeId::Func(b)) => {
4040
+ self.component_func_type(a, b, offset)
4041
+ }
4042
+ (ComponentAnyTypeId::Func(_), b) => {
4043
+ bail!(offset, "expected {}, found func type", b.desc())
4044
+ }
4045
+
4046
+ (ComponentAnyTypeId::Instance(a), ComponentAnyTypeId::Instance(b)) => {
4047
+ self.component_instance_type(a, b, offset)
4048
+ }
4049
+ (ComponentAnyTypeId::Instance(_), b) => {
4050
+ bail!(offset, "expected {}, found instance type", b.desc())
4051
+ }
4052
+
4053
+ (ComponentAnyTypeId::Component(a), ComponentAnyTypeId::Component(b)) => {
4054
+ self.component_type(a, b, offset)
4055
+ }
4056
+ (ComponentAnyTypeId::Component(_), b) => {
4057
+ bail!(offset, "expected {}, found component type", b.desc())
4058
+ }
4059
+ }
4060
+ }
4061
+
4062
+ /// The building block for subtyping checks when components are
4063
+ /// instantiated and when components are tested if they're subtypes of each
4064
+ /// other.
4065
+ ///
4066
+ /// This method takes a number of arguments:
4067
+ ///
4068
+ /// * `a` - this is a list of typed items which can be thought of as
4069
+ /// concrete values to test against `b`.
4070
+ /// * `b` - this `TypeId` must point to `Type::Component`.
4071
+ /// * `kind` - indicates whether the `imports` or `exports` of `b` are
4072
+ /// being tested against for the values in `a`.
4073
+ /// * `offset` - the binary offset at which to report errors if one happens.
4074
+ ///
4075
+ /// This will attempt to determine if the items in `a` satisfy the
4076
+ /// signature required by the `kind` items of `b`. For example component
4077
+ /// instantiation will have `a` as the list of arguments provided to
4078
+ /// instantiation, `b` is the component being instantiated, and `kind` is
4079
+ /// `ExternKind::Import`.
4080
+ ///
4081
+ /// This function, if successful, will return a mapping of the resources in
4082
+ /// `b` to the resources in `a` provided. This mapping is guaranteed to
4083
+ /// contain all the resources for `b` (all imported resources for
4084
+ /// `ExternKind::Import` or all defined resources for `ExternKind::Export`).
4085
+ pub fn open_instance_type(
4086
+ &mut self,
4087
+ a: &IndexMap<String, ComponentEntityType>,
4088
+ b: ComponentTypeId,
4089
+ kind: ExternKind,
4090
+ offset: usize,
4091
+ ) -> Result<Remapping> {
4092
+ // First, determine the mapping from resources in `b` to those supplied
4093
+ // by arguments in `a`.
4094
+ //
4095
+ // This loop will iterate over all the appropriate resources in `b`
4096
+ // and find the corresponding resource in `args`. The exact lists
4097
+ // in use here depend on the `kind` provided. This necessarily requires
4098
+ // a sequence of string lookups to find the corresponding items in each
4099
+ // list.
4100
+ //
4101
+ // The path to each resource in `resources` is precomputed as a list of
4102
+ // indexes. The first index is into `b`'s list of `entities`, and gives
4103
+ // the name that `b` assigns to the resource. Each subsequent index,
4104
+ // if present, means that this resource was present through a layer of
4105
+ // an instance type, and the index is into the instance type's exports.
4106
+ // More information about this can be found on
4107
+ // `ComponentState::imported_resources`.
4108
+ //
4109
+ // This loop will follow the list of indices for each resource and, at
4110
+ // the same time, walk through the arguments supplied to instantiating
4111
+ // the `component_type`. This means that within `component_type`
4112
+ // index-based lookups are performed while in `args` name-based
4113
+ // lookups are performed.
4114
+ //
4115
+ // Note that here it's possible that `args` doesn't actually supply the
4116
+ // correct type of import for each item since argument checking has
4117
+ // not proceeded yet. These type errors, however, aren't handled by
4118
+ // this loop and are deferred below to the main subtyping check. That
4119
+ // means that `mapping` won't necessarily have a mapping for all
4120
+ // imported resources into `component_type`, but that should be ok.
4121
+ let component_type = &self.b[b];
4122
+ let entities = match kind {
4123
+ ExternKind::Import => &component_type.imports,
4124
+ ExternKind::Export => &component_type.exports,
4125
+ };
4126
+ let resources = match kind {
4127
+ ExternKind::Import => &component_type.imported_resources,
4128
+ ExternKind::Export => &component_type.defined_resources,
4129
+ };
4130
+ let mut mapping = Remapping::default();
4131
+ 'outer: for (resource, path) in resources.iter() {
4132
+ // Lookup the first path item in `imports` and the corresponding
4133
+ // entry in `args` by name.
4134
+ let (name, ty) = entities.get_index(path[0]).unwrap();
4135
+ let mut ty = *ty;
4136
+ let mut arg = a.get(name);
4137
+
4138
+ // Lookup all the subsequent `path` entries, if any, by index in
4139
+ // `ty` and by name in `arg`. Type errors in `arg` are skipped over
4140
+ // entirely.
4141
+ for i in path.iter().skip(1).copied() {
4142
+ let id = match ty {
4143
+ ComponentEntityType::Instance(id) => id,
4144
+ _ => unreachable!(),
4145
+ };
4146
+ let (name, next_ty) = self.b[id].exports.get_index(i).unwrap();
4147
+ ty = *next_ty;
4148
+ arg = match arg {
4149
+ Some(ComponentEntityType::Instance(id)) => self.a[*id].exports.get(name),
4150
+ _ => continue 'outer,
4151
+ };
4152
+ }
4153
+
4154
+ // Double-check that `ty`, the leaf type of `component_type`, is
4155
+ // indeed the expected resource.
4156
+ if cfg!(debug_assertions) {
4157
+ let id = match ty {
4158
+ ComponentEntityType::Type { created, .. } => match created {
4159
+ ComponentAnyTypeId::Resource(id) => id.resource(),
4160
+ _ => unreachable!(),
4161
+ },
4162
+ _ => unreachable!(),
4163
+ };
4164
+ assert_eq!(id, *resource);
4165
+ }
4166
+
4167
+ // The leaf of `arg` should be a type which is a resource. If not
4168
+ // it's skipped and this'll wind up generating an error later on in
4169
+ // subtype checking below.
4170
+ if let Some(ComponentEntityType::Type { created, .. }) = arg {
4171
+ if let ComponentAnyTypeId::Resource(r) = created {
4172
+ mapping.resources.insert(*resource, r.resource());
4173
+ }
4174
+ }
4175
+ }
4176
+
4177
+ // Now that a mapping from the resources in `b` to the resources in `a`
4178
+ // has been determined it's possible to perform the actual subtype
4179
+ // check.
4180
+ //
4181
+ // This subtype check notably needs to ensure that all resource types
4182
+ // line up. To achieve this the `mapping` previously calculated is used
4183
+ // to perform a substitution on each component entity type.
4184
+ //
4185
+ // The first loop here performs a name lookup to create a list of
4186
+ // values from `a` to expected items in `b`. Once the list is created
4187
+ // the substitution check is performed on each element.
4188
+ let mut to_typecheck = Vec::new();
4189
+ for (name, expected) in entities.iter() {
4190
+ match a.get(name) {
4191
+ Some(arg) => to_typecheck.push((arg.clone(), expected.clone())),
4192
+ None => bail!(offset, "missing {} named `{name}`", kind.desc()),
4193
+ }
4194
+ }
4195
+ let mut type_map = Map::default();
4196
+ for (i, (actual, expected)) in to_typecheck.into_iter().enumerate() {
4197
+ let result = self.with_checkpoint(|this| {
4198
+ let mut expected = expected;
4199
+ this.b.remap_component_entity(&mut expected, &mut mapping);
4200
+ mapping.types.clear();
4201
+ this.component_entity_type(&actual, &expected, offset)
4202
+ });
4203
+ let err = match result {
4204
+ Ok(()) => {
4205
+ // On a successful type-check record a mapping of
4206
+ // type-to-type in `type_map` for any type imports that were
4207
+ // satisfied. This is then used afterwards when performing
4208
+ // type substitution to remap all component-local types to
4209
+ // those that were provided in the imports.
4210
+ self.register_type_renamings(actual, expected, &mut type_map);
4211
+ continue;
4212
+ }
4213
+ Err(e) => e,
4214
+ };
4215
+
4216
+ // If an error happens then attach the name of the entity to the
4217
+ // error message using the `i` iteration counter.
4218
+ let component_type = &self.b[b];
4219
+ let entities = match kind {
4220
+ ExternKind::Import => &component_type.imports,
4221
+ ExternKind::Export => &component_type.exports,
4222
+ };
4223
+ let (name, _) = entities.get_index(i).unwrap();
4224
+ return Err(err.with_context(|| format!("type mismatch for {} `{name}`", kind.desc())));
4225
+ }
4226
+ mapping.types = type_map;
4227
+ Ok(mapping)
4228
+ }
4229
+
4230
+ pub(crate) fn entity_type(&self, a: &EntityType, b: &EntityType, offset: usize) -> Result<()> {
4231
+ macro_rules! limits_match {
4232
+ ($a:expr, $b:expr) => {{
4233
+ let a = $a;
4234
+ let b = $b;
4235
+ a.initial >= b.initial
4236
+ && match b.maximum {
4237
+ Some(b_max) => match a.maximum {
4238
+ Some(a_max) => a_max <= b_max,
4239
+ None => false,
4240
+ },
4241
+ None => true,
4242
+ }
4243
+ }};
4244
+ }
4245
+
4246
+ match (a, b) {
4247
+ (EntityType::Func(a), EntityType::Func(b)) => {
4248
+ self.core_func_type(self.a[*a].unwrap_func(), self.b[*b].unwrap_func(), offset)
4249
+ }
4250
+ (EntityType::Func(_), b) => bail!(offset, "expected {}, found func", b.desc()),
4251
+ (EntityType::Table(a), EntityType::Table(b)) => {
4252
+ if a.element_type != b.element_type {
4253
+ bail!(
4254
+ offset,
4255
+ "expected table element type {}, found {}",
4256
+ b.element_type,
4257
+ a.element_type,
4258
+ )
4259
+ }
4260
+ if limits_match!(a, b) {
4261
+ Ok(())
4262
+ } else {
4263
+ bail!(offset, "mismatch in table limits")
4264
+ }
4265
+ }
4266
+ (EntityType::Table(_), b) => bail!(offset, "expected {}, found table", b.desc()),
4267
+ (EntityType::Memory(a), EntityType::Memory(b)) => {
4268
+ if a.shared != b.shared {
4269
+ bail!(offset, "mismatch in the shared flag for memories")
4270
+ }
4271
+ if a.memory64 != b.memory64 {
4272
+ bail!(offset, "mismatch in index type used for memories")
4273
+ }
4274
+ if limits_match!(a, b) {
4275
+ Ok(())
4276
+ } else {
4277
+ bail!(offset, "mismatch in memory limits")
4278
+ }
4279
+ }
4280
+ (EntityType::Memory(_), b) => bail!(offset, "expected {}, found memory", b.desc()),
4281
+ (EntityType::Global(a), EntityType::Global(b)) => {
4282
+ if a.mutable != b.mutable {
4283
+ bail!(offset, "global types differ in mutability")
4284
+ }
4285
+ if a.content_type == b.content_type {
4286
+ Ok(())
4287
+ } else {
4288
+ bail!(
4289
+ offset,
4290
+ "expected global type {}, found {}",
4291
+ b.content_type,
4292
+ a.content_type,
4293
+ )
4294
+ }
4295
+ }
4296
+ (EntityType::Global(_), b) => bail!(offset, "expected {}, found global", b.desc()),
4297
+ (EntityType::Tag(a), EntityType::Tag(b)) => {
4298
+ self.core_func_type(self.a[*a].unwrap_func(), self.b[*b].unwrap_func(), offset)
4299
+ }
4300
+ (EntityType::Tag(_), b) => bail!(offset, "expected {}, found tag", b.desc()),
4301
+ }
4302
+ }
4303
+
4304
+ fn core_func_type(&self, a: &FuncType, b: &FuncType, offset: usize) -> Result<()> {
4305
+ if a == b {
4306
+ Ok(())
4307
+ } else {
4308
+ bail!(
4309
+ offset,
4310
+ "expected: {}\n\
4311
+ found: {}",
4312
+ b.desc(),
4313
+ a.desc(),
4314
+ )
4315
+ }
4316
+ }
4317
+
4318
+ pub(crate) fn component_val_type(
4319
+ &self,
4320
+ a: &ComponentValType,
4321
+ b: &ComponentValType,
4322
+ offset: usize,
4323
+ ) -> Result<()> {
4324
+ match (a, b) {
4325
+ (ComponentValType::Primitive(a), ComponentValType::Primitive(b)) => {
4326
+ self.primitive_val_type(*a, *b, offset)
4327
+ }
4328
+ (ComponentValType::Type(a), ComponentValType::Type(b)) => {
4329
+ self.component_defined_type(*a, *b, offset)
4330
+ }
4331
+ (ComponentValType::Primitive(a), ComponentValType::Type(b)) => match &self.b[*b] {
4332
+ ComponentDefinedType::Primitive(b) => self.primitive_val_type(*a, *b, offset),
4333
+ b => bail!(offset, "expected {}, found {a}", b.desc()),
4334
+ },
4335
+ (ComponentValType::Type(a), ComponentValType::Primitive(b)) => match &self.a[*a] {
4336
+ ComponentDefinedType::Primitive(a) => self.primitive_val_type(*a, *b, offset),
4337
+ a => bail!(offset, "expected {b}, found {}", a.desc()),
4338
+ },
4339
+ }
4340
+ }
4341
+
4342
+ fn component_defined_type(
4343
+ &self,
4344
+ a: ComponentDefinedTypeId,
4345
+ b: ComponentDefinedTypeId,
4346
+ offset: usize,
4347
+ ) -> Result<()> {
4348
+ use ComponentDefinedType::*;
4349
+
4350
+ // Note that the implementation of subtyping here diverges from the
4351
+ // upstream specification intentionally, see the documentation on
4352
+ // function subtyping for more information.
4353
+ match (&self.a[a], &self.b[b]) {
4354
+ (Primitive(a), Primitive(b)) => self.primitive_val_type(*a, *b, offset),
4355
+ (Primitive(a), b) => bail!(offset, "expected {}, found {a}", b.desc()),
4356
+ (Record(a), Record(b)) => {
4357
+ if a.fields.len() != b.fields.len() {
4358
+ bail!(
4359
+ offset,
4360
+ "expected {} fields, found {}",
4361
+ b.fields.len(),
4362
+ a.fields.len(),
4363
+ );
4364
+ }
4365
+
4366
+ for ((aname, a), (bname, b)) in a.fields.iter().zip(b.fields.iter()) {
4367
+ if aname != bname {
4368
+ bail!(offset, "expected field name `{bname}`, found `{aname}`");
4369
+ }
4370
+ self.component_val_type(a, b, offset)
4371
+ .with_context(|| format!("type mismatch in record field `{aname}`"))?;
4372
+ }
4373
+ Ok(())
4374
+ }
4375
+ (Record(_), b) => bail!(offset, "expected {}, found record", b.desc()),
4376
+ (Variant(a), Variant(b)) => {
4377
+ if a.cases.len() != b.cases.len() {
4378
+ bail!(
4379
+ offset,
4380
+ "expected {} cases, found {}",
4381
+ b.cases.len(),
4382
+ a.cases.len(),
4383
+ );
4384
+ }
4385
+ for ((aname, a), (bname, b)) in a.cases.iter().zip(b.cases.iter()) {
4386
+ if aname != bname {
4387
+ bail!(offset, "expected case named `{bname}`, found `{aname}`");
4388
+ }
4389
+ match (&a.ty, &b.ty) {
4390
+ (Some(a), Some(b)) => self
4391
+ .component_val_type(a, b, offset)
4392
+ .with_context(|| format!("type mismatch in variant case `{aname}`"))?,
4393
+ (None, None) => {}
4394
+ (None, Some(_)) => {
4395
+ bail!(offset, "expected case `{aname}` to have a type, found none")
4396
+ }
4397
+ (Some(_), None) => bail!(offset, "expected case `{aname}` to have no type"),
4398
+ }
4399
+ }
4400
+ Ok(())
4401
+ }
4402
+ (Variant(_), b) => bail!(offset, "expected {}, found variant", b.desc()),
4403
+ (List(a), List(b)) | (Option(a), Option(b)) => self.component_val_type(a, b, offset),
4404
+ (List(_), b) => bail!(offset, "expected {}, found list", b.desc()),
4405
+ (Option(_), b) => bail!(offset, "expected {}, found option", b.desc()),
4406
+ (Tuple(a), Tuple(b)) => {
4407
+ if a.types.len() != b.types.len() {
4408
+ bail!(
4409
+ offset,
4410
+ "expected {} types, found {}",
4411
+ b.types.len(),
4412
+ a.types.len(),
4413
+ );
4414
+ }
4415
+ for (i, (a, b)) in a.types.iter().zip(b.types.iter()).enumerate() {
4416
+ self.component_val_type(a, b, offset)
4417
+ .with_context(|| format!("type mismatch in tuple field {i}"))?;
4418
+ }
4419
+ Ok(())
4420
+ }
4421
+ (Tuple(_), b) => bail!(offset, "expected {}, found tuple", b.desc()),
4422
+ (at @ Flags(a), Flags(b)) | (at @ Enum(a), Enum(b)) => {
4423
+ let desc = match at {
4424
+ Flags(_) => "flags",
4425
+ _ => "enum",
4426
+ };
4427
+ if a.len() == b.len() && a.iter().eq(b.iter()) {
4428
+ Ok(())
4429
+ } else {
4430
+ bail!(offset, "mismatch in {desc} elements")
4431
+ }
4432
+ }
4433
+ (Flags(_), b) => bail!(offset, "expected {}, found flags", b.desc()),
4434
+ (Enum(_), b) => bail!(offset, "expected {}, found enum", b.desc()),
4435
+ (Result { ok: ao, err: ae }, Result { ok: bo, err: be }) => {
4436
+ match (ao, bo) {
4437
+ (None, None) => {}
4438
+ (Some(a), Some(b)) => self
4439
+ .component_val_type(a, b, offset)
4440
+ .with_context(|| "type mismatch in ok variant")?,
4441
+ (None, Some(_)) => bail!(offset, "expected ok type, but found none"),
4442
+ (Some(_), None) => bail!(offset, "expected ok type to not be present"),
4443
+ }
4444
+ match (ae, be) {
4445
+ (None, None) => {}
4446
+ (Some(a), Some(b)) => self
4447
+ .component_val_type(a, b, offset)
4448
+ .with_context(|| "type mismatch in err variant")?,
4449
+ (None, Some(_)) => bail!(offset, "expected err type, but found none"),
4450
+ (Some(_), None) => bail!(offset, "expected err type to not be present"),
4451
+ }
4452
+ Ok(())
4453
+ }
4454
+ (Result { .. }, b) => bail!(offset, "expected {}, found result", b.desc()),
4455
+ (Own(a), Own(b)) | (Borrow(a), Borrow(b)) => {
4456
+ if a.resource() == b.resource() {
4457
+ Ok(())
4458
+ } else {
4459
+ bail!(offset, "resource types are not the same")
4460
+ }
4461
+ }
4462
+ (Own(_), b) => bail!(offset, "expected {}, found own", b.desc()),
4463
+ (Borrow(_), b) => bail!(offset, "expected {}, found borrow", b.desc()),
4464
+ }
4465
+ }
4466
+
4467
+ fn primitive_val_type(
4468
+ &self,
4469
+ a: PrimitiveValType,
4470
+ b: PrimitiveValType,
4471
+ offset: usize,
4472
+ ) -> Result<()> {
4473
+ // Note that this intentionally diverges from the upstream specification
4474
+ // at this time and only considers exact equality for subtyping
4475
+ // relationships.
4476
+ //
4477
+ // More information can be found in the subtyping implementation for
4478
+ // component functions.
4479
+ if a == b {
4480
+ Ok(())
4481
+ } else {
4482
+ bail!(offset, "expected primitive `{b}` found primitive `{a}`")
4483
+ }
4484
+ }
4485
+
4486
+ fn register_type_renamings(
4487
+ &self,
4488
+ actual: ComponentEntityType,
4489
+ expected: ComponentEntityType,
4490
+ type_map: &mut Map<ComponentAnyTypeId, ComponentAnyTypeId>,
4491
+ ) {
4492
+ match (expected, actual) {
4493
+ (
4494
+ ComponentEntityType::Type {
4495
+ created: expected, ..
4496
+ },
4497
+ ComponentEntityType::Type {
4498
+ created: actual, ..
4499
+ },
4500
+ ) => {
4501
+ let prev = type_map.insert(expected, actual);
4502
+ assert!(prev.is_none());
4503
+ }
4504
+ (ComponentEntityType::Instance(expected), ComponentEntityType::Instance(actual)) => {
4505
+ let actual = &self.a[actual];
4506
+ for (name, expected) in self.b[expected].exports.iter() {
4507
+ let actual = actual.exports[name];
4508
+ self.register_type_renamings(actual, *expected, type_map);
4509
+ }
4510
+ }
4511
+ _ => {}
4512
+ }
4513
+ }
4514
+ }
4515
+
4516
+ /// A helper typed used purely during subtyping as part of `SubtypeCx`.
4517
+ ///
4518
+ /// This takes a `types` list as input which is the "base" of the ids that can
4519
+ /// be indexed through this arena. All future types pushed into this, if any,
4520
+ /// are stored in `self.list`.
4521
+ ///
4522
+ /// This is intended to have arena-like behavior where everything pushed onto
4523
+ /// `self.list` is thrown away after a subtyping computation is performed. All
4524
+ /// new types pushed into this arena are purely temporary.
4525
+ pub struct SubtypeArena<'a> {
4526
+ types: &'a TypeList,
4527
+ list: TypeList,
4528
+ }
4529
+
4530
+ impl<'a> SubtypeArena<'a> {
4531
+ fn new(types: &'a TypeList) -> SubtypeArena<'a> {
4532
+ SubtypeArena {
4533
+ types,
4534
+ list: TypeList::default(),
4535
+ }
4536
+ }
4537
+ }
4538
+
4539
+ impl<T> Index<T> for SubtypeArena<'_>
4540
+ where
4541
+ T: TypeIdentifier,
4542
+ {
4543
+ type Output = T::Data;
4544
+
4545
+ fn index(&self, id: T) -> &T::Data {
4546
+ let index = id.index();
4547
+ if index < T::list(self.types).len() {
4548
+ &self.types[id]
4549
+ } else {
4550
+ let temp_index = index - T::list(self.types).len();
4551
+ let temp_index = u32::try_from(temp_index).unwrap();
4552
+ let temp_id = T::from_index(temp_index);
4553
+ &self.list[temp_id]
4554
+ }
4555
+ }
4556
+ }
4557
+
4558
+ impl Remap for SubtypeArena<'_> {
4559
+ fn push_ty<T>(&mut self, ty: T) -> T::Id
4560
+ where
4561
+ T: TypeData,
4562
+ {
4563
+ let index = T::Id::list(&self.list).len() + T::Id::list(self.types).len();
4564
+ let index = u32::try_from(index).unwrap();
4565
+ self.list.push(ty);
4566
+ T::Id::from_index(index)
4567
+ }
4568
+ }
4569
+
4570
+ /// Helper trait for adding contextual information to an error, modeled after
4571
+ /// `anyhow::Context`.
4572
+ pub(crate) trait Context {
4573
+ fn with_context<S>(self, context: impl FnOnce() -> S) -> Self
4574
+ where
4575
+ S: Into<String>;
4576
+ }
4577
+
4578
+ impl<T> Context for Result<T> {
4579
+ fn with_context<S>(self, context: impl FnOnce() -> S) -> Self
4580
+ where
4581
+ S: Into<String>,
4582
+ {
4583
+ match self {
4584
+ Ok(val) => Ok(val),
4585
+ Err(e) => Err(e.with_context(context)),
4586
+ }
4587
+ }
4588
+ }
4589
+
4590
+ impl Context for BinaryReaderError {
4591
+ fn with_context<S>(mut self, context: impl FnOnce() -> S) -> Self
4592
+ where
4593
+ S: Into<String>,
4594
+ {
4595
+ self.add_context(context().into());
4596
+ self
4597
+ }
4598
+ }