wasmtime 16.0.0 → 17.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1111) hide show
  1. checksums.yaml +4 -4
  2. data/Cargo.lock +103 -79
  3. data/ext/Cargo.toml +7 -6
  4. data/ext/cargo-vendor/cranelift-bforest-0.104.0/.cargo-checksum.json +1 -0
  5. data/ext/cargo-vendor/cranelift-bforest-0.104.0/Cargo.toml +40 -0
  6. data/ext/cargo-vendor/cranelift-codegen-0.104.0/.cargo-checksum.json +1 -0
  7. data/ext/cargo-vendor/cranelift-codegen-0.104.0/Cargo.toml +175 -0
  8. data/ext/cargo-vendor/cranelift-codegen-0.104.0/build.rs +392 -0
  9. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/isa/aarch64/inst.isle +4197 -0
  10. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/isa/aarch64/lower/isle.rs +882 -0
  11. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/isa/x64/abi.rs +1305 -0
  12. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/isle_prelude.rs +957 -0
  13. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/machinst/isle.rs +908 -0
  14. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/machinst/mod.rs +558 -0
  15. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/machinst/pcc.rs +159 -0
  16. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/opts/arithmetic.isle +169 -0
  17. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/opts/bitops.isle +188 -0
  18. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/opts/cprop.isle +248 -0
  19. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/opts/extends.isle +116 -0
  20. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/opts/icmp.isle +197 -0
  21. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/opts/selects.isle +77 -0
  22. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/opts/shifts.isle +307 -0
  23. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/opts/spaceship.isle +194 -0
  24. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/opts.rs +265 -0
  25. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/prelude.isle +641 -0
  26. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/prelude_lower.isle +1073 -0
  27. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/prelude_opt.isle +134 -0
  28. data/ext/cargo-vendor/cranelift-codegen-meta-0.104.0/.cargo-checksum.json +1 -0
  29. data/ext/cargo-vendor/cranelift-codegen-meta-0.104.0/Cargo.toml +35 -0
  30. data/ext/cargo-vendor/cranelift-codegen-shared-0.104.0/.cargo-checksum.json +1 -0
  31. data/ext/cargo-vendor/cranelift-codegen-shared-0.104.0/Cargo.toml +22 -0
  32. data/ext/cargo-vendor/cranelift-control-0.104.0/.cargo-checksum.json +1 -0
  33. data/ext/cargo-vendor/cranelift-control-0.104.0/Cargo.toml +30 -0
  34. data/ext/cargo-vendor/cranelift-entity-0.104.0/.cargo-checksum.json +1 -0
  35. data/ext/cargo-vendor/cranelift-entity-0.104.0/Cargo.toml +50 -0
  36. data/ext/cargo-vendor/cranelift-entity-0.104.0/src/primary.rs +541 -0
  37. data/ext/cargo-vendor/cranelift-frontend-0.104.0/.cargo-checksum.json +1 -0
  38. data/ext/cargo-vendor/cranelift-frontend-0.104.0/Cargo.toml +68 -0
  39. data/ext/cargo-vendor/cranelift-isle-0.104.0/.cargo-checksum.json +1 -0
  40. data/ext/cargo-vendor/cranelift-isle-0.104.0/Cargo.toml +46 -0
  41. data/ext/cargo-vendor/cranelift-native-0.104.0/.cargo-checksum.json +1 -0
  42. data/ext/cargo-vendor/cranelift-native-0.104.0/Cargo.toml +43 -0
  43. data/ext/cargo-vendor/cranelift-wasm-0.104.0/.cargo-checksum.json +1 -0
  44. data/ext/cargo-vendor/cranelift-wasm-0.104.0/Cargo.toml +106 -0
  45. data/ext/cargo-vendor/cranelift-wasm-0.104.0/src/code_translator.rs +3646 -0
  46. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.18/.cargo-checksum.json +1 -0
  47. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.18/Cargo.toml +49 -0
  48. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.18/README.md +52 -0
  49. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.18/src/clocks.rs +56 -0
  50. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.18/src/lib.rs +24 -0
  51. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.18/src/noop_scheduler.rs +25 -0
  52. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.18/tests/clocks.rs +33 -0
  53. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.18/tests/common/mod.rs +33 -0
  54. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.18/tests/random.rs +17 -0
  55. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.18/tests/scheduler.rs +24 -0
  56. data/ext/cargo-vendor/rand_pcg-0.3.1/.cargo-checksum.json +1 -0
  57. data/ext/cargo-vendor/rand_pcg-0.3.1/CHANGELOG.md +37 -0
  58. data/ext/cargo-vendor/rand_pcg-0.3.1/COPYRIGHT +12 -0
  59. data/ext/cargo-vendor/rand_pcg-0.3.1/Cargo.toml +37 -0
  60. data/ext/cargo-vendor/rand_pcg-0.3.1/LICENSE-APACHE +201 -0
  61. data/ext/cargo-vendor/rand_pcg-0.3.1/LICENSE-MIT +26 -0
  62. data/ext/cargo-vendor/rand_pcg-0.3.1/README.md +42 -0
  63. data/ext/cargo-vendor/rand_pcg-0.3.1/src/lib.rs +45 -0
  64. data/ext/cargo-vendor/rand_pcg-0.3.1/src/pcg128.rs +296 -0
  65. data/ext/cargo-vendor/rand_pcg-0.3.1/src/pcg64.rs +166 -0
  66. data/ext/cargo-vendor/rand_pcg-0.3.1/tests/lcg128xsl64.rs +77 -0
  67. data/ext/cargo-vendor/rand_pcg-0.3.1/tests/lcg64xsh32.rs +70 -0
  68. data/ext/cargo-vendor/rand_pcg-0.3.1/tests/mcg128xsl64.rs +75 -0
  69. data/ext/cargo-vendor/wasi-cap-std-sync-17.0.0/.cargo-checksum.json +1 -0
  70. data/ext/cargo-vendor/wasi-cap-std-sync-17.0.0/Cargo.toml +102 -0
  71. data/ext/cargo-vendor/wasi-common-17.0.0/.cargo-checksum.json +1 -0
  72. data/ext/cargo-vendor/wasi-common-17.0.0/Cargo.toml +131 -0
  73. data/ext/cargo-vendor/wasi-common-17.0.0/src/error.rs +26 -0
  74. data/ext/cargo-vendor/wasi-common-17.0.0/src/snapshots/preview_1/error.rs +266 -0
  75. data/ext/cargo-vendor/wasmtime-17.0.0/.cargo-checksum.json +1 -0
  76. data/ext/cargo-vendor/wasmtime-17.0.0/Cargo.toml +211 -0
  77. data/ext/cargo-vendor/wasmtime-17.0.0/src/component/component.rs +545 -0
  78. data/ext/cargo-vendor/wasmtime-17.0.0/src/component/instance.rs +815 -0
  79. data/ext/cargo-vendor/wasmtime-17.0.0/src/component/linker.rs +580 -0
  80. data/ext/cargo-vendor/wasmtime-17.0.0/src/component/matching.rs +215 -0
  81. data/ext/cargo-vendor/wasmtime-17.0.0/src/component/mod.rs +351 -0
  82. data/ext/cargo-vendor/wasmtime-17.0.0/src/component/resource_table.rs +350 -0
  83. data/ext/cargo-vendor/wasmtime-17.0.0/src/component/resources.rs +823 -0
  84. data/ext/cargo-vendor/wasmtime-17.0.0/src/config.rs +2428 -0
  85. data/ext/cargo-vendor/wasmtime-17.0.0/src/func/typed.rs +638 -0
  86. data/ext/cargo-vendor/wasmtime-17.0.0/src/lib.rs +526 -0
  87. data/ext/cargo-vendor/wasmtime-17.0.0/src/store.rs +2389 -0
  88. data/ext/cargo-vendor/wasmtime-asm-macros-17.0.0/.cargo-checksum.json +1 -0
  89. data/ext/cargo-vendor/wasmtime-asm-macros-17.0.0/Cargo.toml +22 -0
  90. data/ext/cargo-vendor/wasmtime-cache-17.0.0/.cargo-checksum.json +1 -0
  91. data/ext/cargo-vendor/wasmtime-cache-17.0.0/Cargo.toml +81 -0
  92. data/ext/cargo-vendor/wasmtime-component-macro-17.0.0/.cargo-checksum.json +1 -0
  93. data/ext/cargo-vendor/wasmtime-component-macro-17.0.0/Cargo.toml +67 -0
  94. data/ext/cargo-vendor/wasmtime-component-macro-17.0.0/src/bindgen.rs +371 -0
  95. data/ext/cargo-vendor/wasmtime-component-macro-17.0.0/tests/codegen/multiversion/root.wit +8 -0
  96. data/ext/cargo-vendor/wasmtime-component-util-17.0.0/.cargo-checksum.json +1 -0
  97. data/ext/cargo-vendor/wasmtime-component-util-17.0.0/Cargo.toml +25 -0
  98. data/ext/cargo-vendor/wasmtime-cranelift-17.0.0/.cargo-checksum.json +1 -0
  99. data/ext/cargo-vendor/wasmtime-cranelift-17.0.0/Cargo.toml +112 -0
  100. data/ext/cargo-vendor/wasmtime-cranelift-shared-17.0.0/.cargo-checksum.json +1 -0
  101. data/ext/cargo-vendor/wasmtime-cranelift-shared-17.0.0/Cargo.toml +71 -0
  102. data/ext/cargo-vendor/wasmtime-environ-17.0.0/.cargo-checksum.json +1 -0
  103. data/ext/cargo-vendor/wasmtime-environ-17.0.0/Cargo.lock +726 -0
  104. data/ext/cargo-vendor/wasmtime-environ-17.0.0/Cargo.toml +125 -0
  105. data/ext/cargo-vendor/wasmtime-environ-17.0.0/examples/factc.rs +205 -0
  106. data/ext/cargo-vendor/wasmtime-fiber-17.0.0/.cargo-checksum.json +1 -0
  107. data/ext/cargo-vendor/wasmtime-fiber-17.0.0/Cargo.toml +63 -0
  108. data/ext/cargo-vendor/wasmtime-jit-17.0.0/.cargo-checksum.json +1 -0
  109. data/ext/cargo-vendor/wasmtime-jit-17.0.0/Cargo.toml +125 -0
  110. data/ext/cargo-vendor/wasmtime-jit-debug-17.0.0/.cargo-checksum.json +1 -0
  111. data/ext/cargo-vendor/wasmtime-jit-debug-17.0.0/Cargo.toml +67 -0
  112. data/ext/cargo-vendor/wasmtime-jit-icache-coherence-17.0.0/.cargo-checksum.json +1 -0
  113. data/ext/cargo-vendor/wasmtime-jit-icache-coherence-17.0.0/Cargo.toml +46 -0
  114. data/ext/cargo-vendor/wasmtime-runtime-17.0.0/.cargo-checksum.json +1 -0
  115. data/ext/cargo-vendor/wasmtime-runtime-17.0.0/Cargo.toml +139 -0
  116. data/ext/cargo-vendor/wasmtime-runtime-17.0.0/src/instance/allocator/pooling/memory_pool.rs +997 -0
  117. data/ext/cargo-vendor/wasmtime-runtime-17.0.0/src/instance/allocator/pooling.rs +658 -0
  118. data/ext/cargo-vendor/wasmtime-runtime-17.0.0/src/memory.rs +973 -0
  119. data/ext/cargo-vendor/wasmtime-runtime-17.0.0/src/parking_spot.rs +622 -0
  120. data/ext/cargo-vendor/wasmtime-runtime-17.0.0/src/sys/windows/mmap.rs +216 -0
  121. data/ext/cargo-vendor/wasmtime-types-17.0.0/.cargo-checksum.json +1 -0
  122. data/ext/cargo-vendor/wasmtime-types-17.0.0/Cargo.toml +36 -0
  123. data/ext/cargo-vendor/wasmtime-versioned-export-macros-17.0.0/.cargo-checksum.json +1 -0
  124. data/ext/cargo-vendor/wasmtime-versioned-export-macros-17.0.0/Cargo.toml +32 -0
  125. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/.cargo-checksum.json +1 -0
  126. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/Cargo.toml +261 -0
  127. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/src/preview2/ctx.rs +333 -0
  128. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/src/preview2/filesystem.rs +325 -0
  129. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/src/preview2/host/clocks.rs +103 -0
  130. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/src/preview2/host/filesystem.rs +1069 -0
  131. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/src/preview2/host/instance_network.rs +15 -0
  132. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/src/preview2/host/network.rs +625 -0
  133. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/src/preview2/host/tcp.rs +605 -0
  134. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/src/preview2/host/udp.rs +530 -0
  135. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/src/preview2/mod.rs +327 -0
  136. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/src/preview2/network.rs +108 -0
  137. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/src/preview2/poll.rs +175 -0
  138. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/src/preview2/preview1.rs +2362 -0
  139. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/src/preview2/stream.rs +181 -0
  140. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/src/preview2/tcp.rs +335 -0
  141. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/src/preview2/udp.rs +125 -0
  142. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/tests/all/api.rs +217 -0
  143. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/tests/all/async_.rs +364 -0
  144. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/tests/all/main.rs +112 -0
  145. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/tests/all/preview1.rs +243 -0
  146. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/tests/all/sync.rs +303 -0
  147. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/command-extended.wit +6 -0
  148. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/cli/command.wit +7 -0
  149. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/cli/imports.wit +20 -0
  150. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/cli/stdio.wit +17 -0
  151. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/cli/terminal.wit +49 -0
  152. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/clocks/monotonic-clock.wit +45 -0
  153. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/clocks/wall-clock.wit +42 -0
  154. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/clocks/world.wit +6 -0
  155. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/filesystem/preopens.wit +8 -0
  156. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/filesystem/types.wit +634 -0
  157. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/filesystem/world.wit +6 -0
  158. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/http/proxy.wit +32 -0
  159. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/http/types.wit +570 -0
  160. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/io/error.wit +34 -0
  161. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/io/poll.wit +41 -0
  162. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/io/streams.wit +251 -0
  163. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/io/world.wit +6 -0
  164. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/random/insecure-seed.wit +25 -0
  165. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/random/insecure.wit +22 -0
  166. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/random/random.wit +26 -0
  167. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/random/world.wit +7 -0
  168. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/sockets/ip-name-lookup.wit +51 -0
  169. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/sockets/network.wit +145 -0
  170. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/sockets/tcp-create-socket.wit +27 -0
  171. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/sockets/tcp.wit +309 -0
  172. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/sockets/udp-create-socket.wit +27 -0
  173. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/sockets/udp.wit +264 -0
  174. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/sockets/world.wit +11 -0
  175. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/test.wit +22 -0
  176. data/ext/cargo-vendor/wasmtime-winch-17.0.0/.cargo-checksum.json +1 -0
  177. data/ext/cargo-vendor/wasmtime-winch-17.0.0/Cargo.toml +77 -0
  178. data/ext/cargo-vendor/wasmtime-wit-bindgen-17.0.0/.cargo-checksum.json +1 -0
  179. data/ext/cargo-vendor/wasmtime-wit-bindgen-17.0.0/Cargo.toml +41 -0
  180. data/ext/cargo-vendor/wasmtime-wit-bindgen-17.0.0/src/lib.rs +2097 -0
  181. data/ext/cargo-vendor/wasmtime-wmemcheck-17.0.0/.cargo-checksum.json +1 -0
  182. data/ext/cargo-vendor/wasmtime-wmemcheck-17.0.0/Cargo.toml +29 -0
  183. data/ext/cargo-vendor/wiggle-17.0.0/.cargo-checksum.json +1 -0
  184. data/ext/cargo-vendor/wiggle-17.0.0/Cargo.toml +115 -0
  185. data/ext/cargo-vendor/wiggle-generate-17.0.0/.cargo-checksum.json +1 -0
  186. data/ext/cargo-vendor/wiggle-generate-17.0.0/Cargo.toml +65 -0
  187. data/ext/cargo-vendor/wiggle-macro-17.0.0/.cargo-checksum.json +1 -0
  188. data/ext/cargo-vendor/wiggle-macro-17.0.0/Cargo.toml +55 -0
  189. data/ext/cargo-vendor/winch-codegen-0.15.0/.cargo-checksum.json +1 -0
  190. data/ext/cargo-vendor/winch-codegen-0.15.0/Cargo.toml +76 -0
  191. data/ext/cargo-vendor/winch-codegen-0.15.0/src/codegen/context.rs +553 -0
  192. data/ext/cargo-vendor/winch-codegen-0.15.0/src/codegen/env.rs +309 -0
  193. data/ext/cargo-vendor/winch-codegen-0.15.0/src/isa/aarch64/masm.rs +457 -0
  194. data/ext/cargo-vendor/winch-codegen-0.15.0/src/isa/x64/asm.rs +1149 -0
  195. data/ext/cargo-vendor/winch-codegen-0.15.0/src/isa/x64/masm.rs +1044 -0
  196. data/ext/cargo-vendor/winch-codegen-0.15.0/src/masm.rs +708 -0
  197. data/ext/cargo-vendor/winch-codegen-0.15.0/src/stack.rs +452 -0
  198. data/ext/cargo-vendor/winch-codegen-0.15.0/src/visitor.rs +1617 -0
  199. data/ext/src/helpers/mod.rs +4 -0
  200. data/ext/src/helpers/nogvl.rs +29 -0
  201. data/ext/src/helpers/tmplock.rs +45 -0
  202. data/ext/src/ruby_api/engine.rs +7 -3
  203. data/ext/src/ruby_api/mod.rs +3 -0
  204. data/ext/src/ruby_api/module.rs +22 -8
  205. data/ext/src/ruby_api/store.rs +66 -12
  206. data/ext/src/ruby_api/wasi_ctx.rs +110 -0
  207. data/ext/src/ruby_api/wasi_ctx_builder.rs +10 -7
  208. data/lib/wasmtime/version.rb +1 -1
  209. metadata +931 -904
  210. data/ext/cargo-vendor/cranelift-bforest-0.103.0/.cargo-checksum.json +0 -1
  211. data/ext/cargo-vendor/cranelift-bforest-0.103.0/Cargo.toml +0 -40
  212. data/ext/cargo-vendor/cranelift-codegen-0.103.0/.cargo-checksum.json +0 -1
  213. data/ext/cargo-vendor/cranelift-codegen-0.103.0/Cargo.toml +0 -175
  214. data/ext/cargo-vendor/cranelift-codegen-0.103.0/build.rs +0 -391
  215. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/isa/aarch64/inst.isle +0 -4193
  216. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/isa/aarch64/lower/isle.rs +0 -874
  217. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/isa/x64/abi.rs +0 -1300
  218. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/isle_prelude.rs +0 -977
  219. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/machinst/isle.rs +0 -896
  220. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/machinst/mod.rs +0 -557
  221. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/machinst/pcc.rs +0 -160
  222. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/opts/arithmetic.isle +0 -152
  223. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/opts/bitops.isle +0 -198
  224. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/opts/cprop.isle +0 -237
  225. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/opts/extends.isle +0 -34
  226. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/opts/icmp.isle +0 -199
  227. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/opts/selects.isle +0 -76
  228. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/opts/shifts.isle +0 -310
  229. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/opts.rs +0 -172
  230. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/prelude.isle +0 -649
  231. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/prelude_lower.isle +0 -1061
  232. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/prelude_opt.isle +0 -58
  233. data/ext/cargo-vendor/cranelift-codegen-meta-0.103.0/.cargo-checksum.json +0 -1
  234. data/ext/cargo-vendor/cranelift-codegen-meta-0.103.0/Cargo.toml +0 -35
  235. data/ext/cargo-vendor/cranelift-codegen-shared-0.103.0/.cargo-checksum.json +0 -1
  236. data/ext/cargo-vendor/cranelift-codegen-shared-0.103.0/Cargo.toml +0 -22
  237. data/ext/cargo-vendor/cranelift-control-0.103.0/.cargo-checksum.json +0 -1
  238. data/ext/cargo-vendor/cranelift-control-0.103.0/Cargo.toml +0 -30
  239. data/ext/cargo-vendor/cranelift-entity-0.103.0/.cargo-checksum.json +0 -1
  240. data/ext/cargo-vendor/cranelift-entity-0.103.0/Cargo.toml +0 -50
  241. data/ext/cargo-vendor/cranelift-entity-0.103.0/src/primary.rs +0 -516
  242. data/ext/cargo-vendor/cranelift-frontend-0.103.0/.cargo-checksum.json +0 -1
  243. data/ext/cargo-vendor/cranelift-frontend-0.103.0/Cargo.toml +0 -68
  244. data/ext/cargo-vendor/cranelift-isle-0.103.0/.cargo-checksum.json +0 -1
  245. data/ext/cargo-vendor/cranelift-isle-0.103.0/Cargo.toml +0 -46
  246. data/ext/cargo-vendor/cranelift-native-0.103.0/.cargo-checksum.json +0 -1
  247. data/ext/cargo-vendor/cranelift-native-0.103.0/Cargo.toml +0 -43
  248. data/ext/cargo-vendor/cranelift-wasm-0.103.0/.cargo-checksum.json +0 -1
  249. data/ext/cargo-vendor/cranelift-wasm-0.103.0/Cargo.toml +0 -106
  250. data/ext/cargo-vendor/cranelift-wasm-0.103.0/src/code_translator.rs +0 -3646
  251. data/ext/cargo-vendor/wasi-cap-std-sync-16.0.0/.cargo-checksum.json +0 -1
  252. data/ext/cargo-vendor/wasi-cap-std-sync-16.0.0/Cargo.toml +0 -102
  253. data/ext/cargo-vendor/wasi-common-16.0.0/.cargo-checksum.json +0 -1
  254. data/ext/cargo-vendor/wasi-common-16.0.0/Cargo.toml +0 -131
  255. data/ext/cargo-vendor/wasi-common-16.0.0/src/error.rs +0 -26
  256. data/ext/cargo-vendor/wasi-common-16.0.0/src/snapshots/preview_1/error.rs +0 -265
  257. data/ext/cargo-vendor/wasmtime-16.0.0/.cargo-checksum.json +0 -1
  258. data/ext/cargo-vendor/wasmtime-16.0.0/Cargo.toml +0 -211
  259. data/ext/cargo-vendor/wasmtime-16.0.0/src/component/component.rs +0 -505
  260. data/ext/cargo-vendor/wasmtime-16.0.0/src/component/instance.rs +0 -797
  261. data/ext/cargo-vendor/wasmtime-16.0.0/src/component/linker.rs +0 -523
  262. data/ext/cargo-vendor/wasmtime-16.0.0/src/component/matching.rs +0 -215
  263. data/ext/cargo-vendor/wasmtime-16.0.0/src/component/mod.rs +0 -349
  264. data/ext/cargo-vendor/wasmtime-16.0.0/src/component/resources.rs +0 -725
  265. data/ext/cargo-vendor/wasmtime-16.0.0/src/config.rs +0 -2422
  266. data/ext/cargo-vendor/wasmtime-16.0.0/src/func/typed.rs +0 -638
  267. data/ext/cargo-vendor/wasmtime-16.0.0/src/lib.rs +0 -520
  268. data/ext/cargo-vendor/wasmtime-16.0.0/src/store.rs +0 -2388
  269. data/ext/cargo-vendor/wasmtime-asm-macros-16.0.0/.cargo-checksum.json +0 -1
  270. data/ext/cargo-vendor/wasmtime-asm-macros-16.0.0/Cargo.toml +0 -22
  271. data/ext/cargo-vendor/wasmtime-cache-16.0.0/.cargo-checksum.json +0 -1
  272. data/ext/cargo-vendor/wasmtime-cache-16.0.0/Cargo.toml +0 -81
  273. data/ext/cargo-vendor/wasmtime-component-macro-16.0.0/.cargo-checksum.json +0 -1
  274. data/ext/cargo-vendor/wasmtime-component-macro-16.0.0/Cargo.toml +0 -67
  275. data/ext/cargo-vendor/wasmtime-component-macro-16.0.0/src/bindgen.rs +0 -371
  276. data/ext/cargo-vendor/wasmtime-component-macro-16.0.0/tests/codegen/multiversion/root.wit +0 -7
  277. data/ext/cargo-vendor/wasmtime-component-util-16.0.0/.cargo-checksum.json +0 -1
  278. data/ext/cargo-vendor/wasmtime-component-util-16.0.0/Cargo.toml +0 -25
  279. data/ext/cargo-vendor/wasmtime-cranelift-16.0.0/.cargo-checksum.json +0 -1
  280. data/ext/cargo-vendor/wasmtime-cranelift-16.0.0/Cargo.toml +0 -112
  281. data/ext/cargo-vendor/wasmtime-cranelift-shared-16.0.0/.cargo-checksum.json +0 -1
  282. data/ext/cargo-vendor/wasmtime-cranelift-shared-16.0.0/Cargo.toml +0 -71
  283. data/ext/cargo-vendor/wasmtime-environ-16.0.0/.cargo-checksum.json +0 -1
  284. data/ext/cargo-vendor/wasmtime-environ-16.0.0/Cargo.lock +0 -660
  285. data/ext/cargo-vendor/wasmtime-environ-16.0.0/Cargo.toml +0 -125
  286. data/ext/cargo-vendor/wasmtime-environ-16.0.0/examples/factc.rs +0 -205
  287. data/ext/cargo-vendor/wasmtime-fiber-16.0.0/.cargo-checksum.json +0 -1
  288. data/ext/cargo-vendor/wasmtime-fiber-16.0.0/Cargo.toml +0 -63
  289. data/ext/cargo-vendor/wasmtime-jit-16.0.0/.cargo-checksum.json +0 -1
  290. data/ext/cargo-vendor/wasmtime-jit-16.0.0/Cargo.toml +0 -125
  291. data/ext/cargo-vendor/wasmtime-jit-debug-16.0.0/.cargo-checksum.json +0 -1
  292. data/ext/cargo-vendor/wasmtime-jit-debug-16.0.0/Cargo.toml +0 -67
  293. data/ext/cargo-vendor/wasmtime-jit-icache-coherence-16.0.0/.cargo-checksum.json +0 -1
  294. data/ext/cargo-vendor/wasmtime-jit-icache-coherence-16.0.0/Cargo.toml +0 -46
  295. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/.cargo-checksum.json +0 -1
  296. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/Cargo.toml +0 -139
  297. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/instance/allocator/pooling/memory_pool.rs +0 -1005
  298. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/instance/allocator/pooling.rs +0 -698
  299. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/memory.rs +0 -968
  300. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/parking_spot.rs +0 -520
  301. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/sys/windows/mmap.rs +0 -211
  302. data/ext/cargo-vendor/wasmtime-types-16.0.0/.cargo-checksum.json +0 -1
  303. data/ext/cargo-vendor/wasmtime-types-16.0.0/Cargo.toml +0 -36
  304. data/ext/cargo-vendor/wasmtime-versioned-export-macros-16.0.0/.cargo-checksum.json +0 -1
  305. data/ext/cargo-vendor/wasmtime-versioned-export-macros-16.0.0/Cargo.toml +0 -32
  306. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/.cargo-checksum.json +0 -1
  307. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/Cargo.toml +0 -261
  308. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/ctx.rs +0 -325
  309. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/filesystem.rs +0 -326
  310. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/host/clocks.rs +0 -103
  311. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/host/filesystem.rs +0 -1069
  312. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/host/instance_network.rs +0 -15
  313. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/host/network.rs +0 -570
  314. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/host/tcp.rs +0 -632
  315. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/host/udp.rs +0 -550
  316. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/mod.rs +0 -328
  317. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/network.rs +0 -57
  318. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/poll.rs +0 -175
  319. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/preview1.rs +0 -2348
  320. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/stream.rs +0 -182
  321. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/table.rs +0 -337
  322. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/tcp.rs +0 -338
  323. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/udp.rs +0 -118
  324. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/tests/all/api.rs +0 -218
  325. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/tests/all/async_.rs +0 -360
  326. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/tests/all/main.rs +0 -113
  327. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/tests/all/preview1.rs +0 -239
  328. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/tests/all/sync.rs +0 -299
  329. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/command-extended.wit +0 -6
  330. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/cli/command.wit +0 -7
  331. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/cli/imports.wit +0 -20
  332. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/cli/stdio.wit +0 -17
  333. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/cli/terminal.wit +0 -47
  334. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/clocks/monotonic-clock.wit +0 -45
  335. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/clocks/wall-clock.wit +0 -42
  336. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/clocks/world.wit +0 -6
  337. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/filesystem/preopens.wit +0 -8
  338. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/filesystem/types.wit +0 -634
  339. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/filesystem/world.wit +0 -6
  340. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/http/proxy.wit +0 -32
  341. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/http/types.wit +0 -570
  342. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/io/error.wit +0 -34
  343. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/io/poll.wit +0 -41
  344. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/io/streams.wit +0 -251
  345. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/io/world.wit +0 -6
  346. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/random/insecure-seed.wit +0 -25
  347. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/random/insecure.wit +0 -22
  348. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/random/random.wit +0 -26
  349. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/random/world.wit +0 -7
  350. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/sockets/ip-name-lookup.wit +0 -51
  351. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/sockets/network.wit +0 -147
  352. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/sockets/tcp-create-socket.wit +0 -26
  353. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/sockets/tcp.wit +0 -321
  354. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/sockets/udp-create-socket.wit +0 -26
  355. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/sockets/udp.wit +0 -277
  356. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/sockets/world.wit +0 -11
  357. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/test.wit +0 -22
  358. data/ext/cargo-vendor/wasmtime-winch-16.0.0/.cargo-checksum.json +0 -1
  359. data/ext/cargo-vendor/wasmtime-winch-16.0.0/Cargo.toml +0 -77
  360. data/ext/cargo-vendor/wasmtime-wit-bindgen-16.0.0/.cargo-checksum.json +0 -1
  361. data/ext/cargo-vendor/wasmtime-wit-bindgen-16.0.0/Cargo.toml +0 -41
  362. data/ext/cargo-vendor/wasmtime-wit-bindgen-16.0.0/src/lib.rs +0 -2095
  363. data/ext/cargo-vendor/wasmtime-wmemcheck-16.0.0/.cargo-checksum.json +0 -1
  364. data/ext/cargo-vendor/wasmtime-wmemcheck-16.0.0/Cargo.toml +0 -29
  365. data/ext/cargo-vendor/wiggle-16.0.0/.cargo-checksum.json +0 -1
  366. data/ext/cargo-vendor/wiggle-16.0.0/Cargo.toml +0 -115
  367. data/ext/cargo-vendor/wiggle-generate-16.0.0/.cargo-checksum.json +0 -1
  368. data/ext/cargo-vendor/wiggle-generate-16.0.0/Cargo.toml +0 -65
  369. data/ext/cargo-vendor/wiggle-macro-16.0.0/.cargo-checksum.json +0 -1
  370. data/ext/cargo-vendor/wiggle-macro-16.0.0/Cargo.toml +0 -55
  371. data/ext/cargo-vendor/winch-codegen-0.14.0/.cargo-checksum.json +0 -1
  372. data/ext/cargo-vendor/winch-codegen-0.14.0/Cargo.toml +0 -76
  373. data/ext/cargo-vendor/winch-codegen-0.14.0/src/codegen/context.rs +0 -545
  374. data/ext/cargo-vendor/winch-codegen-0.14.0/src/codegen/env.rs +0 -251
  375. data/ext/cargo-vendor/winch-codegen-0.14.0/src/isa/aarch64/masm.rs +0 -444
  376. data/ext/cargo-vendor/winch-codegen-0.14.0/src/isa/x64/asm.rs +0 -1117
  377. data/ext/cargo-vendor/winch-codegen-0.14.0/src/isa/x64/masm.rs +0 -994
  378. data/ext/cargo-vendor/winch-codegen-0.14.0/src/masm.rs +0 -679
  379. data/ext/cargo-vendor/winch-codegen-0.14.0/src/stack.rs +0 -436
  380. data/ext/cargo-vendor/winch-codegen-0.14.0/src/visitor.rs +0 -1383
  381. /data/ext/cargo-vendor/{cranelift-bforest-0.103.0 → cranelift-bforest-0.104.0}/LICENSE +0 -0
  382. /data/ext/cargo-vendor/{cranelift-bforest-0.103.0 → cranelift-bforest-0.104.0}/README.md +0 -0
  383. /data/ext/cargo-vendor/{cranelift-bforest-0.103.0 → cranelift-bforest-0.104.0}/src/lib.rs +0 -0
  384. /data/ext/cargo-vendor/{cranelift-bforest-0.103.0 → cranelift-bforest-0.104.0}/src/map.rs +0 -0
  385. /data/ext/cargo-vendor/{cranelift-bforest-0.103.0 → cranelift-bforest-0.104.0}/src/node.rs +0 -0
  386. /data/ext/cargo-vendor/{cranelift-bforest-0.103.0 → cranelift-bforest-0.104.0}/src/path.rs +0 -0
  387. /data/ext/cargo-vendor/{cranelift-bforest-0.103.0 → cranelift-bforest-0.104.0}/src/pool.rs +0 -0
  388. /data/ext/cargo-vendor/{cranelift-bforest-0.103.0 → cranelift-bforest-0.104.0}/src/set.rs +0 -0
  389. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/LICENSE +0 -0
  390. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/README.md +0 -0
  391. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/benches/x64-evex-encoding.rs +0 -0
  392. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/alias_analysis.rs +0 -0
  393. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/binemit/mod.rs +0 -0
  394. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/binemit/stack_map.rs +0 -0
  395. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/bitset.rs +0 -0
  396. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/cfg_printer.rs +0 -0
  397. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/constant_hash.rs +0 -0
  398. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/context.rs +0 -0
  399. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ctxhash.rs +0 -0
  400. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/cursor.rs +0 -0
  401. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/data_value.rs +0 -0
  402. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/dbg.rs +0 -0
  403. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/dce.rs +0 -0
  404. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/dominator_tree.rs +0 -0
  405. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/egraph/cost.rs +0 -0
  406. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/egraph/domtree.rs +0 -0
  407. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/egraph/elaborate.rs +0 -0
  408. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/egraph.rs +0 -0
  409. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/flowgraph.rs +0 -0
  410. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/fx.rs +0 -0
  411. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/incremental_cache.rs +0 -0
  412. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/inst_predicates.rs +0 -0
  413. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/atomic_rmw_op.rs +0 -0
  414. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/builder.rs +0 -0
  415. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/condcodes.rs +0 -0
  416. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/constant.rs +0 -0
  417. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/dfg.rs +0 -0
  418. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/dynamic_type.rs +0 -0
  419. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/entities.rs +0 -0
  420. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/extfunc.rs +0 -0
  421. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/extname.rs +0 -0
  422. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/function.rs +0 -0
  423. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/globalvalue.rs +0 -0
  424. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/immediates.rs +0 -0
  425. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/instructions.rs +0 -0
  426. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/jumptable.rs +0 -0
  427. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/known_symbol.rs +0 -0
  428. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/layout.rs +0 -0
  429. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/libcall.rs +0 -0
  430. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/memflags.rs +0 -0
  431. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/memtype.rs +0 -0
  432. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/mod.rs +0 -0
  433. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/pcc.rs +0 -0
  434. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/progpoint.rs +0 -0
  435. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/sourceloc.rs +0 -0
  436. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/stackslot.rs +0 -0
  437. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/table.rs +0 -0
  438. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/trapcode.rs +0 -0
  439. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/types.rs +0 -0
  440. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/abi.rs +0 -0
  441. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/inst/args.rs +0 -0
  442. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/inst/emit.rs +0 -0
  443. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/inst/emit_tests.rs +0 -0
  444. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/inst/imms.rs +0 -0
  445. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/inst/mod.rs +0 -0
  446. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/inst/regs.rs +0 -0
  447. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/inst/unwind/systemv.rs +0 -0
  448. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/inst/unwind.rs +0 -0
  449. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/inst_neon.isle +0 -0
  450. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/lower/isle/generated_code.rs +0 -0
  451. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/lower.isle +0 -0
  452. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/lower.rs +0 -0
  453. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/lower_dynamic_neon.isle +0 -0
  454. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/mod.rs +0 -0
  455. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/pcc.rs +0 -0
  456. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/settings.rs +0 -0
  457. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/call_conv.rs +0 -0
  458. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/mod.rs +0 -0
  459. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/abi.rs +0 -0
  460. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/inst/args.rs +0 -0
  461. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/inst/emit.rs +0 -0
  462. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/inst/emit_tests.rs +0 -0
  463. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/inst/encode.rs +0 -0
  464. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/inst/imms.rs +0 -0
  465. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/inst/mod.rs +0 -0
  466. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/inst/regs.rs +0 -0
  467. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/inst/unwind/systemv.rs +0 -0
  468. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/inst/unwind.rs +0 -0
  469. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/inst/vector.rs +0 -0
  470. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/inst.isle +0 -0
  471. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/inst_vector.isle +0 -0
  472. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/lower/isle/generated_code.rs +0 -0
  473. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/lower/isle.rs +0 -0
  474. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/lower.isle +0 -0
  475. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/lower.rs +0 -0
  476. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/mod.rs +0 -0
  477. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/settings.rs +0 -0
  478. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/s390x/abi.rs +0 -0
  479. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/s390x/inst/args.rs +0 -0
  480. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/s390x/inst/emit.rs +0 -0
  481. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/s390x/inst/emit_tests.rs +0 -0
  482. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/s390x/inst/imms.rs +0 -0
  483. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/s390x/inst/mod.rs +0 -0
  484. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/s390x/inst/regs.rs +0 -0
  485. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/s390x/inst/unwind/systemv.rs +0 -0
  486. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/s390x/inst/unwind.rs +0 -0
  487. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/s390x/inst.isle +0 -0
  488. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/s390x/lower/isle/generated_code.rs +0 -0
  489. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/s390x/lower/isle.rs +0 -0
  490. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/s390x/lower.isle +0 -0
  491. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/s390x/lower.rs +0 -0
  492. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/s390x/mod.rs +0 -0
  493. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/s390x/settings.rs +0 -0
  494. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/unwind/systemv.rs +0 -0
  495. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/unwind/winx64.rs +0 -0
  496. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/unwind.rs +0 -0
  497. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/encoding/evex.rs +0 -0
  498. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/encoding/mod.rs +0 -0
  499. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/encoding/rex.rs +0 -0
  500. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/encoding/vex.rs +0 -0
  501. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/inst/args.rs +0 -0
  502. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/inst/emit.rs +0 -0
  503. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/inst/emit_state.rs +0 -0
  504. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/inst/emit_tests.rs +0 -0
  505. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/inst/mod.rs +0 -0
  506. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/inst/regs.rs +0 -0
  507. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/inst/unwind/systemv.rs +0 -0
  508. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/inst/unwind/winx64.rs +0 -0
  509. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/inst/unwind.rs +0 -0
  510. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/inst.isle +0 -0
  511. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/lower/isle/generated_code.rs +0 -0
  512. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/lower/isle.rs +0 -0
  513. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/lower.isle +0 -0
  514. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/lower.rs +0 -0
  515. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/mod.rs +0 -0
  516. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/pcc.rs +0 -0
  517. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/settings.rs +0 -0
  518. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/iterators.rs +0 -0
  519. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/legalizer/globalvalue.rs +0 -0
  520. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/legalizer/mod.rs +0 -0
  521. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/legalizer/table.rs +0 -0
  522. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/lib.rs +0 -0
  523. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/loop_analysis.rs +0 -0
  524. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/machinst/abi.rs +0 -0
  525. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/machinst/blockorder.rs +0 -0
  526. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/machinst/buffer.rs +0 -0
  527. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/machinst/compile.rs +0 -0
  528. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/machinst/helpers.rs +0 -0
  529. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/machinst/inst_common.rs +0 -0
  530. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/machinst/lower.rs +0 -0
  531. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/machinst/reg.rs +0 -0
  532. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/machinst/valueregs.rs +0 -0
  533. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/machinst/vcode.rs +0 -0
  534. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/nan_canonicalization.rs +0 -0
  535. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/opts/README.md +0 -0
  536. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/opts/generated_code.rs +0 -0
  537. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/opts/remat.isle +0 -0
  538. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/opts/vector.isle +0 -0
  539. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/print_errors.rs +0 -0
  540. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/remove_constant_phis.rs +0 -0
  541. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/result.rs +0 -0
  542. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/scoped_hash_map.rs +0 -0
  543. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/settings.rs +0 -0
  544. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/souper_harvest.rs +0 -0
  545. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/timing.rs +0 -0
  546. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/unionfind.rs +0 -0
  547. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/unreachable_code.rs +0 -0
  548. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/value_label.rs +0 -0
  549. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/verifier/mod.rs +0 -0
  550. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/write.rs +0 -0
  551. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/LICENSE +0 -0
  552. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/README.md +0 -0
  553. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/cdsl/formats.rs +0 -0
  554. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/cdsl/instructions.rs +0 -0
  555. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/cdsl/isa.rs +0 -0
  556. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/cdsl/mod.rs +0 -0
  557. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/cdsl/operands.rs +0 -0
  558. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/cdsl/settings.rs +0 -0
  559. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/cdsl/types.rs +0 -0
  560. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/cdsl/typevar.rs +0 -0
  561. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/constant_hash.rs +0 -0
  562. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/error.rs +0 -0
  563. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/gen_inst.rs +0 -0
  564. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/gen_settings.rs +0 -0
  565. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/gen_types.rs +0 -0
  566. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/isa/arm64.rs +0 -0
  567. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/isa/mod.rs +0 -0
  568. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/isa/riscv64.rs +0 -0
  569. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/isa/s390x.rs +0 -0
  570. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/isa/x86.rs +0 -0
  571. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/lib.rs +0 -0
  572. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/shared/entities.rs +0 -0
  573. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/shared/formats.rs +0 -0
  574. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/shared/immediates.rs +0 -0
  575. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/shared/instructions.rs +0 -0
  576. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/shared/mod.rs +0 -0
  577. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/shared/settings.rs +0 -0
  578. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/shared/types.rs +0 -0
  579. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/srcgen.rs +0 -0
  580. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/unique_table.rs +0 -0
  581. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.103.0 → cranelift-codegen-shared-0.104.0}/LICENSE +0 -0
  582. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.103.0 → cranelift-codegen-shared-0.104.0}/README.md +0 -0
  583. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.103.0 → cranelift-codegen-shared-0.104.0}/src/constant_hash.rs +0 -0
  584. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.103.0 → cranelift-codegen-shared-0.104.0}/src/constants.rs +0 -0
  585. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.103.0 → cranelift-codegen-shared-0.104.0}/src/lib.rs +0 -0
  586. /data/ext/cargo-vendor/{cranelift-control-0.103.0 → cranelift-control-0.104.0}/LICENSE +0 -0
  587. /data/ext/cargo-vendor/{cranelift-control-0.103.0 → cranelift-control-0.104.0}/README.md +0 -0
  588. /data/ext/cargo-vendor/{cranelift-control-0.103.0 → cranelift-control-0.104.0}/src/chaos.rs +0 -0
  589. /data/ext/cargo-vendor/{cranelift-control-0.103.0 → cranelift-control-0.104.0}/src/lib.rs +0 -0
  590. /data/ext/cargo-vendor/{cranelift-control-0.103.0 → cranelift-control-0.104.0}/src/zero_sized.rs +0 -0
  591. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.0}/LICENSE +0 -0
  592. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.0}/README.md +0 -0
  593. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.0}/src/boxed_slice.rs +0 -0
  594. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.0}/src/iter.rs +0 -0
  595. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.0}/src/keys.rs +0 -0
  596. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.0}/src/lib.rs +0 -0
  597. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.0}/src/list.rs +0 -0
  598. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.0}/src/map.rs +0 -0
  599. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.0}/src/packed_option.rs +0 -0
  600. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.0}/src/set.rs +0 -0
  601. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.0}/src/sparse.rs +0 -0
  602. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.0}/src/unsigned.rs +0 -0
  603. /data/ext/cargo-vendor/{cranelift-frontend-0.103.0 → cranelift-frontend-0.104.0}/LICENSE +0 -0
  604. /data/ext/cargo-vendor/{cranelift-frontend-0.103.0 → cranelift-frontend-0.104.0}/README.md +0 -0
  605. /data/ext/cargo-vendor/{cranelift-frontend-0.103.0 → cranelift-frontend-0.104.0}/src/frontend.rs +0 -0
  606. /data/ext/cargo-vendor/{cranelift-frontend-0.103.0 → cranelift-frontend-0.104.0}/src/lib.rs +0 -0
  607. /data/ext/cargo-vendor/{cranelift-frontend-0.103.0 → cranelift-frontend-0.104.0}/src/ssa.rs +0 -0
  608. /data/ext/cargo-vendor/{cranelift-frontend-0.103.0 → cranelift-frontend-0.104.0}/src/switch.rs +0 -0
  609. /data/ext/cargo-vendor/{cranelift-frontend-0.103.0 → cranelift-frontend-0.104.0}/src/variable.rs +0 -0
  610. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/README.md +0 -0
  611. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/build.rs +0 -0
  612. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/fail/bad_converters.isle +0 -0
  613. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/fail/bound_var_type_mismatch.isle +0 -0
  614. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/fail/converter_extractor_constructor.isle +0 -0
  615. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/fail/error1.isle +0 -0
  616. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/fail/extra_parens.isle +0 -0
  617. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/fail/impure_expression.isle +0 -0
  618. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/fail/impure_rhs.isle +0 -0
  619. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/fail/multi_internal_etor.isle +0 -0
  620. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/fail/multi_prio.isle +0 -0
  621. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/link/borrows.isle +0 -0
  622. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/link/borrows_main.rs +0 -0
  623. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/link/iflets.isle +0 -0
  624. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/link/iflets_main.rs +0 -0
  625. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/link/multi_constructor.isle +0 -0
  626. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/link/multi_constructor_main.rs +0 -0
  627. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/link/multi_extractor.isle +0 -0
  628. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/link/multi_extractor_main.rs +0 -0
  629. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/link/test.isle +0 -0
  630. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/link/test_main.rs +0 -0
  631. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/pass/bound_var.isle +0 -0
  632. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/pass/construct_and_extract.isle +0 -0
  633. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/pass/conversions.isle +0 -0
  634. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/pass/conversions_extern.isle +0 -0
  635. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/pass/let.isle +0 -0
  636. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/pass/nodebug.isle +0 -0
  637. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/pass/prio_trie_bug.isle +0 -0
  638. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/pass/test2.isle +0 -0
  639. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/pass/test3.isle +0 -0
  640. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/pass/test4.isle +0 -0
  641. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/pass/tutorial.isle +0 -0
  642. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/run/iconst.isle +0 -0
  643. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/run/iconst_main.rs +0 -0
  644. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/run/let_shadowing.isle +0 -0
  645. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/run/let_shadowing_main.rs +0 -0
  646. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/src/ast.rs +0 -0
  647. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/src/codegen.rs +0 -0
  648. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/src/compile.rs +0 -0
  649. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/src/error.rs +0 -0
  650. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/src/lexer.rs +0 -0
  651. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/src/lib.rs +0 -0
  652. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/src/log.rs +0 -0
  653. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/src/overlap.rs +0 -0
  654. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/src/parser.rs +0 -0
  655. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/src/sema.rs +0 -0
  656. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/src/serialize.rs +0 -0
  657. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/src/trie_again.rs +0 -0
  658. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/tests/run_tests.rs +0 -0
  659. /data/ext/cargo-vendor/{cranelift-native-0.103.0 → cranelift-native-0.104.0}/LICENSE +0 -0
  660. /data/ext/cargo-vendor/{cranelift-native-0.103.0 → cranelift-native-0.104.0}/README.md +0 -0
  661. /data/ext/cargo-vendor/{cranelift-native-0.103.0 → cranelift-native-0.104.0}/src/lib.rs +0 -0
  662. /data/ext/cargo-vendor/{cranelift-native-0.103.0 → cranelift-native-0.104.0}/src/riscv.rs +0 -0
  663. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/LICENSE +0 -0
  664. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/README.md +0 -0
  665. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/src/code_translator/bounds_checks.rs +0 -0
  666. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/src/environ/dummy.rs +0 -0
  667. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/src/environ/mod.rs +0 -0
  668. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/src/environ/spec.rs +0 -0
  669. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/src/func_translator.rs +0 -0
  670. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/src/heap.rs +0 -0
  671. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/src/lib.rs +0 -0
  672. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/src/module_translator.rs +0 -0
  673. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/src/sections_translator.rs +0 -0
  674. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/src/state.rs +0 -0
  675. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/src/translation_utils.rs +0 -0
  676. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/tests/wasm_testsuite.rs +0 -0
  677. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/arith.wat +0 -0
  678. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/br_table.wat +0 -0
  679. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/call-simd.wat +0 -0
  680. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/call.wat +0 -0
  681. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/embenchen_fannkuch.wat +0 -0
  682. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/embenchen_fasta.wat +0 -0
  683. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/embenchen_ifs.wat +0 -0
  684. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/embenchen_primes.wat +0 -0
  685. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/fac-multi-value.wat +0 -0
  686. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/fibonacci.wat +0 -0
  687. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/globals.wat +0 -0
  688. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/icall-simd.wat +0 -0
  689. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/icall.wat +0 -0
  690. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/if-reachability-translation-0.wat +0 -0
  691. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/if-reachability-translation-1.wat +0 -0
  692. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/if-reachability-translation-2.wat +0 -0
  693. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/if-reachability-translation-3.wat +0 -0
  694. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/if-reachability-translation-4.wat +0 -0
  695. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/if-reachability-translation-5.wat +0 -0
  696. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/if-reachability-translation-6.wat +0 -0
  697. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/if-unreachable-else-params-2.wat +0 -0
  698. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/if-unreachable-else-params.wat +0 -0
  699. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/issue-1306-name-section-with-u32-max-function-index.wasm +0 -0
  700. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/memory.wat +0 -0
  701. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-0.wat +0 -0
  702. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-1.wat +0 -0
  703. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-10.wat +0 -0
  704. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-11.wat +0 -0
  705. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-12.wat +0 -0
  706. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-13.wat +0 -0
  707. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-14.wat +0 -0
  708. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-15.wat +0 -0
  709. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-16.wat +0 -0
  710. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-17.wat +0 -0
  711. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-2.wat +0 -0
  712. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-3.wat +0 -0
  713. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-4.wat +0 -0
  714. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-5.wat +0 -0
  715. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-6.wat +0 -0
  716. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-7.wat +0 -0
  717. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-8.wat +0 -0
  718. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-9.wat +0 -0
  719. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/nullref.wat +0 -0
  720. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/passive-data.wat +0 -0
  721. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/pr2303.wat +0 -0
  722. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/pr2559.wat +0 -0
  723. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/ref-func-0.wat +0 -0
  724. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/rust_fannkuch.wat +0 -0
  725. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/select.wat +0 -0
  726. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/simd-store.wat +0 -0
  727. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/simd.wat +0 -0
  728. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/table-copy.wat +0 -0
  729. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/unreachable_code.wat +0 -0
  730. /data/ext/cargo-vendor/{wasi-cap-std-sync-16.0.0 → wasi-cap-std-sync-17.0.0}/LICENSE +0 -0
  731. /data/ext/cargo-vendor/{wasi-cap-std-sync-16.0.0 → wasi-cap-std-sync-17.0.0}/README.md +0 -0
  732. /data/ext/cargo-vendor/{wasi-cap-std-sync-16.0.0 → wasi-cap-std-sync-17.0.0}/src/clocks.rs +0 -0
  733. /data/ext/cargo-vendor/{wasi-cap-std-sync-16.0.0 → wasi-cap-std-sync-17.0.0}/src/dir.rs +0 -0
  734. /data/ext/cargo-vendor/{wasi-cap-std-sync-16.0.0 → wasi-cap-std-sync-17.0.0}/src/file.rs +0 -0
  735. /data/ext/cargo-vendor/{wasi-cap-std-sync-16.0.0 → wasi-cap-std-sync-17.0.0}/src/lib.rs +0 -0
  736. /data/ext/cargo-vendor/{wasi-cap-std-sync-16.0.0 → wasi-cap-std-sync-17.0.0}/src/net.rs +0 -0
  737. /data/ext/cargo-vendor/{wasi-cap-std-sync-16.0.0 → wasi-cap-std-sync-17.0.0}/src/sched/unix.rs +0 -0
  738. /data/ext/cargo-vendor/{wasi-cap-std-sync-16.0.0 → wasi-cap-std-sync-17.0.0}/src/sched/windows.rs +0 -0
  739. /data/ext/cargo-vendor/{wasi-cap-std-sync-16.0.0 → wasi-cap-std-sync-17.0.0}/src/sched.rs +0 -0
  740. /data/ext/cargo-vendor/{wasi-cap-std-sync-16.0.0 → wasi-cap-std-sync-17.0.0}/src/stdio.rs +0 -0
  741. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/LICENSE +0 -0
  742. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/README.md +0 -0
  743. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/README.md +0 -0
  744. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/docs/README.md +0 -0
  745. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/README.md +0 -0
  746. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/ephemeral/docs.md +0 -0
  747. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/ephemeral/witx/typenames.witx +0 -0
  748. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_args.witx +0 -0
  749. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_clock.witx +0 -0
  750. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_environ.witx +0 -0
  751. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_fd.witx +0 -0
  752. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_path.witx +0 -0
  753. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_poll.witx +0 -0
  754. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_proc.witx +0 -0
  755. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_random.witx +0 -0
  756. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_sched.witx +0 -0
  757. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_sock.witx +0 -0
  758. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/old/snapshot_0/docs.md +0 -0
  759. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/old/snapshot_0/witx/typenames.witx +0 -0
  760. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/old/snapshot_0/witx/wasi_unstable.witx +0 -0
  761. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/snapshot/docs.html +0 -0
  762. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/snapshot/docs.md +0 -0
  763. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/snapshot/witx/typenames.witx +0 -0
  764. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/snapshot/witx/wasi_snapshot_preview1.witx +0 -0
  765. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/proposal-template/README.md +0 -0
  766. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/proposals/README.md +0 -0
  767. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/snapshots/README.md +0 -0
  768. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/standard/README.md +0 -0
  769. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/build.rs +0 -0
  770. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/src/clocks.rs +0 -0
  771. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/src/ctx.rs +0 -0
  772. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/src/dir.rs +0 -0
  773. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/src/file.rs +0 -0
  774. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/src/lib.rs +0 -0
  775. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/src/pipe.rs +0 -0
  776. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/src/random.rs +0 -0
  777. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/src/sched/subscription.rs +0 -0
  778. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/src/sched.rs +0 -0
  779. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/src/snapshots/mod.rs +0 -0
  780. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/src/snapshots/preview_0.rs +0 -0
  781. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/src/snapshots/preview_1.rs +0 -0
  782. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/src/string_array.rs +0 -0
  783. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/src/table.rs +0 -0
  784. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/LICENSE +0 -0
  785. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/README.md +0 -0
  786. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/code.rs +0 -0
  787. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/compiler.rs +0 -0
  788. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/component/func/host.rs +0 -0
  789. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/component/func/options.rs +0 -0
  790. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/component/func/typed.rs +0 -0
  791. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/component/func.rs +0 -0
  792. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/component/storage.rs +0 -0
  793. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/component/store.rs +0 -0
  794. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/component/types.rs +0 -0
  795. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/component/values.rs +0 -0
  796. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/coredump.rs +0 -0
  797. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/engine/serialization.rs +0 -0
  798. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/engine.rs +0 -0
  799. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/externals/global.rs +0 -0
  800. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/externals/table.rs +0 -0
  801. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/externals.rs +0 -0
  802. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/func.rs +0 -0
  803. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/instance.rs +0 -0
  804. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/limits.rs +0 -0
  805. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/linker.rs +0 -0
  806. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/memory.rs +0 -0
  807. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/module/registry.rs +0 -0
  808. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/module.rs +0 -0
  809. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/profiling.rs +0 -0
  810. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/ref.rs +0 -0
  811. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/resources.rs +0 -0
  812. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/signatures.rs +0 -0
  813. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/stack.rs +0 -0
  814. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/store/context.rs +0 -0
  815. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/store/data.rs +0 -0
  816. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/store/func_refs.rs +0 -0
  817. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/trampoline/func.rs +0 -0
  818. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/trampoline/global.rs +0 -0
  819. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/trampoline/memory.rs +0 -0
  820. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/trampoline/table.rs +0 -0
  821. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/trampoline.rs +0 -0
  822. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/trap.rs +0 -0
  823. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/types/matching.rs +0 -0
  824. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/types.rs +0 -0
  825. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/unix.rs +0 -0
  826. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/v128.rs +0 -0
  827. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/values.rs +0 -0
  828. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/windows.rs +0 -0
  829. /data/ext/cargo-vendor/{wasmtime-asm-macros-16.0.0 → wasmtime-asm-macros-17.0.0}/src/lib.rs +0 -0
  830. /data/ext/cargo-vendor/{wasmtime-cache-16.0.0 → wasmtime-cache-17.0.0}/LICENSE +0 -0
  831. /data/ext/cargo-vendor/{wasmtime-cache-16.0.0 → wasmtime-cache-17.0.0}/build.rs +0 -0
  832. /data/ext/cargo-vendor/{wasmtime-cache-16.0.0 → wasmtime-cache-17.0.0}/src/config/tests.rs +0 -0
  833. /data/ext/cargo-vendor/{wasmtime-cache-16.0.0 → wasmtime-cache-17.0.0}/src/config.rs +0 -0
  834. /data/ext/cargo-vendor/{wasmtime-cache-16.0.0 → wasmtime-cache-17.0.0}/src/lib.rs +0 -0
  835. /data/ext/cargo-vendor/{wasmtime-cache-16.0.0 → wasmtime-cache-17.0.0}/src/tests.rs +0 -0
  836. /data/ext/cargo-vendor/{wasmtime-cache-16.0.0 → wasmtime-cache-17.0.0}/src/worker/tests/system_time_stub.rs +0 -0
  837. /data/ext/cargo-vendor/{wasmtime-cache-16.0.0 → wasmtime-cache-17.0.0}/src/worker/tests.rs +0 -0
  838. /data/ext/cargo-vendor/{wasmtime-cache-16.0.0 → wasmtime-cache-17.0.0}/src/worker.rs +0 -0
  839. /data/ext/cargo-vendor/{wasmtime-cache-16.0.0 → wasmtime-cache-17.0.0}/tests/cache_write_default_config.rs +0 -0
  840. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/src/component.rs +0 -0
  841. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/src/lib.rs +0 -0
  842. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/char.wit +0 -0
  843. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/conventions.wit +0 -0
  844. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/direct-import.wit +0 -0
  845. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/empty.wit +0 -0
  846. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/flags.wit +0 -0
  847. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/floats.wit +0 -0
  848. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/function-new.wit +0 -0
  849. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/integers.wit +0 -0
  850. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/lists.wit +0 -0
  851. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/many-arguments.wit +0 -0
  852. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/multi-return.wit +0 -0
  853. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/multiversion/deps/v1/root.wit +0 -0
  854. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/multiversion/deps/v2/root.wit +0 -0
  855. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/records.wit +0 -0
  856. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/rename.wit +0 -0
  857. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/resources-export.wit +0 -0
  858. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/resources-import.wit +0 -0
  859. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/share-types.wit +0 -0
  860. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/simple-functions.wit +0 -0
  861. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/simple-lists.wit +0 -0
  862. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/simple-wasi.wit +0 -0
  863. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/small-anonymous.wit +0 -0
  864. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/smoke-default.wit +0 -0
  865. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/smoke-export.wit +0 -0
  866. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/smoke.wit +0 -0
  867. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/strings.wit +0 -0
  868. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/use-paths.wit +0 -0
  869. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/variants.wit +0 -0
  870. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/worlds-with-types.wit +0 -0
  871. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen.rs +0 -0
  872. /data/ext/cargo-vendor/{wasmtime-component-util-16.0.0 → wasmtime-component-util-17.0.0}/src/lib.rs +0 -0
  873. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/LICENSE +0 -0
  874. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/SECURITY.md +0 -0
  875. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/builder.rs +0 -0
  876. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/compiler/component.rs +0 -0
  877. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/compiler.rs +0 -0
  878. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/debug/gc.rs +0 -0
  879. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/debug/transform/address_transform.rs +0 -0
  880. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/debug/transform/attr.rs +0 -0
  881. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/debug/transform/expression.rs +0 -0
  882. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/debug/transform/line_program.rs +0 -0
  883. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/debug/transform/mod.rs +0 -0
  884. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/debug/transform/range_info_builder.rs +0 -0
  885. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/debug/transform/refs.rs +0 -0
  886. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/debug/transform/simulate.rs +0 -0
  887. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/debug/transform/unit.rs +0 -0
  888. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/debug/transform/utils.rs +0 -0
  889. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/debug/write_debuginfo.rs +0 -0
  890. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/debug.rs +0 -0
  891. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/func_environ.rs +0 -0
  892. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/lib.rs +0 -0
  893. /data/ext/cargo-vendor/{wasmtime-cranelift-shared-16.0.0 → wasmtime-cranelift-shared-17.0.0}/src/compiled_function.rs +0 -0
  894. /data/ext/cargo-vendor/{wasmtime-cranelift-shared-16.0.0 → wasmtime-cranelift-shared-17.0.0}/src/isa_builder.rs +0 -0
  895. /data/ext/cargo-vendor/{wasmtime-cranelift-shared-16.0.0 → wasmtime-cranelift-shared-17.0.0}/src/lib.rs +0 -0
  896. /data/ext/cargo-vendor/{wasmtime-cranelift-shared-16.0.0 → wasmtime-cranelift-shared-17.0.0}/src/obj.rs +0 -0
  897. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/LICENSE +0 -0
  898. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/address_map.rs +0 -0
  899. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/builtin.rs +0 -0
  900. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/compilation.rs +0 -0
  901. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/component/compiler.rs +0 -0
  902. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/component/dfg.rs +0 -0
  903. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/component/info.rs +0 -0
  904. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/component/translate/adapt.rs +0 -0
  905. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/component/translate/inline.rs +0 -0
  906. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/component/translate.rs +0 -0
  907. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/component/types/resources.rs +0 -0
  908. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/component/types.rs +0 -0
  909. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/component/vmcomponent_offsets.rs +0 -0
  910. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/component.rs +0 -0
  911. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/fact/core_types.rs +0 -0
  912. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/fact/signature.rs +0 -0
  913. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/fact/trampoline.rs +0 -0
  914. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/fact/transcode.rs +0 -0
  915. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/fact/traps.rs +0 -0
  916. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/fact.rs +0 -0
  917. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/lib.rs +0 -0
  918. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/module.rs +0 -0
  919. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/module_environ.rs +0 -0
  920. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/module_types.rs +0 -0
  921. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/obj.rs +0 -0
  922. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/ref_bits.rs +0 -0
  923. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/scopevec.rs +0 -0
  924. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/stack_map.rs +0 -0
  925. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/trap_encoding.rs +0 -0
  926. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/tunables.rs +0 -0
  927. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/vmoffsets.rs +0 -0
  928. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.0}/LICENSE +0 -0
  929. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.0}/build.rs +0 -0
  930. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.0}/src/lib.rs +0 -0
  931. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.0}/src/unix/aarch64.rs +0 -0
  932. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.0}/src/unix/arm.rs +0 -0
  933. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.0}/src/unix/riscv64.rs +0 -0
  934. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.0}/src/unix/s390x.S +0 -0
  935. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.0}/src/unix/x86.rs +0 -0
  936. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.0}/src/unix/x86_64.rs +0 -0
  937. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.0}/src/unix.rs +0 -0
  938. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.0}/src/windows.c +0 -0
  939. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.0}/src/windows.rs +0 -0
  940. /data/ext/cargo-vendor/{wasmtime-jit-16.0.0 → wasmtime-jit-17.0.0}/LICENSE +0 -0
  941. /data/ext/cargo-vendor/{wasmtime-jit-16.0.0 → wasmtime-jit-17.0.0}/src/code_memory.rs +0 -0
  942. /data/ext/cargo-vendor/{wasmtime-jit-16.0.0 → wasmtime-jit-17.0.0}/src/debug.rs +0 -0
  943. /data/ext/cargo-vendor/{wasmtime-jit-16.0.0 → wasmtime-jit-17.0.0}/src/demangling.rs +0 -0
  944. /data/ext/cargo-vendor/{wasmtime-jit-16.0.0 → wasmtime-jit-17.0.0}/src/instantiate.rs +0 -0
  945. /data/ext/cargo-vendor/{wasmtime-jit-16.0.0 → wasmtime-jit-17.0.0}/src/lib.rs +0 -0
  946. /data/ext/cargo-vendor/{wasmtime-jit-16.0.0 → wasmtime-jit-17.0.0}/src/profiling/jitdump.rs +0 -0
  947. /data/ext/cargo-vendor/{wasmtime-jit-16.0.0 → wasmtime-jit-17.0.0}/src/profiling/perfmap.rs +0 -0
  948. /data/ext/cargo-vendor/{wasmtime-jit-16.0.0 → wasmtime-jit-17.0.0}/src/profiling/vtune.rs +0 -0
  949. /data/ext/cargo-vendor/{wasmtime-jit-16.0.0 → wasmtime-jit-17.0.0}/src/profiling.rs +0 -0
  950. /data/ext/cargo-vendor/{wasmtime-jit-debug-16.0.0 → wasmtime-jit-debug-17.0.0}/README.md +0 -0
  951. /data/ext/cargo-vendor/{wasmtime-jit-debug-16.0.0 → wasmtime-jit-debug-17.0.0}/src/gdb_jit_int.rs +0 -0
  952. /data/ext/cargo-vendor/{wasmtime-jit-debug-16.0.0 → wasmtime-jit-debug-17.0.0}/src/lib.rs +0 -0
  953. /data/ext/cargo-vendor/{wasmtime-jit-debug-16.0.0 → wasmtime-jit-debug-17.0.0}/src/perf_jitdump.rs +0 -0
  954. /data/ext/cargo-vendor/{wasmtime-jit-icache-coherence-16.0.0 → wasmtime-jit-icache-coherence-17.0.0}/src/lib.rs +0 -0
  955. /data/ext/cargo-vendor/{wasmtime-jit-icache-coherence-16.0.0 → wasmtime-jit-icache-coherence-17.0.0}/src/libc.rs +0 -0
  956. /data/ext/cargo-vendor/{wasmtime-jit-icache-coherence-16.0.0 → wasmtime-jit-icache-coherence-17.0.0}/src/miri.rs +0 -0
  957. /data/ext/cargo-vendor/{wasmtime-jit-icache-coherence-16.0.0 → wasmtime-jit-icache-coherence-17.0.0}/src/win.rs +0 -0
  958. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/LICENSE +0 -0
  959. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/build.rs +0 -0
  960. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/proptest-regressions/instance/allocator/pooling/memory_pool.txt +0 -0
  961. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/arch/aarch64.rs +0 -0
  962. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/arch/mod.rs +0 -0
  963. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/arch/riscv64.rs +0 -0
  964. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/arch/s390x.S +0 -0
  965. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/arch/s390x.rs +0 -0
  966. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/arch/x86_64.rs +0 -0
  967. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/component/libcalls.rs +0 -0
  968. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/component/resources.rs +0 -0
  969. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/component.rs +0 -0
  970. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/cow.rs +0 -0
  971. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/debug_builtins.rs +0 -0
  972. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/export.rs +0 -0
  973. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/externref.rs +0 -0
  974. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/helpers.c +0 -0
  975. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/imports.rs +0 -0
  976. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/instance/allocator/on_demand.rs +0 -0
  977. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/instance/allocator/pooling/index_allocator.rs +0 -0
  978. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/instance/allocator/pooling/stack_pool.rs +0 -0
  979. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/instance/allocator/pooling/table_pool.rs +0 -0
  980. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/instance/allocator.rs +0 -0
  981. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/instance.rs +0 -0
  982. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/lib.rs +0 -0
  983. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/libcalls.rs +0 -0
  984. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/mmap.rs +0 -0
  985. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/mmap_vec.rs +0 -0
  986. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/module_id.rs +0 -0
  987. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/mpk/disabled.rs +0 -0
  988. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/mpk/enabled.rs +0 -0
  989. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/mpk/mod.rs +0 -0
  990. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/mpk/pkru.rs +0 -0
  991. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/mpk/sys.rs +0 -0
  992. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/send_sync_ptr.rs +0 -0
  993. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/store_box.rs +0 -0
  994. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/miri/mmap.rs +0 -0
  995. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/miri/mod.rs +0 -0
  996. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/miri/traphandlers.rs +0 -0
  997. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/miri/unwind.rs +0 -0
  998. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/miri/vm.rs +0 -0
  999. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/mod.rs +0 -0
  1000. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/unix/machports.rs +0 -0
  1001. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/unix/macos_traphandlers.rs +0 -0
  1002. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/unix/mmap.rs +0 -0
  1003. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/unix/mod.rs +0 -0
  1004. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/unix/signals.rs +0 -0
  1005. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/unix/unwind.rs +0 -0
  1006. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/unix/vm.rs +0 -0
  1007. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/windows/mod.rs +0 -0
  1008. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/windows/traphandlers.rs +0 -0
  1009. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/windows/unwind.rs +0 -0
  1010. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/windows/vm.rs +0 -0
  1011. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/table.rs +0 -0
  1012. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/traphandlers/backtrace.rs +0 -0
  1013. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/traphandlers/coredump.rs +0 -0
  1014. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/traphandlers.rs +0 -0
  1015. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/vmcontext/vm_host_func_context.rs +0 -0
  1016. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/vmcontext.rs +0 -0
  1017. /data/ext/cargo-vendor/{wasmtime-types-16.0.0 → wasmtime-types-17.0.0}/LICENSE +0 -0
  1018. /data/ext/cargo-vendor/{wasmtime-types-16.0.0 → wasmtime-types-17.0.0}/src/error.rs +0 -0
  1019. /data/ext/cargo-vendor/{wasmtime-types-16.0.0 → wasmtime-types-17.0.0}/src/lib.rs +0 -0
  1020. /data/ext/cargo-vendor/{wasmtime-versioned-export-macros-16.0.0 → wasmtime-versioned-export-macros-17.0.0}/src/lib.rs +0 -0
  1021. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/LICENSE +0 -0
  1022. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/README.md +0 -0
  1023. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/build.rs +0 -0
  1024. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/lib.rs +0 -0
  1025. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/clocks/host.rs +0 -0
  1026. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/clocks.rs +0 -0
  1027. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/command.rs +0 -0
  1028. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/error.rs +0 -0
  1029. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/host/env.rs +0 -0
  1030. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/host/exit.rs +0 -0
  1031. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/host/filesystem/sync.rs +0 -0
  1032. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/host/io.rs +0 -0
  1033. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/host/mod.rs +0 -0
  1034. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/host/random.rs +0 -0
  1035. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/host/tcp_create_socket.rs +0 -0
  1036. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/host/udp_create_socket.rs +0 -0
  1037. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/ip_name_lookup.rs +0 -0
  1038. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/pipe.rs +0 -0
  1039. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/preview0.rs +0 -0
  1040. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/random.rs +0 -0
  1041. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/stdio/worker_thread_stdin.rs +0 -0
  1042. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/stdio.rs +0 -0
  1043. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/write_stream.rs +0 -0
  1044. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/tests/process_stdin.rs +0 -0
  1045. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/wit/deps/cli/environment.wit +0 -0
  1046. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/wit/deps/cli/exit.wit +0 -0
  1047. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/wit/deps/cli/run.wit +0 -0
  1048. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/wit/deps/http/handler.wit +0 -0
  1049. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/wit/deps/sockets/instance-network.wit +0 -0
  1050. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/witx/preview0/typenames.witx +0 -0
  1051. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/witx/preview0/wasi_unstable.witx +0 -0
  1052. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/witx/preview1/typenames.witx +0 -0
  1053. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/witx/preview1/wasi_snapshot_preview1.witx +0 -0
  1054. /data/ext/cargo-vendor/{wasmtime-winch-16.0.0 → wasmtime-winch-17.0.0}/LICENSE +0 -0
  1055. /data/ext/cargo-vendor/{wasmtime-winch-16.0.0 → wasmtime-winch-17.0.0}/src/builder.rs +0 -0
  1056. /data/ext/cargo-vendor/{wasmtime-winch-16.0.0 → wasmtime-winch-17.0.0}/src/compiler.rs +0 -0
  1057. /data/ext/cargo-vendor/{wasmtime-winch-16.0.0 → wasmtime-winch-17.0.0}/src/lib.rs +0 -0
  1058. /data/ext/cargo-vendor/{wasmtime-wit-bindgen-16.0.0 → wasmtime-wit-bindgen-17.0.0}/src/rust.rs +0 -0
  1059. /data/ext/cargo-vendor/{wasmtime-wit-bindgen-16.0.0 → wasmtime-wit-bindgen-17.0.0}/src/source.rs +0 -0
  1060. /data/ext/cargo-vendor/{wasmtime-wit-bindgen-16.0.0 → wasmtime-wit-bindgen-17.0.0}/src/types.rs +0 -0
  1061. /data/ext/cargo-vendor/{wasmtime-wmemcheck-16.0.0 → wasmtime-wmemcheck-17.0.0}/src/lib.rs +0 -0
  1062. /data/ext/cargo-vendor/{wiggle-16.0.0 → wiggle-17.0.0}/LICENSE +0 -0
  1063. /data/ext/cargo-vendor/{wiggle-16.0.0 → wiggle-17.0.0}/README.md +0 -0
  1064. /data/ext/cargo-vendor/{wiggle-16.0.0 → wiggle-17.0.0}/src/borrow.rs +0 -0
  1065. /data/ext/cargo-vendor/{wiggle-16.0.0 → wiggle-17.0.0}/src/error.rs +0 -0
  1066. /data/ext/cargo-vendor/{wiggle-16.0.0 → wiggle-17.0.0}/src/guest_type.rs +0 -0
  1067. /data/ext/cargo-vendor/{wiggle-16.0.0 → wiggle-17.0.0}/src/lib.rs +0 -0
  1068. /data/ext/cargo-vendor/{wiggle-16.0.0 → wiggle-17.0.0}/src/region.rs +0 -0
  1069. /data/ext/cargo-vendor/{wiggle-16.0.0 → wiggle-17.0.0}/src/wasmtime.rs +0 -0
  1070. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.0}/LICENSE +0 -0
  1071. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.0}/README.md +0 -0
  1072. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.0}/src/codegen_settings.rs +0 -0
  1073. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.0}/src/config.rs +0 -0
  1074. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.0}/src/funcs.rs +0 -0
  1075. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.0}/src/lib.rs +0 -0
  1076. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.0}/src/lifetimes.rs +0 -0
  1077. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.0}/src/module_trait.rs +0 -0
  1078. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.0}/src/names.rs +0 -0
  1079. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.0}/src/types/error.rs +0 -0
  1080. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.0}/src/types/flags.rs +0 -0
  1081. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.0}/src/types/handle.rs +0 -0
  1082. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.0}/src/types/mod.rs +0 -0
  1083. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.0}/src/types/record.rs +0 -0
  1084. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.0}/src/types/variant.rs +0 -0
  1085. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.0}/src/wasmtime.rs +0 -0
  1086. /data/ext/cargo-vendor/{wiggle-macro-16.0.0 → wiggle-macro-17.0.0}/LICENSE +0 -0
  1087. /data/ext/cargo-vendor/{wiggle-macro-16.0.0 → wiggle-macro-17.0.0}/src/lib.rs +0 -0
  1088. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/LICENSE +0 -0
  1089. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/build.rs +0 -0
  1090. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/abi/local.rs +0 -0
  1091. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/abi/mod.rs +0 -0
  1092. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/codegen/builtin.rs +0 -0
  1093. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/codegen/call.rs +0 -0
  1094. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/codegen/control.rs +0 -0
  1095. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/codegen/mod.rs +0 -0
  1096. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/frame/mod.rs +0 -0
  1097. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/isa/aarch64/abi.rs +0 -0
  1098. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/isa/aarch64/address.rs +0 -0
  1099. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/isa/aarch64/asm.rs +0 -0
  1100. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/isa/aarch64/mod.rs +0 -0
  1101. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/isa/aarch64/regs.rs +0 -0
  1102. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/isa/mod.rs +0 -0
  1103. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/isa/reg.rs +0 -0
  1104. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/isa/x64/abi.rs +0 -0
  1105. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/isa/x64/address.rs +0 -0
  1106. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/isa/x64/mod.rs +0 -0
  1107. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/isa/x64/regs.rs +0 -0
  1108. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/lib.rs +0 -0
  1109. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/regalloc.rs +0 -0
  1110. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/regset.rs +0 -0
  1111. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/trampoline.rs +0 -0
@@ -0,0 +1,2428 @@
1
+ use crate::memory::MemoryCreator;
2
+ use crate::trampoline::MemoryCreatorProxy;
3
+ use anyhow::{bail, ensure, Result};
4
+ use serde_derive::{Deserialize, Serialize};
5
+ use std::collections::{HashMap, HashSet};
6
+ use std::fmt;
7
+ #[cfg(any(feature = "cache", feature = "cranelift", feature = "winch"))]
8
+ use std::path::Path;
9
+ use std::str::FromStr;
10
+ use std::sync::Arc;
11
+ use target_lexicon::Architecture;
12
+ use wasmparser::WasmFeatures;
13
+ #[cfg(feature = "cache")]
14
+ use wasmtime_cache::CacheConfig;
15
+ use wasmtime_environ::Tunables;
16
+ use wasmtime_jit::profiling::{self, ProfilingAgent};
17
+ use wasmtime_runtime::{mpk, InstanceAllocator, OnDemandInstanceAllocator, RuntimeMemoryCreator};
18
+
19
+ #[cfg(feature = "async")]
20
+ use crate::stack::{StackCreator, StackCreatorProxy};
21
+ #[cfg(feature = "async")]
22
+ use wasmtime_fiber::RuntimeFiberStackCreator;
23
+
24
+ pub use wasmtime_environ::CacheStore;
25
+ pub use wasmtime_runtime::MpkEnabled;
26
+
27
+ /// Represents the module instance allocation strategy to use.
28
+ #[derive(Clone)]
29
+ pub enum InstanceAllocationStrategy {
30
+ /// The on-demand instance allocation strategy.
31
+ ///
32
+ /// Resources related to a module instance are allocated at instantiation time and
33
+ /// immediately deallocated when the `Store` referencing the instance is dropped.
34
+ ///
35
+ /// This is the default allocation strategy for Wasmtime.
36
+ OnDemand,
37
+ /// The pooling instance allocation strategy.
38
+ ///
39
+ /// A pool of resources is created in advance and module instantiation reuses resources
40
+ /// from the pool. Resources are returned to the pool when the `Store` referencing the instance
41
+ /// is dropped.
42
+ #[cfg(feature = "pooling-allocator")]
43
+ Pooling(PoolingAllocationConfig),
44
+ }
45
+
46
+ impl InstanceAllocationStrategy {
47
+ /// The default pooling instance allocation strategy.
48
+ #[cfg(feature = "pooling-allocator")]
49
+ pub fn pooling() -> Self {
50
+ Self::Pooling(Default::default())
51
+ }
52
+ }
53
+
54
+ impl Default for InstanceAllocationStrategy {
55
+ fn default() -> Self {
56
+ Self::OnDemand
57
+ }
58
+ }
59
+
60
+ #[derive(Clone)]
61
+ /// Configure the strategy used for versioning in serializing and deserializing [`crate::Module`].
62
+ pub enum ModuleVersionStrategy {
63
+ /// Use the wasmtime crate's Cargo package version.
64
+ WasmtimeVersion,
65
+ /// Use a custom version string. Must be at most 255 bytes.
66
+ Custom(String),
67
+ /// Emit no version string in serialization, and accept all version strings in deserialization.
68
+ None,
69
+ }
70
+
71
+ impl Default for ModuleVersionStrategy {
72
+ fn default() -> Self {
73
+ ModuleVersionStrategy::WasmtimeVersion
74
+ }
75
+ }
76
+
77
+ impl std::hash::Hash for ModuleVersionStrategy {
78
+ fn hash<H: std::hash::Hasher>(&self, hasher: &mut H) {
79
+ match self {
80
+ Self::WasmtimeVersion => env!("CARGO_PKG_VERSION").hash(hasher),
81
+ Self::Custom(s) => s.hash(hasher),
82
+ Self::None => {}
83
+ };
84
+ }
85
+ }
86
+
87
+ /// Global configuration options used to create an [`Engine`](crate::Engine)
88
+ /// and customize its behavior.
89
+ ///
90
+ /// This structure exposed a builder-like interface and is primarily consumed by
91
+ /// [`Engine::new()`](crate::Engine::new).
92
+ ///
93
+ /// The validation of `Config` is deferred until the engine is being built, thus
94
+ /// a problematic config may cause `Engine::new` to fail.
95
+ #[derive(Clone)]
96
+ pub struct Config {
97
+ #[cfg(any(feature = "cranelift", feature = "winch"))]
98
+ compiler_config: CompilerConfig,
99
+ profiling_strategy: ProfilingStrategy,
100
+
101
+ pub(crate) tunables: Tunables,
102
+ #[cfg(feature = "cache")]
103
+ pub(crate) cache_config: CacheConfig,
104
+ pub(crate) mem_creator: Option<Arc<dyn RuntimeMemoryCreator>>,
105
+ pub(crate) allocation_strategy: InstanceAllocationStrategy,
106
+ pub(crate) max_wasm_stack: usize,
107
+ pub(crate) features: WasmFeatures,
108
+ pub(crate) wasm_backtrace: bool,
109
+ pub(crate) wasm_backtrace_details_env_used: bool,
110
+ pub(crate) native_unwind_info: Option<bool>,
111
+ #[cfg(feature = "async")]
112
+ pub(crate) async_stack_size: usize,
113
+ #[cfg(feature = "async")]
114
+ pub(crate) stack_creator: Option<Arc<dyn RuntimeFiberStackCreator>>,
115
+ pub(crate) async_support: bool,
116
+ pub(crate) module_version: ModuleVersionStrategy,
117
+ pub(crate) parallel_compilation: bool,
118
+ pub(crate) memory_init_cow: bool,
119
+ pub(crate) memory_guaranteed_dense_image_size: u64,
120
+ pub(crate) force_memory_init_memfd: bool,
121
+ pub(crate) wmemcheck: bool,
122
+ pub(crate) coredump_on_trap: bool,
123
+ pub(crate) macos_use_mach_ports: bool,
124
+ }
125
+
126
+ /// User-provided configuration for the compiler.
127
+ #[cfg(any(feature = "cranelift", feature = "winch"))]
128
+ #[derive(Debug, Clone)]
129
+ struct CompilerConfig {
130
+ strategy: Strategy,
131
+ target: Option<target_lexicon::Triple>,
132
+ settings: HashMap<String, String>,
133
+ flags: HashSet<String>,
134
+ #[cfg(any(feature = "cranelift", feature = "winch"))]
135
+ cache_store: Option<Arc<dyn CacheStore>>,
136
+ clif_dir: Option<std::path::PathBuf>,
137
+ wmemcheck: bool,
138
+ }
139
+
140
+ #[cfg(any(feature = "cranelift", feature = "winch"))]
141
+ impl CompilerConfig {
142
+ fn new(strategy: Strategy) -> Self {
143
+ Self {
144
+ strategy,
145
+ target: None,
146
+ settings: HashMap::new(),
147
+ flags: HashSet::new(),
148
+ cache_store: None,
149
+ clif_dir: None,
150
+ wmemcheck: false,
151
+ }
152
+ }
153
+
154
+ /// Ensures that the key is not set or equals to the given value.
155
+ /// If the key is not set, it will be set to the given value.
156
+ ///
157
+ /// # Returns
158
+ ///
159
+ /// Returns true if successfully set or already had the given setting
160
+ /// value, or false if the setting was explicitly set to something
161
+ /// else previously.
162
+ fn ensure_setting_unset_or_given(&mut self, k: &str, v: &str) -> bool {
163
+ if let Some(value) = self.settings.get(k) {
164
+ if value != v {
165
+ return false;
166
+ }
167
+ } else {
168
+ self.settings.insert(k.to_string(), v.to_string());
169
+ }
170
+ true
171
+ }
172
+ }
173
+
174
+ #[cfg(any(feature = "cranelift", feature = "winch"))]
175
+ impl Default for CompilerConfig {
176
+ fn default() -> Self {
177
+ Self::new(Strategy::Auto)
178
+ }
179
+ }
180
+
181
+ impl Config {
182
+ /// Creates a new configuration object with the default configuration
183
+ /// specified.
184
+ pub fn new() -> Self {
185
+ let mut ret = Self {
186
+ tunables: Tunables::default(),
187
+ #[cfg(any(feature = "cranelift", feature = "winch"))]
188
+ compiler_config: CompilerConfig::default(),
189
+ #[cfg(feature = "cache")]
190
+ cache_config: CacheConfig::new_cache_disabled(),
191
+ profiling_strategy: ProfilingStrategy::None,
192
+ mem_creator: None,
193
+ allocation_strategy: InstanceAllocationStrategy::OnDemand,
194
+ // 512k of stack -- note that this is chosen currently to not be too
195
+ // big, not be too small, and be a good default for most platforms.
196
+ // One platform of particular note is Windows where the stack size
197
+ // of the main thread seems to, by default, be smaller than that of
198
+ // Linux and macOS. This 512k value at least lets our current test
199
+ // suite pass on the main thread of Windows (using `--test-threads
200
+ // 1` forces this), or at least it passed when this change was
201
+ // committed.
202
+ max_wasm_stack: 512 * 1024,
203
+ wasm_backtrace: true,
204
+ wasm_backtrace_details_env_used: false,
205
+ native_unwind_info: None,
206
+ features: WasmFeatures::default(),
207
+ #[cfg(feature = "async")]
208
+ async_stack_size: 2 << 20,
209
+ #[cfg(feature = "async")]
210
+ stack_creator: None,
211
+ async_support: false,
212
+ module_version: ModuleVersionStrategy::default(),
213
+ parallel_compilation: !cfg!(miri),
214
+ memory_init_cow: true,
215
+ memory_guaranteed_dense_image_size: 16 << 20,
216
+ force_memory_init_memfd: false,
217
+ wmemcheck: false,
218
+ coredump_on_trap: false,
219
+ macos_use_mach_ports: true,
220
+ };
221
+ #[cfg(any(feature = "cranelift", feature = "winch"))]
222
+ {
223
+ ret.cranelift_debug_verifier(false);
224
+ ret.cranelift_opt_level(OptLevel::Speed);
225
+ }
226
+
227
+ ret.wasm_reference_types(true);
228
+ ret.wasm_multi_value(true);
229
+ ret.wasm_bulk_memory(true);
230
+ ret.wasm_simd(true);
231
+ #[cfg(feature = "component-model")]
232
+ ret.wasm_component_model(true);
233
+ ret.wasm_backtrace_details(WasmBacktraceDetails::Environment);
234
+
235
+ // This is on-by-default in `wasmparser` since it's a stage 4+ proposal
236
+ // but it's not implemented in Wasmtime yet so disable it.
237
+ ret.features.tail_call = false;
238
+
239
+ ret
240
+ }
241
+
242
+ /// Sets the target triple for the [`Config`].
243
+ ///
244
+ /// By default, the host target triple is used for the [`Config`].
245
+ ///
246
+ /// This method can be used to change the target triple.
247
+ ///
248
+ /// Cranelift flags will not be inferred for the given target and any
249
+ /// existing target-specific Cranelift flags will be cleared.
250
+ ///
251
+ /// # Errors
252
+ ///
253
+ /// This method will error if the given target triple is not supported.
254
+ #[cfg(any(feature = "cranelift", feature = "winch"))]
255
+ #[cfg_attr(nightlydoc, doc(cfg(any(feature = "cranelift", feature = "winch"))))]
256
+ pub fn target(&mut self, target: &str) -> Result<&mut Self> {
257
+ self.compiler_config.target =
258
+ Some(target_lexicon::Triple::from_str(target).map_err(|e| anyhow::anyhow!(e))?);
259
+
260
+ Ok(self)
261
+ }
262
+
263
+ /// Enables the incremental compilation cache in Cranelift, using the provided `CacheStore`
264
+ /// backend for storage.
265
+ #[cfg(all(feature = "incremental-cache", feature = "cranelift"))]
266
+ pub fn enable_incremental_compilation(
267
+ &mut self,
268
+ cache_store: Arc<dyn CacheStore>,
269
+ ) -> Result<&mut Self> {
270
+ self.compiler_config.cache_store = Some(cache_store);
271
+ Ok(self)
272
+ }
273
+
274
+ /// Whether or not to enable support for asynchronous functions in Wasmtime.
275
+ ///
276
+ /// When enabled, the config can optionally define host functions with `async`.
277
+ /// Instances created and functions called with this `Config` *must* be called
278
+ /// through their asynchronous APIs, however. For example using
279
+ /// [`Func::call`](crate::Func::call) will panic when used with this config.
280
+ ///
281
+ /// # Asynchronous Wasm
282
+ ///
283
+ /// WebAssembly does not currently have a way to specify at the bytecode
284
+ /// level what is and isn't async. Host-defined functions, however, may be
285
+ /// defined as `async`. WebAssembly imports always appear synchronous, which
286
+ /// gives rise to a bit of an impedance mismatch here. To solve this
287
+ /// Wasmtime supports "asynchronous configs" which enables calling these
288
+ /// asynchronous functions in a way that looks synchronous to the executing
289
+ /// WebAssembly code.
290
+ ///
291
+ /// An asynchronous config must always invoke wasm code asynchronously,
292
+ /// meaning we'll always represent its computation as a
293
+ /// [`Future`](std::future::Future). The `poll` method of the futures
294
+ /// returned by Wasmtime will perform the actual work of calling the
295
+ /// WebAssembly. Wasmtime won't manage its own thread pools or similar,
296
+ /// that's left up to the embedder.
297
+ ///
298
+ /// To implement futures in a way that WebAssembly sees asynchronous host
299
+ /// functions as synchronous, all async Wasmtime futures will execute on a
300
+ /// separately allocated native stack from the thread otherwise executing
301
+ /// Wasmtime. This separate native stack can then be switched to and from.
302
+ /// Using this whenever an `async` host function returns a future that
303
+ /// resolves to `Pending` we switch away from the temporary stack back to
304
+ /// the main stack and propagate the `Pending` status.
305
+ ///
306
+ /// In general it's encouraged that the integration with `async` and
307
+ /// wasmtime is designed early on in your embedding of Wasmtime to ensure
308
+ /// that it's planned that WebAssembly executes in the right context of your
309
+ /// application.
310
+ ///
311
+ /// # Execution in `poll`
312
+ ///
313
+ /// The [`Future::poll`](std::future::Future::poll) method is the main
314
+ /// driving force behind Rust's futures. That method's own documentation
315
+ /// states "an implementation of `poll` should strive to return quickly, and
316
+ /// should not block". This, however, can be at odds with executing
317
+ /// WebAssembly code as part of the `poll` method itself. If your
318
+ /// WebAssembly is untrusted then this could allow the `poll` method to take
319
+ /// arbitrarily long in the worst case, likely blocking all other
320
+ /// asynchronous tasks.
321
+ ///
322
+ /// To remedy this situation you have a a few possible ways to solve this:
323
+ ///
324
+ /// * The most efficient solution is to enable
325
+ /// [`Config::epoch_interruption`] in conjunction with
326
+ /// [`crate::Store::epoch_deadline_async_yield_and_update`]. Coupled with
327
+ /// periodic calls to [`crate::Engine::increment_epoch`] this will cause
328
+ /// executing WebAssembly to periodically yield back according to the
329
+ /// epoch configuration settings. This enables `Future::poll` to take at
330
+ /// most a certain amount of time according to epoch configuration
331
+ /// settings and when increments happen. The benefit of this approach is
332
+ /// that the instrumentation in compiled code is quite lightweight, but a
333
+ /// downside can be that the scheduling is somewhat nondeterministic since
334
+ /// increments are usually timer-based which are not always deterministic.
335
+ ///
336
+ /// Note that to prevent infinite execution of wasm it's recommended to
337
+ /// place a timeout on the entire future representing executing wasm code
338
+ /// and the periodic yields with epochs should ensure that when the
339
+ /// timeout is reached it's appropriately recognized.
340
+ ///
341
+ /// * Alternatively you can enable the
342
+ /// [`Config::consume_fuel`](crate::Config::consume_fuel) method as well
343
+ /// as [`crate::Store::fuel_async_yield_interval`] When doing so this will
344
+ /// configure Wasmtime futures to yield periodically while they're
345
+ /// executing WebAssembly code. After consuming the specified amount of
346
+ /// fuel wasm futures will return `Poll::Pending` from their `poll`
347
+ /// method, and will get automatically re-polled later. This enables the
348
+ /// `Future::poll` method to take roughly a fixed amount of time since
349
+ /// fuel is guaranteed to get consumed while wasm is executing. Unlike
350
+ /// epoch-based preemption this is deterministic since wasm always
351
+ /// consumes a fixed amount of fuel per-operation. The downside of this
352
+ /// approach, however, is that the compiled code instrumentation is
353
+ /// significantly more expensive than epoch checks.
354
+ ///
355
+ /// Note that to prevent infinite execution of wasm it's recommended to
356
+ /// place a timeout on the entire future representing executing wasm code
357
+ /// and the periodic yields with epochs should ensure that when the
358
+ /// timeout is reached it's appropriately recognized.
359
+ ///
360
+ /// In all cases special care needs to be taken when integrating
361
+ /// asynchronous wasm into your application. You should carefully plan where
362
+ /// WebAssembly will execute and what compute resources will be allotted to
363
+ /// it. If Wasmtime doesn't support exactly what you'd like just yet, please
364
+ /// feel free to open an issue!
365
+ #[cfg(feature = "async")]
366
+ #[cfg_attr(nightlydoc, doc(cfg(feature = "async")))]
367
+ pub fn async_support(&mut self, enable: bool) -> &mut Self {
368
+ self.async_support = enable;
369
+ self
370
+ }
371
+
372
+ /// Configures whether DWARF debug information will be emitted during
373
+ /// compilation.
374
+ ///
375
+ /// Note that the `debug-builtins` compile-time Cargo feature must also be
376
+ /// enabled for native debuggers such as GDB or LLDB to be able to debug
377
+ /// guest WebAssembly programs.
378
+ ///
379
+ /// By default this option is `false`.
380
+ pub fn debug_info(&mut self, enable: bool) -> &mut Self {
381
+ self.tunables.generate_native_debuginfo = enable;
382
+ self
383
+ }
384
+
385
+ /// Configures whether [`WasmBacktrace`] will be present in the context of
386
+ /// errors returned from Wasmtime.
387
+ ///
388
+ /// A backtrace may be collected whenever an error is returned from a host
389
+ /// function call through to WebAssembly or when WebAssembly itself hits a
390
+ /// trap condition, such as an out-of-bounds memory access. This flag
391
+ /// indicates, in these conditions, whether the backtrace is collected or
392
+ /// not.
393
+ ///
394
+ /// Currently wasm backtraces are implemented through frame pointer walking.
395
+ /// This means that collecting a backtrace is expected to be a fast and
396
+ /// relatively cheap operation. Additionally backtrace collection is
397
+ /// suitable in concurrent environments since one thread capturing a
398
+ /// backtrace won't block other threads.
399
+ ///
400
+ /// Collected backtraces are attached via [`anyhow::Error::context`] to
401
+ /// errors returned from host functions. The [`WasmBacktrace`] type can be
402
+ /// acquired via [`anyhow::Error::downcast_ref`] to inspect the backtrace.
403
+ /// When this option is disabled then this context is never applied to
404
+ /// errors coming out of wasm.
405
+ ///
406
+ /// This option is `true` by default.
407
+ ///
408
+ /// [`WasmBacktrace`]: crate::WasmBacktrace
409
+ pub fn wasm_backtrace(&mut self, enable: bool) -> &mut Self {
410
+ self.wasm_backtrace = enable;
411
+ self
412
+ }
413
+
414
+ /// Configures whether backtraces in `Trap` will parse debug info in the wasm file to
415
+ /// have filename/line number information.
416
+ ///
417
+ /// When enabled this will causes modules to retain debugging information
418
+ /// found in wasm binaries. This debug information will be used when a trap
419
+ /// happens to symbolicate each stack frame and attempt to print a
420
+ /// filename/line number for each wasm frame in the stack trace.
421
+ ///
422
+ /// By default this option is `WasmBacktraceDetails::Environment`, meaning
423
+ /// that wasm will read `WASMTIME_BACKTRACE_DETAILS` to indicate whether details
424
+ /// should be parsed.
425
+ pub fn wasm_backtrace_details(&mut self, enable: WasmBacktraceDetails) -> &mut Self {
426
+ self.wasm_backtrace_details_env_used = false;
427
+ self.tunables.parse_wasm_debuginfo = match enable {
428
+ WasmBacktraceDetails::Enable => true,
429
+ WasmBacktraceDetails::Disable => false,
430
+ WasmBacktraceDetails::Environment => {
431
+ self.wasm_backtrace_details_env_used = true;
432
+ std::env::var("WASMTIME_BACKTRACE_DETAILS")
433
+ .map(|s| s == "1")
434
+ .unwrap_or(false)
435
+ }
436
+ };
437
+ self
438
+ }
439
+
440
+ /// Configures whether to generate native unwind information
441
+ /// (e.g. `.eh_frame` on Linux).
442
+ ///
443
+ /// This configuration option only exists to help third-party stack
444
+ /// capturing mechanisms, such as the system's unwinder or the `backtrace`
445
+ /// crate, determine how to unwind through Wasm frames. It does not affect
446
+ /// whether Wasmtime can capture Wasm backtraces or not. The presence of
447
+ /// [`WasmBacktrace`] is controlled by the [`Config::wasm_backtrace`]
448
+ /// option.
449
+ ///
450
+ /// Native unwind information is included:
451
+ /// - When targeting Windows, since the Windows ABI requires it.
452
+ /// - By default.
453
+ ///
454
+ /// [`WasmBacktrace`]: crate::WasmBacktrace
455
+ pub fn native_unwind_info(&mut self, enable: bool) -> &mut Self {
456
+ self.native_unwind_info = Some(enable);
457
+ self
458
+ }
459
+
460
+ /// Configures whether execution of WebAssembly will "consume fuel" to
461
+ /// either halt or yield execution as desired.
462
+ ///
463
+ /// This can be used to deterministically prevent infinitely-executing
464
+ /// WebAssembly code by instrumenting generated code to consume fuel as it
465
+ /// executes. When fuel runs out a trap is raised, however [`Store`] can be
466
+ /// configured to yield execution periodically via
467
+ /// [`crate::Store::fuel_async_yield_interval`].
468
+ ///
469
+ /// Note that a [`Store`] starts with no fuel, so if you enable this option
470
+ /// you'll have to be sure to pour some fuel into [`Store`] before
471
+ /// executing some code.
472
+ ///
473
+ /// By default this option is `false`.
474
+ ///
475
+ /// [`Store`]: crate::Store
476
+ pub fn consume_fuel(&mut self, enable: bool) -> &mut Self {
477
+ self.tunables.consume_fuel = enable;
478
+ self
479
+ }
480
+
481
+ /// Enables epoch-based interruption.
482
+ ///
483
+ /// When executing code in async mode, we sometimes want to
484
+ /// implement a form of cooperative timeslicing: long-running Wasm
485
+ /// guest code should periodically yield to the executor
486
+ /// loop. This yielding could be implemented by using "fuel" (see
487
+ /// [`consume_fuel`](Config::consume_fuel)). However, fuel
488
+ /// instrumentation is somewhat expensive: it modifies the
489
+ /// compiled form of the Wasm code so that it maintains a precise
490
+ /// instruction count, frequently checking this count against the
491
+ /// remaining fuel. If one does not need this precise count or
492
+ /// deterministic interruptions, and only needs a periodic
493
+ /// interrupt of some form, then It would be better to have a more
494
+ /// lightweight mechanism.
495
+ ///
496
+ /// Epoch-based interruption is that mechanism. There is a global
497
+ /// "epoch", which is a counter that divides time into arbitrary
498
+ /// periods (or epochs). This counter lives on the
499
+ /// [`Engine`](crate::Engine) and can be incremented by calling
500
+ /// [`Engine::increment_epoch`](crate::Engine::increment_epoch).
501
+ /// Epoch-based instrumentation works by setting a "deadline
502
+ /// epoch". The compiled code knows the deadline, and at certain
503
+ /// points, checks the current epoch against that deadline. It
504
+ /// will yield if the deadline has been reached.
505
+ ///
506
+ /// The idea is that checking an infrequently-changing counter is
507
+ /// cheaper than counting and frequently storing a precise metric
508
+ /// (instructions executed) locally. The interruptions are not
509
+ /// deterministic, but if the embedder increments the epoch in a
510
+ /// periodic way (say, every regular timer tick by a thread or
511
+ /// signal handler), then we can ensure that all async code will
512
+ /// yield to the executor within a bounded time.
513
+ ///
514
+ /// The deadline check cannot be avoided by malicious wasm code. It is safe
515
+ /// to use epoch deadlines to limit the execution time of untrusted
516
+ /// code.
517
+ ///
518
+ /// The [`Store`](crate::Store) tracks the deadline, and controls
519
+ /// what happens when the deadline is reached during
520
+ /// execution. Several behaviors are possible:
521
+ ///
522
+ /// - Trap if code is executing when the epoch deadline is
523
+ /// met. See
524
+ /// [`Store::epoch_deadline_trap`](crate::Store::epoch_deadline_trap).
525
+ ///
526
+ /// - Call an arbitrary function. This function may chose to trap or
527
+ /// increment the epoch. See
528
+ /// [`Store::epoch_deadline_callback`](crate::Store::epoch_deadline_callback).
529
+ ///
530
+ /// - Yield to the executor loop, then resume when the future is
531
+ /// next polled. See
532
+ /// [`Store::epoch_deadline_async_yield_and_update`](crate::Store::epoch_deadline_async_yield_and_update).
533
+ ///
534
+ /// Trapping is the default. The yielding behaviour may be used for
535
+ /// the timeslicing behavior described above.
536
+ ///
537
+ /// This feature is available with or without async support.
538
+ /// However, without async support, the timeslicing behaviour is
539
+ /// not available. This means epoch-based interruption can only
540
+ /// serve as a simple external-interruption mechanism.
541
+ ///
542
+ /// An initial deadline must be set before executing code by calling
543
+ /// [`Store::set_epoch_deadline`](crate::Store::set_epoch_deadline). If this
544
+ /// deadline is not configured then wasm will immediately trap.
545
+ ///
546
+ /// ## When to use fuel vs. epochs
547
+ ///
548
+ /// In general, epoch-based interruption results in faster
549
+ /// execution. This difference is sometimes significant: in some
550
+ /// measurements, up to 2-3x. This is because epoch-based
551
+ /// interruption does less work: it only watches for a global
552
+ /// rarely-changing counter to increment, rather than keeping a
553
+ /// local frequently-changing counter and comparing it to a
554
+ /// deadline.
555
+ ///
556
+ /// Fuel, in contrast, should be used when *deterministic*
557
+ /// yielding or trapping is needed. For example, if it is required
558
+ /// that the same function call with the same starting state will
559
+ /// always either complete or trap with an out-of-fuel error,
560
+ /// deterministically, then fuel with a fixed bound should be
561
+ /// used.
562
+ ///
563
+ /// # See Also
564
+ ///
565
+ /// - [`Engine::increment_epoch`](crate::Engine::increment_epoch)
566
+ /// - [`Store::set_epoch_deadline`](crate::Store::set_epoch_deadline)
567
+ /// - [`Store::epoch_deadline_trap`](crate::Store::epoch_deadline_trap)
568
+ /// - [`Store::epoch_deadline_callback`](crate::Store::epoch_deadline_callback)
569
+ /// - [`Store::epoch_deadline_async_yield_and_update`](crate::Store::epoch_deadline_async_yield_and_update)
570
+ pub fn epoch_interruption(&mut self, enable: bool) -> &mut Self {
571
+ self.tunables.epoch_interruption = enable;
572
+ self
573
+ }
574
+
575
+ /// Configures the maximum amount of stack space available for
576
+ /// executing WebAssembly code.
577
+ ///
578
+ /// WebAssembly has well-defined semantics on stack overflow. This is
579
+ /// intended to be a knob which can help configure how much stack space
580
+ /// wasm execution is allowed to consume. Note that the number here is not
581
+ /// super-precise, but rather wasm will take at most "pretty close to this
582
+ /// much" stack space.
583
+ ///
584
+ /// If a wasm call (or series of nested wasm calls) take more stack space
585
+ /// than the `size` specified then a stack overflow trap will be raised.
586
+ ///
587
+ /// Caveat: this knob only limits the stack space consumed by wasm code.
588
+ /// More importantly, it does not ensure that this much stack space is
589
+ /// available on the calling thread stack. Exhausting the thread stack
590
+ /// typically leads to an **abort** of the process.
591
+ ///
592
+ /// Here are some examples of how that could happen:
593
+ ///
594
+ /// - Let's assume this option is set to 2 MiB and then a thread that has
595
+ /// a stack with 512 KiB left.
596
+ ///
597
+ /// If wasm code consumes more than 512 KiB then the process will be aborted.
598
+ ///
599
+ /// - Assuming the same conditions, but this time wasm code does not consume
600
+ /// any stack but calls into a host function. The host function consumes
601
+ /// more than 512 KiB of stack space. The process will be aborted.
602
+ ///
603
+ /// There's another gotcha related to recursive calling into wasm: the stack
604
+ /// space consumed by a host function is counted towards this limit. The
605
+ /// host functions are not prevented from consuming more than this limit.
606
+ /// However, if the host function that used more than this limit and called
607
+ /// back into wasm, then the execution will trap immediatelly because of
608
+ /// stack overflow.
609
+ ///
610
+ /// When the `async` feature is enabled, this value cannot exceed the
611
+ /// `async_stack_size` option. Be careful not to set this value too close
612
+ /// to `async_stack_size` as doing so may limit how much stack space
613
+ /// is available for host functions.
614
+ ///
615
+ /// By default this option is 512 KiB.
616
+ ///
617
+ /// # Errors
618
+ ///
619
+ /// The `Engine::new` method will fail if the `size` specified here is
620
+ /// either 0 or larger than the [`Config::async_stack_size`] configuration.
621
+ pub fn max_wasm_stack(&mut self, size: usize) -> &mut Self {
622
+ self.max_wasm_stack = size;
623
+ self
624
+ }
625
+
626
+ /// Configures the size of the stacks used for asynchronous execution.
627
+ ///
628
+ /// This setting configures the size of the stacks that are allocated for
629
+ /// asynchronous execution. The value cannot be less than `max_wasm_stack`.
630
+ ///
631
+ /// The amount of stack space guaranteed for host functions is
632
+ /// `async_stack_size - max_wasm_stack`, so take care not to set these two values
633
+ /// close to one another; doing so may cause host functions to overflow the
634
+ /// stack and abort the process.
635
+ ///
636
+ /// By default this option is 2 MiB.
637
+ ///
638
+ /// # Errors
639
+ ///
640
+ /// The `Engine::new` method will fail if the value for this option is
641
+ /// smaller than the [`Config::max_wasm_stack`] option.
642
+ #[cfg(feature = "async")]
643
+ #[cfg_attr(nightlydoc, doc(cfg(feature = "async")))]
644
+ pub fn async_stack_size(&mut self, size: usize) -> &mut Self {
645
+ self.async_stack_size = size;
646
+ self
647
+ }
648
+
649
+ /// Configures whether the WebAssembly tail calls proposal will be enabled
650
+ /// for compilation or not.
651
+ ///
652
+ /// The [WebAssembly tail calls proposal] introduces the `return_call` and
653
+ /// `return_call_indirect` instructions. These instructions allow for Wasm
654
+ /// programs to implement some recursive algorithms with *O(1)* stack space
655
+ /// usage.
656
+ ///
657
+ /// This feature is disabled by default.
658
+ ///
659
+ /// [WebAssembly tail calls proposal]: https://github.com/WebAssembly/tail-call
660
+ pub fn wasm_tail_call(&mut self, enable: bool) -> &mut Self {
661
+ self.features.tail_call = enable;
662
+ self.tunables.tail_callable = enable;
663
+ self
664
+ }
665
+
666
+ /// Configures whether the WebAssembly [threads] proposal will be enabled
667
+ /// for compilation.
668
+ ///
669
+ /// This feature gates items such as shared memories and atomic
670
+ /// instructions. Note that the threads feature depends on the bulk memory
671
+ /// feature, which is enabled by default. Additionally note that while the
672
+ /// wasm feature is called "threads" it does not actually include the
673
+ /// ability to spawn threads. Spawning threads is part of the [wasi-threads]
674
+ /// proposal which is a separately gated feature in Wasmtime.
675
+ ///
676
+ /// Embeddings of Wasmtime are able to build their own custom threading
677
+ /// scheme on top of the core wasm threads proposal, however.
678
+ ///
679
+ /// This is `true` by default.
680
+ ///
681
+ /// [threads]: https://github.com/webassembly/threads
682
+ /// [wasi-threads]: https://github.com/webassembly/wasi-threads
683
+ pub fn wasm_threads(&mut self, enable: bool) -> &mut Self {
684
+ self.features.threads = enable;
685
+ self
686
+ }
687
+
688
+ /// Configures whether the [WebAssembly reference types proposal][proposal]
689
+ /// will be enabled for compilation.
690
+ ///
691
+ /// This feature gates items such as the `externref` and `funcref` types as
692
+ /// well as allowing a module to define multiple tables.
693
+ ///
694
+ /// Note that the reference types proposal depends on the bulk memory proposal.
695
+ ///
696
+ /// This feature is `true` by default.
697
+ ///
698
+ /// # Errors
699
+ ///
700
+ /// The validation of this feature are deferred until the engine is being built,
701
+ /// and thus may cause `Engine::new` fail if the `bulk_memory` feature is disabled.
702
+ ///
703
+ /// [proposal]: https://github.com/webassembly/reference-types
704
+ pub fn wasm_reference_types(&mut self, enable: bool) -> &mut Self {
705
+ self.features.reference_types = enable;
706
+ self
707
+ }
708
+
709
+ /// Configures whether the [WebAssembly function references proposal][proposal]
710
+ /// will be enabled for compilation.
711
+ ///
712
+ /// This feature gates non-nullable reference types, function reference
713
+ /// types, call_ref, ref.func, and non-nullable reference related instructions.
714
+ ///
715
+ /// Note that the function references proposal depends on the reference types proposal.
716
+ ///
717
+ /// This feature is `false` by default.
718
+ ///
719
+ /// [proposal]: https://github.com/WebAssembly/function-references
720
+ pub fn wasm_function_references(&mut self, enable: bool) -> &mut Self {
721
+ self.features.function_references = enable;
722
+ self
723
+ }
724
+
725
+ /// Configures whether the WebAssembly SIMD proposal will be
726
+ /// enabled for compilation.
727
+ ///
728
+ /// The [WebAssembly SIMD proposal][proposal]. This feature gates items such
729
+ /// as the `v128` type and all of its operators being in a module. Note that
730
+ /// this does not enable the [relaxed simd proposal].
731
+ ///
732
+ /// On x86_64 platforms note that enabling this feature requires SSE 4.2 and
733
+ /// below to be available on the target platform. Compilation will fail if
734
+ /// the compile target does not include SSE 4.2.
735
+ ///
736
+ /// This is `true` by default.
737
+ ///
738
+ /// [proposal]: https://github.com/webassembly/simd
739
+ /// [relaxed simd proposal]: https://github.com/WebAssembly/relaxed-simd
740
+ pub fn wasm_simd(&mut self, enable: bool) -> &mut Self {
741
+ self.features.simd = enable;
742
+ self
743
+ }
744
+
745
+ /// Configures whether the WebAssembly Relaxed SIMD proposal will be
746
+ /// enabled for compilation.
747
+ ///
748
+ /// The relaxed SIMD proposal adds new instructions to WebAssembly which,
749
+ /// for some specific inputs, are allowed to produce different results on
750
+ /// different hosts. More-or-less this proposal enables exposing
751
+ /// platform-specific semantics of SIMD instructions in a controlled
752
+ /// fashion to a WebAssembly program. From an embedder's perspective this
753
+ /// means that WebAssembly programs may execute differently depending on
754
+ /// whether the host is x86_64 or AArch64, for example.
755
+ ///
756
+ /// By default Wasmtime lowers relaxed SIMD instructions to the fastest
757
+ /// lowering for the platform it's running on. This means that, by default,
758
+ /// some relaxed SIMD instructions may have different results for the same
759
+ /// inputs across x86_64 and AArch64. This behavior can be disabled through
760
+ /// the [`Config::relaxed_simd_deterministic`] option which will force
761
+ /// deterministic behavior across all platforms, as classified by the
762
+ /// specification, at the cost of performance.
763
+ ///
764
+ /// This is `true` by default.
765
+ ///
766
+ /// [proposal]: https://github.com/webassembly/relaxed-simd
767
+ pub fn wasm_relaxed_simd(&mut self, enable: bool) -> &mut Self {
768
+ self.features.relaxed_simd = enable;
769
+ self
770
+ }
771
+
772
+ /// This option can be used to control the behavior of the [relaxed SIMD
773
+ /// proposal's][proposal] instructions.
774
+ ///
775
+ /// The relaxed SIMD proposal introduces instructions that are allowed to
776
+ /// have different behavior on different architectures, primarily to afford
777
+ /// an efficient implementation on all architectures. This means, however,
778
+ /// that the same module may execute differently on one host than another,
779
+ /// which typically is not otherwise the case. This option is provided to
780
+ /// force Wasmtime to generate deterministic code for all relaxed simd
781
+ /// instructions, at the cost of performance, for all architectures. When
782
+ /// this option is enabled then the deterministic behavior of all
783
+ /// instructions in the relaxed SIMD proposal is selected.
784
+ ///
785
+ /// This is `false` by default.
786
+ ///
787
+ /// [proposal]: https://github.com/webassembly/relaxed-simd
788
+ pub fn relaxed_simd_deterministic(&mut self, enable: bool) -> &mut Self {
789
+ self.tunables.relaxed_simd_deterministic = enable;
790
+ self
791
+ }
792
+
793
+ /// Configures whether the [WebAssembly bulk memory operations
794
+ /// proposal][proposal] will be enabled for compilation.
795
+ ///
796
+ /// This feature gates items such as the `memory.copy` instruction, passive
797
+ /// data/table segments, etc, being in a module.
798
+ ///
799
+ /// This is `true` by default.
800
+ ///
801
+ /// Feature `reference_types`, which is also `true` by default, requires
802
+ /// this feature to be enabled. Thus disabling this feature must also disable
803
+ /// `reference_types` as well using [`wasm_reference_types`](crate::Config::wasm_reference_types).
804
+ ///
805
+ /// # Errors
806
+ ///
807
+ /// Disabling this feature without disabling `reference_types` will cause
808
+ /// `Engine::new` to fail.
809
+ ///
810
+ /// [proposal]: https://github.com/webassembly/bulk-memory-operations
811
+ pub fn wasm_bulk_memory(&mut self, enable: bool) -> &mut Self {
812
+ self.features.bulk_memory = enable;
813
+ self
814
+ }
815
+
816
+ /// Configures whether the WebAssembly multi-value [proposal] will
817
+ /// be enabled for compilation.
818
+ ///
819
+ /// This feature gates functions and blocks returning multiple values in a
820
+ /// module, for example.
821
+ ///
822
+ /// This is `true` by default.
823
+ ///
824
+ /// [proposal]: https://github.com/webassembly/multi-value
825
+ pub fn wasm_multi_value(&mut self, enable: bool) -> &mut Self {
826
+ self.features.multi_value = enable;
827
+ self
828
+ }
829
+
830
+ /// Configures whether the WebAssembly multi-memory [proposal] will
831
+ /// be enabled for compilation.
832
+ ///
833
+ /// This feature gates modules having more than one linear memory
834
+ /// declaration or import.
835
+ ///
836
+ /// This is `true` by default.
837
+ ///
838
+ /// [proposal]: https://github.com/webassembly/multi-memory
839
+ pub fn wasm_multi_memory(&mut self, enable: bool) -> &mut Self {
840
+ self.features.multi_memory = enable;
841
+ self
842
+ }
843
+
844
+ /// Configures whether the WebAssembly memory64 [proposal] will
845
+ /// be enabled for compilation.
846
+ ///
847
+ /// Note that this the upstream specification is not finalized and Wasmtime
848
+ /// may also have bugs for this feature since it hasn't been exercised
849
+ /// much.
850
+ ///
851
+ /// This is `false` by default.
852
+ ///
853
+ /// [proposal]: https://github.com/webassembly/memory64
854
+ pub fn wasm_memory64(&mut self, enable: bool) -> &mut Self {
855
+ self.features.memory64 = enable;
856
+ self
857
+ }
858
+
859
+ /// Configures whether the WebAssembly component-model [proposal] will
860
+ /// be enabled for compilation.
861
+ ///
862
+ /// Note that this feature is a work-in-progress and is incomplete.
863
+ ///
864
+ /// This is `false` by default.
865
+ ///
866
+ /// [proposal]: https://github.com/webassembly/component-model
867
+ #[cfg(feature = "component-model")]
868
+ pub fn wasm_component_model(&mut self, enable: bool) -> &mut Self {
869
+ self.features.component_model = enable;
870
+ self
871
+ }
872
+
873
+ /// Configures which compilation strategy will be used for wasm modules.
874
+ ///
875
+ /// This method can be used to configure which compiler is used for wasm
876
+ /// modules, and for more documentation consult the [`Strategy`] enumeration
877
+ /// and its documentation.
878
+ ///
879
+ /// The default value for this is `Strategy::Auto`.
880
+ #[cfg(any(feature = "cranelift", feature = "winch"))]
881
+ #[cfg_attr(nightlydoc, doc(cfg(any(feature = "cranelift", feature = "winch"))))]
882
+ pub fn strategy(&mut self, strategy: Strategy) -> &mut Self {
883
+ self.compiler_config.strategy = strategy;
884
+ self
885
+ }
886
+
887
+ /// Creates a default profiler based on the profiling strategy chosen.
888
+ ///
889
+ /// Profiler creation calls the type's default initializer where the purpose is
890
+ /// really just to put in place the type used for profiling.
891
+ ///
892
+ /// Some [`ProfilingStrategy`] require specific platforms or particular feature
893
+ /// to be enabled, such as `ProfilingStrategy::JitDump` requires the `jitdump`
894
+ /// feature.
895
+ ///
896
+ /// # Errors
897
+ ///
898
+ /// The validation of this field is deferred until the engine is being built, and thus may
899
+ /// cause `Engine::new` fail if the required feature is disabled, or the platform is not
900
+ /// supported.
901
+ pub fn profiler(&mut self, profile: ProfilingStrategy) -> &mut Self {
902
+ self.profiling_strategy = profile;
903
+ self
904
+ }
905
+
906
+ /// Configures whether the debug verifier of Cranelift is enabled or not.
907
+ ///
908
+ /// When Cranelift is used as a code generation backend this will configure
909
+ /// it to have the `enable_verifier` flag which will enable a number of debug
910
+ /// checks inside of Cranelift. This is largely only useful for the
911
+ /// developers of wasmtime itself.
912
+ ///
913
+ /// The default value for this is `false`
914
+ #[cfg(any(feature = "cranelift", feature = "winch"))]
915
+ #[cfg_attr(nightlydoc, doc(cfg(any(feature = "cranelift", feature = "winch"))))]
916
+ pub fn cranelift_debug_verifier(&mut self, enable: bool) -> &mut Self {
917
+ let val = if enable { "true" } else { "false" };
918
+ self.compiler_config
919
+ .settings
920
+ .insert("enable_verifier".to_string(), val.to_string());
921
+ self
922
+ }
923
+
924
+ /// Configures the Cranelift code generator optimization level.
925
+ ///
926
+ /// When the Cranelift code generator is used you can configure the
927
+ /// optimization level used for generated code in a few various ways. For
928
+ /// more information see the documentation of [`OptLevel`].
929
+ ///
930
+ /// The default value for this is `OptLevel::None`.
931
+ #[cfg(any(feature = "cranelift", feature = "winch"))]
932
+ #[cfg_attr(nightlydoc, doc(cfg(any(feature = "cranelift", feature = "winch"))))]
933
+ pub fn cranelift_opt_level(&mut self, level: OptLevel) -> &mut Self {
934
+ let val = match level {
935
+ OptLevel::None => "none",
936
+ OptLevel::Speed => "speed",
937
+ OptLevel::SpeedAndSize => "speed_and_size",
938
+ };
939
+ self.compiler_config
940
+ .settings
941
+ .insert("opt_level".to_string(), val.to_string());
942
+ self
943
+ }
944
+
945
+ /// Configures whether Cranelift should perform a NaN-canonicalization pass.
946
+ ///
947
+ /// When Cranelift is used as a code generation backend this will configure
948
+ /// it to replace NaNs with a single canonical value. This is useful for users
949
+ /// requiring entirely deterministic WebAssembly computation.
950
+ /// This is not required by the WebAssembly spec, so it is not enabled by default.
951
+ ///
952
+ /// The default value for this is `false`
953
+ #[cfg(any(feature = "cranelift", feature = "winch"))]
954
+ #[cfg_attr(nightlydoc, doc(cfg(any(feature = "cranelift", feature = "winch"))))]
955
+ pub fn cranelift_nan_canonicalization(&mut self, enable: bool) -> &mut Self {
956
+ let val = if enable { "true" } else { "false" };
957
+ self.compiler_config
958
+ .settings
959
+ .insert("enable_nan_canonicalization".to_string(), val.to_string());
960
+ self
961
+ }
962
+
963
+ /// Controls whether proof-carrying code (PCC) is used to validate
964
+ /// lowering of Wasm sandbox checks.
965
+ ///
966
+ /// Proof-carrying code carries "facts" about program values from
967
+ /// the IR all the way to machine code, and checks those facts
968
+ /// against known machine-instruction semantics. This guards
969
+ /// against bugs in instruction lowering that might create holes
970
+ /// in the Wasm sandbox.
971
+ ///
972
+ /// PCC is designed to be fast: it does not require complex
973
+ /// solvers or logic engines to verify, but only a linear pass
974
+ /// over a trail of "breadcrumbs" or facts at each intermediate
975
+ /// value. Thus, it is appropriate to enable in production.
976
+ #[cfg(any(feature = "cranelift", feature = "winch"))]
977
+ #[cfg_attr(nightlydoc, doc(cfg(any(feature = "cranelift", feature = "winch"))))]
978
+ pub fn cranelift_pcc(&mut self, enable: bool) -> &mut Self {
979
+ let val = if enable { "true" } else { "false" };
980
+ self.compiler_config
981
+ .settings
982
+ .insert("enable_pcc".to_string(), val.to_string());
983
+ self
984
+ }
985
+
986
+ /// Allows setting a Cranelift boolean flag or preset. This allows
987
+ /// fine-tuning of Cranelift settings.
988
+ ///
989
+ /// Since Cranelift flags may be unstable, this method should not be considered to be stable
990
+ /// either; other `Config` functions should be preferred for stability.
991
+ ///
992
+ /// # Safety
993
+ ///
994
+ /// This is marked as unsafe, because setting the wrong flag might break invariants,
995
+ /// resulting in execution hazards.
996
+ ///
997
+ /// # Errors
998
+ ///
999
+ /// The validation of the flags are deferred until the engine is being built, and thus may
1000
+ /// cause `Engine::new` fail if the flag's name does not exist, or the value is not appropriate
1001
+ /// for the flag type.
1002
+ #[cfg(any(feature = "cranelift", feature = "winch"))]
1003
+ #[cfg_attr(nightlydoc, doc(cfg(any(feature = "cranelift", feature = "winch"))))]
1004
+ pub unsafe fn cranelift_flag_enable(&mut self, flag: &str) -> &mut Self {
1005
+ self.compiler_config.flags.insert(flag.to_string());
1006
+ self
1007
+ }
1008
+
1009
+ /// Allows settings another Cranelift flag defined by a flag name and value. This allows
1010
+ /// fine-tuning of Cranelift settings.
1011
+ ///
1012
+ /// Since Cranelift flags may be unstable, this method should not be considered to be stable
1013
+ /// either; other `Config` functions should be preferred for stability.
1014
+ ///
1015
+ /// # Safety
1016
+ ///
1017
+ /// This is marked as unsafe, because setting the wrong flag might break invariants,
1018
+ /// resulting in execution hazards.
1019
+ ///
1020
+ /// # Errors
1021
+ ///
1022
+ /// The validation of the flags are deferred until the engine is being built, and thus may
1023
+ /// cause `Engine::new` fail if the flag's name does not exist, or incompatible with other
1024
+ /// settings.
1025
+ ///
1026
+ /// For example, feature `wasm_backtrace` will set `unwind_info` to `true`, but if it's
1027
+ /// manually set to false then it will fail.
1028
+ #[cfg(any(feature = "cranelift", feature = "winch"))]
1029
+ #[cfg_attr(nightlydoc, doc(cfg(any(feature = "cranelift", feature = "winch"))))]
1030
+ pub unsafe fn cranelift_flag_set(&mut self, name: &str, value: &str) -> &mut Self {
1031
+ self.compiler_config
1032
+ .settings
1033
+ .insert(name.to_string(), value.to_string());
1034
+ self
1035
+ }
1036
+
1037
+ /// Loads cache configuration specified at `path`.
1038
+ ///
1039
+ /// This method will read the file specified by `path` on the filesystem and
1040
+ /// attempt to load cache configuration from it. This method can also fail
1041
+ /// due to I/O errors, misconfiguration, syntax errors, etc. For expected
1042
+ /// syntax in the configuration file see the [documentation online][docs].
1043
+ ///
1044
+ /// By default cache configuration is not enabled or loaded.
1045
+ ///
1046
+ /// This method is only available when the `cache` feature of this crate is
1047
+ /// enabled.
1048
+ ///
1049
+ /// # Errors
1050
+ ///
1051
+ /// This method can fail due to any error that happens when loading the file
1052
+ /// pointed to by `path` and attempting to load the cache configuration.
1053
+ ///
1054
+ /// [docs]: https://bytecodealliance.github.io/wasmtime/cli-cache.html
1055
+ #[cfg(feature = "cache")]
1056
+ #[cfg_attr(nightlydoc, doc(cfg(feature = "cache")))]
1057
+ pub fn cache_config_load(&mut self, path: impl AsRef<Path>) -> Result<&mut Self> {
1058
+ self.cache_config = CacheConfig::from_file(Some(path.as_ref()))?;
1059
+ Ok(self)
1060
+ }
1061
+
1062
+ /// Disable caching.
1063
+ ///
1064
+ /// Every call to [`Module::new(my_wasm)`][crate::Module::new] will
1065
+ /// recompile `my_wasm`, even when it is unchanged.
1066
+ ///
1067
+ /// By default, new configs do not have caching enabled. This method is only
1068
+ /// useful for disabling a previous cache configuration.
1069
+ ///
1070
+ /// This method is only available when the `cache` feature of this crate is
1071
+ /// enabled.
1072
+ #[cfg(feature = "cache")]
1073
+ #[cfg_attr(nightlydoc, doc(cfg(feature = "cache")))]
1074
+ pub fn disable_cache(&mut self) -> &mut Self {
1075
+ self.cache_config = CacheConfig::new_cache_disabled();
1076
+ self
1077
+ }
1078
+
1079
+ /// Loads cache configuration from the system default path.
1080
+ ///
1081
+ /// This commit is the same as [`Config::cache_config_load`] except that it
1082
+ /// does not take a path argument and instead loads the default
1083
+ /// configuration present on the system. This is located, for example, on
1084
+ /// Unix at `$HOME/.config/wasmtime/config.toml` and is typically created
1085
+ /// with the `wasmtime config new` command.
1086
+ ///
1087
+ /// By default cache configuration is not enabled or loaded.
1088
+ ///
1089
+ /// This method is only available when the `cache` feature of this crate is
1090
+ /// enabled.
1091
+ ///
1092
+ /// # Errors
1093
+ ///
1094
+ /// This method can fail due to any error that happens when loading the
1095
+ /// default system configuration. Note that it is not an error if the
1096
+ /// default config file does not exist, in which case the default settings
1097
+ /// for an enabled cache are applied.
1098
+ ///
1099
+ /// [docs]: https://bytecodealliance.github.io/wasmtime/cli-cache.html
1100
+ #[cfg(feature = "cache")]
1101
+ #[cfg_attr(nightlydoc, doc(cfg(feature = "cache")))]
1102
+ pub fn cache_config_load_default(&mut self) -> Result<&mut Self> {
1103
+ self.cache_config = CacheConfig::from_file(None)?;
1104
+ Ok(self)
1105
+ }
1106
+
1107
+ /// Sets a custom memory creator.
1108
+ ///
1109
+ /// Custom memory creators are used when creating host `Memory` objects or when
1110
+ /// creating instance linear memories for the on-demand instance allocation strategy.
1111
+ pub fn with_host_memory(&mut self, mem_creator: Arc<dyn MemoryCreator>) -> &mut Self {
1112
+ self.mem_creator = Some(Arc::new(MemoryCreatorProxy(mem_creator)));
1113
+ self
1114
+ }
1115
+
1116
+ /// Sets a custom stack creator.
1117
+ ///
1118
+ /// Custom memory creators are used when creating creating async instance stacks for
1119
+ /// the on-demand instance allocation strategy.
1120
+ #[cfg(feature = "async")]
1121
+ #[cfg_attr(nightlydoc, doc(cfg(feature = "async")))]
1122
+ pub fn with_host_stack(&mut self, stack_creator: Arc<dyn StackCreator>) -> &mut Self {
1123
+ self.stack_creator = Some(Arc::new(StackCreatorProxy(stack_creator)));
1124
+ self
1125
+ }
1126
+
1127
+ /// Sets the instance allocation strategy to use.
1128
+ ///
1129
+ /// When using the pooling instance allocation strategy, all linear memories
1130
+ /// will be created as "static" and the
1131
+ /// [`Config::static_memory_maximum_size`] and
1132
+ /// [`Config::static_memory_guard_size`] options will be used to configure
1133
+ /// the virtual memory allocations of linear memories.
1134
+ pub fn allocation_strategy(&mut self, strategy: InstanceAllocationStrategy) -> &mut Self {
1135
+ self.allocation_strategy = strategy;
1136
+ self
1137
+ }
1138
+
1139
+ /// Configures the maximum size, in bytes, where a linear memory is
1140
+ /// considered static, above which it'll be considered dynamic.
1141
+ ///
1142
+ /// > Note: this value has important performance ramifications, be sure to
1143
+ /// > understand what this value does before tweaking it and benchmarking.
1144
+ ///
1145
+ /// This function configures the threshold for wasm memories whether they're
1146
+ /// implemented as a dynamically relocatable chunk of memory or a statically
1147
+ /// located chunk of memory. The `max_size` parameter here is the size, in
1148
+ /// bytes, where if the maximum size of a linear memory is below `max_size`
1149
+ /// then it will be statically allocated with enough space to never have to
1150
+ /// move. If the maximum size of a linear memory is larger than `max_size`
1151
+ /// then wasm memory will be dynamically located and may move in memory
1152
+ /// through growth operations.
1153
+ ///
1154
+ /// Specifying a `max_size` of 0 means that all memories will be dynamic and
1155
+ /// may be relocated through `memory.grow`. Also note that if any wasm
1156
+ /// memory's maximum size is below `max_size` then it will still reserve
1157
+ /// `max_size` bytes in the virtual memory space.
1158
+ ///
1159
+ /// ## Static vs Dynamic Memory
1160
+ ///
1161
+ /// Linear memories represent contiguous arrays of bytes, but they can also
1162
+ /// be grown through the API and wasm instructions. When memory is grown if
1163
+ /// space hasn't been preallocated then growth may involve relocating the
1164
+ /// base pointer in memory. Memories in Wasmtime are classified in two
1165
+ /// different ways:
1166
+ ///
1167
+ /// * **static** - these memories preallocate all space necessary they'll
1168
+ /// ever need, meaning that the base pointer of these memories is never
1169
+ /// moved. Static memories may take more virtual memory space because of
1170
+ /// pre-reserving space for memories.
1171
+ ///
1172
+ /// * **dynamic** - these memories are not preallocated and may move during
1173
+ /// growth operations. Dynamic memories consume less virtual memory space
1174
+ /// because they don't need to preallocate space for future growth.
1175
+ ///
1176
+ /// Static memories can be optimized better in JIT code because once the
1177
+ /// base address is loaded in a function it's known that we never need to
1178
+ /// reload it because it never changes, `memory.grow` is generally a pretty
1179
+ /// fast operation because the wasm memory is never relocated, and under
1180
+ /// some conditions bounds checks can be elided on memory accesses.
1181
+ ///
1182
+ /// Dynamic memories can't be quite as heavily optimized because the base
1183
+ /// address may need to be reloaded more often, they may require relocating
1184
+ /// lots of data on `memory.grow`, and dynamic memories require
1185
+ /// unconditional bounds checks on all memory accesses.
1186
+ ///
1187
+ /// ## Should you use static or dynamic memory?
1188
+ ///
1189
+ /// In general you probably don't need to change the value of this property.
1190
+ /// The defaults here are optimized for each target platform to consume a
1191
+ /// reasonable amount of physical memory while also generating speedy
1192
+ /// machine code.
1193
+ ///
1194
+ /// One of the main reasons you may want to configure this today is if your
1195
+ /// environment can't reserve virtual memory space for each wasm linear
1196
+ /// memory. On 64-bit platforms wasm memories require a 6GB reservation by
1197
+ /// default, and system limits may prevent this in some scenarios. In this
1198
+ /// case you may wish to force memories to be allocated dynamically meaning
1199
+ /// that the virtual memory footprint of creating a wasm memory should be
1200
+ /// exactly what's used by the wasm itself.
1201
+ ///
1202
+ /// For 32-bit memories a static memory must contain at least 4GB of
1203
+ /// reserved address space plus a guard page to elide any bounds checks at
1204
+ /// all. Smaller static memories will use similar bounds checks as dynamic
1205
+ /// memories.
1206
+ ///
1207
+ /// ## Default
1208
+ ///
1209
+ /// The default value for this property depends on the host platform. For
1210
+ /// 64-bit platforms there's lots of address space available, so the default
1211
+ /// configured here is 4GB. WebAssembly linear memories currently max out at
1212
+ /// 4GB which means that on 64-bit platforms Wasmtime by default always uses
1213
+ /// a static memory. This, coupled with a sufficiently sized guard region,
1214
+ /// should produce the fastest JIT code on 64-bit platforms, but does
1215
+ /// require a large address space reservation for each wasm memory.
1216
+ ///
1217
+ /// For 32-bit platforms this value defaults to 1GB. This means that wasm
1218
+ /// memories whose maximum size is less than 1GB will be allocated
1219
+ /// statically, otherwise they'll be considered dynamic.
1220
+ ///
1221
+ /// ## Static Memory and Pooled Instance Allocation
1222
+ ///
1223
+ /// When using the pooling instance allocator memories are considered to
1224
+ /// always be static memories, they are never dynamic. This setting
1225
+ /// configures the size of linear memory to reserve for each memory in the
1226
+ /// pooling allocator.
1227
+ ///
1228
+ /// Note that the pooling allocator can reduce the amount of memory needed
1229
+ /// for pooling allocation by using memory protection; see
1230
+ /// `PoolingAllocatorConfig::memory_protection_keys` for details.
1231
+ pub fn static_memory_maximum_size(&mut self, max_size: u64) -> &mut Self {
1232
+ let max_pages = max_size / u64::from(wasmtime_environ::WASM_PAGE_SIZE);
1233
+ self.tunables.static_memory_bound = max_pages;
1234
+ self
1235
+ }
1236
+
1237
+ /// Indicates that the "static" style of memory should always be used.
1238
+ ///
1239
+ /// This configuration option enables selecting the "static" option for all
1240
+ /// linear memories created within this `Config`. This means that all
1241
+ /// memories will be allocated up-front and will never move. Additionally
1242
+ /// this means that all memories are synthetically limited by the
1243
+ /// [`Config::static_memory_maximum_size`] option, regardless of what the
1244
+ /// actual maximum size is on the memory's original type.
1245
+ ///
1246
+ /// For the difference between static and dynamic memories, see the
1247
+ /// [`Config::static_memory_maximum_size`].
1248
+ pub fn static_memory_forced(&mut self, force: bool) -> &mut Self {
1249
+ self.tunables.static_memory_bound_is_maximum = force;
1250
+ self
1251
+ }
1252
+
1253
+ /// Configures the size, in bytes, of the guard region used at the end of a
1254
+ /// static memory's address space reservation.
1255
+ ///
1256
+ /// > Note: this value has important performance ramifications, be sure to
1257
+ /// > understand what this value does before tweaking it and benchmarking.
1258
+ ///
1259
+ /// All WebAssembly loads/stores are bounds-checked and generate a trap if
1260
+ /// they're out-of-bounds. Loads and stores are often very performance
1261
+ /// critical, so we want the bounds check to be as fast as possible!
1262
+ /// Accelerating these memory accesses is the motivation for a guard after a
1263
+ /// memory allocation.
1264
+ ///
1265
+ /// Memories (both static and dynamic) can be configured with a guard at the
1266
+ /// end of them which consists of unmapped virtual memory. This unmapped
1267
+ /// memory will trigger a memory access violation (e.g. segfault) if
1268
+ /// accessed. This allows JIT code to elide bounds checks if it can prove
1269
+ /// that an access, if out of bounds, would hit the guard region. This means
1270
+ /// that having such a guard of unmapped memory can remove the need for
1271
+ /// bounds checks in JIT code.
1272
+ ///
1273
+ /// For the difference between static and dynamic memories, see the
1274
+ /// [`Config::static_memory_maximum_size`].
1275
+ ///
1276
+ /// ## How big should the guard be?
1277
+ ///
1278
+ /// In general, like with configuring `static_memory_maximum_size`, you
1279
+ /// probably don't want to change this value from the defaults. Otherwise,
1280
+ /// though, the size of the guard region affects the number of bounds checks
1281
+ /// needed for generated wasm code. More specifically, loads/stores with
1282
+ /// immediate offsets will generate bounds checks based on how big the guard
1283
+ /// page is.
1284
+ ///
1285
+ /// For 32-bit wasm memories a 4GB static memory is required to even start
1286
+ /// removing bounds checks. A 4GB guard size will guarantee that the module
1287
+ /// has zero bounds checks for memory accesses. A 2GB guard size will
1288
+ /// eliminate all bounds checks with an immediate offset less than 2GB. A
1289
+ /// guard size of zero means that all memory accesses will still have bounds
1290
+ /// checks.
1291
+ ///
1292
+ /// ## Default
1293
+ ///
1294
+ /// The default value for this property is 2GB on 64-bit platforms. This
1295
+ /// allows eliminating almost all bounds checks on loads/stores with an
1296
+ /// immediate offset of less than 2GB. On 32-bit platforms this defaults to
1297
+ /// 64KB.
1298
+ ///
1299
+ /// ## Errors
1300
+ ///
1301
+ /// The `Engine::new` method will return an error if this option is smaller
1302
+ /// than the value configured for [`Config::dynamic_memory_guard_size`].
1303
+ pub fn static_memory_guard_size(&mut self, guard_size: u64) -> &mut Self {
1304
+ let guard_size = round_up_to_pages(guard_size);
1305
+ self.tunables.static_memory_offset_guard_size = guard_size;
1306
+ self
1307
+ }
1308
+
1309
+ /// Configures the size, in bytes, of the guard region used at the end of a
1310
+ /// dynamic memory's address space reservation.
1311
+ ///
1312
+ /// For the difference between static and dynamic memories, see the
1313
+ /// [`Config::static_memory_maximum_size`]
1314
+ ///
1315
+ /// For more information about what a guard is, see the documentation on
1316
+ /// [`Config::static_memory_guard_size`].
1317
+ ///
1318
+ /// Note that the size of the guard region for dynamic memories is not super
1319
+ /// critical for performance. Making it reasonably-sized can improve
1320
+ /// generated code slightly, but for maximum performance you'll want to lean
1321
+ /// towards static memories rather than dynamic anyway.
1322
+ ///
1323
+ /// Also note that the dynamic memory guard size must be smaller than the
1324
+ /// static memory guard size, so if a large dynamic memory guard is
1325
+ /// specified then the static memory guard size will also be automatically
1326
+ /// increased.
1327
+ ///
1328
+ /// ## Default
1329
+ ///
1330
+ /// This value defaults to 64KB.
1331
+ ///
1332
+ /// ## Errors
1333
+ ///
1334
+ /// The `Engine::new` method will return an error if this option is larger
1335
+ /// than the value configured for [`Config::static_memory_guard_size`].
1336
+ pub fn dynamic_memory_guard_size(&mut self, guard_size: u64) -> &mut Self {
1337
+ let guard_size = round_up_to_pages(guard_size);
1338
+ self.tunables.dynamic_memory_offset_guard_size = guard_size;
1339
+ self
1340
+ }
1341
+
1342
+ /// Configures the size, in bytes, of the extra virtual memory space
1343
+ /// reserved after a "dynamic" memory for growing into.
1344
+ ///
1345
+ /// For the difference between static and dynamic memories, see the
1346
+ /// [`Config::static_memory_maximum_size`]
1347
+ ///
1348
+ /// Dynamic memories can be relocated in the process's virtual address space
1349
+ /// on growth and do not always reserve their entire space up-front. This
1350
+ /// means that a growth of the memory may require movement in the address
1351
+ /// space, which in the worst case can copy a large number of bytes from one
1352
+ /// region to another.
1353
+ ///
1354
+ /// This setting configures how many bytes are reserved after the initial
1355
+ /// reservation for a dynamic memory for growing into. A value of 0 here
1356
+ /// means that no extra bytes are reserved and all calls to `memory.grow`
1357
+ /// will need to relocate the wasm linear memory (copying all the bytes). A
1358
+ /// value of 1 megabyte, however, means that `memory.grow` can allocate up
1359
+ /// to a megabyte of extra memory before the memory needs to be moved in
1360
+ /// linear memory.
1361
+ ///
1362
+ /// Note that this is a currently simple heuristic for optimizing the growth
1363
+ /// of dynamic memories, primarily implemented for the memory64 proposal
1364
+ /// where all memories are currently "dynamic". This is unlikely to be a
1365
+ /// one-size-fits-all style approach and if you're an embedder running into
1366
+ /// issues with dynamic memories and growth and are interested in having
1367
+ /// other growth strategies available here please feel free to [open an
1368
+ /// issue on the Wasmtime repository][issue]!
1369
+ ///
1370
+ /// [issue]: https://github.com/bytecodealliance/wasmtime/issues/ne
1371
+ ///
1372
+ /// ## Default
1373
+ ///
1374
+ /// For 64-bit platforms this defaults to 2GB, and for 32-bit platforms this
1375
+ /// defaults to 1MB.
1376
+ pub fn dynamic_memory_reserved_for_growth(&mut self, reserved: u64) -> &mut Self {
1377
+ self.tunables.dynamic_memory_growth_reserve = round_up_to_pages(reserved);
1378
+ self
1379
+ }
1380
+
1381
+ /// Indicates whether a guard region is present before allocations of
1382
+ /// linear memory.
1383
+ ///
1384
+ /// Guard regions before linear memories are never used during normal
1385
+ /// operation of WebAssembly modules, even if they have out-of-bounds
1386
+ /// loads. The only purpose for a preceding guard region in linear memory
1387
+ /// is extra protection against possible bugs in code generators like
1388
+ /// Cranelift. This setting does not affect performance in any way, but will
1389
+ /// result in larger virtual memory reservations for linear memories (it
1390
+ /// won't actually ever use more memory, just use more of the address
1391
+ /// space).
1392
+ ///
1393
+ /// The size of the guard region before linear memory is the same as the
1394
+ /// guard size that comes after linear memory, which is configured by
1395
+ /// [`Config::static_memory_guard_size`] and
1396
+ /// [`Config::dynamic_memory_guard_size`].
1397
+ ///
1398
+ /// ## Default
1399
+ ///
1400
+ /// This value defaults to `true`.
1401
+ pub fn guard_before_linear_memory(&mut self, guard: bool) -> &mut Self {
1402
+ self.tunables.guard_before_linear_memory = guard;
1403
+ self
1404
+ }
1405
+
1406
+ /// Configure the version information used in serialized and deserialzied [`crate::Module`]s.
1407
+ /// This effects the behavior of [`crate::Module::serialize()`], as well as
1408
+ /// [`crate::Module::deserialize()`] and related functions.
1409
+ ///
1410
+ /// The default strategy is to use the wasmtime crate's Cargo package version.
1411
+ pub fn module_version(&mut self, strategy: ModuleVersionStrategy) -> Result<&mut Self> {
1412
+ match strategy {
1413
+ // This case requires special precondition for assertion in SerializedModule::to_bytes
1414
+ ModuleVersionStrategy::Custom(ref v) => {
1415
+ if v.as_bytes().len() > 255 {
1416
+ bail!("custom module version cannot be more than 255 bytes: {}", v);
1417
+ }
1418
+ }
1419
+ _ => {}
1420
+ }
1421
+ self.module_version = strategy;
1422
+ Ok(self)
1423
+ }
1424
+
1425
+ /// Configure wether wasmtime should compile a module using multiple
1426
+ /// threads.
1427
+ ///
1428
+ /// Disabling this will result in a single thread being used to compile
1429
+ /// the wasm bytecode.
1430
+ ///
1431
+ /// By default parallel compilation is enabled.
1432
+ #[cfg(feature = "parallel-compilation")]
1433
+ #[cfg_attr(nightlydoc, doc(cfg(feature = "parallel-compilation")))]
1434
+ pub fn parallel_compilation(&mut self, parallel: bool) -> &mut Self {
1435
+ self.parallel_compilation = parallel;
1436
+ self
1437
+ }
1438
+
1439
+ /// Configures whether compiled artifacts will contain information to map
1440
+ /// native program addresses back to the original wasm module.
1441
+ ///
1442
+ /// This configuration option is `true` by default and, if enabled,
1443
+ /// generates the appropriate tables in compiled modules to map from native
1444
+ /// address back to wasm source addresses. This is used for displaying wasm
1445
+ /// program counters in backtraces as well as generating filenames/line
1446
+ /// numbers if so configured as well (and the original wasm module has DWARF
1447
+ /// debugging information present).
1448
+ pub fn generate_address_map(&mut self, generate: bool) -> &mut Self {
1449
+ self.tunables.generate_address_map = generate;
1450
+ self
1451
+ }
1452
+
1453
+ /// Configures whether copy-on-write memory-mapped data is used to
1454
+ /// initialize a linear memory.
1455
+ ///
1456
+ /// Initializing linear memory via a copy-on-write mapping can drastically
1457
+ /// improve instantiation costs of a WebAssembly module because copying
1458
+ /// memory is deferred. Additionally if a page of memory is only ever read
1459
+ /// from WebAssembly and never written too then the same underlying page of
1460
+ /// data will be reused between all instantiations of a module meaning that
1461
+ /// if a module is instantiated many times this can lower the overall memory
1462
+ /// required needed to run that module.
1463
+ ///
1464
+ /// This feature is only applicable when a WebAssembly module meets specific
1465
+ /// criteria to be initialized in this fashion, such as:
1466
+ ///
1467
+ /// * Only memories defined in the module can be initialized this way.
1468
+ /// * Data segments for memory must use statically known offsets.
1469
+ /// * Data segments for memory must all be in-bounds.
1470
+ ///
1471
+ /// Modules which do not meet these criteria will fall back to
1472
+ /// initialization of linear memory based on copying memory.
1473
+ ///
1474
+ /// This feature of Wasmtime is also platform-specific:
1475
+ ///
1476
+ /// * Linux - this feature is supported for all instances of [`Module`].
1477
+ /// Modules backed by an existing mmap (such as those created by
1478
+ /// [`Module::deserialize_file`]) will reuse that mmap to cow-initialize
1479
+ /// memory. Other instance of [`Module`] may use the `memfd_create`
1480
+ /// syscall to create an initialization image to `mmap`.
1481
+ /// * Unix (not Linux) - this feature is only supported when loading modules
1482
+ /// from a precompiled file via [`Module::deserialize_file`] where there
1483
+ /// is a file descriptor to use to map data into the process. Note that
1484
+ /// the module must have been compiled with this setting enabled as well.
1485
+ /// * Windows - there is no support for this feature at this time. Memory
1486
+ /// initialization will always copy bytes.
1487
+ ///
1488
+ /// By default this option is enabled.
1489
+ ///
1490
+ /// [`Module::deserialize_file`]: crate::Module::deserialize_file
1491
+ /// [`Module`]: crate::Module
1492
+ pub fn memory_init_cow(&mut self, enable: bool) -> &mut Self {
1493
+ self.memory_init_cow = enable;
1494
+ self
1495
+ }
1496
+
1497
+ /// A configuration option to force the usage of `memfd_create` on Linux to
1498
+ /// be used as the backing source for a module's initial memory image.
1499
+ ///
1500
+ /// When [`Config::memory_init_cow`] is enabled, which is enabled by
1501
+ /// default, module memory initialization images are taken from a module's
1502
+ /// original mmap if possible. If a precompiled module was loaded from disk
1503
+ /// this means that the disk's file is used as an mmap source for the
1504
+ /// initial linear memory contents. This option can be used to force, on
1505
+ /// Linux, that instead of using the original file on disk a new in-memory
1506
+ /// file is created with `memfd_create` to hold the contents of the initial
1507
+ /// image.
1508
+ ///
1509
+ /// This option can be used to avoid possibly loading the contents of memory
1510
+ /// from disk through a page fault. Instead with `memfd_create` the contents
1511
+ /// of memory are always in RAM, meaning that even page faults which
1512
+ /// initially populate a wasm linear memory will only work with RAM instead
1513
+ /// of ever hitting the disk that the original precompiled module is stored
1514
+ /// on.
1515
+ ///
1516
+ /// This option is disabled by default.
1517
+ pub fn force_memory_init_memfd(&mut self, enable: bool) -> &mut Self {
1518
+ self.force_memory_init_memfd = enable;
1519
+ self
1520
+ }
1521
+
1522
+ /// Configures whether or not a coredump should be generated and attached to
1523
+ /// the anyhow::Error when a trap is raised.
1524
+ ///
1525
+ /// This option is disabled by default.
1526
+ #[cfg(feature = "coredump")]
1527
+ #[cfg_attr(nightlydoc, doc(cfg(feature = "coredump")))]
1528
+ pub fn coredump_on_trap(&mut self, enable: bool) -> &mut Self {
1529
+ self.coredump_on_trap = enable;
1530
+ self
1531
+ }
1532
+
1533
+ /// Enables memory error checking for wasm programs.
1534
+ ///
1535
+ /// This option is disabled by default.
1536
+ #[cfg(any(feature = "cranelift", feature = "winch"))]
1537
+ pub fn wmemcheck(&mut self, enable: bool) -> &mut Self {
1538
+ self.wmemcheck = enable;
1539
+ self.compiler_config.wmemcheck = enable;
1540
+ self
1541
+ }
1542
+
1543
+ /// Configures the "guaranteed dense image size" for copy-on-write
1544
+ /// initialized memories.
1545
+ ///
1546
+ /// When using the [`Config::memory_init_cow`] feature to initialize memory
1547
+ /// efficiently (which is enabled by default), compiled modules contain an
1548
+ /// image of the module's initial heap. If the module has a fairly sparse
1549
+ /// initial heap, with just a few data segments at very different offsets,
1550
+ /// this could result in a large region of zero bytes in the image. In
1551
+ /// other words, it's not very memory-efficient.
1552
+ ///
1553
+ /// We normally use a heuristic to avoid this: if less than half
1554
+ /// of the initialized range (first non-zero to last non-zero
1555
+ /// byte) of any memory in the module has pages with nonzero
1556
+ /// bytes, then we avoid creating a memory image for the entire module.
1557
+ ///
1558
+ /// However, if the embedder always needs the instantiation-time efficiency
1559
+ /// of copy-on-write initialization, and is otherwise carefully controlling
1560
+ /// parameters of the modules (for example, by limiting the maximum heap
1561
+ /// size of the modules), then it may be desirable to ensure a memory image
1562
+ /// is created even if this could go against the heuristic above. Thus, we
1563
+ /// add another condition: there is a size of initialized data region up to
1564
+ /// which we *always* allow a memory image. The embedder can set this to a
1565
+ /// known maximum heap size if they desire to always get the benefits of
1566
+ /// copy-on-write images.
1567
+ ///
1568
+ /// In the future we may implement a "best of both worlds"
1569
+ /// solution where we have a dense image up to some limit, and
1570
+ /// then support a sparse list of initializers beyond that; this
1571
+ /// would get most of the benefit of copy-on-write and pay the incremental
1572
+ /// cost of eager initialization only for those bits of memory
1573
+ /// that are out-of-bounds. However, for now, an embedder desiring
1574
+ /// fast instantiation should ensure that this setting is as large
1575
+ /// as the maximum module initial memory content size.
1576
+ ///
1577
+ /// By default this value is 16 MiB.
1578
+ pub fn memory_guaranteed_dense_image_size(&mut self, size_in_bytes: u64) -> &mut Self {
1579
+ self.memory_guaranteed_dense_image_size = size_in_bytes;
1580
+ self
1581
+ }
1582
+
1583
+ pub(crate) fn validate(&self) -> Result<()> {
1584
+ if self.features.reference_types && !self.features.bulk_memory {
1585
+ bail!("feature 'reference_types' requires 'bulk_memory' to be enabled");
1586
+ }
1587
+ if self.features.threads && !self.features.bulk_memory {
1588
+ bail!("feature 'threads' requires 'bulk_memory' to be enabled");
1589
+ }
1590
+ #[cfg(feature = "async")]
1591
+ if self.async_support && self.max_wasm_stack > self.async_stack_size {
1592
+ bail!("max_wasm_stack size cannot exceed the async_stack_size");
1593
+ }
1594
+ if self.max_wasm_stack == 0 {
1595
+ bail!("max_wasm_stack size cannot be zero");
1596
+ }
1597
+ if self.tunables.static_memory_offset_guard_size
1598
+ < self.tunables.dynamic_memory_offset_guard_size
1599
+ {
1600
+ bail!("static memory guard size cannot be smaller than dynamic memory guard size");
1601
+ }
1602
+ #[cfg(not(feature = "wmemcheck"))]
1603
+ if self.wmemcheck {
1604
+ bail!("wmemcheck (memory checker) was requested but is not enabled in this build");
1605
+ }
1606
+
1607
+ Ok(())
1608
+ }
1609
+
1610
+ pub(crate) fn build_allocator(&self) -> Result<Box<dyn InstanceAllocator + Send + Sync>> {
1611
+ #[cfg(feature = "async")]
1612
+ let stack_size = self.async_stack_size;
1613
+
1614
+ #[cfg(not(feature = "async"))]
1615
+ let stack_size = 0;
1616
+
1617
+ match &self.allocation_strategy {
1618
+ InstanceAllocationStrategy::OnDemand => {
1619
+ #[allow(unused_mut)]
1620
+ let mut allocator = Box::new(OnDemandInstanceAllocator::new(
1621
+ self.mem_creator.clone(),
1622
+ stack_size,
1623
+ ));
1624
+ #[cfg(feature = "async")]
1625
+ if let Some(stack_creator) = &self.stack_creator {
1626
+ allocator.set_stack_creator(stack_creator.clone());
1627
+ }
1628
+ Ok(allocator)
1629
+ }
1630
+ #[cfg(feature = "pooling-allocator")]
1631
+ InstanceAllocationStrategy::Pooling(config) => {
1632
+ let mut config = config.config;
1633
+ config.stack_size = stack_size;
1634
+ Ok(Box::new(wasmtime_runtime::PoolingInstanceAllocator::new(
1635
+ &config,
1636
+ &self.tunables,
1637
+ )?))
1638
+ }
1639
+ }
1640
+ }
1641
+
1642
+ pub(crate) fn build_profiler(&self) -> Result<Box<dyn ProfilingAgent>> {
1643
+ Ok(match self.profiling_strategy {
1644
+ ProfilingStrategy::PerfMap => profiling::new_perfmap()?,
1645
+ ProfilingStrategy::JitDump => profiling::new_jitdump()?,
1646
+ ProfilingStrategy::VTune => profiling::new_vtune()?,
1647
+ ProfilingStrategy::None => profiling::new_null(),
1648
+ })
1649
+ }
1650
+
1651
+ #[cfg(any(feature = "cranelift", feature = "winch"))]
1652
+ pub(crate) fn build_compiler(mut self) -> Result<(Self, Box<dyn wasmtime_environ::Compiler>)> {
1653
+ let mut compiler = match self.compiler_config.strategy {
1654
+ #[cfg(feature = "cranelift")]
1655
+ Strategy::Auto => wasmtime_cranelift::builder(),
1656
+ #[cfg(all(feature = "winch", not(feature = "cranelift")))]
1657
+ Strategy::Auto => wasmtime_winch::builder(),
1658
+ #[cfg(feature = "cranelift")]
1659
+ Strategy::Cranelift => wasmtime_cranelift::builder(),
1660
+ #[cfg(not(feature = "cranelift"))]
1661
+ Strategy::Cranelift => bail!("cranelift support not compiled in"),
1662
+ #[cfg(feature = "winch")]
1663
+ Strategy::Winch => wasmtime_winch::builder(),
1664
+ #[cfg(not(feature = "winch"))]
1665
+ Strategy::Winch => bail!("winch support not compiled in"),
1666
+ };
1667
+
1668
+ if let Some(target) = &self.compiler_config.target {
1669
+ compiler.target(target.clone())?;
1670
+ }
1671
+
1672
+ if let Some(path) = &self.compiler_config.clif_dir {
1673
+ compiler.clif_dir(path)?;
1674
+ }
1675
+
1676
+ // If probestack is enabled for a target, Wasmtime will always use the
1677
+ // inline strategy which doesn't require us to define a `__probestack`
1678
+ // function or similar.
1679
+ self.compiler_config
1680
+ .settings
1681
+ .insert("probestack_strategy".into(), "inline".into());
1682
+
1683
+ let host = target_lexicon::Triple::host();
1684
+ let target = self
1685
+ .compiler_config
1686
+ .target
1687
+ .as_ref()
1688
+ .unwrap_or(&host)
1689
+ .clone();
1690
+
1691
+ // On supported targets, we enable stack probing by default.
1692
+ // This is required on Windows because of the way Windows
1693
+ // commits its stacks, but it's also a good idea on other
1694
+ // platforms to ensure guard pages are hit for large frame
1695
+ // sizes.
1696
+ if probestack_supported(target.architecture) {
1697
+ self.compiler_config
1698
+ .flags
1699
+ .insert("enable_probestack".into());
1700
+ }
1701
+
1702
+ if self.features.tail_call {
1703
+ ensure!(
1704
+ target.architecture != Architecture::S390x,
1705
+ "Tail calls are not supported on s390x yet: \
1706
+ https://github.com/bytecodealliance/wasmtime/issues/6530"
1707
+ );
1708
+ }
1709
+
1710
+ if let Some(unwind_requested) = self.native_unwind_info {
1711
+ if !self
1712
+ .compiler_config
1713
+ .ensure_setting_unset_or_given("unwind_info", &unwind_requested.to_string())
1714
+ {
1715
+ bail!("incompatible settings requested for Cranelift and Wasmtime `unwind-info` settings");
1716
+ }
1717
+ }
1718
+
1719
+ if target.operating_system == target_lexicon::OperatingSystem::Windows {
1720
+ if !self
1721
+ .compiler_config
1722
+ .ensure_setting_unset_or_given("unwind_info", "true")
1723
+ {
1724
+ bail!("`native_unwind_info` cannot be disabled on Windows");
1725
+ }
1726
+ }
1727
+
1728
+ // We require frame pointers for correct stack walking, which is safety
1729
+ // critical in the presence of reference types, and otherwise it is just
1730
+ // really bad developer experience to get wrong.
1731
+ self.compiler_config
1732
+ .settings
1733
+ .insert("preserve_frame_pointers".into(), "true".into());
1734
+
1735
+ // check for incompatible compiler options and set required values
1736
+ if self.features.reference_types {
1737
+ if !self
1738
+ .compiler_config
1739
+ .ensure_setting_unset_or_given("enable_safepoints", "true")
1740
+ {
1741
+ bail!("compiler option 'enable_safepoints' must be enabled when 'reference types' is enabled");
1742
+ }
1743
+ }
1744
+
1745
+ if self.features.relaxed_simd && !self.features.simd {
1746
+ bail!("cannot disable the simd proposal but enable the relaxed simd proposal");
1747
+ }
1748
+
1749
+ // Apply compiler settings and flags
1750
+ for (k, v) in self.compiler_config.settings.iter() {
1751
+ compiler.set(k, v)?;
1752
+ }
1753
+ for flag in self.compiler_config.flags.iter() {
1754
+ compiler.enable(flag)?;
1755
+ }
1756
+
1757
+ if let Some(cache_store) = &self.compiler_config.cache_store {
1758
+ compiler.enable_incremental_compilation(cache_store.clone())?;
1759
+ }
1760
+
1761
+ compiler.set_tunables(self.tunables.clone())?;
1762
+ compiler.wmemcheck(self.compiler_config.wmemcheck);
1763
+
1764
+ Ok((self, compiler.build()?))
1765
+ }
1766
+
1767
+ /// Internal setting for whether adapter modules for components will have
1768
+ /// extra WebAssembly instructions inserted performing more debug checks
1769
+ /// then are necessary.
1770
+ #[cfg(feature = "component-model")]
1771
+ pub fn debug_adapter_modules(&mut self, debug: bool) -> &mut Self {
1772
+ self.tunables.debug_adapter_modules = debug;
1773
+ self
1774
+ }
1775
+
1776
+ /// Enables clif output when compiling a WebAssembly module.
1777
+ #[cfg(any(feature = "cranelift", feature = "winch"))]
1778
+ pub fn emit_clif(&mut self, path: &Path) -> &mut Self {
1779
+ self.compiler_config.clif_dir = Some(path.to_path_buf());
1780
+ self
1781
+ }
1782
+
1783
+ /// Configures whether, when on macOS, Mach ports are used for exception
1784
+ /// handling instead of traditional Unix-based signal handling.
1785
+ ///
1786
+ /// WebAssembly traps in Wasmtime are implemented with native faults, for
1787
+ /// example a `SIGSEGV` will occur when a WebAssembly guest accesses
1788
+ /// out-of-bounds memory. Handling this can be configured to either use Unix
1789
+ /// signals or Mach ports on macOS. By default Mach ports are used.
1790
+ ///
1791
+ /// Mach ports enable Wasmtime to work by default with foreign
1792
+ /// error-handling systems such as breakpad which also use Mach ports to
1793
+ /// handle signals. In this situation Wasmtime will continue to handle guest
1794
+ /// faults gracefully while any non-guest faults will get forwarded to
1795
+ /// process-level handlers such as breakpad. Some more background on this
1796
+ /// can be found in #2456.
1797
+ ///
1798
+ /// A downside of using mach ports, however, is that they don't interact
1799
+ /// well with `fork()`. Forking a Wasmtime process on macOS will produce a
1800
+ /// child process that cannot successfully run WebAssembly. In this
1801
+ /// situation traditional Unix signal handling should be used as that's
1802
+ /// inherited and works across forks.
1803
+ ///
1804
+ /// If your embedding wants to use a custom error handler which leverages
1805
+ /// Mach ports and you additionally wish to `fork()` the process and use
1806
+ /// Wasmtime in the child process that's not currently possible. Please
1807
+ /// reach out to us if you're in this bucket!
1808
+ ///
1809
+ /// This option defaults to `true`, using Mach ports by default.
1810
+ pub fn macos_use_mach_ports(&mut self, mach_ports: bool) -> &mut Self {
1811
+ self.macos_use_mach_ports = mach_ports;
1812
+ self
1813
+ }
1814
+ }
1815
+
1816
+ fn round_up_to_pages(val: u64) -> u64 {
1817
+ let page_size = wasmtime_runtime::page_size() as u64;
1818
+ debug_assert!(page_size.is_power_of_two());
1819
+ val.checked_add(page_size - 1)
1820
+ .map(|val| val & !(page_size - 1))
1821
+ .unwrap_or(u64::MAX / page_size + 1)
1822
+ }
1823
+
1824
+ impl Default for Config {
1825
+ fn default() -> Config {
1826
+ Config::new()
1827
+ }
1828
+ }
1829
+
1830
+ impl fmt::Debug for Config {
1831
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
1832
+ let mut f = f.debug_struct("Config");
1833
+ f.field("debug_info", &self.tunables.generate_native_debuginfo)
1834
+ .field("parse_wasm_debuginfo", &self.tunables.parse_wasm_debuginfo)
1835
+ .field("wasm_threads", &self.features.threads)
1836
+ .field("wasm_reference_types", &self.features.reference_types)
1837
+ .field(
1838
+ "wasm_function_references",
1839
+ &self.features.function_references,
1840
+ )
1841
+ .field("wasm_bulk_memory", &self.features.bulk_memory)
1842
+ .field("wasm_simd", &self.features.simd)
1843
+ .field("wasm_relaxed_simd", &self.features.relaxed_simd)
1844
+ .field("wasm_multi_value", &self.features.multi_value)
1845
+ .field(
1846
+ "static_memory_maximum_size",
1847
+ &(u64::from(self.tunables.static_memory_bound)
1848
+ * u64::from(wasmtime_environ::WASM_PAGE_SIZE)),
1849
+ )
1850
+ .field(
1851
+ "static_memory_guard_size",
1852
+ &self.tunables.static_memory_offset_guard_size,
1853
+ )
1854
+ .field(
1855
+ "dynamic_memory_guard_size",
1856
+ &self.tunables.dynamic_memory_offset_guard_size,
1857
+ )
1858
+ .field(
1859
+ "guard_before_linear_memory",
1860
+ &self.tunables.guard_before_linear_memory,
1861
+ )
1862
+ .field("parallel_compilation", &self.parallel_compilation);
1863
+ #[cfg(any(feature = "cranelift", feature = "winch"))]
1864
+ {
1865
+ f.field("compiler_config", &self.compiler_config);
1866
+ }
1867
+ f.finish()
1868
+ }
1869
+ }
1870
+
1871
+ /// Possible Compilation strategies for a wasm module.
1872
+ ///
1873
+ /// This is used as an argument to the [`Config::strategy`] method.
1874
+ #[non_exhaustive]
1875
+ #[derive(PartialEq, Eq, Clone, Debug, Copy)]
1876
+ pub enum Strategy {
1877
+ /// An indicator that the compilation strategy should be automatically
1878
+ /// selected.
1879
+ ///
1880
+ /// This is generally what you want for most projects and indicates that the
1881
+ /// `wasmtime` crate itself should make the decision about what the best
1882
+ /// code generator for a wasm module is.
1883
+ ///
1884
+ /// Currently this always defaults to Cranelift, but the default value may
1885
+ /// change over time.
1886
+ Auto,
1887
+
1888
+ /// Currently the default backend, Cranelift aims to be a reasonably fast
1889
+ /// code generator which generates high quality machine code.
1890
+ Cranelift,
1891
+
1892
+ /// A baseline compiler for WebAssembly, currently under active development and not ready for
1893
+ /// production applications.
1894
+ Winch,
1895
+ }
1896
+
1897
+ /// Possible optimization levels for the Cranelift codegen backend.
1898
+ #[non_exhaustive]
1899
+ #[derive(Copy, Clone, Debug, Serialize, Deserialize, Eq, PartialEq)]
1900
+ pub enum OptLevel {
1901
+ /// No optimizations performed, minimizes compilation time by disabling most
1902
+ /// optimizations.
1903
+ None,
1904
+ /// Generates the fastest possible code, but may take longer.
1905
+ Speed,
1906
+ /// Similar to `speed`, but also performs transformations aimed at reducing
1907
+ /// code size.
1908
+ SpeedAndSize,
1909
+ }
1910
+
1911
+ /// Select which profiling technique to support.
1912
+ #[derive(Debug, Clone, Copy, PartialEq)]
1913
+ pub enum ProfilingStrategy {
1914
+ /// No profiler support.
1915
+ None,
1916
+
1917
+ /// Collect function name information as the "perf map" file format, used with `perf` on Linux.
1918
+ PerfMap,
1919
+
1920
+ /// Collect profiling info for "jitdump" file format, used with `perf` on
1921
+ /// Linux.
1922
+ JitDump,
1923
+
1924
+ /// Collect profiling info using the "ittapi", used with `VTune` on Linux.
1925
+ VTune,
1926
+ }
1927
+
1928
+ /// Select how wasm backtrace detailed information is handled.
1929
+ #[derive(Debug, Clone, Copy)]
1930
+ pub enum WasmBacktraceDetails {
1931
+ /// Support is unconditionally enabled and wasmtime will parse and read
1932
+ /// debug information.
1933
+ Enable,
1934
+
1935
+ /// Support is disabled, and wasmtime will not parse debug information for
1936
+ /// backtrace details.
1937
+ Disable,
1938
+
1939
+ /// Support for backtrace details is conditional on the
1940
+ /// `WASMTIME_BACKTRACE_DETAILS` environment variable.
1941
+ Environment,
1942
+ }
1943
+
1944
+ /// Configuration options used with [`InstanceAllocationStrategy::Pooling`] to
1945
+ /// change the behavior of the pooling instance allocator.
1946
+ ///
1947
+ /// This structure has a builder-style API in the same manner as [`Config`] and
1948
+ /// is configured with [`Config::allocation_strategy`].
1949
+ #[cfg(feature = "pooling-allocator")]
1950
+ #[derive(Debug, Clone, Default)]
1951
+ pub struct PoolingAllocationConfig {
1952
+ config: wasmtime_runtime::PoolingInstanceAllocatorConfig,
1953
+ }
1954
+
1955
+ #[cfg(feature = "pooling-allocator")]
1956
+ impl PoolingAllocationConfig {
1957
+ /// Configures the maximum number of "unused warm slots" to retain in the
1958
+ /// pooling allocator.
1959
+ ///
1960
+ /// The pooling allocator operates over slots to allocate from, and each
1961
+ /// slot is considered "cold" if it's never been used before or "warm" if
1962
+ /// it's been used by some module in the past. Slots in the pooling
1963
+ /// allocator additionally track an "affinity" flag to a particular core
1964
+ /// wasm module. When a module is instantiated into a slot then the slot is
1965
+ /// considered affine to that module, even after the instance has been
1966
+ /// deallocated.
1967
+ ///
1968
+ /// When a new instance is created then a slot must be chosen, and the
1969
+ /// current algorithm for selecting a slot is:
1970
+ ///
1971
+ /// * If there are slots that are affine to the module being instantiated,
1972
+ /// then the most recently used slot is selected to be allocated from.
1973
+ /// This is done to improve reuse of resources such as memory mappings and
1974
+ /// additionally try to benefit from temporal locality for things like
1975
+ /// caches.
1976
+ ///
1977
+ /// * Otherwise if there are more than N affine slots to other modules, then
1978
+ /// one of those affine slots is chosen to be allocated. The slot chosen
1979
+ /// is picked on a least-recently-used basis.
1980
+ ///
1981
+ /// * Finally, if there are less than N affine slots to other modules, then
1982
+ /// the non-affine slots are allocated from.
1983
+ ///
1984
+ /// This setting, `max_unused_warm_slots`, is the value for N in the above
1985
+ /// algorithm. The purpose of this setting is to have a knob over the RSS
1986
+ /// impact of "unused slots" for a long-running wasm server.
1987
+ ///
1988
+ /// If this setting is set to 0, for example, then affine slots are
1989
+ /// aggressively reused on a least-recently-used basis. A "cold" slot is
1990
+ /// only used if there are no affine slots available to allocate from. This
1991
+ /// means that the set of slots used over the lifetime of a program is the
1992
+ /// same as the maximum concurrent number of wasm instances.
1993
+ ///
1994
+ /// If this setting is set to infinity, however, then cold slots are
1995
+ /// prioritized to be allocated from. This means that the set of slots used
1996
+ /// over the lifetime of a program will approach
1997
+ /// [`PoolingAllocationConfig::total_memories`], or the maximum number of
1998
+ /// slots in the pooling allocator.
1999
+ ///
2000
+ /// Wasmtime does not aggressively decommit all resources associated with a
2001
+ /// slot when the slot is not in use. For example the
2002
+ /// [`PoolingAllocationConfig::linear_memory_keep_resident`] option can be
2003
+ /// used to keep memory associated with a slot, even when it's not in use.
2004
+ /// This means that the total set of used slots in the pooling instance
2005
+ /// allocator can impact the overall RSS usage of a program.
2006
+ ///
2007
+ /// The default value for this option is `100`.
2008
+ pub fn max_unused_warm_slots(&mut self, max: u32) -> &mut Self {
2009
+ self.config.max_unused_warm_slots = max;
2010
+ self
2011
+ }
2012
+
2013
+ /// Configures whether or not stacks used for async futures are reset to
2014
+ /// zero after usage.
2015
+ ///
2016
+ /// When the [`async_support`](Config::async_support) method is enabled for
2017
+ /// Wasmtime and the [`call_async`] variant
2018
+ /// of calling WebAssembly is used then Wasmtime will create a separate
2019
+ /// runtime execution stack for each future produced by [`call_async`].
2020
+ /// During the deallocation process Wasmtime won't by default reset the
2021
+ /// contents of the stack back to zero.
2022
+ ///
2023
+ /// When this option is enabled it can be seen as a defense-in-depth
2024
+ /// mechanism to reset a stack back to zero. This is not required for
2025
+ /// correctness and can be a costly operation in highly concurrent
2026
+ /// environments due to modifications of the virtual address space requiring
2027
+ /// process-wide synchronization.
2028
+ ///
2029
+ /// This option defaults to `false`.
2030
+ ///
2031
+ /// [`call_async`]: crate::TypedFunc::call_async
2032
+ #[cfg(feature = "async")]
2033
+ #[cfg_attr(nightlydoc, doc(cfg(feature = "async")))]
2034
+ pub fn async_stack_zeroing(&mut self, enable: bool) -> &mut Self {
2035
+ self.config.async_stack_zeroing = enable;
2036
+ self
2037
+ }
2038
+
2039
+ /// How much memory, in bytes, to keep resident for async stacks allocated
2040
+ /// with the pooling allocator.
2041
+ ///
2042
+ /// When [`PoolingAllocationConfig::async_stack_zeroing`] is enabled then
2043
+ /// Wasmtime will reset the contents of async stacks back to zero upon
2044
+ /// deallocation. This option can be used to perform the zeroing operation
2045
+ /// with `memset` up to a certain threshold of bytes instead of using system
2046
+ /// calls to reset the stack to zero.
2047
+ ///
2048
+ /// Note that when using this option the memory with async stacks will
2049
+ /// never be decommitted.
2050
+ #[cfg(feature = "async")]
2051
+ #[cfg_attr(nightlydoc, doc(cfg(feature = "async")))]
2052
+ pub fn async_stack_keep_resident(&mut self, size: usize) -> &mut Self {
2053
+ let size = round_up_to_pages(size as u64) as usize;
2054
+ self.config.async_stack_keep_resident = size;
2055
+ self
2056
+ }
2057
+
2058
+ /// How much memory, in bytes, to keep resident for each linear memory
2059
+ /// after deallocation.
2060
+ ///
2061
+ /// This option is only applicable on Linux and has no effect on other
2062
+ /// platforms.
2063
+ ///
2064
+ /// By default Wasmtime will use `madvise` to reset the entire contents of
2065
+ /// linear memory back to zero when a linear memory is deallocated. This
2066
+ /// option can be used to use `memset` instead to set memory back to zero
2067
+ /// which can, in some configurations, reduce the number of page faults
2068
+ /// taken when a slot is reused.
2069
+ pub fn linear_memory_keep_resident(&mut self, size: usize) -> &mut Self {
2070
+ let size = round_up_to_pages(size as u64) as usize;
2071
+ self.config.linear_memory_keep_resident = size;
2072
+ self
2073
+ }
2074
+
2075
+ /// How much memory, in bytes, to keep resident for each table after
2076
+ /// deallocation.
2077
+ ///
2078
+ /// This option is only applicable on Linux and has no effect on other
2079
+ /// platforms.
2080
+ ///
2081
+ /// This option is the same as
2082
+ /// [`PoolingAllocationConfig::linear_memory_keep_resident`] except that it
2083
+ /// is applicable to tables instead.
2084
+ pub fn table_keep_resident(&mut self, size: usize) -> &mut Self {
2085
+ let size = round_up_to_pages(size as u64) as usize;
2086
+ self.config.table_keep_resident = size;
2087
+ self
2088
+ }
2089
+
2090
+ /// The maximum number of concurrent component instances supported (default
2091
+ /// is `1000`).
2092
+ ///
2093
+ /// This provides an upper-bound on the total size of component
2094
+ /// metadata-related allocations, along with
2095
+ /// [`PoolingAllocationConfig::max_component_instance_size`]. The upper bound is
2096
+ ///
2097
+ /// ```text
2098
+ /// total_component_instances * max_component_instance_size
2099
+ /// ```
2100
+ ///
2101
+ /// where `max_component_instance_size` is rounded up to the size and alignment
2102
+ /// of the internal representation of the metadata.
2103
+ pub fn total_component_instances(&mut self, count: u32) -> &mut Self {
2104
+ self.config.limits.total_component_instances = count;
2105
+ self
2106
+ }
2107
+
2108
+ /// The maximum size, in bytes, allocated for a component instance's
2109
+ /// `VMComponentContext` metadata.
2110
+ ///
2111
+ /// The [`wasmtime::component::Instance`][crate::component::Instance] type
2112
+ /// has a static size but its internal `VMComponentContext` is dynamically
2113
+ /// sized depending on the component being instantiated. This size limit
2114
+ /// loosely correlates to the size of the component, taking into account
2115
+ /// factors such as:
2116
+ ///
2117
+ /// * number of lifted and lowered functions,
2118
+ /// * number of memories
2119
+ /// * number of inner instances
2120
+ /// * number of resources
2121
+ ///
2122
+ /// If the allocated size per instance is too small then instantiation of a
2123
+ /// module will fail at runtime with an error indicating how many bytes were
2124
+ /// needed.
2125
+ ///
2126
+ /// The default value for this is 1MiB.
2127
+ ///
2128
+ /// This provides an upper-bound on the total size of component
2129
+ /// metadata-related allocations, along with
2130
+ /// [`PoolingAllocationConfig::total_component_instances`]. The upper bound is
2131
+ ///
2132
+ /// ```text
2133
+ /// total_component_instances * max_component_instance_size
2134
+ /// ```
2135
+ ///
2136
+ /// where `max_component_instance_size` is rounded up to the size and alignment
2137
+ /// of the internal representation of the metadata.
2138
+ pub fn max_component_instance_size(&mut self, size: usize) -> &mut Self {
2139
+ self.config.limits.component_instance_size = size;
2140
+ self
2141
+ }
2142
+
2143
+ /// The maximum number of core instances a single component may contain
2144
+ /// (default is `20`).
2145
+ ///
2146
+ /// This method (along with
2147
+ /// [`PoolingAllocationConfig::max_memories_per_component`],
2148
+ /// [`PoolingAllocationConfig::max_tables_per_component`], and
2149
+ /// [`PoolingAllocationConfig::max_component_instance_size`]) allows you to cap
2150
+ /// the amount of resources a single component allocation consumes.
2151
+ ///
2152
+ /// If a component will instantiate more core instances than `count`, then
2153
+ /// the component will fail to instantiate.
2154
+ pub fn max_core_instances_per_component(&mut self, count: u32) -> &mut Self {
2155
+ self.config.limits.max_core_instances_per_component = count;
2156
+ self
2157
+ }
2158
+
2159
+ /// The maximum number of Wasm linear memories that a single component may
2160
+ /// transitively contain (default is `20`).
2161
+ ///
2162
+ /// This method (along with
2163
+ /// [`PoolingAllocationConfig::max_core_instances_per_component`],
2164
+ /// [`PoolingAllocationConfig::max_tables_per_component`], and
2165
+ /// [`PoolingAllocationConfig::max_component_instance_size`]) allows you to cap
2166
+ /// the amount of resources a single component allocation consumes.
2167
+ ///
2168
+ /// If a component transitively contains more linear memories than `count`,
2169
+ /// then the component will fail to instantiate.
2170
+ pub fn max_memories_per_component(&mut self, count: u32) -> &mut Self {
2171
+ self.config.limits.max_memories_per_component = count;
2172
+ self
2173
+ }
2174
+
2175
+ /// The maximum number of tables that a single component may transitively
2176
+ /// contain (default is `20`).
2177
+ ///
2178
+ /// This method (along with
2179
+ /// [`PoolingAllocationConfig::max_core_instances_per_component`],
2180
+ /// [`PoolingAllocationConfig::max_memories_per_component`],
2181
+ /// [`PoolingAllocationConfig::max_component_instance_size`]) allows you to cap
2182
+ /// the amount of resources a single component allocation consumes.
2183
+ ///
2184
+ /// If a component will transitively contains more tables than `count`, then
2185
+ /// the component will fail to instantiate.
2186
+ pub fn max_tables_per_component(&mut self, count: u32) -> &mut Self {
2187
+ self.config.limits.max_tables_per_component = count;
2188
+ self
2189
+ }
2190
+
2191
+ /// The maximum number of concurrent Wasm linear memories supported (default
2192
+ /// is `1000`).
2193
+ ///
2194
+ /// This value has a direct impact on the amount of memory allocated by the pooling
2195
+ /// instance allocator.
2196
+ ///
2197
+ /// The pooling instance allocator allocates a memory pool, where each entry
2198
+ /// in the pool contains the reserved address space for each linear memory
2199
+ /// supported by an instance.
2200
+ ///
2201
+ /// The memory pool will reserve a large quantity of host process address
2202
+ /// space to elide the bounds checks required for correct WebAssembly memory
2203
+ /// semantics. Even with 64-bit address spaces, the address space is limited
2204
+ /// when dealing with a large number of linear memories.
2205
+ ///
2206
+ /// For example, on Linux x86_64, the userland address space limit is 128
2207
+ /// TiB. That might seem like a lot, but each linear memory will *reserve* 6
2208
+ /// GiB of space by default.
2209
+ pub fn total_memories(&mut self, count: u32) -> &mut Self {
2210
+ self.config.limits.total_memories = count;
2211
+ self
2212
+ }
2213
+
2214
+ /// The maximum number of concurrent tables supported (default is `1000`).
2215
+ ///
2216
+ /// This value has a direct impact on the amount of memory allocated by the
2217
+ /// pooling instance allocator.
2218
+ ///
2219
+ /// The pooling instance allocator allocates a table pool, where each entry
2220
+ /// in the pool contains the space needed for each WebAssembly table
2221
+ /// supported by an instance (see `table_elements` to control the size of
2222
+ /// each table).
2223
+ pub fn total_tables(&mut self, count: u32) -> &mut Self {
2224
+ self.config.limits.total_tables = count;
2225
+ self
2226
+ }
2227
+
2228
+ /// The maximum number of execution stacks allowed for asynchronous
2229
+ /// execution, when enabled (default is `1000`).
2230
+ ///
2231
+ /// This value has a direct impact on the amount of memory allocated by the
2232
+ /// pooling instance allocator.
2233
+ #[cfg(feature = "async")]
2234
+ pub fn total_stacks(&mut self, count: u32) -> &mut Self {
2235
+ self.config.limits.total_stacks = count;
2236
+ self
2237
+ }
2238
+
2239
+ /// The maximum number of concurrent core instances supported (default is
2240
+ /// `1000`).
2241
+ ///
2242
+ /// This provides an upper-bound on the total size of core instance
2243
+ /// metadata-related allocations, along with
2244
+ /// [`PoolingAllocationConfig::max_core_instance_size`]. The upper bound is
2245
+ ///
2246
+ /// ```text
2247
+ /// total_core_instances * max_core_instance_size
2248
+ /// ```
2249
+ ///
2250
+ /// where `max_core_instance_size` is rounded up to the size and alignment of
2251
+ /// the internal representation of the metadata.
2252
+ pub fn total_core_instances(&mut self, count: u32) -> &mut Self {
2253
+ self.config.limits.total_core_instances = count;
2254
+ self
2255
+ }
2256
+
2257
+ /// The maximum size, in bytes, allocated for a core instance's `VMContext`
2258
+ /// metadata.
2259
+ ///
2260
+ /// The [`Instance`][crate::Instance] type has a static size but its
2261
+ /// `VMContext` metadata is dynamically sized depending on the module being
2262
+ /// instantiated. This size limit loosely correlates to the size of the Wasm
2263
+ /// module, taking into account factors such as:
2264
+ ///
2265
+ /// * number of functions
2266
+ /// * number of globals
2267
+ /// * number of memories
2268
+ /// * number of tables
2269
+ /// * number of function types
2270
+ ///
2271
+ /// If the allocated size per instance is too small then instantiation of a
2272
+ /// module will fail at runtime with an error indicating how many bytes were
2273
+ /// needed.
2274
+ ///
2275
+ /// The default value for this is 1MiB.
2276
+ ///
2277
+ /// This provides an upper-bound on the total size of core instance
2278
+ /// metadata-related allocations, along with
2279
+ /// [`PoolingAllocationConfig::total_core_instances`]. The upper bound is
2280
+ ///
2281
+ /// ```text
2282
+ /// total_core_instances * max_core_instance_size
2283
+ /// ```
2284
+ ///
2285
+ /// where `max_core_instance_size` is rounded up to the size and alignment of
2286
+ /// the internal representation of the metadata.
2287
+ pub fn max_core_instance_size(&mut self, size: usize) -> &mut Self {
2288
+ self.config.limits.core_instance_size = size;
2289
+ self
2290
+ }
2291
+
2292
+ /// The maximum number of defined tables for a core module (default is `1`).
2293
+ ///
2294
+ /// This value controls the capacity of the `VMTableDefinition` table in
2295
+ /// each instance's `VMContext` structure.
2296
+ ///
2297
+ /// The allocated size of the table will be `tables *
2298
+ /// sizeof(VMTableDefinition)` for each instance regardless of how many
2299
+ /// tables are defined by an instance's module.
2300
+ pub fn max_tables_per_module(&mut self, tables: u32) -> &mut Self {
2301
+ self.config.limits.max_tables_per_module = tables;
2302
+ self
2303
+ }
2304
+
2305
+ /// The maximum table elements for any table defined in a module (default is
2306
+ /// `10000`).
2307
+ ///
2308
+ /// If a table's minimum element limit is greater than this value, the
2309
+ /// module will fail to instantiate.
2310
+ ///
2311
+ /// If a table's maximum element limit is unbounded or greater than this
2312
+ /// value, the maximum will be `table_elements` for the purpose of any
2313
+ /// `table.grow` instruction.
2314
+ ///
2315
+ /// This value is used to reserve the maximum space for each supported
2316
+ /// table; table elements are pointer-sized in the Wasmtime runtime.
2317
+ /// Therefore, the space reserved for each instance is `tables *
2318
+ /// table_elements * sizeof::<*const ()>`.
2319
+ pub fn table_elements(&mut self, elements: u32) -> &mut Self {
2320
+ self.config.limits.table_elements = elements;
2321
+ self
2322
+ }
2323
+
2324
+ /// The maximum number of defined linear memories for a module (default is
2325
+ /// `1`).
2326
+ ///
2327
+ /// This value controls the capacity of the `VMMemoryDefinition` table in
2328
+ /// each core instance's `VMContext` structure.
2329
+ ///
2330
+ /// The allocated size of the table will be `memories *
2331
+ /// sizeof(VMMemoryDefinition)` for each core instance regardless of how
2332
+ /// many memories are defined by the core instance's module.
2333
+ pub fn max_memories_per_module(&mut self, memories: u32) -> &mut Self {
2334
+ self.config.limits.max_memories_per_module = memories;
2335
+ self
2336
+ }
2337
+
2338
+ /// The maximum number of Wasm pages for any linear memory defined in a
2339
+ /// module (default is `160`).
2340
+ ///
2341
+ /// The default of `160` means at most 10 MiB of host memory may be
2342
+ /// committed for each instance.
2343
+ ///
2344
+ /// If a memory's minimum page limit is greater than this value, the module
2345
+ /// will fail to instantiate.
2346
+ ///
2347
+ /// If a memory's maximum page limit is unbounded or greater than this
2348
+ /// value, the maximum will be `memory_pages` for the purpose of any
2349
+ /// `memory.grow` instruction.
2350
+ ///
2351
+ /// This value is used to control the maximum accessible space for each
2352
+ /// linear memory of a core instance.
2353
+ ///
2354
+ /// The reservation size of each linear memory is controlled by the
2355
+ /// `static_memory_maximum_size` setting and this value cannot exceed the
2356
+ /// configured static memory maximum size.
2357
+ pub fn memory_pages(&mut self, pages: u64) -> &mut Self {
2358
+ self.config.limits.memory_pages = pages;
2359
+ self
2360
+ }
2361
+
2362
+ /// Configures whether memory protection keys (MPK) should be used for more
2363
+ /// efficient layout of pool-allocated memories.
2364
+ ///
2365
+ /// When using the pooling allocator (see [`Config::allocation_strategy`],
2366
+ /// [`InstanceAllocationStrategy::Pooling`]), memory protection keys can
2367
+ /// reduce the total amount of allocated virtual memory by eliminating guard
2368
+ /// regions between WebAssembly memories in the pool. It does so by
2369
+ /// "coloring" memory regions with different memory keys and setting which
2370
+ /// regions are accessible each time executions switches from host to guest
2371
+ /// (or vice versa).
2372
+ ///
2373
+ /// MPK is only available on Linux (called `pku` there) and recent x86
2374
+ /// systems; we check for MPK support at runtime by examining the `CPUID`
2375
+ /// register. This configuration setting can be in three states:
2376
+ ///
2377
+ /// - `auto`: if MPK support is available the guard regions are removed; if
2378
+ /// not, the guard regions remain
2379
+ /// - `enable`: use MPK to eliminate guard regions; fail if MPK is not
2380
+ /// supported
2381
+ /// - `disable`: never use MPK
2382
+ ///
2383
+ /// By default this value is `disabled`, but may become `auto` in future
2384
+ /// releases.
2385
+ ///
2386
+ /// __WARNING__: this configuration options is still experimental--use at
2387
+ /// your own risk! MPK uses kernel and CPU features to protect memory
2388
+ /// regions; you may observe segmentation faults if anything is
2389
+ /// misconfigured.
2390
+ pub fn memory_protection_keys(&mut self, enable: MpkEnabled) -> &mut Self {
2391
+ self.config.memory_protection_keys = enable;
2392
+ self
2393
+ }
2394
+
2395
+ /// Sets an upper limit on how many memory protection keys (MPK) Wasmtime
2396
+ /// will use.
2397
+ ///
2398
+ /// This setting is only applicable when
2399
+ /// [`PoolingAllocationConfig::memory_protection_keys`] is set to `enable`
2400
+ /// or `auto`. Configuring this above the HW and OS limits (typically 15)
2401
+ /// has no effect.
2402
+ ///
2403
+ /// If multiple Wasmtime engines are used in the same process, note that all
2404
+ /// engines will share the same set of allocated keys; this setting will
2405
+ /// limit how many keys are allocated initially and thus available to all
2406
+ /// other engines.
2407
+ pub fn max_memory_protection_keys(&mut self, max: usize) -> &mut Self {
2408
+ self.config.max_memory_protection_keys = max;
2409
+ self
2410
+ }
2411
+
2412
+ /// Check if memory protection keys (MPK) are available on the current host.
2413
+ ///
2414
+ /// This is a convenience method for determining MPK availability using the
2415
+ /// same method that [`MpkEnabled::Auto`] does. See
2416
+ /// [`PoolingAllocationConfig::memory_protection_keys`] for more
2417
+ /// information.
2418
+ pub fn are_memory_protection_keys_available() -> bool {
2419
+ mpk::is_supported()
2420
+ }
2421
+ }
2422
+
2423
+ pub(crate) fn probestack_supported(arch: Architecture) -> bool {
2424
+ matches!(
2425
+ arch,
2426
+ Architecture::X86_64 | Architecture::Aarch64(_) | Architecture::Riscv64(_)
2427
+ )
2428
+ }