wasmtime 16.0.0 → 17.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
+ }