wasmtime 16.0.0 → 17.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1111) hide show
  1. checksums.yaml +4 -4
  2. data/Cargo.lock +103 -79
  3. data/ext/Cargo.toml +7 -6
  4. data/ext/cargo-vendor/cranelift-bforest-0.104.0/.cargo-checksum.json +1 -0
  5. data/ext/cargo-vendor/cranelift-bforest-0.104.0/Cargo.toml +40 -0
  6. data/ext/cargo-vendor/cranelift-codegen-0.104.0/.cargo-checksum.json +1 -0
  7. data/ext/cargo-vendor/cranelift-codegen-0.104.0/Cargo.toml +175 -0
  8. data/ext/cargo-vendor/cranelift-codegen-0.104.0/build.rs +392 -0
  9. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/isa/aarch64/inst.isle +4197 -0
  10. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/isa/aarch64/lower/isle.rs +882 -0
  11. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/isa/x64/abi.rs +1305 -0
  12. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/isle_prelude.rs +957 -0
  13. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/machinst/isle.rs +908 -0
  14. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/machinst/mod.rs +558 -0
  15. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/machinst/pcc.rs +159 -0
  16. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/opts/arithmetic.isle +169 -0
  17. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/opts/bitops.isle +188 -0
  18. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/opts/cprop.isle +248 -0
  19. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/opts/extends.isle +116 -0
  20. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/opts/icmp.isle +197 -0
  21. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/opts/selects.isle +77 -0
  22. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/opts/shifts.isle +307 -0
  23. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/opts/spaceship.isle +194 -0
  24. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/opts.rs +265 -0
  25. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/prelude.isle +641 -0
  26. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/prelude_lower.isle +1073 -0
  27. data/ext/cargo-vendor/cranelift-codegen-0.104.0/src/prelude_opt.isle +134 -0
  28. data/ext/cargo-vendor/cranelift-codegen-meta-0.104.0/.cargo-checksum.json +1 -0
  29. data/ext/cargo-vendor/cranelift-codegen-meta-0.104.0/Cargo.toml +35 -0
  30. data/ext/cargo-vendor/cranelift-codegen-shared-0.104.0/.cargo-checksum.json +1 -0
  31. data/ext/cargo-vendor/cranelift-codegen-shared-0.104.0/Cargo.toml +22 -0
  32. data/ext/cargo-vendor/cranelift-control-0.104.0/.cargo-checksum.json +1 -0
  33. data/ext/cargo-vendor/cranelift-control-0.104.0/Cargo.toml +30 -0
  34. data/ext/cargo-vendor/cranelift-entity-0.104.0/.cargo-checksum.json +1 -0
  35. data/ext/cargo-vendor/cranelift-entity-0.104.0/Cargo.toml +50 -0
  36. data/ext/cargo-vendor/cranelift-entity-0.104.0/src/primary.rs +541 -0
  37. data/ext/cargo-vendor/cranelift-frontend-0.104.0/.cargo-checksum.json +1 -0
  38. data/ext/cargo-vendor/cranelift-frontend-0.104.0/Cargo.toml +68 -0
  39. data/ext/cargo-vendor/cranelift-isle-0.104.0/.cargo-checksum.json +1 -0
  40. data/ext/cargo-vendor/cranelift-isle-0.104.0/Cargo.toml +46 -0
  41. data/ext/cargo-vendor/cranelift-native-0.104.0/.cargo-checksum.json +1 -0
  42. data/ext/cargo-vendor/cranelift-native-0.104.0/Cargo.toml +43 -0
  43. data/ext/cargo-vendor/cranelift-wasm-0.104.0/.cargo-checksum.json +1 -0
  44. data/ext/cargo-vendor/cranelift-wasm-0.104.0/Cargo.toml +106 -0
  45. data/ext/cargo-vendor/cranelift-wasm-0.104.0/src/code_translator.rs +3646 -0
  46. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.18/.cargo-checksum.json +1 -0
  47. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.18/Cargo.toml +49 -0
  48. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.18/README.md +52 -0
  49. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.18/src/clocks.rs +56 -0
  50. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.18/src/lib.rs +24 -0
  51. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.18/src/noop_scheduler.rs +25 -0
  52. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.18/tests/clocks.rs +33 -0
  53. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.18/tests/common/mod.rs +33 -0
  54. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.18/tests/random.rs +17 -0
  55. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.18/tests/scheduler.rs +24 -0
  56. data/ext/cargo-vendor/rand_pcg-0.3.1/.cargo-checksum.json +1 -0
  57. data/ext/cargo-vendor/rand_pcg-0.3.1/CHANGELOG.md +37 -0
  58. data/ext/cargo-vendor/rand_pcg-0.3.1/COPYRIGHT +12 -0
  59. data/ext/cargo-vendor/rand_pcg-0.3.1/Cargo.toml +37 -0
  60. data/ext/cargo-vendor/rand_pcg-0.3.1/LICENSE-APACHE +201 -0
  61. data/ext/cargo-vendor/rand_pcg-0.3.1/LICENSE-MIT +26 -0
  62. data/ext/cargo-vendor/rand_pcg-0.3.1/README.md +42 -0
  63. data/ext/cargo-vendor/rand_pcg-0.3.1/src/lib.rs +45 -0
  64. data/ext/cargo-vendor/rand_pcg-0.3.1/src/pcg128.rs +296 -0
  65. data/ext/cargo-vendor/rand_pcg-0.3.1/src/pcg64.rs +166 -0
  66. data/ext/cargo-vendor/rand_pcg-0.3.1/tests/lcg128xsl64.rs +77 -0
  67. data/ext/cargo-vendor/rand_pcg-0.3.1/tests/lcg64xsh32.rs +70 -0
  68. data/ext/cargo-vendor/rand_pcg-0.3.1/tests/mcg128xsl64.rs +75 -0
  69. data/ext/cargo-vendor/wasi-cap-std-sync-17.0.0/.cargo-checksum.json +1 -0
  70. data/ext/cargo-vendor/wasi-cap-std-sync-17.0.0/Cargo.toml +102 -0
  71. data/ext/cargo-vendor/wasi-common-17.0.0/.cargo-checksum.json +1 -0
  72. data/ext/cargo-vendor/wasi-common-17.0.0/Cargo.toml +131 -0
  73. data/ext/cargo-vendor/wasi-common-17.0.0/src/error.rs +26 -0
  74. data/ext/cargo-vendor/wasi-common-17.0.0/src/snapshots/preview_1/error.rs +266 -0
  75. data/ext/cargo-vendor/wasmtime-17.0.0/.cargo-checksum.json +1 -0
  76. data/ext/cargo-vendor/wasmtime-17.0.0/Cargo.toml +211 -0
  77. data/ext/cargo-vendor/wasmtime-17.0.0/src/component/component.rs +545 -0
  78. data/ext/cargo-vendor/wasmtime-17.0.0/src/component/instance.rs +815 -0
  79. data/ext/cargo-vendor/wasmtime-17.0.0/src/component/linker.rs +580 -0
  80. data/ext/cargo-vendor/wasmtime-17.0.0/src/component/matching.rs +215 -0
  81. data/ext/cargo-vendor/wasmtime-17.0.0/src/component/mod.rs +351 -0
  82. data/ext/cargo-vendor/wasmtime-17.0.0/src/component/resource_table.rs +350 -0
  83. data/ext/cargo-vendor/wasmtime-17.0.0/src/component/resources.rs +823 -0
  84. data/ext/cargo-vendor/wasmtime-17.0.0/src/config.rs +2428 -0
  85. data/ext/cargo-vendor/wasmtime-17.0.0/src/func/typed.rs +638 -0
  86. data/ext/cargo-vendor/wasmtime-17.0.0/src/lib.rs +526 -0
  87. data/ext/cargo-vendor/wasmtime-17.0.0/src/store.rs +2389 -0
  88. data/ext/cargo-vendor/wasmtime-asm-macros-17.0.0/.cargo-checksum.json +1 -0
  89. data/ext/cargo-vendor/wasmtime-asm-macros-17.0.0/Cargo.toml +22 -0
  90. data/ext/cargo-vendor/wasmtime-cache-17.0.0/.cargo-checksum.json +1 -0
  91. data/ext/cargo-vendor/wasmtime-cache-17.0.0/Cargo.toml +81 -0
  92. data/ext/cargo-vendor/wasmtime-component-macro-17.0.0/.cargo-checksum.json +1 -0
  93. data/ext/cargo-vendor/wasmtime-component-macro-17.0.0/Cargo.toml +67 -0
  94. data/ext/cargo-vendor/wasmtime-component-macro-17.0.0/src/bindgen.rs +371 -0
  95. data/ext/cargo-vendor/wasmtime-component-macro-17.0.0/tests/codegen/multiversion/root.wit +8 -0
  96. data/ext/cargo-vendor/wasmtime-component-util-17.0.0/.cargo-checksum.json +1 -0
  97. data/ext/cargo-vendor/wasmtime-component-util-17.0.0/Cargo.toml +25 -0
  98. data/ext/cargo-vendor/wasmtime-cranelift-17.0.0/.cargo-checksum.json +1 -0
  99. data/ext/cargo-vendor/wasmtime-cranelift-17.0.0/Cargo.toml +112 -0
  100. data/ext/cargo-vendor/wasmtime-cranelift-shared-17.0.0/.cargo-checksum.json +1 -0
  101. data/ext/cargo-vendor/wasmtime-cranelift-shared-17.0.0/Cargo.toml +71 -0
  102. data/ext/cargo-vendor/wasmtime-environ-17.0.0/.cargo-checksum.json +1 -0
  103. data/ext/cargo-vendor/wasmtime-environ-17.0.0/Cargo.lock +726 -0
  104. data/ext/cargo-vendor/wasmtime-environ-17.0.0/Cargo.toml +125 -0
  105. data/ext/cargo-vendor/wasmtime-environ-17.0.0/examples/factc.rs +205 -0
  106. data/ext/cargo-vendor/wasmtime-fiber-17.0.0/.cargo-checksum.json +1 -0
  107. data/ext/cargo-vendor/wasmtime-fiber-17.0.0/Cargo.toml +63 -0
  108. data/ext/cargo-vendor/wasmtime-jit-17.0.0/.cargo-checksum.json +1 -0
  109. data/ext/cargo-vendor/wasmtime-jit-17.0.0/Cargo.toml +125 -0
  110. data/ext/cargo-vendor/wasmtime-jit-debug-17.0.0/.cargo-checksum.json +1 -0
  111. data/ext/cargo-vendor/wasmtime-jit-debug-17.0.0/Cargo.toml +67 -0
  112. data/ext/cargo-vendor/wasmtime-jit-icache-coherence-17.0.0/.cargo-checksum.json +1 -0
  113. data/ext/cargo-vendor/wasmtime-jit-icache-coherence-17.0.0/Cargo.toml +46 -0
  114. data/ext/cargo-vendor/wasmtime-runtime-17.0.0/.cargo-checksum.json +1 -0
  115. data/ext/cargo-vendor/wasmtime-runtime-17.0.0/Cargo.toml +139 -0
  116. data/ext/cargo-vendor/wasmtime-runtime-17.0.0/src/instance/allocator/pooling/memory_pool.rs +997 -0
  117. data/ext/cargo-vendor/wasmtime-runtime-17.0.0/src/instance/allocator/pooling.rs +658 -0
  118. data/ext/cargo-vendor/wasmtime-runtime-17.0.0/src/memory.rs +973 -0
  119. data/ext/cargo-vendor/wasmtime-runtime-17.0.0/src/parking_spot.rs +622 -0
  120. data/ext/cargo-vendor/wasmtime-runtime-17.0.0/src/sys/windows/mmap.rs +216 -0
  121. data/ext/cargo-vendor/wasmtime-types-17.0.0/.cargo-checksum.json +1 -0
  122. data/ext/cargo-vendor/wasmtime-types-17.0.0/Cargo.toml +36 -0
  123. data/ext/cargo-vendor/wasmtime-versioned-export-macros-17.0.0/.cargo-checksum.json +1 -0
  124. data/ext/cargo-vendor/wasmtime-versioned-export-macros-17.0.0/Cargo.toml +32 -0
  125. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/.cargo-checksum.json +1 -0
  126. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/Cargo.toml +261 -0
  127. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/src/preview2/ctx.rs +333 -0
  128. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/src/preview2/filesystem.rs +325 -0
  129. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/src/preview2/host/clocks.rs +103 -0
  130. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/src/preview2/host/filesystem.rs +1069 -0
  131. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/src/preview2/host/instance_network.rs +15 -0
  132. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/src/preview2/host/network.rs +625 -0
  133. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/src/preview2/host/tcp.rs +605 -0
  134. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/src/preview2/host/udp.rs +530 -0
  135. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/src/preview2/mod.rs +327 -0
  136. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/src/preview2/network.rs +108 -0
  137. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/src/preview2/poll.rs +175 -0
  138. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/src/preview2/preview1.rs +2362 -0
  139. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/src/preview2/stream.rs +181 -0
  140. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/src/preview2/tcp.rs +335 -0
  141. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/src/preview2/udp.rs +125 -0
  142. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/tests/all/api.rs +217 -0
  143. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/tests/all/async_.rs +364 -0
  144. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/tests/all/main.rs +112 -0
  145. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/tests/all/preview1.rs +243 -0
  146. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/tests/all/sync.rs +303 -0
  147. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/command-extended.wit +6 -0
  148. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/cli/command.wit +7 -0
  149. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/cli/imports.wit +20 -0
  150. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/cli/stdio.wit +17 -0
  151. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/cli/terminal.wit +49 -0
  152. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/clocks/monotonic-clock.wit +45 -0
  153. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/clocks/wall-clock.wit +42 -0
  154. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/clocks/world.wit +6 -0
  155. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/filesystem/preopens.wit +8 -0
  156. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/filesystem/types.wit +634 -0
  157. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/filesystem/world.wit +6 -0
  158. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/http/proxy.wit +32 -0
  159. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/http/types.wit +570 -0
  160. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/io/error.wit +34 -0
  161. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/io/poll.wit +41 -0
  162. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/io/streams.wit +251 -0
  163. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/io/world.wit +6 -0
  164. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/random/insecure-seed.wit +25 -0
  165. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/random/insecure.wit +22 -0
  166. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/random/random.wit +26 -0
  167. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/random/world.wit +7 -0
  168. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/sockets/ip-name-lookup.wit +51 -0
  169. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/sockets/network.wit +145 -0
  170. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/sockets/tcp-create-socket.wit +27 -0
  171. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/sockets/tcp.wit +309 -0
  172. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/sockets/udp-create-socket.wit +27 -0
  173. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/sockets/udp.wit +264 -0
  174. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/deps/sockets/world.wit +11 -0
  175. data/ext/cargo-vendor/wasmtime-wasi-17.0.0/wit/test.wit +22 -0
  176. data/ext/cargo-vendor/wasmtime-winch-17.0.0/.cargo-checksum.json +1 -0
  177. data/ext/cargo-vendor/wasmtime-winch-17.0.0/Cargo.toml +77 -0
  178. data/ext/cargo-vendor/wasmtime-wit-bindgen-17.0.0/.cargo-checksum.json +1 -0
  179. data/ext/cargo-vendor/wasmtime-wit-bindgen-17.0.0/Cargo.toml +41 -0
  180. data/ext/cargo-vendor/wasmtime-wit-bindgen-17.0.0/src/lib.rs +2097 -0
  181. data/ext/cargo-vendor/wasmtime-wmemcheck-17.0.0/.cargo-checksum.json +1 -0
  182. data/ext/cargo-vendor/wasmtime-wmemcheck-17.0.0/Cargo.toml +29 -0
  183. data/ext/cargo-vendor/wiggle-17.0.0/.cargo-checksum.json +1 -0
  184. data/ext/cargo-vendor/wiggle-17.0.0/Cargo.toml +115 -0
  185. data/ext/cargo-vendor/wiggle-generate-17.0.0/.cargo-checksum.json +1 -0
  186. data/ext/cargo-vendor/wiggle-generate-17.0.0/Cargo.toml +65 -0
  187. data/ext/cargo-vendor/wiggle-macro-17.0.0/.cargo-checksum.json +1 -0
  188. data/ext/cargo-vendor/wiggle-macro-17.0.0/Cargo.toml +55 -0
  189. data/ext/cargo-vendor/winch-codegen-0.15.0/.cargo-checksum.json +1 -0
  190. data/ext/cargo-vendor/winch-codegen-0.15.0/Cargo.toml +76 -0
  191. data/ext/cargo-vendor/winch-codegen-0.15.0/src/codegen/context.rs +553 -0
  192. data/ext/cargo-vendor/winch-codegen-0.15.0/src/codegen/env.rs +309 -0
  193. data/ext/cargo-vendor/winch-codegen-0.15.0/src/isa/aarch64/masm.rs +457 -0
  194. data/ext/cargo-vendor/winch-codegen-0.15.0/src/isa/x64/asm.rs +1149 -0
  195. data/ext/cargo-vendor/winch-codegen-0.15.0/src/isa/x64/masm.rs +1044 -0
  196. data/ext/cargo-vendor/winch-codegen-0.15.0/src/masm.rs +708 -0
  197. data/ext/cargo-vendor/winch-codegen-0.15.0/src/stack.rs +452 -0
  198. data/ext/cargo-vendor/winch-codegen-0.15.0/src/visitor.rs +1617 -0
  199. data/ext/src/helpers/mod.rs +4 -0
  200. data/ext/src/helpers/nogvl.rs +29 -0
  201. data/ext/src/helpers/tmplock.rs +45 -0
  202. data/ext/src/ruby_api/engine.rs +7 -3
  203. data/ext/src/ruby_api/mod.rs +3 -0
  204. data/ext/src/ruby_api/module.rs +22 -8
  205. data/ext/src/ruby_api/store.rs +66 -12
  206. data/ext/src/ruby_api/wasi_ctx.rs +110 -0
  207. data/ext/src/ruby_api/wasi_ctx_builder.rs +10 -7
  208. data/lib/wasmtime/version.rb +1 -1
  209. metadata +931 -904
  210. data/ext/cargo-vendor/cranelift-bforest-0.103.0/.cargo-checksum.json +0 -1
  211. data/ext/cargo-vendor/cranelift-bforest-0.103.0/Cargo.toml +0 -40
  212. data/ext/cargo-vendor/cranelift-codegen-0.103.0/.cargo-checksum.json +0 -1
  213. data/ext/cargo-vendor/cranelift-codegen-0.103.0/Cargo.toml +0 -175
  214. data/ext/cargo-vendor/cranelift-codegen-0.103.0/build.rs +0 -391
  215. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/isa/aarch64/inst.isle +0 -4193
  216. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/isa/aarch64/lower/isle.rs +0 -874
  217. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/isa/x64/abi.rs +0 -1300
  218. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/isle_prelude.rs +0 -977
  219. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/machinst/isle.rs +0 -896
  220. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/machinst/mod.rs +0 -557
  221. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/machinst/pcc.rs +0 -160
  222. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/opts/arithmetic.isle +0 -152
  223. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/opts/bitops.isle +0 -198
  224. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/opts/cprop.isle +0 -237
  225. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/opts/extends.isle +0 -34
  226. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/opts/icmp.isle +0 -199
  227. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/opts/selects.isle +0 -76
  228. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/opts/shifts.isle +0 -310
  229. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/opts.rs +0 -172
  230. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/prelude.isle +0 -649
  231. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/prelude_lower.isle +0 -1061
  232. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/prelude_opt.isle +0 -58
  233. data/ext/cargo-vendor/cranelift-codegen-meta-0.103.0/.cargo-checksum.json +0 -1
  234. data/ext/cargo-vendor/cranelift-codegen-meta-0.103.0/Cargo.toml +0 -35
  235. data/ext/cargo-vendor/cranelift-codegen-shared-0.103.0/.cargo-checksum.json +0 -1
  236. data/ext/cargo-vendor/cranelift-codegen-shared-0.103.0/Cargo.toml +0 -22
  237. data/ext/cargo-vendor/cranelift-control-0.103.0/.cargo-checksum.json +0 -1
  238. data/ext/cargo-vendor/cranelift-control-0.103.0/Cargo.toml +0 -30
  239. data/ext/cargo-vendor/cranelift-entity-0.103.0/.cargo-checksum.json +0 -1
  240. data/ext/cargo-vendor/cranelift-entity-0.103.0/Cargo.toml +0 -50
  241. data/ext/cargo-vendor/cranelift-entity-0.103.0/src/primary.rs +0 -516
  242. data/ext/cargo-vendor/cranelift-frontend-0.103.0/.cargo-checksum.json +0 -1
  243. data/ext/cargo-vendor/cranelift-frontend-0.103.0/Cargo.toml +0 -68
  244. data/ext/cargo-vendor/cranelift-isle-0.103.0/.cargo-checksum.json +0 -1
  245. data/ext/cargo-vendor/cranelift-isle-0.103.0/Cargo.toml +0 -46
  246. data/ext/cargo-vendor/cranelift-native-0.103.0/.cargo-checksum.json +0 -1
  247. data/ext/cargo-vendor/cranelift-native-0.103.0/Cargo.toml +0 -43
  248. data/ext/cargo-vendor/cranelift-wasm-0.103.0/.cargo-checksum.json +0 -1
  249. data/ext/cargo-vendor/cranelift-wasm-0.103.0/Cargo.toml +0 -106
  250. data/ext/cargo-vendor/cranelift-wasm-0.103.0/src/code_translator.rs +0 -3646
  251. data/ext/cargo-vendor/wasi-cap-std-sync-16.0.0/.cargo-checksum.json +0 -1
  252. data/ext/cargo-vendor/wasi-cap-std-sync-16.0.0/Cargo.toml +0 -102
  253. data/ext/cargo-vendor/wasi-common-16.0.0/.cargo-checksum.json +0 -1
  254. data/ext/cargo-vendor/wasi-common-16.0.0/Cargo.toml +0 -131
  255. data/ext/cargo-vendor/wasi-common-16.0.0/src/error.rs +0 -26
  256. data/ext/cargo-vendor/wasi-common-16.0.0/src/snapshots/preview_1/error.rs +0 -265
  257. data/ext/cargo-vendor/wasmtime-16.0.0/.cargo-checksum.json +0 -1
  258. data/ext/cargo-vendor/wasmtime-16.0.0/Cargo.toml +0 -211
  259. data/ext/cargo-vendor/wasmtime-16.0.0/src/component/component.rs +0 -505
  260. data/ext/cargo-vendor/wasmtime-16.0.0/src/component/instance.rs +0 -797
  261. data/ext/cargo-vendor/wasmtime-16.0.0/src/component/linker.rs +0 -523
  262. data/ext/cargo-vendor/wasmtime-16.0.0/src/component/matching.rs +0 -215
  263. data/ext/cargo-vendor/wasmtime-16.0.0/src/component/mod.rs +0 -349
  264. data/ext/cargo-vendor/wasmtime-16.0.0/src/component/resources.rs +0 -725
  265. data/ext/cargo-vendor/wasmtime-16.0.0/src/config.rs +0 -2422
  266. data/ext/cargo-vendor/wasmtime-16.0.0/src/func/typed.rs +0 -638
  267. data/ext/cargo-vendor/wasmtime-16.0.0/src/lib.rs +0 -520
  268. data/ext/cargo-vendor/wasmtime-16.0.0/src/store.rs +0 -2388
  269. data/ext/cargo-vendor/wasmtime-asm-macros-16.0.0/.cargo-checksum.json +0 -1
  270. data/ext/cargo-vendor/wasmtime-asm-macros-16.0.0/Cargo.toml +0 -22
  271. data/ext/cargo-vendor/wasmtime-cache-16.0.0/.cargo-checksum.json +0 -1
  272. data/ext/cargo-vendor/wasmtime-cache-16.0.0/Cargo.toml +0 -81
  273. data/ext/cargo-vendor/wasmtime-component-macro-16.0.0/.cargo-checksum.json +0 -1
  274. data/ext/cargo-vendor/wasmtime-component-macro-16.0.0/Cargo.toml +0 -67
  275. data/ext/cargo-vendor/wasmtime-component-macro-16.0.0/src/bindgen.rs +0 -371
  276. data/ext/cargo-vendor/wasmtime-component-macro-16.0.0/tests/codegen/multiversion/root.wit +0 -7
  277. data/ext/cargo-vendor/wasmtime-component-util-16.0.0/.cargo-checksum.json +0 -1
  278. data/ext/cargo-vendor/wasmtime-component-util-16.0.0/Cargo.toml +0 -25
  279. data/ext/cargo-vendor/wasmtime-cranelift-16.0.0/.cargo-checksum.json +0 -1
  280. data/ext/cargo-vendor/wasmtime-cranelift-16.0.0/Cargo.toml +0 -112
  281. data/ext/cargo-vendor/wasmtime-cranelift-shared-16.0.0/.cargo-checksum.json +0 -1
  282. data/ext/cargo-vendor/wasmtime-cranelift-shared-16.0.0/Cargo.toml +0 -71
  283. data/ext/cargo-vendor/wasmtime-environ-16.0.0/.cargo-checksum.json +0 -1
  284. data/ext/cargo-vendor/wasmtime-environ-16.0.0/Cargo.lock +0 -660
  285. data/ext/cargo-vendor/wasmtime-environ-16.0.0/Cargo.toml +0 -125
  286. data/ext/cargo-vendor/wasmtime-environ-16.0.0/examples/factc.rs +0 -205
  287. data/ext/cargo-vendor/wasmtime-fiber-16.0.0/.cargo-checksum.json +0 -1
  288. data/ext/cargo-vendor/wasmtime-fiber-16.0.0/Cargo.toml +0 -63
  289. data/ext/cargo-vendor/wasmtime-jit-16.0.0/.cargo-checksum.json +0 -1
  290. data/ext/cargo-vendor/wasmtime-jit-16.0.0/Cargo.toml +0 -125
  291. data/ext/cargo-vendor/wasmtime-jit-debug-16.0.0/.cargo-checksum.json +0 -1
  292. data/ext/cargo-vendor/wasmtime-jit-debug-16.0.0/Cargo.toml +0 -67
  293. data/ext/cargo-vendor/wasmtime-jit-icache-coherence-16.0.0/.cargo-checksum.json +0 -1
  294. data/ext/cargo-vendor/wasmtime-jit-icache-coherence-16.0.0/Cargo.toml +0 -46
  295. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/.cargo-checksum.json +0 -1
  296. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/Cargo.toml +0 -139
  297. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/instance/allocator/pooling/memory_pool.rs +0 -1005
  298. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/instance/allocator/pooling.rs +0 -698
  299. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/memory.rs +0 -968
  300. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/parking_spot.rs +0 -520
  301. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/sys/windows/mmap.rs +0 -211
  302. data/ext/cargo-vendor/wasmtime-types-16.0.0/.cargo-checksum.json +0 -1
  303. data/ext/cargo-vendor/wasmtime-types-16.0.0/Cargo.toml +0 -36
  304. data/ext/cargo-vendor/wasmtime-versioned-export-macros-16.0.0/.cargo-checksum.json +0 -1
  305. data/ext/cargo-vendor/wasmtime-versioned-export-macros-16.0.0/Cargo.toml +0 -32
  306. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/.cargo-checksum.json +0 -1
  307. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/Cargo.toml +0 -261
  308. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/ctx.rs +0 -325
  309. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/filesystem.rs +0 -326
  310. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/host/clocks.rs +0 -103
  311. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/host/filesystem.rs +0 -1069
  312. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/host/instance_network.rs +0 -15
  313. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/host/network.rs +0 -570
  314. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/host/tcp.rs +0 -632
  315. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/host/udp.rs +0 -550
  316. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/mod.rs +0 -328
  317. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/network.rs +0 -57
  318. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/poll.rs +0 -175
  319. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/preview1.rs +0 -2348
  320. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/stream.rs +0 -182
  321. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/table.rs +0 -337
  322. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/tcp.rs +0 -338
  323. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/udp.rs +0 -118
  324. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/tests/all/api.rs +0 -218
  325. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/tests/all/async_.rs +0 -360
  326. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/tests/all/main.rs +0 -113
  327. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/tests/all/preview1.rs +0 -239
  328. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/tests/all/sync.rs +0 -299
  329. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/command-extended.wit +0 -6
  330. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/cli/command.wit +0 -7
  331. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/cli/imports.wit +0 -20
  332. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/cli/stdio.wit +0 -17
  333. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/cli/terminal.wit +0 -47
  334. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/clocks/monotonic-clock.wit +0 -45
  335. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/clocks/wall-clock.wit +0 -42
  336. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/clocks/world.wit +0 -6
  337. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/filesystem/preopens.wit +0 -8
  338. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/filesystem/types.wit +0 -634
  339. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/filesystem/world.wit +0 -6
  340. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/http/proxy.wit +0 -32
  341. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/http/types.wit +0 -570
  342. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/io/error.wit +0 -34
  343. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/io/poll.wit +0 -41
  344. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/io/streams.wit +0 -251
  345. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/io/world.wit +0 -6
  346. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/random/insecure-seed.wit +0 -25
  347. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/random/insecure.wit +0 -22
  348. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/random/random.wit +0 -26
  349. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/random/world.wit +0 -7
  350. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/sockets/ip-name-lookup.wit +0 -51
  351. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/sockets/network.wit +0 -147
  352. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/sockets/tcp-create-socket.wit +0 -26
  353. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/sockets/tcp.wit +0 -321
  354. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/sockets/udp-create-socket.wit +0 -26
  355. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/sockets/udp.wit +0 -277
  356. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/sockets/world.wit +0 -11
  357. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/test.wit +0 -22
  358. data/ext/cargo-vendor/wasmtime-winch-16.0.0/.cargo-checksum.json +0 -1
  359. data/ext/cargo-vendor/wasmtime-winch-16.0.0/Cargo.toml +0 -77
  360. data/ext/cargo-vendor/wasmtime-wit-bindgen-16.0.0/.cargo-checksum.json +0 -1
  361. data/ext/cargo-vendor/wasmtime-wit-bindgen-16.0.0/Cargo.toml +0 -41
  362. data/ext/cargo-vendor/wasmtime-wit-bindgen-16.0.0/src/lib.rs +0 -2095
  363. data/ext/cargo-vendor/wasmtime-wmemcheck-16.0.0/.cargo-checksum.json +0 -1
  364. data/ext/cargo-vendor/wasmtime-wmemcheck-16.0.0/Cargo.toml +0 -29
  365. data/ext/cargo-vendor/wiggle-16.0.0/.cargo-checksum.json +0 -1
  366. data/ext/cargo-vendor/wiggle-16.0.0/Cargo.toml +0 -115
  367. data/ext/cargo-vendor/wiggle-generate-16.0.0/.cargo-checksum.json +0 -1
  368. data/ext/cargo-vendor/wiggle-generate-16.0.0/Cargo.toml +0 -65
  369. data/ext/cargo-vendor/wiggle-macro-16.0.0/.cargo-checksum.json +0 -1
  370. data/ext/cargo-vendor/wiggle-macro-16.0.0/Cargo.toml +0 -55
  371. data/ext/cargo-vendor/winch-codegen-0.14.0/.cargo-checksum.json +0 -1
  372. data/ext/cargo-vendor/winch-codegen-0.14.0/Cargo.toml +0 -76
  373. data/ext/cargo-vendor/winch-codegen-0.14.0/src/codegen/context.rs +0 -545
  374. data/ext/cargo-vendor/winch-codegen-0.14.0/src/codegen/env.rs +0 -251
  375. data/ext/cargo-vendor/winch-codegen-0.14.0/src/isa/aarch64/masm.rs +0 -444
  376. data/ext/cargo-vendor/winch-codegen-0.14.0/src/isa/x64/asm.rs +0 -1117
  377. data/ext/cargo-vendor/winch-codegen-0.14.0/src/isa/x64/masm.rs +0 -994
  378. data/ext/cargo-vendor/winch-codegen-0.14.0/src/masm.rs +0 -679
  379. data/ext/cargo-vendor/winch-codegen-0.14.0/src/stack.rs +0 -436
  380. data/ext/cargo-vendor/winch-codegen-0.14.0/src/visitor.rs +0 -1383
  381. /data/ext/cargo-vendor/{cranelift-bforest-0.103.0 → cranelift-bforest-0.104.0}/LICENSE +0 -0
  382. /data/ext/cargo-vendor/{cranelift-bforest-0.103.0 → cranelift-bforest-0.104.0}/README.md +0 -0
  383. /data/ext/cargo-vendor/{cranelift-bforest-0.103.0 → cranelift-bforest-0.104.0}/src/lib.rs +0 -0
  384. /data/ext/cargo-vendor/{cranelift-bforest-0.103.0 → cranelift-bforest-0.104.0}/src/map.rs +0 -0
  385. /data/ext/cargo-vendor/{cranelift-bforest-0.103.0 → cranelift-bforest-0.104.0}/src/node.rs +0 -0
  386. /data/ext/cargo-vendor/{cranelift-bforest-0.103.0 → cranelift-bforest-0.104.0}/src/path.rs +0 -0
  387. /data/ext/cargo-vendor/{cranelift-bforest-0.103.0 → cranelift-bforest-0.104.0}/src/pool.rs +0 -0
  388. /data/ext/cargo-vendor/{cranelift-bforest-0.103.0 → cranelift-bforest-0.104.0}/src/set.rs +0 -0
  389. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/LICENSE +0 -0
  390. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/README.md +0 -0
  391. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/benches/x64-evex-encoding.rs +0 -0
  392. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/alias_analysis.rs +0 -0
  393. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/binemit/mod.rs +0 -0
  394. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/binemit/stack_map.rs +0 -0
  395. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/bitset.rs +0 -0
  396. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/cfg_printer.rs +0 -0
  397. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/constant_hash.rs +0 -0
  398. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/context.rs +0 -0
  399. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ctxhash.rs +0 -0
  400. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/cursor.rs +0 -0
  401. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/data_value.rs +0 -0
  402. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/dbg.rs +0 -0
  403. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/dce.rs +0 -0
  404. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/dominator_tree.rs +0 -0
  405. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/egraph/cost.rs +0 -0
  406. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/egraph/domtree.rs +0 -0
  407. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/egraph/elaborate.rs +0 -0
  408. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/egraph.rs +0 -0
  409. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/flowgraph.rs +0 -0
  410. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/fx.rs +0 -0
  411. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/incremental_cache.rs +0 -0
  412. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/inst_predicates.rs +0 -0
  413. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/atomic_rmw_op.rs +0 -0
  414. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/builder.rs +0 -0
  415. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/condcodes.rs +0 -0
  416. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/constant.rs +0 -0
  417. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/dfg.rs +0 -0
  418. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/dynamic_type.rs +0 -0
  419. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/entities.rs +0 -0
  420. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/extfunc.rs +0 -0
  421. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/extname.rs +0 -0
  422. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/function.rs +0 -0
  423. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/globalvalue.rs +0 -0
  424. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/immediates.rs +0 -0
  425. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/instructions.rs +0 -0
  426. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/jumptable.rs +0 -0
  427. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/known_symbol.rs +0 -0
  428. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/layout.rs +0 -0
  429. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/libcall.rs +0 -0
  430. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/memflags.rs +0 -0
  431. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/memtype.rs +0 -0
  432. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/mod.rs +0 -0
  433. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/pcc.rs +0 -0
  434. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/progpoint.rs +0 -0
  435. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/sourceloc.rs +0 -0
  436. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/stackslot.rs +0 -0
  437. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/table.rs +0 -0
  438. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/trapcode.rs +0 -0
  439. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/ir/types.rs +0 -0
  440. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/abi.rs +0 -0
  441. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/inst/args.rs +0 -0
  442. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/inst/emit.rs +0 -0
  443. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/inst/emit_tests.rs +0 -0
  444. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/inst/imms.rs +0 -0
  445. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/inst/mod.rs +0 -0
  446. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/inst/regs.rs +0 -0
  447. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/inst/unwind/systemv.rs +0 -0
  448. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/inst/unwind.rs +0 -0
  449. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/inst_neon.isle +0 -0
  450. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/lower/isle/generated_code.rs +0 -0
  451. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/lower.isle +0 -0
  452. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/lower.rs +0 -0
  453. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/lower_dynamic_neon.isle +0 -0
  454. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/mod.rs +0 -0
  455. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/pcc.rs +0 -0
  456. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/aarch64/settings.rs +0 -0
  457. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/call_conv.rs +0 -0
  458. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/mod.rs +0 -0
  459. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/abi.rs +0 -0
  460. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/inst/args.rs +0 -0
  461. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/inst/emit.rs +0 -0
  462. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/inst/emit_tests.rs +0 -0
  463. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/inst/encode.rs +0 -0
  464. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/inst/imms.rs +0 -0
  465. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/inst/mod.rs +0 -0
  466. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/inst/regs.rs +0 -0
  467. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/inst/unwind/systemv.rs +0 -0
  468. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/inst/unwind.rs +0 -0
  469. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/inst/vector.rs +0 -0
  470. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/inst.isle +0 -0
  471. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/inst_vector.isle +0 -0
  472. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/lower/isle/generated_code.rs +0 -0
  473. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/lower/isle.rs +0 -0
  474. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/lower.isle +0 -0
  475. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/lower.rs +0 -0
  476. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/mod.rs +0 -0
  477. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/riscv64/settings.rs +0 -0
  478. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/s390x/abi.rs +0 -0
  479. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/s390x/inst/args.rs +0 -0
  480. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/s390x/inst/emit.rs +0 -0
  481. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/s390x/inst/emit_tests.rs +0 -0
  482. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/s390x/inst/imms.rs +0 -0
  483. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/s390x/inst/mod.rs +0 -0
  484. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/s390x/inst/regs.rs +0 -0
  485. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/s390x/inst/unwind/systemv.rs +0 -0
  486. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/s390x/inst/unwind.rs +0 -0
  487. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/s390x/inst.isle +0 -0
  488. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/s390x/lower/isle/generated_code.rs +0 -0
  489. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/s390x/lower/isle.rs +0 -0
  490. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/s390x/lower.isle +0 -0
  491. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/s390x/lower.rs +0 -0
  492. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/s390x/mod.rs +0 -0
  493. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/s390x/settings.rs +0 -0
  494. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/unwind/systemv.rs +0 -0
  495. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/unwind/winx64.rs +0 -0
  496. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/unwind.rs +0 -0
  497. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/encoding/evex.rs +0 -0
  498. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/encoding/mod.rs +0 -0
  499. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/encoding/rex.rs +0 -0
  500. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/encoding/vex.rs +0 -0
  501. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/inst/args.rs +0 -0
  502. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/inst/emit.rs +0 -0
  503. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/inst/emit_state.rs +0 -0
  504. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/inst/emit_tests.rs +0 -0
  505. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/inst/mod.rs +0 -0
  506. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/inst/regs.rs +0 -0
  507. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/inst/unwind/systemv.rs +0 -0
  508. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/inst/unwind/winx64.rs +0 -0
  509. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/inst/unwind.rs +0 -0
  510. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/inst.isle +0 -0
  511. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/lower/isle/generated_code.rs +0 -0
  512. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/lower/isle.rs +0 -0
  513. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/lower.isle +0 -0
  514. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/lower.rs +0 -0
  515. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/mod.rs +0 -0
  516. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/pcc.rs +0 -0
  517. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/isa/x64/settings.rs +0 -0
  518. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/iterators.rs +0 -0
  519. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/legalizer/globalvalue.rs +0 -0
  520. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/legalizer/mod.rs +0 -0
  521. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/legalizer/table.rs +0 -0
  522. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/lib.rs +0 -0
  523. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/loop_analysis.rs +0 -0
  524. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/machinst/abi.rs +0 -0
  525. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/machinst/blockorder.rs +0 -0
  526. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/machinst/buffer.rs +0 -0
  527. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/machinst/compile.rs +0 -0
  528. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/machinst/helpers.rs +0 -0
  529. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/machinst/inst_common.rs +0 -0
  530. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/machinst/lower.rs +0 -0
  531. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/machinst/reg.rs +0 -0
  532. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/machinst/valueregs.rs +0 -0
  533. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/machinst/vcode.rs +0 -0
  534. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/nan_canonicalization.rs +0 -0
  535. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/opts/README.md +0 -0
  536. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/opts/generated_code.rs +0 -0
  537. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/opts/remat.isle +0 -0
  538. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/opts/vector.isle +0 -0
  539. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/print_errors.rs +0 -0
  540. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/remove_constant_phis.rs +0 -0
  541. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/result.rs +0 -0
  542. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/scoped_hash_map.rs +0 -0
  543. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/settings.rs +0 -0
  544. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/souper_harvest.rs +0 -0
  545. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/timing.rs +0 -0
  546. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/unionfind.rs +0 -0
  547. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/unreachable_code.rs +0 -0
  548. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/value_label.rs +0 -0
  549. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/verifier/mod.rs +0 -0
  550. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.0}/src/write.rs +0 -0
  551. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/LICENSE +0 -0
  552. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/README.md +0 -0
  553. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/cdsl/formats.rs +0 -0
  554. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/cdsl/instructions.rs +0 -0
  555. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/cdsl/isa.rs +0 -0
  556. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/cdsl/mod.rs +0 -0
  557. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/cdsl/operands.rs +0 -0
  558. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/cdsl/settings.rs +0 -0
  559. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/cdsl/types.rs +0 -0
  560. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/cdsl/typevar.rs +0 -0
  561. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/constant_hash.rs +0 -0
  562. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/error.rs +0 -0
  563. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/gen_inst.rs +0 -0
  564. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/gen_settings.rs +0 -0
  565. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/gen_types.rs +0 -0
  566. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/isa/arm64.rs +0 -0
  567. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/isa/mod.rs +0 -0
  568. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/isa/riscv64.rs +0 -0
  569. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/isa/s390x.rs +0 -0
  570. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/isa/x86.rs +0 -0
  571. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/lib.rs +0 -0
  572. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/shared/entities.rs +0 -0
  573. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/shared/formats.rs +0 -0
  574. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/shared/immediates.rs +0 -0
  575. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/shared/instructions.rs +0 -0
  576. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/shared/mod.rs +0 -0
  577. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/shared/settings.rs +0 -0
  578. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/shared/types.rs +0 -0
  579. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/srcgen.rs +0 -0
  580. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.0}/src/unique_table.rs +0 -0
  581. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.103.0 → cranelift-codegen-shared-0.104.0}/LICENSE +0 -0
  582. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.103.0 → cranelift-codegen-shared-0.104.0}/README.md +0 -0
  583. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.103.0 → cranelift-codegen-shared-0.104.0}/src/constant_hash.rs +0 -0
  584. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.103.0 → cranelift-codegen-shared-0.104.0}/src/constants.rs +0 -0
  585. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.103.0 → cranelift-codegen-shared-0.104.0}/src/lib.rs +0 -0
  586. /data/ext/cargo-vendor/{cranelift-control-0.103.0 → cranelift-control-0.104.0}/LICENSE +0 -0
  587. /data/ext/cargo-vendor/{cranelift-control-0.103.0 → cranelift-control-0.104.0}/README.md +0 -0
  588. /data/ext/cargo-vendor/{cranelift-control-0.103.0 → cranelift-control-0.104.0}/src/chaos.rs +0 -0
  589. /data/ext/cargo-vendor/{cranelift-control-0.103.0 → cranelift-control-0.104.0}/src/lib.rs +0 -0
  590. /data/ext/cargo-vendor/{cranelift-control-0.103.0 → cranelift-control-0.104.0}/src/zero_sized.rs +0 -0
  591. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.0}/LICENSE +0 -0
  592. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.0}/README.md +0 -0
  593. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.0}/src/boxed_slice.rs +0 -0
  594. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.0}/src/iter.rs +0 -0
  595. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.0}/src/keys.rs +0 -0
  596. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.0}/src/lib.rs +0 -0
  597. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.0}/src/list.rs +0 -0
  598. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.0}/src/map.rs +0 -0
  599. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.0}/src/packed_option.rs +0 -0
  600. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.0}/src/set.rs +0 -0
  601. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.0}/src/sparse.rs +0 -0
  602. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.0}/src/unsigned.rs +0 -0
  603. /data/ext/cargo-vendor/{cranelift-frontend-0.103.0 → cranelift-frontend-0.104.0}/LICENSE +0 -0
  604. /data/ext/cargo-vendor/{cranelift-frontend-0.103.0 → cranelift-frontend-0.104.0}/README.md +0 -0
  605. /data/ext/cargo-vendor/{cranelift-frontend-0.103.0 → cranelift-frontend-0.104.0}/src/frontend.rs +0 -0
  606. /data/ext/cargo-vendor/{cranelift-frontend-0.103.0 → cranelift-frontend-0.104.0}/src/lib.rs +0 -0
  607. /data/ext/cargo-vendor/{cranelift-frontend-0.103.0 → cranelift-frontend-0.104.0}/src/ssa.rs +0 -0
  608. /data/ext/cargo-vendor/{cranelift-frontend-0.103.0 → cranelift-frontend-0.104.0}/src/switch.rs +0 -0
  609. /data/ext/cargo-vendor/{cranelift-frontend-0.103.0 → cranelift-frontend-0.104.0}/src/variable.rs +0 -0
  610. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/README.md +0 -0
  611. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/build.rs +0 -0
  612. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/fail/bad_converters.isle +0 -0
  613. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/fail/bound_var_type_mismatch.isle +0 -0
  614. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/fail/converter_extractor_constructor.isle +0 -0
  615. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/fail/error1.isle +0 -0
  616. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/fail/extra_parens.isle +0 -0
  617. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/fail/impure_expression.isle +0 -0
  618. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/fail/impure_rhs.isle +0 -0
  619. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/fail/multi_internal_etor.isle +0 -0
  620. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/fail/multi_prio.isle +0 -0
  621. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/link/borrows.isle +0 -0
  622. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/link/borrows_main.rs +0 -0
  623. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/link/iflets.isle +0 -0
  624. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/link/iflets_main.rs +0 -0
  625. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/link/multi_constructor.isle +0 -0
  626. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/link/multi_constructor_main.rs +0 -0
  627. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/link/multi_extractor.isle +0 -0
  628. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/link/multi_extractor_main.rs +0 -0
  629. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/link/test.isle +0 -0
  630. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/link/test_main.rs +0 -0
  631. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/pass/bound_var.isle +0 -0
  632. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/pass/construct_and_extract.isle +0 -0
  633. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/pass/conversions.isle +0 -0
  634. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/pass/conversions_extern.isle +0 -0
  635. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/pass/let.isle +0 -0
  636. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/pass/nodebug.isle +0 -0
  637. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/pass/prio_trie_bug.isle +0 -0
  638. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/pass/test2.isle +0 -0
  639. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/pass/test3.isle +0 -0
  640. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/pass/test4.isle +0 -0
  641. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/pass/tutorial.isle +0 -0
  642. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/run/iconst.isle +0 -0
  643. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/run/iconst_main.rs +0 -0
  644. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/run/let_shadowing.isle +0 -0
  645. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/isle_examples/run/let_shadowing_main.rs +0 -0
  646. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/src/ast.rs +0 -0
  647. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/src/codegen.rs +0 -0
  648. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/src/compile.rs +0 -0
  649. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/src/error.rs +0 -0
  650. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/src/lexer.rs +0 -0
  651. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/src/lib.rs +0 -0
  652. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/src/log.rs +0 -0
  653. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/src/overlap.rs +0 -0
  654. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/src/parser.rs +0 -0
  655. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/src/sema.rs +0 -0
  656. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/src/serialize.rs +0 -0
  657. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/src/trie_again.rs +0 -0
  658. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.0}/tests/run_tests.rs +0 -0
  659. /data/ext/cargo-vendor/{cranelift-native-0.103.0 → cranelift-native-0.104.0}/LICENSE +0 -0
  660. /data/ext/cargo-vendor/{cranelift-native-0.103.0 → cranelift-native-0.104.0}/README.md +0 -0
  661. /data/ext/cargo-vendor/{cranelift-native-0.103.0 → cranelift-native-0.104.0}/src/lib.rs +0 -0
  662. /data/ext/cargo-vendor/{cranelift-native-0.103.0 → cranelift-native-0.104.0}/src/riscv.rs +0 -0
  663. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/LICENSE +0 -0
  664. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/README.md +0 -0
  665. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/src/code_translator/bounds_checks.rs +0 -0
  666. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/src/environ/dummy.rs +0 -0
  667. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/src/environ/mod.rs +0 -0
  668. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/src/environ/spec.rs +0 -0
  669. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/src/func_translator.rs +0 -0
  670. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/src/heap.rs +0 -0
  671. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/src/lib.rs +0 -0
  672. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/src/module_translator.rs +0 -0
  673. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/src/sections_translator.rs +0 -0
  674. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/src/state.rs +0 -0
  675. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/src/translation_utils.rs +0 -0
  676. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/tests/wasm_testsuite.rs +0 -0
  677. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/arith.wat +0 -0
  678. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/br_table.wat +0 -0
  679. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/call-simd.wat +0 -0
  680. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/call.wat +0 -0
  681. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/embenchen_fannkuch.wat +0 -0
  682. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/embenchen_fasta.wat +0 -0
  683. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/embenchen_ifs.wat +0 -0
  684. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/embenchen_primes.wat +0 -0
  685. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/fac-multi-value.wat +0 -0
  686. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/fibonacci.wat +0 -0
  687. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/globals.wat +0 -0
  688. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/icall-simd.wat +0 -0
  689. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/icall.wat +0 -0
  690. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/if-reachability-translation-0.wat +0 -0
  691. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/if-reachability-translation-1.wat +0 -0
  692. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/if-reachability-translation-2.wat +0 -0
  693. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/if-reachability-translation-3.wat +0 -0
  694. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/if-reachability-translation-4.wat +0 -0
  695. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/if-reachability-translation-5.wat +0 -0
  696. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/if-reachability-translation-6.wat +0 -0
  697. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/if-unreachable-else-params-2.wat +0 -0
  698. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/if-unreachable-else-params.wat +0 -0
  699. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/issue-1306-name-section-with-u32-max-function-index.wasm +0 -0
  700. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/memory.wat +0 -0
  701. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-0.wat +0 -0
  702. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-1.wat +0 -0
  703. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-10.wat +0 -0
  704. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-11.wat +0 -0
  705. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-12.wat +0 -0
  706. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-13.wat +0 -0
  707. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-14.wat +0 -0
  708. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-15.wat +0 -0
  709. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-16.wat +0 -0
  710. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-17.wat +0 -0
  711. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-2.wat +0 -0
  712. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-3.wat +0 -0
  713. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-4.wat +0 -0
  714. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-5.wat +0 -0
  715. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-6.wat +0 -0
  716. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-7.wat +0 -0
  717. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-8.wat +0 -0
  718. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/multi-9.wat +0 -0
  719. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/nullref.wat +0 -0
  720. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/passive-data.wat +0 -0
  721. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/pr2303.wat +0 -0
  722. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/pr2559.wat +0 -0
  723. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/ref-func-0.wat +0 -0
  724. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/rust_fannkuch.wat +0 -0
  725. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/select.wat +0 -0
  726. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/simd-store.wat +0 -0
  727. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/simd.wat +0 -0
  728. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/table-copy.wat +0 -0
  729. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.0}/wasmtests/unreachable_code.wat +0 -0
  730. /data/ext/cargo-vendor/{wasi-cap-std-sync-16.0.0 → wasi-cap-std-sync-17.0.0}/LICENSE +0 -0
  731. /data/ext/cargo-vendor/{wasi-cap-std-sync-16.0.0 → wasi-cap-std-sync-17.0.0}/README.md +0 -0
  732. /data/ext/cargo-vendor/{wasi-cap-std-sync-16.0.0 → wasi-cap-std-sync-17.0.0}/src/clocks.rs +0 -0
  733. /data/ext/cargo-vendor/{wasi-cap-std-sync-16.0.0 → wasi-cap-std-sync-17.0.0}/src/dir.rs +0 -0
  734. /data/ext/cargo-vendor/{wasi-cap-std-sync-16.0.0 → wasi-cap-std-sync-17.0.0}/src/file.rs +0 -0
  735. /data/ext/cargo-vendor/{wasi-cap-std-sync-16.0.0 → wasi-cap-std-sync-17.0.0}/src/lib.rs +0 -0
  736. /data/ext/cargo-vendor/{wasi-cap-std-sync-16.0.0 → wasi-cap-std-sync-17.0.0}/src/net.rs +0 -0
  737. /data/ext/cargo-vendor/{wasi-cap-std-sync-16.0.0 → wasi-cap-std-sync-17.0.0}/src/sched/unix.rs +0 -0
  738. /data/ext/cargo-vendor/{wasi-cap-std-sync-16.0.0 → wasi-cap-std-sync-17.0.0}/src/sched/windows.rs +0 -0
  739. /data/ext/cargo-vendor/{wasi-cap-std-sync-16.0.0 → wasi-cap-std-sync-17.0.0}/src/sched.rs +0 -0
  740. /data/ext/cargo-vendor/{wasi-cap-std-sync-16.0.0 → wasi-cap-std-sync-17.0.0}/src/stdio.rs +0 -0
  741. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/LICENSE +0 -0
  742. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/README.md +0 -0
  743. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/README.md +0 -0
  744. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/docs/README.md +0 -0
  745. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/README.md +0 -0
  746. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/ephemeral/docs.md +0 -0
  747. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/ephemeral/witx/typenames.witx +0 -0
  748. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_args.witx +0 -0
  749. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_clock.witx +0 -0
  750. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_environ.witx +0 -0
  751. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_fd.witx +0 -0
  752. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_path.witx +0 -0
  753. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_poll.witx +0 -0
  754. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_proc.witx +0 -0
  755. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_random.witx +0 -0
  756. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_sched.witx +0 -0
  757. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_sock.witx +0 -0
  758. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/old/snapshot_0/docs.md +0 -0
  759. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/old/snapshot_0/witx/typenames.witx +0 -0
  760. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/old/snapshot_0/witx/wasi_unstable.witx +0 -0
  761. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/snapshot/docs.html +0 -0
  762. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/snapshot/docs.md +0 -0
  763. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/snapshot/witx/typenames.witx +0 -0
  764. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/phases/snapshot/witx/wasi_snapshot_preview1.witx +0 -0
  765. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/proposal-template/README.md +0 -0
  766. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/proposals/README.md +0 -0
  767. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/snapshots/README.md +0 -0
  768. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/WASI/standard/README.md +0 -0
  769. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/build.rs +0 -0
  770. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/src/clocks.rs +0 -0
  771. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/src/ctx.rs +0 -0
  772. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/src/dir.rs +0 -0
  773. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/src/file.rs +0 -0
  774. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/src/lib.rs +0 -0
  775. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/src/pipe.rs +0 -0
  776. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/src/random.rs +0 -0
  777. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/src/sched/subscription.rs +0 -0
  778. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/src/sched.rs +0 -0
  779. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/src/snapshots/mod.rs +0 -0
  780. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/src/snapshots/preview_0.rs +0 -0
  781. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/src/snapshots/preview_1.rs +0 -0
  782. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/src/string_array.rs +0 -0
  783. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.0}/src/table.rs +0 -0
  784. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/LICENSE +0 -0
  785. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/README.md +0 -0
  786. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/code.rs +0 -0
  787. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/compiler.rs +0 -0
  788. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/component/func/host.rs +0 -0
  789. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/component/func/options.rs +0 -0
  790. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/component/func/typed.rs +0 -0
  791. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/component/func.rs +0 -0
  792. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/component/storage.rs +0 -0
  793. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/component/store.rs +0 -0
  794. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/component/types.rs +0 -0
  795. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/component/values.rs +0 -0
  796. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/coredump.rs +0 -0
  797. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/engine/serialization.rs +0 -0
  798. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/engine.rs +0 -0
  799. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/externals/global.rs +0 -0
  800. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/externals/table.rs +0 -0
  801. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/externals.rs +0 -0
  802. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/func.rs +0 -0
  803. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/instance.rs +0 -0
  804. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/limits.rs +0 -0
  805. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/linker.rs +0 -0
  806. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/memory.rs +0 -0
  807. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/module/registry.rs +0 -0
  808. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/module.rs +0 -0
  809. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/profiling.rs +0 -0
  810. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/ref.rs +0 -0
  811. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/resources.rs +0 -0
  812. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/signatures.rs +0 -0
  813. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/stack.rs +0 -0
  814. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/store/context.rs +0 -0
  815. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/store/data.rs +0 -0
  816. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/store/func_refs.rs +0 -0
  817. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/trampoline/func.rs +0 -0
  818. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/trampoline/global.rs +0 -0
  819. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/trampoline/memory.rs +0 -0
  820. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/trampoline/table.rs +0 -0
  821. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/trampoline.rs +0 -0
  822. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/trap.rs +0 -0
  823. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/types/matching.rs +0 -0
  824. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/types.rs +0 -0
  825. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/unix.rs +0 -0
  826. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/v128.rs +0 -0
  827. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/values.rs +0 -0
  828. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.0}/src/windows.rs +0 -0
  829. /data/ext/cargo-vendor/{wasmtime-asm-macros-16.0.0 → wasmtime-asm-macros-17.0.0}/src/lib.rs +0 -0
  830. /data/ext/cargo-vendor/{wasmtime-cache-16.0.0 → wasmtime-cache-17.0.0}/LICENSE +0 -0
  831. /data/ext/cargo-vendor/{wasmtime-cache-16.0.0 → wasmtime-cache-17.0.0}/build.rs +0 -0
  832. /data/ext/cargo-vendor/{wasmtime-cache-16.0.0 → wasmtime-cache-17.0.0}/src/config/tests.rs +0 -0
  833. /data/ext/cargo-vendor/{wasmtime-cache-16.0.0 → wasmtime-cache-17.0.0}/src/config.rs +0 -0
  834. /data/ext/cargo-vendor/{wasmtime-cache-16.0.0 → wasmtime-cache-17.0.0}/src/lib.rs +0 -0
  835. /data/ext/cargo-vendor/{wasmtime-cache-16.0.0 → wasmtime-cache-17.0.0}/src/tests.rs +0 -0
  836. /data/ext/cargo-vendor/{wasmtime-cache-16.0.0 → wasmtime-cache-17.0.0}/src/worker/tests/system_time_stub.rs +0 -0
  837. /data/ext/cargo-vendor/{wasmtime-cache-16.0.0 → wasmtime-cache-17.0.0}/src/worker/tests.rs +0 -0
  838. /data/ext/cargo-vendor/{wasmtime-cache-16.0.0 → wasmtime-cache-17.0.0}/src/worker.rs +0 -0
  839. /data/ext/cargo-vendor/{wasmtime-cache-16.0.0 → wasmtime-cache-17.0.0}/tests/cache_write_default_config.rs +0 -0
  840. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/src/component.rs +0 -0
  841. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/src/lib.rs +0 -0
  842. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/char.wit +0 -0
  843. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/conventions.wit +0 -0
  844. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/direct-import.wit +0 -0
  845. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/empty.wit +0 -0
  846. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/flags.wit +0 -0
  847. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/floats.wit +0 -0
  848. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/function-new.wit +0 -0
  849. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/integers.wit +0 -0
  850. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/lists.wit +0 -0
  851. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/many-arguments.wit +0 -0
  852. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/multi-return.wit +0 -0
  853. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/multiversion/deps/v1/root.wit +0 -0
  854. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/multiversion/deps/v2/root.wit +0 -0
  855. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/records.wit +0 -0
  856. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/rename.wit +0 -0
  857. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/resources-export.wit +0 -0
  858. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/resources-import.wit +0 -0
  859. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/share-types.wit +0 -0
  860. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/simple-functions.wit +0 -0
  861. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/simple-lists.wit +0 -0
  862. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/simple-wasi.wit +0 -0
  863. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/small-anonymous.wit +0 -0
  864. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/smoke-default.wit +0 -0
  865. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/smoke-export.wit +0 -0
  866. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/smoke.wit +0 -0
  867. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/strings.wit +0 -0
  868. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/use-paths.wit +0 -0
  869. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/variants.wit +0 -0
  870. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen/worlds-with-types.wit +0 -0
  871. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.0}/tests/codegen.rs +0 -0
  872. /data/ext/cargo-vendor/{wasmtime-component-util-16.0.0 → wasmtime-component-util-17.0.0}/src/lib.rs +0 -0
  873. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/LICENSE +0 -0
  874. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/SECURITY.md +0 -0
  875. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/builder.rs +0 -0
  876. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/compiler/component.rs +0 -0
  877. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/compiler.rs +0 -0
  878. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/debug/gc.rs +0 -0
  879. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/debug/transform/address_transform.rs +0 -0
  880. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/debug/transform/attr.rs +0 -0
  881. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/debug/transform/expression.rs +0 -0
  882. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/debug/transform/line_program.rs +0 -0
  883. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/debug/transform/mod.rs +0 -0
  884. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/debug/transform/range_info_builder.rs +0 -0
  885. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/debug/transform/refs.rs +0 -0
  886. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/debug/transform/simulate.rs +0 -0
  887. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/debug/transform/unit.rs +0 -0
  888. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/debug/transform/utils.rs +0 -0
  889. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/debug/write_debuginfo.rs +0 -0
  890. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/debug.rs +0 -0
  891. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/func_environ.rs +0 -0
  892. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.0}/src/lib.rs +0 -0
  893. /data/ext/cargo-vendor/{wasmtime-cranelift-shared-16.0.0 → wasmtime-cranelift-shared-17.0.0}/src/compiled_function.rs +0 -0
  894. /data/ext/cargo-vendor/{wasmtime-cranelift-shared-16.0.0 → wasmtime-cranelift-shared-17.0.0}/src/isa_builder.rs +0 -0
  895. /data/ext/cargo-vendor/{wasmtime-cranelift-shared-16.0.0 → wasmtime-cranelift-shared-17.0.0}/src/lib.rs +0 -0
  896. /data/ext/cargo-vendor/{wasmtime-cranelift-shared-16.0.0 → wasmtime-cranelift-shared-17.0.0}/src/obj.rs +0 -0
  897. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/LICENSE +0 -0
  898. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/address_map.rs +0 -0
  899. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/builtin.rs +0 -0
  900. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/compilation.rs +0 -0
  901. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/component/compiler.rs +0 -0
  902. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/component/dfg.rs +0 -0
  903. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/component/info.rs +0 -0
  904. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/component/translate/adapt.rs +0 -0
  905. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/component/translate/inline.rs +0 -0
  906. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/component/translate.rs +0 -0
  907. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/component/types/resources.rs +0 -0
  908. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/component/types.rs +0 -0
  909. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/component/vmcomponent_offsets.rs +0 -0
  910. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/component.rs +0 -0
  911. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/fact/core_types.rs +0 -0
  912. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/fact/signature.rs +0 -0
  913. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/fact/trampoline.rs +0 -0
  914. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/fact/transcode.rs +0 -0
  915. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/fact/traps.rs +0 -0
  916. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/fact.rs +0 -0
  917. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/lib.rs +0 -0
  918. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/module.rs +0 -0
  919. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/module_environ.rs +0 -0
  920. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/module_types.rs +0 -0
  921. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/obj.rs +0 -0
  922. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/ref_bits.rs +0 -0
  923. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/scopevec.rs +0 -0
  924. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/stack_map.rs +0 -0
  925. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/trap_encoding.rs +0 -0
  926. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/tunables.rs +0 -0
  927. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.0}/src/vmoffsets.rs +0 -0
  928. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.0}/LICENSE +0 -0
  929. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.0}/build.rs +0 -0
  930. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.0}/src/lib.rs +0 -0
  931. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.0}/src/unix/aarch64.rs +0 -0
  932. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.0}/src/unix/arm.rs +0 -0
  933. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.0}/src/unix/riscv64.rs +0 -0
  934. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.0}/src/unix/s390x.S +0 -0
  935. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.0}/src/unix/x86.rs +0 -0
  936. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.0}/src/unix/x86_64.rs +0 -0
  937. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.0}/src/unix.rs +0 -0
  938. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.0}/src/windows.c +0 -0
  939. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.0}/src/windows.rs +0 -0
  940. /data/ext/cargo-vendor/{wasmtime-jit-16.0.0 → wasmtime-jit-17.0.0}/LICENSE +0 -0
  941. /data/ext/cargo-vendor/{wasmtime-jit-16.0.0 → wasmtime-jit-17.0.0}/src/code_memory.rs +0 -0
  942. /data/ext/cargo-vendor/{wasmtime-jit-16.0.0 → wasmtime-jit-17.0.0}/src/debug.rs +0 -0
  943. /data/ext/cargo-vendor/{wasmtime-jit-16.0.0 → wasmtime-jit-17.0.0}/src/demangling.rs +0 -0
  944. /data/ext/cargo-vendor/{wasmtime-jit-16.0.0 → wasmtime-jit-17.0.0}/src/instantiate.rs +0 -0
  945. /data/ext/cargo-vendor/{wasmtime-jit-16.0.0 → wasmtime-jit-17.0.0}/src/lib.rs +0 -0
  946. /data/ext/cargo-vendor/{wasmtime-jit-16.0.0 → wasmtime-jit-17.0.0}/src/profiling/jitdump.rs +0 -0
  947. /data/ext/cargo-vendor/{wasmtime-jit-16.0.0 → wasmtime-jit-17.0.0}/src/profiling/perfmap.rs +0 -0
  948. /data/ext/cargo-vendor/{wasmtime-jit-16.0.0 → wasmtime-jit-17.0.0}/src/profiling/vtune.rs +0 -0
  949. /data/ext/cargo-vendor/{wasmtime-jit-16.0.0 → wasmtime-jit-17.0.0}/src/profiling.rs +0 -0
  950. /data/ext/cargo-vendor/{wasmtime-jit-debug-16.0.0 → wasmtime-jit-debug-17.0.0}/README.md +0 -0
  951. /data/ext/cargo-vendor/{wasmtime-jit-debug-16.0.0 → wasmtime-jit-debug-17.0.0}/src/gdb_jit_int.rs +0 -0
  952. /data/ext/cargo-vendor/{wasmtime-jit-debug-16.0.0 → wasmtime-jit-debug-17.0.0}/src/lib.rs +0 -0
  953. /data/ext/cargo-vendor/{wasmtime-jit-debug-16.0.0 → wasmtime-jit-debug-17.0.0}/src/perf_jitdump.rs +0 -0
  954. /data/ext/cargo-vendor/{wasmtime-jit-icache-coherence-16.0.0 → wasmtime-jit-icache-coherence-17.0.0}/src/lib.rs +0 -0
  955. /data/ext/cargo-vendor/{wasmtime-jit-icache-coherence-16.0.0 → wasmtime-jit-icache-coherence-17.0.0}/src/libc.rs +0 -0
  956. /data/ext/cargo-vendor/{wasmtime-jit-icache-coherence-16.0.0 → wasmtime-jit-icache-coherence-17.0.0}/src/miri.rs +0 -0
  957. /data/ext/cargo-vendor/{wasmtime-jit-icache-coherence-16.0.0 → wasmtime-jit-icache-coherence-17.0.0}/src/win.rs +0 -0
  958. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/LICENSE +0 -0
  959. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/build.rs +0 -0
  960. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/proptest-regressions/instance/allocator/pooling/memory_pool.txt +0 -0
  961. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/arch/aarch64.rs +0 -0
  962. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/arch/mod.rs +0 -0
  963. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/arch/riscv64.rs +0 -0
  964. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/arch/s390x.S +0 -0
  965. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/arch/s390x.rs +0 -0
  966. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/arch/x86_64.rs +0 -0
  967. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/component/libcalls.rs +0 -0
  968. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/component/resources.rs +0 -0
  969. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/component.rs +0 -0
  970. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/cow.rs +0 -0
  971. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/debug_builtins.rs +0 -0
  972. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/export.rs +0 -0
  973. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/externref.rs +0 -0
  974. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/helpers.c +0 -0
  975. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/imports.rs +0 -0
  976. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/instance/allocator/on_demand.rs +0 -0
  977. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/instance/allocator/pooling/index_allocator.rs +0 -0
  978. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/instance/allocator/pooling/stack_pool.rs +0 -0
  979. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/instance/allocator/pooling/table_pool.rs +0 -0
  980. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/instance/allocator.rs +0 -0
  981. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/instance.rs +0 -0
  982. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/lib.rs +0 -0
  983. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/libcalls.rs +0 -0
  984. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/mmap.rs +0 -0
  985. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/mmap_vec.rs +0 -0
  986. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/module_id.rs +0 -0
  987. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/mpk/disabled.rs +0 -0
  988. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/mpk/enabled.rs +0 -0
  989. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/mpk/mod.rs +0 -0
  990. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/mpk/pkru.rs +0 -0
  991. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/mpk/sys.rs +0 -0
  992. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/send_sync_ptr.rs +0 -0
  993. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/store_box.rs +0 -0
  994. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/miri/mmap.rs +0 -0
  995. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/miri/mod.rs +0 -0
  996. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/miri/traphandlers.rs +0 -0
  997. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/miri/unwind.rs +0 -0
  998. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/miri/vm.rs +0 -0
  999. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/mod.rs +0 -0
  1000. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/unix/machports.rs +0 -0
  1001. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/unix/macos_traphandlers.rs +0 -0
  1002. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/unix/mmap.rs +0 -0
  1003. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/unix/mod.rs +0 -0
  1004. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/unix/signals.rs +0 -0
  1005. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/unix/unwind.rs +0 -0
  1006. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/unix/vm.rs +0 -0
  1007. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/windows/mod.rs +0 -0
  1008. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/windows/traphandlers.rs +0 -0
  1009. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/windows/unwind.rs +0 -0
  1010. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/sys/windows/vm.rs +0 -0
  1011. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/table.rs +0 -0
  1012. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/traphandlers/backtrace.rs +0 -0
  1013. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/traphandlers/coredump.rs +0 -0
  1014. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/traphandlers.rs +0 -0
  1015. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/vmcontext/vm_host_func_context.rs +0 -0
  1016. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.0}/src/vmcontext.rs +0 -0
  1017. /data/ext/cargo-vendor/{wasmtime-types-16.0.0 → wasmtime-types-17.0.0}/LICENSE +0 -0
  1018. /data/ext/cargo-vendor/{wasmtime-types-16.0.0 → wasmtime-types-17.0.0}/src/error.rs +0 -0
  1019. /data/ext/cargo-vendor/{wasmtime-types-16.0.0 → wasmtime-types-17.0.0}/src/lib.rs +0 -0
  1020. /data/ext/cargo-vendor/{wasmtime-versioned-export-macros-16.0.0 → wasmtime-versioned-export-macros-17.0.0}/src/lib.rs +0 -0
  1021. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/LICENSE +0 -0
  1022. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/README.md +0 -0
  1023. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/build.rs +0 -0
  1024. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/lib.rs +0 -0
  1025. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/clocks/host.rs +0 -0
  1026. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/clocks.rs +0 -0
  1027. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/command.rs +0 -0
  1028. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/error.rs +0 -0
  1029. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/host/env.rs +0 -0
  1030. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/host/exit.rs +0 -0
  1031. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/host/filesystem/sync.rs +0 -0
  1032. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/host/io.rs +0 -0
  1033. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/host/mod.rs +0 -0
  1034. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/host/random.rs +0 -0
  1035. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/host/tcp_create_socket.rs +0 -0
  1036. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/host/udp_create_socket.rs +0 -0
  1037. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/ip_name_lookup.rs +0 -0
  1038. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/pipe.rs +0 -0
  1039. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/preview0.rs +0 -0
  1040. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/random.rs +0 -0
  1041. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/stdio/worker_thread_stdin.rs +0 -0
  1042. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/stdio.rs +0 -0
  1043. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/src/preview2/write_stream.rs +0 -0
  1044. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/tests/process_stdin.rs +0 -0
  1045. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/wit/deps/cli/environment.wit +0 -0
  1046. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/wit/deps/cli/exit.wit +0 -0
  1047. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/wit/deps/cli/run.wit +0 -0
  1048. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/wit/deps/http/handler.wit +0 -0
  1049. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/wit/deps/sockets/instance-network.wit +0 -0
  1050. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/witx/preview0/typenames.witx +0 -0
  1051. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/witx/preview0/wasi_unstable.witx +0 -0
  1052. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/witx/preview1/typenames.witx +0 -0
  1053. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.0}/witx/preview1/wasi_snapshot_preview1.witx +0 -0
  1054. /data/ext/cargo-vendor/{wasmtime-winch-16.0.0 → wasmtime-winch-17.0.0}/LICENSE +0 -0
  1055. /data/ext/cargo-vendor/{wasmtime-winch-16.0.0 → wasmtime-winch-17.0.0}/src/builder.rs +0 -0
  1056. /data/ext/cargo-vendor/{wasmtime-winch-16.0.0 → wasmtime-winch-17.0.0}/src/compiler.rs +0 -0
  1057. /data/ext/cargo-vendor/{wasmtime-winch-16.0.0 → wasmtime-winch-17.0.0}/src/lib.rs +0 -0
  1058. /data/ext/cargo-vendor/{wasmtime-wit-bindgen-16.0.0 → wasmtime-wit-bindgen-17.0.0}/src/rust.rs +0 -0
  1059. /data/ext/cargo-vendor/{wasmtime-wit-bindgen-16.0.0 → wasmtime-wit-bindgen-17.0.0}/src/source.rs +0 -0
  1060. /data/ext/cargo-vendor/{wasmtime-wit-bindgen-16.0.0 → wasmtime-wit-bindgen-17.0.0}/src/types.rs +0 -0
  1061. /data/ext/cargo-vendor/{wasmtime-wmemcheck-16.0.0 → wasmtime-wmemcheck-17.0.0}/src/lib.rs +0 -0
  1062. /data/ext/cargo-vendor/{wiggle-16.0.0 → wiggle-17.0.0}/LICENSE +0 -0
  1063. /data/ext/cargo-vendor/{wiggle-16.0.0 → wiggle-17.0.0}/README.md +0 -0
  1064. /data/ext/cargo-vendor/{wiggle-16.0.0 → wiggle-17.0.0}/src/borrow.rs +0 -0
  1065. /data/ext/cargo-vendor/{wiggle-16.0.0 → wiggle-17.0.0}/src/error.rs +0 -0
  1066. /data/ext/cargo-vendor/{wiggle-16.0.0 → wiggle-17.0.0}/src/guest_type.rs +0 -0
  1067. /data/ext/cargo-vendor/{wiggle-16.0.0 → wiggle-17.0.0}/src/lib.rs +0 -0
  1068. /data/ext/cargo-vendor/{wiggle-16.0.0 → wiggle-17.0.0}/src/region.rs +0 -0
  1069. /data/ext/cargo-vendor/{wiggle-16.0.0 → wiggle-17.0.0}/src/wasmtime.rs +0 -0
  1070. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.0}/LICENSE +0 -0
  1071. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.0}/README.md +0 -0
  1072. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.0}/src/codegen_settings.rs +0 -0
  1073. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.0}/src/config.rs +0 -0
  1074. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.0}/src/funcs.rs +0 -0
  1075. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.0}/src/lib.rs +0 -0
  1076. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.0}/src/lifetimes.rs +0 -0
  1077. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.0}/src/module_trait.rs +0 -0
  1078. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.0}/src/names.rs +0 -0
  1079. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.0}/src/types/error.rs +0 -0
  1080. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.0}/src/types/flags.rs +0 -0
  1081. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.0}/src/types/handle.rs +0 -0
  1082. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.0}/src/types/mod.rs +0 -0
  1083. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.0}/src/types/record.rs +0 -0
  1084. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.0}/src/types/variant.rs +0 -0
  1085. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.0}/src/wasmtime.rs +0 -0
  1086. /data/ext/cargo-vendor/{wiggle-macro-16.0.0 → wiggle-macro-17.0.0}/LICENSE +0 -0
  1087. /data/ext/cargo-vendor/{wiggle-macro-16.0.0 → wiggle-macro-17.0.0}/src/lib.rs +0 -0
  1088. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/LICENSE +0 -0
  1089. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/build.rs +0 -0
  1090. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/abi/local.rs +0 -0
  1091. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/abi/mod.rs +0 -0
  1092. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/codegen/builtin.rs +0 -0
  1093. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/codegen/call.rs +0 -0
  1094. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/codegen/control.rs +0 -0
  1095. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/codegen/mod.rs +0 -0
  1096. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/frame/mod.rs +0 -0
  1097. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/isa/aarch64/abi.rs +0 -0
  1098. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/isa/aarch64/address.rs +0 -0
  1099. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/isa/aarch64/asm.rs +0 -0
  1100. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/isa/aarch64/mod.rs +0 -0
  1101. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/isa/aarch64/regs.rs +0 -0
  1102. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/isa/mod.rs +0 -0
  1103. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/isa/reg.rs +0 -0
  1104. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/isa/x64/abi.rs +0 -0
  1105. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/isa/x64/address.rs +0 -0
  1106. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/isa/x64/mod.rs +0 -0
  1107. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/isa/x64/regs.rs +0 -0
  1108. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/lib.rs +0 -0
  1109. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/regalloc.rs +0 -0
  1110. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/regset.rs +0 -0
  1111. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.0}/src/trampoline.rs +0 -0
@@ -0,0 +1,2362 @@
1
+ use crate::preview2::bindings::{
2
+ self,
3
+ cli::{
4
+ stderr, stdin, stdout, terminal_input, terminal_output, terminal_stderr, terminal_stdin,
5
+ terminal_stdout,
6
+ },
7
+ clocks::{monotonic_clock, wall_clock},
8
+ filesystem::{preopens, types as filesystem},
9
+ io::{poll, streams},
10
+ };
11
+ use crate::preview2::{FsError, IsATTY, StreamError, StreamResult, WasiView};
12
+ use anyhow::{bail, Context};
13
+ use std::borrow::Borrow;
14
+ use std::collections::{BTreeMap, HashSet};
15
+ use std::mem::{self, size_of, size_of_val};
16
+ use std::ops::{Deref, DerefMut};
17
+ use std::slice;
18
+ use std::sync::atomic::{AtomicU64, Ordering};
19
+ use std::sync::Arc;
20
+ use wasmtime::component::Resource;
21
+ use wiggle::tracing::instrument;
22
+ use wiggle::{GuestError, GuestPtr, GuestStrCow, GuestType};
23
+
24
+ #[derive(Debug)]
25
+ struct File {
26
+ /// The handle to the preview2 descriptor that this file is referencing.
27
+ fd: Resource<filesystem::Descriptor>,
28
+
29
+ /// The current-position pointer.
30
+ position: Arc<AtomicU64>,
31
+
32
+ /// In append mode, all writes append to the file.
33
+ append: bool,
34
+
35
+ /// When blocking, read and write calls dispatch to blocking_read and
36
+ /// blocking_check_write on the underlying streams. When false, read and write
37
+ /// dispatch to stream's plain read and check_write.
38
+ blocking_mode: BlockingMode,
39
+ }
40
+
41
+ #[derive(Clone, Copy, Debug)]
42
+ enum BlockingMode {
43
+ Blocking,
44
+ NonBlocking,
45
+ }
46
+ impl BlockingMode {
47
+ fn from_fdflags(flags: &types::Fdflags) -> Self {
48
+ if flags.contains(types::Fdflags::NONBLOCK) {
49
+ BlockingMode::NonBlocking
50
+ } else {
51
+ BlockingMode::Blocking
52
+ }
53
+ }
54
+ async fn read(
55
+ &self,
56
+ host: &mut impl streams::Host,
57
+ input_stream: Resource<streams::InputStream>,
58
+ max_size: usize,
59
+ ) -> Result<Vec<u8>, types::Error> {
60
+ let max_size = max_size.try_into().unwrap_or(u64::MAX);
61
+ match self {
62
+ BlockingMode::Blocking => {
63
+ match streams::HostInputStream::blocking_read(host, input_stream, max_size).await {
64
+ Ok(r) if r.is_empty() => Err(types::Errno::Intr.into()),
65
+ Ok(r) => Ok(r),
66
+ Err(StreamError::Closed) => Ok(Vec::new()),
67
+ Err(e) => Err(e.into()),
68
+ }
69
+ }
70
+
71
+ BlockingMode::NonBlocking => {
72
+ match streams::HostInputStream::read(host, input_stream, max_size).await {
73
+ Ok(r) => Ok(r),
74
+ Err(StreamError::Closed) => Ok(Vec::new()),
75
+ Err(e) => Err(e.into()),
76
+ }
77
+ }
78
+ }
79
+ }
80
+ async fn write(
81
+ &self,
82
+ host: &mut (impl streams::Host + poll::Host),
83
+ output_stream: Resource<streams::OutputStream>,
84
+ bytes: GuestPtr<'_, [u8]>,
85
+ ) -> StreamResult<usize> {
86
+ use streams::HostOutputStream as Streams;
87
+
88
+ let bytes = bytes.as_cow().map_err(|e| StreamError::Trap(e.into()))?;
89
+ let mut bytes = &bytes[..];
90
+
91
+ match self {
92
+ BlockingMode::Blocking => {
93
+ let total = bytes.len();
94
+ while !bytes.is_empty() {
95
+ // NOTE: blocking_write_and_flush takes at most one 4k buffer.
96
+ let len = bytes.len().min(4096);
97
+ let (chunk, rest) = bytes.split_at(len);
98
+ bytes = rest;
99
+
100
+ Streams::blocking_write_and_flush(
101
+ host,
102
+ output_stream.borrowed(),
103
+ Vec::from(chunk),
104
+ )
105
+ .await?
106
+ }
107
+
108
+ Ok(total)
109
+ }
110
+ BlockingMode::NonBlocking => {
111
+ let n = match Streams::check_write(host, output_stream.borrowed()) {
112
+ Ok(n) => n,
113
+ Err(StreamError::Closed) => 0,
114
+ Err(e) => Err(e)?,
115
+ };
116
+
117
+ let len = bytes.len().min(n as usize);
118
+ if len == 0 {
119
+ return Ok(0);
120
+ }
121
+
122
+ match Streams::write(host, output_stream.borrowed(), bytes[..len].to_vec()) {
123
+ Ok(()) => {}
124
+ Err(StreamError::Closed) => return Ok(0),
125
+ Err(e) => Err(e)?,
126
+ }
127
+
128
+ match Streams::blocking_flush(host, output_stream.borrowed()).await {
129
+ Ok(()) => {}
130
+ Err(StreamError::Closed) => return Ok(0),
131
+ Err(e) => Err(e)?,
132
+ };
133
+
134
+ Ok(len)
135
+ }
136
+ }
137
+ }
138
+ }
139
+
140
+ #[derive(Debug)]
141
+ enum Descriptor {
142
+ Stdin {
143
+ stream: Resource<streams::InputStream>,
144
+ isatty: IsATTY,
145
+ },
146
+ Stdout {
147
+ stream: Resource<streams::OutputStream>,
148
+ isatty: IsATTY,
149
+ },
150
+ Stderr {
151
+ stream: Resource<streams::OutputStream>,
152
+ isatty: IsATTY,
153
+ },
154
+ PreopenDirectory((Resource<filesystem::Descriptor>, String)),
155
+ File(File),
156
+ }
157
+
158
+ #[derive(Debug, Default)]
159
+ pub struct WasiPreview1Adapter {
160
+ descriptors: Option<Descriptors>,
161
+ }
162
+
163
+ #[derive(Debug, Default)]
164
+ struct Descriptors {
165
+ used: BTreeMap<u32, Descriptor>,
166
+ free: Vec<u32>,
167
+ }
168
+
169
+ impl Deref for Descriptors {
170
+ type Target = BTreeMap<u32, Descriptor>;
171
+
172
+ fn deref(&self) -> &Self::Target {
173
+ &self.used
174
+ }
175
+ }
176
+
177
+ impl DerefMut for Descriptors {
178
+ fn deref_mut(&mut self) -> &mut Self::Target {
179
+ &mut self.used
180
+ }
181
+ }
182
+
183
+ impl Descriptors {
184
+ /// Initializes [Self] using `preopens`
185
+ fn new(
186
+ host: &mut (impl preopens::Host
187
+ + stdin::Host
188
+ + stdout::Host
189
+ + stderr::Host
190
+ + terminal_stdin::Host
191
+ + terminal_stdout::Host
192
+ + terminal_stderr::Host
193
+ + terminal_input::Host
194
+ + terminal_output::Host
195
+ + ?Sized),
196
+ ) -> Result<Self, types::Error> {
197
+ let mut descriptors = Self::default();
198
+ descriptors.push(Descriptor::Stdin {
199
+ stream: host
200
+ .get_stdin()
201
+ .context("failed to call `get-stdin`")
202
+ .map_err(types::Error::trap)?,
203
+ isatty: if let Some(term_in) = host
204
+ .get_terminal_stdin()
205
+ .context("failed to call `get-terminal-stdin`")
206
+ .map_err(types::Error::trap)?
207
+ {
208
+ terminal_input::HostTerminalInput::drop(host, term_in)
209
+ .context("failed to call `drop-terminal-input`")
210
+ .map_err(types::Error::trap)?;
211
+ IsATTY::Yes
212
+ } else {
213
+ IsATTY::No
214
+ },
215
+ })?;
216
+ descriptors.push(Descriptor::Stdout {
217
+ stream: host
218
+ .get_stdout()
219
+ .context("failed to call `get-stdout`")
220
+ .map_err(types::Error::trap)?,
221
+ isatty: if let Some(term_out) = host
222
+ .get_terminal_stdout()
223
+ .context("failed to call `get-terminal-stdout`")
224
+ .map_err(types::Error::trap)?
225
+ {
226
+ terminal_output::HostTerminalOutput::drop(host, term_out)
227
+ .context("failed to call `drop-terminal-output`")
228
+ .map_err(types::Error::trap)?;
229
+ IsATTY::Yes
230
+ } else {
231
+ IsATTY::No
232
+ },
233
+ })?;
234
+ descriptors.push(Descriptor::Stderr {
235
+ stream: host
236
+ .get_stderr()
237
+ .context("failed to call `get-stderr`")
238
+ .map_err(types::Error::trap)?,
239
+ isatty: if let Some(term_out) = host
240
+ .get_terminal_stderr()
241
+ .context("failed to call `get-terminal-stderr`")
242
+ .map_err(types::Error::trap)?
243
+ {
244
+ terminal_output::HostTerminalOutput::drop(host, term_out)
245
+ .context("failed to call `drop-terminal-output`")
246
+ .map_err(types::Error::trap)?;
247
+ IsATTY::Yes
248
+ } else {
249
+ IsATTY::No
250
+ },
251
+ })?;
252
+
253
+ for dir in host
254
+ .get_directories()
255
+ .context("failed to call `get-directories`")
256
+ .map_err(types::Error::trap)?
257
+ {
258
+ descriptors.push(Descriptor::PreopenDirectory((dir.0, dir.1)))?;
259
+ }
260
+ Ok(descriptors)
261
+ }
262
+
263
+ /// Returns next descriptor number, which was never assigned
264
+ fn unused(&self) -> Result<u32> {
265
+ match self.last_key_value() {
266
+ Some((fd, _)) => {
267
+ if let Some(fd) = fd.checked_add(1) {
268
+ return Ok(fd);
269
+ }
270
+ if self.len() == u32::MAX as usize {
271
+ return Err(types::Errno::Loop.into());
272
+ }
273
+ // TODO: Optimize
274
+ Ok((0..u32::MAX)
275
+ .rev()
276
+ .find(|fd| !self.contains_key(fd))
277
+ .expect("failed to find an unused file descriptor"))
278
+ }
279
+ None => Ok(0),
280
+ }
281
+ }
282
+
283
+ /// Removes the [Descriptor] corresponding to `fd`
284
+ fn remove(&mut self, fd: types::Fd) -> Option<Descriptor> {
285
+ let fd = fd.into();
286
+ let desc = self.used.remove(&fd)?;
287
+ self.free.push(fd);
288
+ Some(desc)
289
+ }
290
+
291
+ /// Pushes the [Descriptor] returning corresponding number.
292
+ /// This operation will try to reuse numbers previously removed via [`Self::remove`]
293
+ /// and rely on [`Self::unused`] if no free numbers are recorded
294
+ fn push(&mut self, desc: Descriptor) -> Result<u32> {
295
+ let fd = if let Some(fd) = self.free.pop() {
296
+ fd
297
+ } else {
298
+ self.unused()?
299
+ };
300
+ assert!(self.insert(fd, desc).is_none());
301
+ Ok(fd)
302
+ }
303
+
304
+ /// Like [Self::push], but for [`File`]
305
+ fn push_file(&mut self, file: File) -> Result<u32> {
306
+ self.push(Descriptor::File(file))
307
+ }
308
+ }
309
+
310
+ impl WasiPreview1Adapter {
311
+ pub fn new() -> Self {
312
+ Self::default()
313
+ }
314
+ }
315
+
316
+ // Any context that needs to support preview 1 will impl this trait. They can
317
+ // construct the needed member with WasiPreview1Adapter::new().
318
+ pub trait WasiPreview1View: WasiView {
319
+ fn adapter(&self) -> &WasiPreview1Adapter;
320
+ fn adapter_mut(&mut self) -> &mut WasiPreview1Adapter;
321
+ }
322
+
323
+ /// A mutably-borrowed [`WasiPreview1View`] implementation, which provides access to the stored
324
+ /// state. It can be thought of as an in-flight [`WasiPreview1Adapter`] transaction, all
325
+ /// changes will be recorded in the underlying [`WasiPreview1Adapter`] returned by
326
+ /// [`WasiPreview1View::adapter_mut`] on [`Drop`] of this struct.
327
+ // NOTE: This exists for the most part just due to the fact that `bindgen` generates methods with
328
+ // `&mut self` receivers and so this struct lets us extend the lifetime of the `&mut self` borrow
329
+ // of the [`WasiPreview1View`] to provide means to return mutably and immutably borrowed [`Descriptors`]
330
+ // without having to rely on something like `Arc<Mutex<Descriptors>>`, while also being able to
331
+ // call methods like [`Descriptor::is_file`] and hiding complexity from preview1 method implementations.
332
+ struct Transaction<'a, T: WasiPreview1View + ?Sized> {
333
+ view: &'a mut T,
334
+ descriptors: Descriptors,
335
+ }
336
+
337
+ impl<T: WasiPreview1View + ?Sized> Drop for Transaction<'_, T> {
338
+ /// Record changes in the [`WasiPreview1Adapter`] returned by [`WasiPreview1View::adapter_mut`]
339
+ fn drop(&mut self) {
340
+ let descriptors = mem::take(&mut self.descriptors);
341
+ self.view.adapter_mut().descriptors = Some(descriptors);
342
+ }
343
+ }
344
+
345
+ impl<T: WasiPreview1View + ?Sized> Transaction<'_, T> {
346
+ /// Borrows [`Descriptor`] corresponding to `fd`.
347
+ ///
348
+ /// # Errors
349
+ ///
350
+ /// Returns [`types::Errno::Badf`] if no [`Descriptor`] is found
351
+ fn get_descriptor(&self, fd: types::Fd) -> Result<&Descriptor> {
352
+ let fd = fd.into();
353
+ let desc = self.descriptors.get(&fd).ok_or(types::Errno::Badf)?;
354
+ Ok(desc)
355
+ }
356
+
357
+ /// Borrows [`File`] corresponding to `fd`
358
+ /// if it describes a [`Descriptor::File`] of [`crate::preview2::filesystem::File`] type
359
+ fn get_file(&self, fd: types::Fd) -> Result<&File> {
360
+ let fd = fd.into();
361
+ match self.descriptors.get(&fd) {
362
+ Some(Descriptor::File(file @ File { fd, .. })) => {
363
+ self.view.table().get(fd)?.file()?;
364
+ Ok(file)
365
+ }
366
+ _ => Err(types::Errno::Badf.into()),
367
+ }
368
+ }
369
+
370
+ /// Mutably borrows [`File`] corresponding to `fd`
371
+ /// if it describes a [`Descriptor::File`] of [`crate::preview2::filesystem::File`] type
372
+ fn get_file_mut(&mut self, fd: types::Fd) -> Result<&mut File> {
373
+ let fd = fd.into();
374
+ match self.descriptors.get_mut(&fd) {
375
+ Some(Descriptor::File(file)) => {
376
+ self.view.table().get(&file.fd)?.file()?;
377
+ Ok(file)
378
+ }
379
+ _ => Err(types::Errno::Badf.into()),
380
+ }
381
+ }
382
+
383
+ /// Borrows [`File`] corresponding to `fd`
384
+ /// if it describes a [`Descriptor::File`] of [`crate::preview2::filesystem::File`] type.
385
+ ///
386
+ /// # Errors
387
+ ///
388
+ /// Returns [`types::Errno::Spipe`] if the descriptor corresponds to stdio
389
+ fn get_seekable(&self, fd: types::Fd) -> Result<&File> {
390
+ let fd = fd.into();
391
+ match self.descriptors.get(&fd) {
392
+ Some(Descriptor::File(file @ File { fd, .. }))
393
+ if self.view.table().get(fd)?.is_file() =>
394
+ {
395
+ Ok(file)
396
+ }
397
+ Some(
398
+ Descriptor::Stdin { .. } | Descriptor::Stdout { .. } | Descriptor::Stderr { .. },
399
+ ) => {
400
+ // NOTE: legacy implementation returns SPIPE here
401
+ Err(types::Errno::Spipe.into())
402
+ }
403
+ _ => Err(types::Errno::Badf.into()),
404
+ }
405
+ }
406
+
407
+ /// Returns [`filesystem::Descriptor`] corresponding to `fd`
408
+ fn get_fd(&self, fd: types::Fd) -> Result<Resource<filesystem::Descriptor>> {
409
+ match self.get_descriptor(fd)? {
410
+ Descriptor::File(File { fd, .. }) => Ok(fd.borrowed()),
411
+ Descriptor::PreopenDirectory((fd, _)) => Ok(fd.borrowed()),
412
+ Descriptor::Stdin { .. } | Descriptor::Stdout { .. } | Descriptor::Stderr { .. } => {
413
+ Err(types::Errno::Badf.into())
414
+ }
415
+ }
416
+ }
417
+
418
+ /// Returns [`filesystem::Descriptor`] corresponding to `fd`
419
+ /// if it describes a [`Descriptor::File`] of [`crate::preview2::filesystem::File`] type
420
+ fn get_file_fd(&self, fd: types::Fd) -> Result<Resource<filesystem::Descriptor>> {
421
+ self.get_file(fd).map(|File { fd, .. }| fd.borrowed())
422
+ }
423
+
424
+ /// Returns [`filesystem::Descriptor`] corresponding to `fd`
425
+ /// if it describes a [`Descriptor::File`] or [`Descriptor::PreopenDirectory`]
426
+ /// of [`crate::preview2::filesystem::Dir`] type
427
+ fn get_dir_fd(&self, fd: types::Fd) -> Result<Resource<filesystem::Descriptor>> {
428
+ let fd = fd.into();
429
+ match self.descriptors.get(&fd) {
430
+ Some(Descriptor::File(File { fd, .. })) if self.view.table().get(fd)?.is_dir() => {
431
+ Ok(fd.borrowed())
432
+ }
433
+ Some(Descriptor::PreopenDirectory((fd, _))) => Ok(fd.borrowed()),
434
+ _ => Err(types::Errno::Badf.into()),
435
+ }
436
+ }
437
+ }
438
+
439
+ trait WasiPreview1ViewExt:
440
+ WasiPreview1View
441
+ + preopens::Host
442
+ + stdin::Host
443
+ + stdout::Host
444
+ + stderr::Host
445
+ + terminal_input::Host
446
+ + terminal_output::Host
447
+ + terminal_stdin::Host
448
+ + terminal_stdout::Host
449
+ + terminal_stderr::Host
450
+ {
451
+ /// Lazily initializes [`WasiPreview1Adapter`] returned by [`WasiPreview1View::adapter_mut`]
452
+ /// and returns [`Transaction`] on success
453
+ fn transact(&mut self) -> Result<Transaction<'_, Self>, types::Error> {
454
+ let descriptors = if let Some(descriptors) = self.adapter_mut().descriptors.take() {
455
+ descriptors
456
+ } else {
457
+ Descriptors::new(self)?
458
+ }
459
+ .into();
460
+ Ok(Transaction {
461
+ view: self,
462
+ descriptors,
463
+ })
464
+ }
465
+
466
+ /// Lazily initializes [`WasiPreview1Adapter`] returned by [`WasiPreview1View::adapter_mut`]
467
+ /// and returns [`filesystem::Descriptor`] corresponding to `fd`
468
+ fn get_fd(&mut self, fd: types::Fd) -> Result<Resource<filesystem::Descriptor>, types::Error> {
469
+ let st = self.transact()?;
470
+ let fd = st.get_fd(fd)?;
471
+ Ok(fd)
472
+ }
473
+
474
+ /// Lazily initializes [`WasiPreview1Adapter`] returned by [`WasiPreview1View::adapter_mut`]
475
+ /// and returns [`filesystem::Descriptor`] corresponding to `fd`
476
+ /// if it describes a [`Descriptor::File`] of [`crate::preview2::filesystem::File`] type
477
+ fn get_file_fd(
478
+ &mut self,
479
+ fd: types::Fd,
480
+ ) -> Result<Resource<filesystem::Descriptor>, types::Error> {
481
+ let st = self.transact()?;
482
+ let fd = st.get_file_fd(fd)?;
483
+ Ok(fd)
484
+ }
485
+
486
+ /// Lazily initializes [`WasiPreview1Adapter`] returned by [`WasiPreview1View::adapter_mut`]
487
+ /// and returns [`filesystem::Descriptor`] corresponding to `fd`
488
+ /// if it describes a [`Descriptor::File`] or [`Descriptor::PreopenDirectory`]
489
+ /// of [`crate::preview2::filesystem::Dir`] type
490
+ fn get_dir_fd(
491
+ &mut self,
492
+ fd: types::Fd,
493
+ ) -> Result<Resource<filesystem::Descriptor>, types::Error> {
494
+ let st = self.transact()?;
495
+ let fd = st.get_dir_fd(fd)?;
496
+ Ok(fd)
497
+ }
498
+ }
499
+
500
+ impl<T: WasiPreview1View + preopens::Host> WasiPreview1ViewExt for T {}
501
+
502
+ pub fn add_to_linker_async<T: WasiPreview1View + Sync>(
503
+ linker: &mut wasmtime::Linker<T>,
504
+ ) -> anyhow::Result<()> {
505
+ wasi_snapshot_preview1::add_to_linker(linker, |t| t)
506
+ }
507
+
508
+ pub fn add_to_linker_sync<T: WasiPreview1View + Sync>(
509
+ linker: &mut wasmtime::Linker<T>,
510
+ ) -> anyhow::Result<()> {
511
+ sync::add_wasi_snapshot_preview1_to_linker(linker, |t| t)
512
+ }
513
+
514
+ // Generate the wasi_snapshot_preview1::WasiSnapshotPreview1 trait,
515
+ // and the module types.
516
+ // None of the generated modules, traits, or types should be used externally
517
+ // to this module.
518
+ wiggle::from_witx!({
519
+ witx: ["$CARGO_MANIFEST_DIR/witx/preview1/wasi_snapshot_preview1.witx"],
520
+ async: {
521
+ wasi_snapshot_preview1::{
522
+ fd_advise, fd_close, fd_datasync, fd_fdstat_get, fd_filestat_get, fd_filestat_set_size,
523
+ fd_filestat_set_times, fd_read, fd_pread, fd_seek, fd_sync, fd_readdir, fd_write,
524
+ fd_pwrite, poll_oneoff, path_create_directory, path_filestat_get,
525
+ path_filestat_set_times, path_link, path_open, path_readlink, path_remove_directory,
526
+ path_rename, path_symlink, path_unlink_file
527
+ }
528
+ },
529
+ errors: { errno => trappable Error },
530
+ });
531
+
532
+ mod sync {
533
+ use anyhow::Result;
534
+ use std::future::Future;
535
+
536
+ wiggle::wasmtime_integration!({
537
+ witx: ["$CARGO_MANIFEST_DIR/witx/preview1/wasi_snapshot_preview1.witx"],
538
+ target: super,
539
+ block_on[in_tokio]: {
540
+ wasi_snapshot_preview1::{
541
+ fd_advise, fd_close, fd_datasync, fd_fdstat_get, fd_filestat_get, fd_filestat_set_size,
542
+ fd_filestat_set_times, fd_read, fd_pread, fd_seek, fd_sync, fd_readdir, fd_write,
543
+ fd_pwrite, poll_oneoff, path_create_directory, path_filestat_get,
544
+ path_filestat_set_times, path_link, path_open, path_readlink, path_remove_directory,
545
+ path_rename, path_symlink, path_unlink_file
546
+ }
547
+ },
548
+ errors: { errno => trappable Error },
549
+ });
550
+
551
+ // Small wrapper around `in_tokio` to add a `Result` layer which is always
552
+ // `Ok`
553
+ fn in_tokio<F: Future>(future: F) -> Result<F::Output> {
554
+ Ok(crate::preview2::in_tokio(future))
555
+ }
556
+ }
557
+
558
+ impl wiggle::GuestErrorType for types::Errno {
559
+ fn success() -> Self {
560
+ Self::Success
561
+ }
562
+ }
563
+
564
+ impl From<StreamError> for types::Error {
565
+ fn from(err: StreamError) -> Self {
566
+ match err {
567
+ StreamError::Closed => types::Errno::Io.into(),
568
+ StreamError::LastOperationFailed(e) => match e.downcast::<std::io::Error>() {
569
+ Ok(err) => filesystem::ErrorCode::from(err).into(),
570
+ Err(e) => {
571
+ log::debug!("dropping error {e:?}");
572
+ types::Errno::Io.into()
573
+ }
574
+ },
575
+ StreamError::Trap(e) => types::Error::trap(e),
576
+ }
577
+ }
578
+ }
579
+
580
+ impl From<FsError> for types::Error {
581
+ fn from(err: FsError) -> Self {
582
+ match err.downcast() {
583
+ Ok(code) => code.into(),
584
+ Err(e) => types::Error::trap(e),
585
+ }
586
+ }
587
+ }
588
+
589
+ fn systimespec(set: bool, ts: types::Timestamp, now: bool) -> Result<filesystem::NewTimestamp> {
590
+ if set && now {
591
+ Err(types::Errno::Inval.into())
592
+ } else if set {
593
+ Ok(filesystem::NewTimestamp::Timestamp(filesystem::Datetime {
594
+ seconds: ts / 1_000_000_000,
595
+ nanoseconds: (ts % 1_000_000_000) as _,
596
+ }))
597
+ } else if now {
598
+ Ok(filesystem::NewTimestamp::Now)
599
+ } else {
600
+ Ok(filesystem::NewTimestamp::NoChange)
601
+ }
602
+ }
603
+
604
+ impl TryFrom<wall_clock::Datetime> for types::Timestamp {
605
+ type Error = types::Errno;
606
+
607
+ fn try_from(
608
+ wall_clock::Datetime {
609
+ seconds,
610
+ nanoseconds,
611
+ }: wall_clock::Datetime,
612
+ ) -> Result<Self, Self::Error> {
613
+ types::Timestamp::from(seconds)
614
+ .checked_mul(1_000_000_000)
615
+ .and_then(|ns| ns.checked_add(nanoseconds.into()))
616
+ .ok_or(types::Errno::Overflow)
617
+ }
618
+ }
619
+
620
+ impl From<types::Lookupflags> for filesystem::PathFlags {
621
+ fn from(flags: types::Lookupflags) -> Self {
622
+ if flags.contains(types::Lookupflags::SYMLINK_FOLLOW) {
623
+ filesystem::PathFlags::SYMLINK_FOLLOW
624
+ } else {
625
+ filesystem::PathFlags::empty()
626
+ }
627
+ }
628
+ }
629
+
630
+ impl From<types::Oflags> for filesystem::OpenFlags {
631
+ fn from(flags: types::Oflags) -> Self {
632
+ let mut out = filesystem::OpenFlags::empty();
633
+ if flags.contains(types::Oflags::CREAT) {
634
+ out |= filesystem::OpenFlags::CREATE;
635
+ }
636
+ if flags.contains(types::Oflags::DIRECTORY) {
637
+ out |= filesystem::OpenFlags::DIRECTORY;
638
+ }
639
+ if flags.contains(types::Oflags::EXCL) {
640
+ out |= filesystem::OpenFlags::EXCLUSIVE;
641
+ }
642
+ if flags.contains(types::Oflags::TRUNC) {
643
+ out |= filesystem::OpenFlags::TRUNCATE;
644
+ }
645
+ out
646
+ }
647
+ }
648
+
649
+ impl From<types::Advice> for filesystem::Advice {
650
+ fn from(advice: types::Advice) -> Self {
651
+ match advice {
652
+ types::Advice::Normal => filesystem::Advice::Normal,
653
+ types::Advice::Sequential => filesystem::Advice::Sequential,
654
+ types::Advice::Random => filesystem::Advice::Random,
655
+ types::Advice::Willneed => filesystem::Advice::WillNeed,
656
+ types::Advice::Dontneed => filesystem::Advice::DontNeed,
657
+ types::Advice::Noreuse => filesystem::Advice::NoReuse,
658
+ }
659
+ }
660
+ }
661
+
662
+ impl TryFrom<filesystem::DescriptorType> for types::Filetype {
663
+ type Error = anyhow::Error;
664
+
665
+ fn try_from(ty: filesystem::DescriptorType) -> Result<Self, Self::Error> {
666
+ match ty {
667
+ filesystem::DescriptorType::RegularFile => Ok(types::Filetype::RegularFile),
668
+ filesystem::DescriptorType::Directory => Ok(types::Filetype::Directory),
669
+ filesystem::DescriptorType::BlockDevice => Ok(types::Filetype::BlockDevice),
670
+ filesystem::DescriptorType::CharacterDevice => Ok(types::Filetype::CharacterDevice),
671
+ // preview1 never had a FIFO code.
672
+ filesystem::DescriptorType::Fifo => Ok(types::Filetype::Unknown),
673
+ // TODO: Add a way to disginguish between FILETYPE_SOCKET_STREAM and
674
+ // FILETYPE_SOCKET_DGRAM.
675
+ filesystem::DescriptorType::Socket => {
676
+ bail!("sockets are not currently supported")
677
+ }
678
+ filesystem::DescriptorType::SymbolicLink => Ok(types::Filetype::SymbolicLink),
679
+ filesystem::DescriptorType::Unknown => Ok(types::Filetype::Unknown),
680
+ }
681
+ }
682
+ }
683
+
684
+ impl From<IsATTY> for types::Filetype {
685
+ fn from(isatty: IsATTY) -> Self {
686
+ match isatty {
687
+ IsATTY::Yes => types::Filetype::CharacterDevice,
688
+ IsATTY::No => types::Filetype::Unknown,
689
+ }
690
+ }
691
+ }
692
+
693
+ impl From<filesystem::ErrorCode> for types::Errno {
694
+ fn from(code: filesystem::ErrorCode) -> Self {
695
+ match code {
696
+ filesystem::ErrorCode::Access => types::Errno::Acces,
697
+ filesystem::ErrorCode::WouldBlock => types::Errno::Again,
698
+ filesystem::ErrorCode::Already => types::Errno::Already,
699
+ filesystem::ErrorCode::BadDescriptor => types::Errno::Badf,
700
+ filesystem::ErrorCode::Busy => types::Errno::Busy,
701
+ filesystem::ErrorCode::Deadlock => types::Errno::Deadlk,
702
+ filesystem::ErrorCode::Quota => types::Errno::Dquot,
703
+ filesystem::ErrorCode::Exist => types::Errno::Exist,
704
+ filesystem::ErrorCode::FileTooLarge => types::Errno::Fbig,
705
+ filesystem::ErrorCode::IllegalByteSequence => types::Errno::Ilseq,
706
+ filesystem::ErrorCode::InProgress => types::Errno::Inprogress,
707
+ filesystem::ErrorCode::Interrupted => types::Errno::Intr,
708
+ filesystem::ErrorCode::Invalid => types::Errno::Inval,
709
+ filesystem::ErrorCode::Io => types::Errno::Io,
710
+ filesystem::ErrorCode::IsDirectory => types::Errno::Isdir,
711
+ filesystem::ErrorCode::Loop => types::Errno::Loop,
712
+ filesystem::ErrorCode::TooManyLinks => types::Errno::Mlink,
713
+ filesystem::ErrorCode::MessageSize => types::Errno::Msgsize,
714
+ filesystem::ErrorCode::NameTooLong => types::Errno::Nametoolong,
715
+ filesystem::ErrorCode::NoDevice => types::Errno::Nodev,
716
+ filesystem::ErrorCode::NoEntry => types::Errno::Noent,
717
+ filesystem::ErrorCode::NoLock => types::Errno::Nolck,
718
+ filesystem::ErrorCode::InsufficientMemory => types::Errno::Nomem,
719
+ filesystem::ErrorCode::InsufficientSpace => types::Errno::Nospc,
720
+ filesystem::ErrorCode::Unsupported => types::Errno::Notsup,
721
+ filesystem::ErrorCode::NotDirectory => types::Errno::Notdir,
722
+ filesystem::ErrorCode::NotEmpty => types::Errno::Notempty,
723
+ filesystem::ErrorCode::NotRecoverable => types::Errno::Notrecoverable,
724
+ filesystem::ErrorCode::NoTty => types::Errno::Notty,
725
+ filesystem::ErrorCode::NoSuchDevice => types::Errno::Nxio,
726
+ filesystem::ErrorCode::Overflow => types::Errno::Overflow,
727
+ filesystem::ErrorCode::NotPermitted => types::Errno::Perm,
728
+ filesystem::ErrorCode::Pipe => types::Errno::Pipe,
729
+ filesystem::ErrorCode::ReadOnly => types::Errno::Rofs,
730
+ filesystem::ErrorCode::InvalidSeek => types::Errno::Spipe,
731
+ filesystem::ErrorCode::TextFileBusy => types::Errno::Txtbsy,
732
+ filesystem::ErrorCode::CrossDevice => types::Errno::Xdev,
733
+ }
734
+ }
735
+ }
736
+
737
+ impl From<std::num::TryFromIntError> for types::Error {
738
+ fn from(_: std::num::TryFromIntError) -> Self {
739
+ types::Errno::Overflow.into()
740
+ }
741
+ }
742
+
743
+ impl From<GuestError> for types::Error {
744
+ fn from(err: GuestError) -> Self {
745
+ use wiggle::GuestError::*;
746
+ match err {
747
+ InvalidFlagValue { .. } => types::Errno::Inval.into(),
748
+ InvalidEnumValue { .. } => types::Errno::Inval.into(),
749
+ // As per
750
+ // https://github.com/WebAssembly/wasi/blob/main/legacy/tools/witx-docs.md#pointers
751
+ //
752
+ // > If a misaligned pointer is passed to a function, the function
753
+ // > shall trap.
754
+ // >
755
+ // > If an out-of-bounds pointer is passed to a function and the
756
+ // > function needs to dereference it, the function shall trap.
757
+ //
758
+ // so this turns OOB and misalignment errors into traps.
759
+ PtrOverflow { .. } | PtrOutOfBounds { .. } | PtrNotAligned { .. } => {
760
+ types::Error::trap(err.into())
761
+ }
762
+ PtrBorrowed { .. } => types::Errno::Fault.into(),
763
+ InvalidUtf8 { .. } => types::Errno::Ilseq.into(),
764
+ TryFromIntError { .. } => types::Errno::Overflow.into(),
765
+ SliceLengthsDiffer { .. } => types::Errno::Fault.into(),
766
+ BorrowCheckerOutOfHandles { .. } => types::Errno::Fault.into(),
767
+ InFunc { err, .. } => types::Error::from(*err),
768
+ }
769
+ }
770
+ }
771
+
772
+ impl From<filesystem::ErrorCode> for types::Error {
773
+ fn from(code: filesystem::ErrorCode) -> Self {
774
+ types::Errno::from(code).into()
775
+ }
776
+ }
777
+
778
+ impl From<wasmtime::component::ResourceTableError> for types::Error {
779
+ fn from(err: wasmtime::component::ResourceTableError) -> Self {
780
+ types::Error::trap(err.into())
781
+ }
782
+ }
783
+
784
+ type Result<T, E = types::Error> = std::result::Result<T, E>;
785
+
786
+ fn write_bytes<'a>(
787
+ ptr: impl Borrow<GuestPtr<'a, u8>>,
788
+ buf: &[u8],
789
+ ) -> Result<GuestPtr<'a, u8>, types::Error> {
790
+ // NOTE: legacy implementation always returns Inval errno
791
+
792
+ let buf = buf.as_ref();
793
+ let len = buf.len().try_into()?;
794
+
795
+ let ptr = ptr.borrow();
796
+ ptr.as_array(len).copy_from_slice(buf)?;
797
+ let next = ptr.add(len)?;
798
+ Ok(next)
799
+ }
800
+
801
+ fn write_byte<'a>(ptr: impl Borrow<GuestPtr<'a, u8>>, byte: u8) -> Result<GuestPtr<'a, u8>> {
802
+ let ptr = ptr.borrow();
803
+ ptr.write(byte)?;
804
+ let next = ptr.add(1)?;
805
+ Ok(next)
806
+ }
807
+
808
+ fn read_str<'a>(ptr: impl Borrow<GuestPtr<'a, str>>) -> Result<GuestStrCow<'a>> {
809
+ let s = ptr.borrow().as_cow()?;
810
+ Ok(s)
811
+ }
812
+
813
+ fn read_string<'a>(ptr: impl Borrow<GuestPtr<'a, str>>) -> Result<String> {
814
+ read_str(ptr).map(|s| s.to_string())
815
+ }
816
+
817
+ // Find first non-empty buffer.
818
+ fn first_non_empty_ciovec<'a, 'b>(
819
+ ciovs: &'a types::CiovecArray<'b>,
820
+ ) -> Result<Option<GuestPtr<'a, [u8]>>> {
821
+ for iov in ciovs.iter() {
822
+ let iov = iov?.read()?;
823
+ if iov.buf_len == 0 {
824
+ continue;
825
+ }
826
+ return Ok(Some(iov.buf.as_array(iov.buf_len)));
827
+ }
828
+ Ok(None)
829
+ }
830
+
831
+ // Find first non-empty buffer.
832
+ fn first_non_empty_iovec<'a>(iovs: &types::IovecArray<'a>) -> Result<Option<GuestPtr<'a, [u8]>>> {
833
+ iovs.iter()
834
+ .map(|iov| {
835
+ let iov = iov?.read()?;
836
+ if iov.buf_len == 0 {
837
+ return Ok(None);
838
+ }
839
+ let slice = iov.buf.as_array(iov.buf_len);
840
+ Ok(Some(slice))
841
+ })
842
+ .find_map(Result::transpose)
843
+ .transpose()
844
+ }
845
+
846
+ #[async_trait::async_trait]
847
+ // Implement the WasiSnapshotPreview1 trait using only the traits that are
848
+ // required for T, i.e., in terms of the preview 2 wit interface, and state
849
+ // stored in the WasiPreview1Adapter struct.
850
+ impl<
851
+ T: WasiPreview1View
852
+ + bindings::cli::environment::Host
853
+ + bindings::cli::exit::Host
854
+ + bindings::filesystem::preopens::Host
855
+ + bindings::filesystem::types::Host
856
+ + bindings::io::poll::Host
857
+ + bindings::random::random::Host
858
+ + bindings::io::streams::Host
859
+ + bindings::clocks::monotonic_clock::Host
860
+ + bindings::clocks::wall_clock::Host,
861
+ > wasi_snapshot_preview1::WasiSnapshotPreview1 for T
862
+ {
863
+ #[instrument(skip(self))]
864
+ fn args_get<'b>(
865
+ &mut self,
866
+ argv: &GuestPtr<'b, GuestPtr<'b, u8>>,
867
+ argv_buf: &GuestPtr<'b, u8>,
868
+ ) -> Result<(), types::Error> {
869
+ self.get_arguments()
870
+ .context("failed to call `get-arguments`")
871
+ .map_err(types::Error::trap)?
872
+ .into_iter()
873
+ .try_fold((*argv, *argv_buf), |(argv, argv_buf), arg| -> Result<_> {
874
+ argv.write(argv_buf)?;
875
+ let argv = argv.add(1)?;
876
+
877
+ let argv_buf = write_bytes(argv_buf, arg.as_bytes())?;
878
+ let argv_buf = write_byte(argv_buf, 0)?;
879
+
880
+ Ok((argv, argv_buf))
881
+ })?;
882
+ Ok(())
883
+ }
884
+
885
+ #[instrument(skip(self))]
886
+ fn args_sizes_get(&mut self) -> Result<(types::Size, types::Size), types::Error> {
887
+ let args = self
888
+ .get_arguments()
889
+ .context("failed to call `get-arguments`")
890
+ .map_err(types::Error::trap)?;
891
+ let num = args.len().try_into().map_err(|_| types::Errno::Overflow)?;
892
+ let len = args
893
+ .iter()
894
+ .map(|buf| buf.len() + 1) // Each argument is expected to be `\0` terminated.
895
+ .sum::<usize>()
896
+ .try_into()
897
+ .map_err(|_| types::Errno::Overflow)?;
898
+ Ok((num, len))
899
+ }
900
+
901
+ #[instrument(skip(self))]
902
+ fn environ_get<'b>(
903
+ &mut self,
904
+ environ: &GuestPtr<'b, GuestPtr<'b, u8>>,
905
+ environ_buf: &GuestPtr<'b, u8>,
906
+ ) -> Result<(), types::Error> {
907
+ self.get_environment()
908
+ .context("failed to call `get-environment`")
909
+ .map_err(types::Error::trap)?
910
+ .into_iter()
911
+ .try_fold(
912
+ (*environ, *environ_buf),
913
+ |(environ, environ_buf), (k, v)| -> Result<_, types::Error> {
914
+ environ.write(environ_buf)?;
915
+ let environ = environ.add(1)?;
916
+
917
+ let environ_buf = write_bytes(environ_buf, k.as_bytes())?;
918
+ let environ_buf = write_byte(environ_buf, b'=')?;
919
+ let environ_buf = write_bytes(environ_buf, v.as_bytes())?;
920
+ let environ_buf = write_byte(environ_buf, 0)?;
921
+
922
+ Ok((environ, environ_buf))
923
+ },
924
+ )?;
925
+ Ok(())
926
+ }
927
+
928
+ #[instrument(skip(self))]
929
+ fn environ_sizes_get(&mut self) -> Result<(types::Size, types::Size), types::Error> {
930
+ let environ = self
931
+ .get_environment()
932
+ .context("failed to call `get-environment`")
933
+ .map_err(types::Error::trap)?;
934
+ let num = environ.len().try_into()?;
935
+ let len = environ
936
+ .iter()
937
+ .map(|(k, v)| k.len() + 1 + v.len() + 1) // Key/value pairs are expected to be joined with `=`s, and terminated with `\0`s.
938
+ .sum::<usize>()
939
+ .try_into()?;
940
+ Ok((num, len))
941
+ }
942
+
943
+ #[instrument(skip(self))]
944
+ fn clock_res_get(&mut self, id: types::Clockid) -> Result<types::Timestamp, types::Error> {
945
+ let res = match id {
946
+ types::Clockid::Realtime => wall_clock::Host::resolution(self)
947
+ .context("failed to call `wall_clock::resolution`")
948
+ .map_err(types::Error::trap)?
949
+ .try_into()?,
950
+ types::Clockid::Monotonic => monotonic_clock::Host::resolution(self)
951
+ .context("failed to call `monotonic_clock::resolution`")
952
+ .map_err(types::Error::trap)?,
953
+ types::Clockid::ProcessCputimeId | types::Clockid::ThreadCputimeId => {
954
+ return Err(types::Errno::Badf.into())
955
+ }
956
+ };
957
+ Ok(res)
958
+ }
959
+
960
+ #[instrument(skip(self))]
961
+ fn clock_time_get(
962
+ &mut self,
963
+ id: types::Clockid,
964
+ _precision: types::Timestamp,
965
+ ) -> Result<types::Timestamp, types::Error> {
966
+ let now = match id {
967
+ types::Clockid::Realtime => wall_clock::Host::now(self)
968
+ .context("failed to call `wall_clock::now`")
969
+ .map_err(types::Error::trap)?
970
+ .try_into()?,
971
+ types::Clockid::Monotonic => monotonic_clock::Host::now(self)
972
+ .context("failed to call `monotonic_clock::now`")
973
+ .map_err(types::Error::trap)?,
974
+ types::Clockid::ProcessCputimeId | types::Clockid::ThreadCputimeId => {
975
+ return Err(types::Errno::Badf.into())
976
+ }
977
+ };
978
+ Ok(now)
979
+ }
980
+
981
+ #[instrument(skip(self))]
982
+ async fn fd_advise(
983
+ &mut self,
984
+ fd: types::Fd,
985
+ offset: types::Filesize,
986
+ len: types::Filesize,
987
+ advice: types::Advice,
988
+ ) -> Result<(), types::Error> {
989
+ let fd = self.get_file_fd(fd)?;
990
+ self.advise(fd, offset, len, advice.into())
991
+ .await
992
+ .map_err(|e| {
993
+ e.try_into()
994
+ .context("failed to call `advise`")
995
+ .unwrap_or_else(types::Error::trap)
996
+ })
997
+ }
998
+
999
+ /// Force the allocation of space in a file.
1000
+ /// NOTE: This is similar to `posix_fallocate` in POSIX.
1001
+ #[instrument(skip(self))]
1002
+ fn fd_allocate(
1003
+ &mut self,
1004
+ fd: types::Fd,
1005
+ _offset: types::Filesize,
1006
+ _len: types::Filesize,
1007
+ ) -> Result<(), types::Error> {
1008
+ self.get_file_fd(fd)?;
1009
+ Err(types::Errno::Notsup.into())
1010
+ }
1011
+
1012
+ /// Close a file descriptor.
1013
+ /// NOTE: This is similar to `close` in POSIX.
1014
+ #[instrument(skip(self))]
1015
+ async fn fd_close(&mut self, fd: types::Fd) -> Result<(), types::Error> {
1016
+ let desc = self
1017
+ .transact()?
1018
+ .descriptors
1019
+ .remove(fd)
1020
+ .ok_or(types::Errno::Badf)?;
1021
+ match desc {
1022
+ Descriptor::Stdin { stream, .. } => streams::HostInputStream::drop(self, stream)
1023
+ .context("failed to call `drop` on `input-stream`"),
1024
+ Descriptor::Stdout { stream, .. } | Descriptor::Stderr { stream, .. } => {
1025
+ streams::HostOutputStream::drop(self, stream)
1026
+ .context("failed to call `drop` on `output-stream`")
1027
+ }
1028
+ Descriptor::File(File { fd, .. }) | Descriptor::PreopenDirectory((fd, _)) => {
1029
+ filesystem::HostDescriptor::drop(self, fd).context("failed to call `drop`")
1030
+ }
1031
+ }
1032
+ .map_err(types::Error::trap)
1033
+ }
1034
+
1035
+ /// Synchronize the data of a file to disk.
1036
+ /// NOTE: This is similar to `fdatasync` in POSIX.
1037
+ #[instrument(skip(self))]
1038
+ async fn fd_datasync(&mut self, fd: types::Fd) -> Result<(), types::Error> {
1039
+ let fd = self.get_file_fd(fd)?;
1040
+ self.sync_data(fd).await.map_err(|e| {
1041
+ e.try_into()
1042
+ .context("failed to call `sync-data`")
1043
+ .unwrap_or_else(types::Error::trap)
1044
+ })
1045
+ }
1046
+
1047
+ /// Get the attributes of a file descriptor.
1048
+ /// NOTE: This returns similar flags to `fsync(fd, F_GETFL)` in POSIX, as well as additional fields.
1049
+ #[instrument(skip(self))]
1050
+ async fn fd_fdstat_get(&mut self, fd: types::Fd) -> Result<types::Fdstat, types::Error> {
1051
+ let (fd, blocking, append) = match self.transact()?.get_descriptor(fd)? {
1052
+ Descriptor::Stdin { isatty, .. } => {
1053
+ let fs_rights_base = types::Rights::FD_READ;
1054
+ return Ok(types::Fdstat {
1055
+ fs_filetype: (*isatty).into(),
1056
+ fs_flags: types::Fdflags::empty(),
1057
+ fs_rights_base,
1058
+ fs_rights_inheriting: fs_rights_base,
1059
+ });
1060
+ }
1061
+ Descriptor::Stdout { isatty, .. } | Descriptor::Stderr { isatty, .. } => {
1062
+ let fs_rights_base = types::Rights::FD_WRITE;
1063
+ return Ok(types::Fdstat {
1064
+ fs_filetype: (*isatty).into(),
1065
+ fs_flags: types::Fdflags::empty(),
1066
+ fs_rights_base,
1067
+ fs_rights_inheriting: fs_rights_base,
1068
+ });
1069
+ }
1070
+ Descriptor::PreopenDirectory((_, _)) => {
1071
+ // Hard-coded set or rights expected by many userlands:
1072
+ let fs_rights_base = types::Rights::PATH_CREATE_DIRECTORY
1073
+ | types::Rights::PATH_CREATE_FILE
1074
+ | types::Rights::PATH_LINK_SOURCE
1075
+ | types::Rights::PATH_LINK_TARGET
1076
+ | types::Rights::PATH_OPEN
1077
+ | types::Rights::FD_READDIR
1078
+ | types::Rights::PATH_READLINK
1079
+ | types::Rights::PATH_RENAME_SOURCE
1080
+ | types::Rights::PATH_RENAME_TARGET
1081
+ | types::Rights::PATH_SYMLINK
1082
+ | types::Rights::PATH_REMOVE_DIRECTORY
1083
+ | types::Rights::PATH_UNLINK_FILE
1084
+ | types::Rights::PATH_FILESTAT_GET
1085
+ | types::Rights::PATH_FILESTAT_SET_TIMES
1086
+ | types::Rights::FD_FILESTAT_GET
1087
+ | types::Rights::FD_FILESTAT_SET_TIMES;
1088
+
1089
+ let fs_rights_inheriting = fs_rights_base
1090
+ | types::Rights::FD_DATASYNC
1091
+ | types::Rights::FD_READ
1092
+ | types::Rights::FD_SEEK
1093
+ | types::Rights::FD_FDSTAT_SET_FLAGS
1094
+ | types::Rights::FD_SYNC
1095
+ | types::Rights::FD_TELL
1096
+ | types::Rights::FD_WRITE
1097
+ | types::Rights::FD_ADVISE
1098
+ | types::Rights::FD_ALLOCATE
1099
+ | types::Rights::FD_FILESTAT_GET
1100
+ | types::Rights::FD_FILESTAT_SET_SIZE
1101
+ | types::Rights::FD_FILESTAT_SET_TIMES
1102
+ | types::Rights::POLL_FD_READWRITE;
1103
+
1104
+ return Ok(types::Fdstat {
1105
+ fs_filetype: types::Filetype::Directory,
1106
+ fs_flags: types::Fdflags::empty(),
1107
+ fs_rights_base,
1108
+ fs_rights_inheriting,
1109
+ });
1110
+ }
1111
+ Descriptor::File(File {
1112
+ fd,
1113
+ blocking_mode,
1114
+ append,
1115
+ ..
1116
+ }) => (fd.borrowed(), *blocking_mode, *append),
1117
+ };
1118
+ let flags = self.get_flags(fd.borrowed()).await.map_err(|e| {
1119
+ e.try_into()
1120
+ .context("failed to call `get-flags`")
1121
+ .unwrap_or_else(types::Error::trap)
1122
+ })?;
1123
+ let fs_filetype = self
1124
+ .get_type(fd.borrowed())
1125
+ .await
1126
+ .map_err(|e| {
1127
+ e.try_into()
1128
+ .context("failed to call `get-type`")
1129
+ .unwrap_or_else(types::Error::trap)
1130
+ })?
1131
+ .try_into()
1132
+ .map_err(types::Error::trap)?;
1133
+ let mut fs_flags = types::Fdflags::empty();
1134
+ let mut fs_rights_base = types::Rights::all();
1135
+ if let types::Filetype::Directory = fs_filetype {
1136
+ fs_rights_base &= !types::Rights::FD_SEEK;
1137
+ }
1138
+ if !flags.contains(filesystem::DescriptorFlags::READ) {
1139
+ fs_rights_base &= !types::Rights::FD_READ;
1140
+ }
1141
+ if !flags.contains(filesystem::DescriptorFlags::WRITE) {
1142
+ fs_rights_base &= !types::Rights::FD_WRITE;
1143
+ }
1144
+ if flags.contains(filesystem::DescriptorFlags::DATA_INTEGRITY_SYNC) {
1145
+ fs_flags |= types::Fdflags::DSYNC;
1146
+ }
1147
+ if flags.contains(filesystem::DescriptorFlags::REQUESTED_WRITE_SYNC) {
1148
+ fs_flags |= types::Fdflags::RSYNC;
1149
+ }
1150
+ if flags.contains(filesystem::DescriptorFlags::FILE_INTEGRITY_SYNC) {
1151
+ fs_flags |= types::Fdflags::SYNC;
1152
+ }
1153
+ if append {
1154
+ fs_flags |= types::Fdflags::APPEND;
1155
+ }
1156
+ if matches!(blocking, BlockingMode::NonBlocking) {
1157
+ fs_flags |= types::Fdflags::NONBLOCK;
1158
+ }
1159
+ Ok(types::Fdstat {
1160
+ fs_filetype,
1161
+ fs_flags,
1162
+ fs_rights_base,
1163
+ fs_rights_inheriting: fs_rights_base,
1164
+ })
1165
+ }
1166
+
1167
+ /// Adjust the flags associated with a file descriptor.
1168
+ /// NOTE: This is similar to `fcntl(fd, F_SETFL, flags)` in POSIX.
1169
+ #[instrument(skip(self))]
1170
+ fn fd_fdstat_set_flags(
1171
+ &mut self,
1172
+ fd: types::Fd,
1173
+ flags: types::Fdflags,
1174
+ ) -> Result<(), types::Error> {
1175
+ let mut st = self.transact()?;
1176
+ let File {
1177
+ append,
1178
+ blocking_mode,
1179
+ ..
1180
+ } = st.get_file_mut(fd)?;
1181
+
1182
+ // Only support changing the NONBLOCK or APPEND flags.
1183
+ if flags.contains(types::Fdflags::DSYNC)
1184
+ || flags.contains(types::Fdflags::SYNC)
1185
+ || flags.contains(types::Fdflags::RSYNC)
1186
+ {
1187
+ return Err(types::Errno::Inval.into());
1188
+ }
1189
+ *append = flags.contains(types::Fdflags::APPEND);
1190
+ *blocking_mode = BlockingMode::from_fdflags(&flags);
1191
+ Ok(())
1192
+ }
1193
+
1194
+ /// Does not do anything if `fd` corresponds to a valid descriptor and returns `[types::Errno::Badf]` error otherwise.
1195
+ #[instrument(skip(self))]
1196
+ fn fd_fdstat_set_rights(
1197
+ &mut self,
1198
+ fd: types::Fd,
1199
+ _fs_rights_base: types::Rights,
1200
+ _fs_rights_inheriting: types::Rights,
1201
+ ) -> Result<(), types::Error> {
1202
+ self.get_fd(fd)?;
1203
+ Ok(())
1204
+ }
1205
+
1206
+ /// Return the attributes of an open file.
1207
+ #[instrument(skip(self))]
1208
+ async fn fd_filestat_get(&mut self, fd: types::Fd) -> Result<types::Filestat, types::Error> {
1209
+ let t = self.transact()?;
1210
+ let desc = t.get_descriptor(fd)?;
1211
+ match desc {
1212
+ Descriptor::Stdin { isatty, .. }
1213
+ | Descriptor::Stdout { isatty, .. }
1214
+ | Descriptor::Stderr { isatty, .. } => Ok(types::Filestat {
1215
+ dev: 0,
1216
+ ino: 0,
1217
+ filetype: (*isatty).into(),
1218
+ nlink: 0,
1219
+ size: 0,
1220
+ atim: 0,
1221
+ mtim: 0,
1222
+ ctim: 0,
1223
+ }),
1224
+ Descriptor::PreopenDirectory((fd, _)) | Descriptor::File(File { fd, .. }) => {
1225
+ let fd = fd.borrowed();
1226
+ drop(t);
1227
+ let filesystem::DescriptorStat {
1228
+ type_,
1229
+ link_count: nlink,
1230
+ size,
1231
+ data_access_timestamp,
1232
+ data_modification_timestamp,
1233
+ status_change_timestamp,
1234
+ } = self.stat(fd.borrowed()).await.map_err(|e| {
1235
+ e.try_into()
1236
+ .context("failed to call `stat`")
1237
+ .unwrap_or_else(types::Error::trap)
1238
+ })?;
1239
+ let metadata_hash = self.metadata_hash(fd).await.map_err(|e| {
1240
+ e.try_into()
1241
+ .context("failed to call `metadata_hash`")
1242
+ .unwrap_or_else(types::Error::trap)
1243
+ })?;
1244
+ let filetype = type_.try_into().map_err(types::Error::trap)?;
1245
+ let zero = wall_clock::Datetime {
1246
+ seconds: 0,
1247
+ nanoseconds: 0,
1248
+ };
1249
+ let atim = data_access_timestamp.unwrap_or(zero).try_into()?;
1250
+ let mtim = data_modification_timestamp.unwrap_or(zero).try_into()?;
1251
+ let ctim = status_change_timestamp.unwrap_or(zero).try_into()?;
1252
+ Ok(types::Filestat {
1253
+ dev: 1,
1254
+ ino: metadata_hash.lower,
1255
+ filetype,
1256
+ nlink,
1257
+ size,
1258
+ atim,
1259
+ mtim,
1260
+ ctim,
1261
+ })
1262
+ }
1263
+ }
1264
+ }
1265
+
1266
+ /// Adjust the size of an open file. If this increases the file's size, the extra bytes are filled with zeros.
1267
+ /// NOTE: This is similar to `ftruncate` in POSIX.
1268
+ #[instrument(skip(self))]
1269
+ async fn fd_filestat_set_size(
1270
+ &mut self,
1271
+ fd: types::Fd,
1272
+ size: types::Filesize,
1273
+ ) -> Result<(), types::Error> {
1274
+ let fd = self.get_file_fd(fd)?;
1275
+ self.set_size(fd, size).await.map_err(|e| {
1276
+ e.try_into()
1277
+ .context("failed to call `set-size`")
1278
+ .unwrap_or_else(types::Error::trap)
1279
+ })
1280
+ }
1281
+
1282
+ /// Adjust the timestamps of an open file or directory.
1283
+ /// NOTE: This is similar to `futimens` in POSIX.
1284
+ #[instrument(skip(self))]
1285
+ async fn fd_filestat_set_times(
1286
+ &mut self,
1287
+ fd: types::Fd,
1288
+ atim: types::Timestamp,
1289
+ mtim: types::Timestamp,
1290
+ fst_flags: types::Fstflags,
1291
+ ) -> Result<(), types::Error> {
1292
+ let atim = systimespec(
1293
+ fst_flags.contains(types::Fstflags::ATIM),
1294
+ atim,
1295
+ fst_flags.contains(types::Fstflags::ATIM_NOW),
1296
+ )?;
1297
+ let mtim = systimespec(
1298
+ fst_flags.contains(types::Fstflags::MTIM),
1299
+ mtim,
1300
+ fst_flags.contains(types::Fstflags::MTIM_NOW),
1301
+ )?;
1302
+
1303
+ let fd = self.get_fd(fd)?;
1304
+ self.set_times(fd, atim, mtim).await.map_err(|e| {
1305
+ e.try_into()
1306
+ .context("failed to call `set-times`")
1307
+ .unwrap_or_else(types::Error::trap)
1308
+ })
1309
+ }
1310
+
1311
+ /// Read from a file descriptor.
1312
+ /// NOTE: This is similar to `readv` in POSIX.
1313
+ #[instrument(skip(self))]
1314
+ async fn fd_read<'a>(
1315
+ &mut self,
1316
+ fd: types::Fd,
1317
+ iovs: &types::IovecArray<'a>,
1318
+ ) -> Result<types::Size, types::Error> {
1319
+ let t = self.transact()?;
1320
+ let desc = t.get_descriptor(fd)?;
1321
+ let (buf, read) = match desc {
1322
+ Descriptor::File(File {
1323
+ fd,
1324
+ blocking_mode,
1325
+ position,
1326
+ ..
1327
+ }) if t.view.table().get(fd)?.is_file() => {
1328
+ let fd = fd.borrowed();
1329
+ let blocking_mode = *blocking_mode;
1330
+ let position = position.clone();
1331
+ drop(t);
1332
+ let Some(buf) = first_non_empty_iovec(iovs)? else {
1333
+ return Ok(0);
1334
+ };
1335
+
1336
+ let pos = position.load(Ordering::Relaxed);
1337
+ let stream = self.read_via_stream(fd.borrowed(), pos).map_err(|e| {
1338
+ e.try_into()
1339
+ .context("failed to call `read-via-stream`")
1340
+ .unwrap_or_else(types::Error::trap)
1341
+ })?;
1342
+ let read = blocking_mode
1343
+ .read(self, stream.borrowed(), buf.len().try_into()?)
1344
+ .await;
1345
+ streams::HostInputStream::drop(self, stream).map_err(|e| types::Error::trap(e))?;
1346
+ let read = read?;
1347
+ let n = read.len().try_into()?;
1348
+ let pos = pos.checked_add(n).ok_or(types::Errno::Overflow)?;
1349
+ position.store(pos, Ordering::Relaxed);
1350
+
1351
+ (buf, read)
1352
+ }
1353
+ Descriptor::Stdin { stream, .. } => {
1354
+ let stream = stream.borrowed();
1355
+ drop(t);
1356
+ let Some(buf) = first_non_empty_iovec(iovs)? else {
1357
+ return Ok(0);
1358
+ };
1359
+ let read = BlockingMode::Blocking
1360
+ .read(self, stream, buf.len().try_into()?)
1361
+ .await?;
1362
+ (buf, read)
1363
+ }
1364
+ _ => return Err(types::Errno::Badf.into()),
1365
+ };
1366
+ if read.len() > buf.len().try_into()? {
1367
+ return Err(types::Errno::Range.into());
1368
+ }
1369
+ let buf = buf.get_range(0..u32::try_from(read.len())?).unwrap();
1370
+ buf.copy_from_slice(&read)?;
1371
+ let n = read.len().try_into()?;
1372
+ Ok(n)
1373
+ }
1374
+
1375
+ /// Read from a file descriptor, without using and updating the file descriptor's offset.
1376
+ /// NOTE: This is similar to `preadv` in POSIX.
1377
+ #[instrument(skip(self))]
1378
+ async fn fd_pread<'a>(
1379
+ &mut self,
1380
+ fd: types::Fd,
1381
+ iovs: &types::IovecArray<'a>,
1382
+ offset: types::Filesize,
1383
+ ) -> Result<types::Size, types::Error> {
1384
+ let t = self.transact()?;
1385
+ let desc = t.get_descriptor(fd)?;
1386
+ let (buf, read) = match desc {
1387
+ Descriptor::File(File {
1388
+ fd, blocking_mode, ..
1389
+ }) if t.view.table().get(fd)?.is_file() => {
1390
+ let fd = fd.borrowed();
1391
+ let blocking_mode = *blocking_mode;
1392
+ drop(t);
1393
+ let Some(buf) = first_non_empty_iovec(iovs)? else {
1394
+ return Ok(0);
1395
+ };
1396
+
1397
+ let stream = self.read_via_stream(fd, offset).map_err(|e| {
1398
+ e.try_into()
1399
+ .context("failed to call `read-via-stream`")
1400
+ .unwrap_or_else(types::Error::trap)
1401
+ })?;
1402
+ let read = blocking_mode
1403
+ .read(self, stream.borrowed(), buf.len().try_into()?)
1404
+ .await;
1405
+ streams::HostInputStream::drop(self, stream).map_err(|e| types::Error::trap(e))?;
1406
+ (buf, read?)
1407
+ }
1408
+ Descriptor::Stdin { .. } => {
1409
+ // NOTE: legacy implementation returns SPIPE here
1410
+ return Err(types::Errno::Spipe.into());
1411
+ }
1412
+ _ => return Err(types::Errno::Badf.into()),
1413
+ };
1414
+ if read.len() > buf.len().try_into()? {
1415
+ return Err(types::Errno::Range.into());
1416
+ }
1417
+ let buf = buf.get_range(0..u32::try_from(read.len())?).unwrap();
1418
+ buf.copy_from_slice(&read)?;
1419
+ let n = read.len().try_into()?;
1420
+ Ok(n)
1421
+ }
1422
+
1423
+ /// Write to a file descriptor.
1424
+ /// NOTE: This is similar to `writev` in POSIX.
1425
+ #[instrument(skip(self))]
1426
+ async fn fd_write<'a>(
1427
+ &mut self,
1428
+ fd: types::Fd,
1429
+ ciovs: &types::CiovecArray<'a>,
1430
+ ) -> Result<types::Size, types::Error> {
1431
+ let t = self.transact()?;
1432
+ let desc = t.get_descriptor(fd)?;
1433
+ match desc {
1434
+ Descriptor::File(File {
1435
+ fd,
1436
+ blocking_mode,
1437
+ append,
1438
+ position,
1439
+ }) if t.view.table().get(fd)?.is_file() => {
1440
+ let fd = fd.borrowed();
1441
+ let fd2 = fd.borrowed();
1442
+ let blocking_mode = *blocking_mode;
1443
+ let position = position.clone();
1444
+ let append = *append;
1445
+ drop(t);
1446
+ let Some(buf) = first_non_empty_ciovec(ciovs)? else {
1447
+ return Ok(0);
1448
+ };
1449
+ let (stream, pos) = if append {
1450
+ let stream = self.append_via_stream(fd).map_err(|e| {
1451
+ e.try_into()
1452
+ .context("failed to call `append-via-stream`")
1453
+ .unwrap_or_else(types::Error::trap)
1454
+ })?;
1455
+ (stream, 0)
1456
+ } else {
1457
+ let pos = position.load(Ordering::Relaxed);
1458
+ let stream = self.write_via_stream(fd, pos).map_err(|e| {
1459
+ e.try_into()
1460
+ .context("failed to call `write-via-stream`")
1461
+ .unwrap_or_else(types::Error::trap)
1462
+ })?;
1463
+ (stream, pos)
1464
+ };
1465
+ let n = blocking_mode.write(self, stream.borrowed(), buf).await;
1466
+ streams::HostOutputStream::drop(self, stream).map_err(|e| types::Error::trap(e))?;
1467
+ let n = n?;
1468
+ if append {
1469
+ let len = self.stat(fd2).await?;
1470
+ position.store(len.size, Ordering::Relaxed);
1471
+ } else {
1472
+ let pos = pos.checked_add(n as u64).ok_or(types::Errno::Overflow)?;
1473
+ position.store(pos, Ordering::Relaxed);
1474
+ }
1475
+ let n = n.try_into()?;
1476
+ Ok(n)
1477
+ }
1478
+ Descriptor::Stdout { stream, .. } | Descriptor::Stderr { stream, .. } => {
1479
+ let stream = stream.borrowed();
1480
+ drop(t);
1481
+ let Some(buf) = first_non_empty_ciovec(ciovs)? else {
1482
+ return Ok(0);
1483
+ };
1484
+ let n = BlockingMode::Blocking
1485
+ .write(self, stream, buf)
1486
+ .await?
1487
+ .try_into()?;
1488
+ Ok(n)
1489
+ }
1490
+ _ => Err(types::Errno::Badf.into()),
1491
+ }
1492
+ }
1493
+
1494
+ /// Write to a file descriptor, without using and updating the file descriptor's offset.
1495
+ /// NOTE: This is similar to `pwritev` in POSIX.
1496
+ #[instrument(skip(self))]
1497
+ async fn fd_pwrite<'a>(
1498
+ &mut self,
1499
+ fd: types::Fd,
1500
+ ciovs: &types::CiovecArray<'a>,
1501
+ offset: types::Filesize,
1502
+ ) -> Result<types::Size, types::Error> {
1503
+ let t = self.transact()?;
1504
+ let desc = t.get_descriptor(fd)?;
1505
+ let n = match desc {
1506
+ Descriptor::File(File {
1507
+ fd, blocking_mode, ..
1508
+ }) if t.view.table().get(fd)?.is_file() => {
1509
+ let fd = fd.borrowed();
1510
+ let blocking_mode = *blocking_mode;
1511
+ drop(t);
1512
+ let Some(buf) = first_non_empty_ciovec(ciovs)? else {
1513
+ return Ok(0);
1514
+ };
1515
+ let stream = self.write_via_stream(fd, offset).map_err(|e| {
1516
+ e.try_into()
1517
+ .context("failed to call `write-via-stream`")
1518
+ .unwrap_or_else(types::Error::trap)
1519
+ })?;
1520
+ let result = blocking_mode.write(self, stream.borrowed(), buf).await;
1521
+ streams::HostOutputStream::drop(self, stream).map_err(|e| types::Error::trap(e))?;
1522
+ result?
1523
+ }
1524
+ Descriptor::Stdout { .. } | Descriptor::Stderr { .. } => {
1525
+ // NOTE: legacy implementation returns SPIPE here
1526
+ return Err(types::Errno::Spipe.into());
1527
+ }
1528
+ _ => return Err(types::Errno::Badf.into()),
1529
+ };
1530
+ Ok(n.try_into()?)
1531
+ }
1532
+
1533
+ /// Return a description of the given preopened file descriptor.
1534
+ #[instrument(skip(self))]
1535
+ fn fd_prestat_get(&mut self, fd: types::Fd) -> Result<types::Prestat, types::Error> {
1536
+ if let Descriptor::PreopenDirectory((_, p)) = self.transact()?.get_descriptor(fd)? {
1537
+ let pr_name_len = p.len().try_into()?;
1538
+ return Ok(types::Prestat::Dir(types::PrestatDir { pr_name_len }));
1539
+ }
1540
+ Err(types::Errno::Badf.into()) // NOTE: legacy implementation returns BADF here
1541
+ }
1542
+
1543
+ /// Return a description of the given preopened file descriptor.
1544
+ #[instrument(skip(self))]
1545
+ fn fd_prestat_dir_name<'a>(
1546
+ &mut self,
1547
+ fd: types::Fd,
1548
+ path: &GuestPtr<'a, u8>,
1549
+ path_max_len: types::Size,
1550
+ ) -> Result<(), types::Error> {
1551
+ let path_max_len = path_max_len.try_into()?;
1552
+ if let Descriptor::PreopenDirectory((_, p)) = self.transact()?.get_descriptor(fd)? {
1553
+ if p.len() > path_max_len {
1554
+ return Err(types::Errno::Nametoolong.into());
1555
+ }
1556
+ write_bytes(path, p.as_bytes())?;
1557
+ return Ok(());
1558
+ }
1559
+ Err(types::Errno::Notdir.into()) // NOTE: legacy implementation returns NOTDIR here
1560
+ }
1561
+
1562
+ /// Atomically replace a file descriptor by renumbering another file descriptor.
1563
+ #[instrument(skip(self))]
1564
+ fn fd_renumber(&mut self, from: types::Fd, to: types::Fd) -> Result<(), types::Error> {
1565
+ let mut st = self.transact()?;
1566
+ let desc = st.descriptors.remove(from).ok_or(types::Errno::Badf)?;
1567
+ st.descriptors.insert(to.into(), desc);
1568
+ Ok(())
1569
+ }
1570
+
1571
+ /// Move the offset of a file descriptor.
1572
+ /// NOTE: This is similar to `lseek` in POSIX.
1573
+ #[instrument(skip(self))]
1574
+ async fn fd_seek(
1575
+ &mut self,
1576
+ fd: types::Fd,
1577
+ offset: types::Filedelta,
1578
+ whence: types::Whence,
1579
+ ) -> Result<types::Filesize, types::Error> {
1580
+ let t = self.transact()?;
1581
+ let File { fd, position, .. } = t.get_seekable(fd)?;
1582
+ let fd = fd.borrowed();
1583
+ let position = position.clone();
1584
+ drop(t);
1585
+ let pos = match whence {
1586
+ types::Whence::Set if offset >= 0 => {
1587
+ offset.try_into().map_err(|_| types::Errno::Inval)?
1588
+ }
1589
+ types::Whence::Cur => position
1590
+ .load(Ordering::Relaxed)
1591
+ .checked_add_signed(offset)
1592
+ .ok_or(types::Errno::Inval)?,
1593
+ types::Whence::End => {
1594
+ let filesystem::DescriptorStat { size, .. } = self.stat(fd).await.map_err(|e| {
1595
+ e.try_into()
1596
+ .context("failed to call `stat`")
1597
+ .unwrap_or_else(types::Error::trap)
1598
+ })?;
1599
+ size.checked_add_signed(offset).ok_or(types::Errno::Inval)?
1600
+ }
1601
+ _ => return Err(types::Errno::Inval.into()),
1602
+ };
1603
+ position.store(pos, Ordering::Relaxed);
1604
+ Ok(pos)
1605
+ }
1606
+
1607
+ /// Synchronize the data and metadata of a file to disk.
1608
+ /// NOTE: This is similar to `fsync` in POSIX.
1609
+ #[instrument(skip(self))]
1610
+ async fn fd_sync(&mut self, fd: types::Fd) -> Result<(), types::Error> {
1611
+ let fd = self.get_file_fd(fd)?;
1612
+ self.sync(fd).await.map_err(|e| {
1613
+ e.try_into()
1614
+ .context("failed to call `sync`")
1615
+ .unwrap_or_else(types::Error::trap)
1616
+ })
1617
+ }
1618
+
1619
+ /// Return the current offset of a file descriptor.
1620
+ /// NOTE: This is similar to `lseek(fd, 0, SEEK_CUR)` in POSIX.
1621
+ #[instrument(skip(self))]
1622
+ fn fd_tell(&mut self, fd: types::Fd) -> Result<types::Filesize, types::Error> {
1623
+ let pos = self
1624
+ .transact()?
1625
+ .get_seekable(fd)
1626
+ .map(|File { position, .. }| position.load(Ordering::Relaxed))?;
1627
+ Ok(pos)
1628
+ }
1629
+
1630
+ #[instrument(skip(self))]
1631
+ async fn fd_readdir<'a>(
1632
+ &mut self,
1633
+ fd: types::Fd,
1634
+ buf: &GuestPtr<'a, u8>,
1635
+ buf_len: types::Size,
1636
+ cookie: types::Dircookie,
1637
+ ) -> Result<types::Size, types::Error> {
1638
+ let fd = self.get_dir_fd(fd)?;
1639
+ let stream = self.read_directory(fd.borrowed()).await.map_err(|e| {
1640
+ e.try_into()
1641
+ .context("failed to call `read-directory`")
1642
+ .unwrap_or_else(types::Error::trap)
1643
+ })?;
1644
+ let dir_metadata_hash = self.metadata_hash(fd.borrowed()).await.map_err(|e| {
1645
+ e.try_into()
1646
+ .context("failed to call `metadata-hash`")
1647
+ .unwrap_or_else(types::Error::trap)
1648
+ })?;
1649
+ let cookie = cookie.try_into().map_err(|_| types::Errno::Overflow)?;
1650
+
1651
+ let head = [
1652
+ (
1653
+ types::Dirent {
1654
+ d_next: 1u64.to_le(),
1655
+ d_ino: dir_metadata_hash.lower.to_le(),
1656
+ d_type: types::Filetype::Directory,
1657
+ d_namlen: 1u32.to_le(),
1658
+ },
1659
+ ".".into(),
1660
+ ),
1661
+ (
1662
+ types::Dirent {
1663
+ d_next: 2u64.to_le(),
1664
+ d_ino: dir_metadata_hash.lower.to_le(), // NOTE: incorrect, but legacy implementation returns `fd` inode here
1665
+ d_type: types::Filetype::Directory,
1666
+ d_namlen: 2u32.to_le(),
1667
+ },
1668
+ "..".into(),
1669
+ ),
1670
+ ];
1671
+
1672
+ let mut dir = Vec::new();
1673
+ for (entry, d_next) in self
1674
+ .table_mut()
1675
+ // remove iterator from table and use it directly:
1676
+ .delete(stream)?
1677
+ .into_iter()
1678
+ .zip(3u64..)
1679
+ {
1680
+ let filesystem::DirectoryEntry { type_, name } = entry.map_err(|e| {
1681
+ e.try_into()
1682
+ .context("failed to inspect `read-directory` entry")
1683
+ .unwrap_or_else(types::Error::trap)
1684
+ })?;
1685
+ let metadata_hash = self
1686
+ .metadata_hash_at(fd.borrowed(), filesystem::PathFlags::empty(), name.clone())
1687
+ .await
1688
+ .map_err(|e| {
1689
+ e.try_into()
1690
+ .context("failed to call `metadata-hash-at`")
1691
+ .unwrap_or_else(types::Error::trap)
1692
+ })?;
1693
+ let d_type = type_.try_into().map_err(types::Error::trap)?;
1694
+ let d_namlen: u32 = name.len().try_into().map_err(|_| types::Errno::Overflow)?;
1695
+ dir.push((
1696
+ types::Dirent {
1697
+ d_next: d_next.to_le(),
1698
+ d_ino: metadata_hash.lower.to_le(),
1699
+ d_type, // endian-invariant
1700
+ d_namlen: d_namlen.to_le(),
1701
+ },
1702
+ name,
1703
+ ))
1704
+ }
1705
+
1706
+ // assume that `types::Dirent` size always fits in `u32`
1707
+ const DIRENT_SIZE: u32 = size_of::<types::Dirent>() as _;
1708
+ assert_eq!(
1709
+ types::Dirent::guest_size(),
1710
+ DIRENT_SIZE,
1711
+ "Dirent guest repr and host repr should match"
1712
+ );
1713
+ let mut buf = *buf;
1714
+ let mut cap = buf_len;
1715
+ for (ref entry, path) in head.into_iter().chain(dir.into_iter()).skip(cookie) {
1716
+ let mut path = path.into_bytes();
1717
+ assert_eq!(
1718
+ 1,
1719
+ size_of_val(&entry.d_type),
1720
+ "Dirent member d_type should be endian-invariant"
1721
+ );
1722
+ let entry_len = cap.min(DIRENT_SIZE);
1723
+ let entry = entry as *const _ as _;
1724
+ let entry = unsafe { slice::from_raw_parts(entry, entry_len as _) };
1725
+ cap = cap.checked_sub(entry_len).unwrap();
1726
+ buf = write_bytes(buf, entry)?;
1727
+ if cap == 0 {
1728
+ return Ok(buf_len);
1729
+ }
1730
+
1731
+ if let Ok(cap) = cap.try_into() {
1732
+ // `path` cannot be longer than `usize`, only truncate if `cap` fits in `usize`
1733
+ path.truncate(cap);
1734
+ }
1735
+ cap = cap.checked_sub(path.len() as _).unwrap();
1736
+ buf = write_bytes(buf, &path)?;
1737
+ if cap == 0 {
1738
+ return Ok(buf_len);
1739
+ }
1740
+ }
1741
+ Ok(buf_len.checked_sub(cap).unwrap())
1742
+ }
1743
+
1744
+ #[instrument(skip(self))]
1745
+ async fn path_create_directory<'a>(
1746
+ &mut self,
1747
+ dirfd: types::Fd,
1748
+ path: &GuestPtr<'a, str>,
1749
+ ) -> Result<(), types::Error> {
1750
+ let dirfd = self.get_dir_fd(dirfd)?;
1751
+ let path = read_string(path)?;
1752
+ self.create_directory_at(dirfd.borrowed(), path)
1753
+ .await
1754
+ .map_err(|e| {
1755
+ e.try_into()
1756
+ .context("failed to call `create-directory-at`")
1757
+ .unwrap_or_else(types::Error::trap)
1758
+ })
1759
+ }
1760
+
1761
+ /// Return the attributes of a file or directory.
1762
+ /// NOTE: This is similar to `stat` in POSIX.
1763
+ #[instrument(skip(self))]
1764
+ async fn path_filestat_get<'a>(
1765
+ &mut self,
1766
+ dirfd: types::Fd,
1767
+ flags: types::Lookupflags,
1768
+ path: &GuestPtr<'a, str>,
1769
+ ) -> Result<types::Filestat, types::Error> {
1770
+ let dirfd = self.get_dir_fd(dirfd)?;
1771
+ let path = read_string(path)?;
1772
+ let filesystem::DescriptorStat {
1773
+ type_,
1774
+ link_count: nlink,
1775
+ size,
1776
+ data_access_timestamp,
1777
+ data_modification_timestamp,
1778
+ status_change_timestamp,
1779
+ } = self
1780
+ .stat_at(dirfd.borrowed(), flags.into(), path.clone())
1781
+ .await
1782
+ .map_err(|e| {
1783
+ e.try_into()
1784
+ .context("failed to call `stat-at`")
1785
+ .unwrap_or_else(types::Error::trap)
1786
+ })?;
1787
+ let metadata_hash = self
1788
+ .metadata_hash_at(dirfd, flags.into(), path)
1789
+ .await
1790
+ .map_err(|e| {
1791
+ e.try_into()
1792
+ .context("failed to call `metadata-hash-at`")
1793
+ .unwrap_or_else(types::Error::trap)
1794
+ })?;
1795
+ let filetype = type_.try_into().map_err(types::Error::trap)?;
1796
+ let zero = wall_clock::Datetime {
1797
+ seconds: 0,
1798
+ nanoseconds: 0,
1799
+ };
1800
+ let atim = data_access_timestamp.unwrap_or(zero).try_into()?;
1801
+ let mtim = data_modification_timestamp.unwrap_or(zero).try_into()?;
1802
+ let ctim = status_change_timestamp.unwrap_or(zero).try_into()?;
1803
+ Ok(types::Filestat {
1804
+ dev: 1,
1805
+ ino: metadata_hash.lower,
1806
+ filetype,
1807
+ nlink,
1808
+ size,
1809
+ atim,
1810
+ mtim,
1811
+ ctim,
1812
+ })
1813
+ }
1814
+
1815
+ /// Adjust the timestamps of a file or directory.
1816
+ /// NOTE: This is similar to `utimensat` in POSIX.
1817
+ #[instrument(skip(self))]
1818
+ async fn path_filestat_set_times<'a>(
1819
+ &mut self,
1820
+ dirfd: types::Fd,
1821
+ flags: types::Lookupflags,
1822
+ path: &GuestPtr<'a, str>,
1823
+ atim: types::Timestamp,
1824
+ mtim: types::Timestamp,
1825
+ fst_flags: types::Fstflags,
1826
+ ) -> Result<(), types::Error> {
1827
+ let atim = systimespec(
1828
+ fst_flags.contains(types::Fstflags::ATIM),
1829
+ atim,
1830
+ fst_flags.contains(types::Fstflags::ATIM_NOW),
1831
+ )?;
1832
+ let mtim = systimespec(
1833
+ fst_flags.contains(types::Fstflags::MTIM),
1834
+ mtim,
1835
+ fst_flags.contains(types::Fstflags::MTIM_NOW),
1836
+ )?;
1837
+
1838
+ let dirfd = self.get_dir_fd(dirfd)?;
1839
+ let path = read_string(path)?;
1840
+ self.set_times_at(dirfd, flags.into(), path, atim, mtim)
1841
+ .await
1842
+ .map_err(|e| {
1843
+ e.try_into()
1844
+ .context("failed to call `set-times-at`")
1845
+ .unwrap_or_else(types::Error::trap)
1846
+ })
1847
+ }
1848
+
1849
+ /// Create a hard link.
1850
+ /// NOTE: This is similar to `linkat` in POSIX.
1851
+ #[instrument(skip(self))]
1852
+ async fn path_link<'a>(
1853
+ &mut self,
1854
+ src_fd: types::Fd,
1855
+ src_flags: types::Lookupflags,
1856
+ src_path: &GuestPtr<'a, str>,
1857
+ target_fd: types::Fd,
1858
+ target_path: &GuestPtr<'a, str>,
1859
+ ) -> Result<(), types::Error> {
1860
+ let src_fd = self.get_dir_fd(src_fd)?;
1861
+ let target_fd = self.get_dir_fd(target_fd)?;
1862
+ let src_path = read_string(src_path)?;
1863
+ let target_path = read_string(target_path)?;
1864
+ self.link_at(src_fd, src_flags.into(), src_path, target_fd, target_path)
1865
+ .await
1866
+ .map_err(|e| {
1867
+ e.try_into()
1868
+ .context("failed to call `link-at`")
1869
+ .unwrap_or_else(types::Error::trap)
1870
+ })
1871
+ }
1872
+
1873
+ /// Open a file or directory.
1874
+ /// NOTE: This is similar to `openat` in POSIX.
1875
+ #[instrument(skip(self))]
1876
+ async fn path_open<'a>(
1877
+ &mut self,
1878
+ dirfd: types::Fd,
1879
+ dirflags: types::Lookupflags,
1880
+ path: &GuestPtr<'a, str>,
1881
+ oflags: types::Oflags,
1882
+ fs_rights_base: types::Rights,
1883
+ _fs_rights_inheriting: types::Rights,
1884
+ fdflags: types::Fdflags,
1885
+ ) -> Result<types::Fd, types::Error> {
1886
+ let path = read_string(path)?;
1887
+
1888
+ let mut flags = filesystem::DescriptorFlags::empty();
1889
+ if fs_rights_base.contains(types::Rights::FD_READ) {
1890
+ flags |= filesystem::DescriptorFlags::READ;
1891
+ }
1892
+ if fs_rights_base.contains(types::Rights::FD_WRITE) {
1893
+ flags |= filesystem::DescriptorFlags::WRITE;
1894
+ }
1895
+ if fdflags.contains(types::Fdflags::SYNC) {
1896
+ flags |= filesystem::DescriptorFlags::FILE_INTEGRITY_SYNC;
1897
+ }
1898
+ if fdflags.contains(types::Fdflags::DSYNC) {
1899
+ flags |= filesystem::DescriptorFlags::DATA_INTEGRITY_SYNC;
1900
+ }
1901
+ if fdflags.contains(types::Fdflags::RSYNC) {
1902
+ flags |= filesystem::DescriptorFlags::REQUESTED_WRITE_SYNC;
1903
+ }
1904
+
1905
+ let t = self.transact()?;
1906
+ let dirfd = match t.get_descriptor(dirfd)? {
1907
+ Descriptor::PreopenDirectory((fd, _)) => fd.borrowed(),
1908
+ Descriptor::File(File { fd, .. }) => {
1909
+ t.view.table().get(fd)?.dir()?;
1910
+ fd.borrowed()
1911
+ }
1912
+ _ => return Err(types::Errno::Badf.into()),
1913
+ };
1914
+ drop(t);
1915
+ let fd = self
1916
+ .open_at(dirfd, dirflags.into(), path, oflags.into(), flags)
1917
+ .await
1918
+ .map_err(|e| {
1919
+ e.try_into()
1920
+ .context("failed to call `open-at`")
1921
+ .unwrap_or_else(types::Error::trap)
1922
+ })?;
1923
+ let fd = self.transact()?.descriptors.push_file(File {
1924
+ fd,
1925
+ position: Default::default(),
1926
+ append: fdflags.contains(types::Fdflags::APPEND),
1927
+ blocking_mode: BlockingMode::from_fdflags(&fdflags),
1928
+ })?;
1929
+ Ok(fd.into())
1930
+ }
1931
+
1932
+ /// Read the contents of a symbolic link.
1933
+ /// NOTE: This is similar to `readlinkat` in POSIX.
1934
+ #[instrument(skip(self))]
1935
+ async fn path_readlink<'a>(
1936
+ &mut self,
1937
+ dirfd: types::Fd,
1938
+ path: &GuestPtr<'a, str>,
1939
+ buf: &GuestPtr<'a, u8>,
1940
+ buf_len: types::Size,
1941
+ ) -> Result<types::Size, types::Error> {
1942
+ let dirfd = self.get_dir_fd(dirfd)?;
1943
+ let path = read_string(path)?;
1944
+ let mut path = self
1945
+ .readlink_at(dirfd, path)
1946
+ .await
1947
+ .map_err(|e| {
1948
+ e.try_into()
1949
+ .context("failed to call `readlink-at`")
1950
+ .unwrap_or_else(types::Error::trap)
1951
+ })?
1952
+ .into_bytes();
1953
+ if let Ok(buf_len) = buf_len.try_into() {
1954
+ // `path` cannot be longer than `usize`, only truncate if `buf_len` fits in `usize`
1955
+ path.truncate(buf_len);
1956
+ }
1957
+ let n = path.len().try_into().map_err(|_| types::Errno::Overflow)?;
1958
+ write_bytes(buf, &path)?;
1959
+ Ok(n)
1960
+ }
1961
+
1962
+ #[instrument(skip(self))]
1963
+ async fn path_remove_directory<'a>(
1964
+ &mut self,
1965
+ dirfd: types::Fd,
1966
+ path: &GuestPtr<'a, str>,
1967
+ ) -> Result<(), types::Error> {
1968
+ let dirfd = self.get_dir_fd(dirfd)?;
1969
+ let path = read_string(path)?;
1970
+ self.remove_directory_at(dirfd, path).await.map_err(|e| {
1971
+ e.try_into()
1972
+ .context("failed to call `remove-directory-at`")
1973
+ .unwrap_or_else(types::Error::trap)
1974
+ })
1975
+ }
1976
+
1977
+ /// Rename a file or directory.
1978
+ /// NOTE: This is similar to `renameat` in POSIX.
1979
+ #[instrument(skip(self))]
1980
+ async fn path_rename<'a>(
1981
+ &mut self,
1982
+ src_fd: types::Fd,
1983
+ src_path: &GuestPtr<'a, str>,
1984
+ dest_fd: types::Fd,
1985
+ dest_path: &GuestPtr<'a, str>,
1986
+ ) -> Result<(), types::Error> {
1987
+ let src_fd = self.get_dir_fd(src_fd)?;
1988
+ let dest_fd = self.get_dir_fd(dest_fd)?;
1989
+ let src_path = read_string(src_path)?;
1990
+ let dest_path = read_string(dest_path)?;
1991
+ self.rename_at(src_fd, src_path, dest_fd, dest_path)
1992
+ .await
1993
+ .map_err(|e| {
1994
+ e.try_into()
1995
+ .context("failed to call `rename-at`")
1996
+ .unwrap_or_else(types::Error::trap)
1997
+ })
1998
+ }
1999
+
2000
+ #[instrument(skip(self))]
2001
+ async fn path_symlink<'a>(
2002
+ &mut self,
2003
+ src_path: &GuestPtr<'a, str>,
2004
+ dirfd: types::Fd,
2005
+ dest_path: &GuestPtr<'a, str>,
2006
+ ) -> Result<(), types::Error> {
2007
+ let dirfd = self.get_dir_fd(dirfd)?;
2008
+ let src_path = read_string(src_path)?;
2009
+ let dest_path = read_string(dest_path)?;
2010
+ self.symlink_at(dirfd.borrowed(), src_path, dest_path)
2011
+ .await
2012
+ .map_err(|e| {
2013
+ e.try_into()
2014
+ .context("failed to call `symlink-at`")
2015
+ .unwrap_or_else(types::Error::trap)
2016
+ })
2017
+ }
2018
+
2019
+ #[instrument(skip(self))]
2020
+ async fn path_unlink_file<'a>(
2021
+ &mut self,
2022
+ dirfd: types::Fd,
2023
+ path: &GuestPtr<'a, str>,
2024
+ ) -> Result<(), types::Error> {
2025
+ let dirfd = self.get_dir_fd(dirfd)?;
2026
+ let path = path.as_cow()?.to_string();
2027
+ self.unlink_file_at(dirfd.borrowed(), path)
2028
+ .await
2029
+ .map_err(|e| {
2030
+ e.try_into()
2031
+ .context("failed to call `unlink-file-at`")
2032
+ .unwrap_or_else(types::Error::trap)
2033
+ })
2034
+ }
2035
+
2036
+ #[instrument(skip(self))]
2037
+ async fn poll_oneoff<'a>(
2038
+ &mut self,
2039
+ subs: &GuestPtr<'a, types::Subscription>,
2040
+ events: &GuestPtr<'a, types::Event>,
2041
+ nsubscriptions: types::Size,
2042
+ ) -> Result<types::Size, types::Error> {
2043
+ if nsubscriptions == 0 {
2044
+ // Indefinite sleeping is not supported in preview1.
2045
+ return Err(types::Errno::Inval.into());
2046
+ }
2047
+ let subs = subs.as_array(nsubscriptions);
2048
+ let events = events.as_array(nsubscriptions);
2049
+
2050
+ let n = usize::try_from(nsubscriptions).unwrap_or(usize::MAX);
2051
+ let mut pollables = Vec::with_capacity(n);
2052
+ for sub in subs.iter() {
2053
+ let sub = sub?.read()?;
2054
+ let p = match sub.u {
2055
+ types::SubscriptionU::Clock(types::SubscriptionClock {
2056
+ id,
2057
+ timeout,
2058
+ flags,
2059
+ ..
2060
+ }) => {
2061
+ let absolute = flags.contains(types::Subclockflags::SUBSCRIPTION_CLOCK_ABSTIME);
2062
+ let (timeout, absolute) = match id {
2063
+ types::Clockid::Monotonic => (timeout, absolute),
2064
+ types::Clockid::Realtime if !absolute => (timeout, false),
2065
+ types::Clockid::Realtime => {
2066
+ let now = wall_clock::Host::now(self)
2067
+ .context("failed to call `wall_clock::now`")
2068
+ .map_err(types::Error::trap)?;
2069
+
2070
+ // Convert `timeout` to `Datetime` format.
2071
+ let seconds = timeout / 1_000_000_000;
2072
+ let nanoseconds = timeout % 1_000_000_000;
2073
+
2074
+ let timeout = if now.seconds < seconds
2075
+ || now.seconds == seconds
2076
+ && u64::from(now.nanoseconds) < nanoseconds
2077
+ {
2078
+ // `now` is less than `timeout`, which is expressable as u64,
2079
+ // substract the nanosecond counts directly
2080
+ now.seconds * 1_000_000_000 + u64::from(now.nanoseconds) - timeout
2081
+ } else {
2082
+ 0
2083
+ };
2084
+ (timeout, false)
2085
+ }
2086
+ _ => return Err(types::Errno::Inval.into()),
2087
+ };
2088
+ if absolute {
2089
+ monotonic_clock::Host::subscribe_instant(self, timeout)
2090
+ .context("failed to call `monotonic_clock::subscribe_instant`")
2091
+ .map_err(types::Error::trap)?
2092
+ } else {
2093
+ monotonic_clock::Host::subscribe_duration(self, timeout)
2094
+ .context("failed to call `monotonic_clock::subscribe_duration`")
2095
+ .map_err(types::Error::trap)?
2096
+ }
2097
+ }
2098
+ types::SubscriptionU::FdRead(types::SubscriptionFdReadwrite {
2099
+ file_descriptor,
2100
+ }) => {
2101
+ let stream = {
2102
+ let t = self.transact()?;
2103
+ let desc = t.get_descriptor(file_descriptor)?;
2104
+ match desc {
2105
+ Descriptor::Stdin { stream, .. } => stream.borrowed(),
2106
+ Descriptor::File(File { fd, position, .. })
2107
+ if t.view.table().get(fd)?.is_file() =>
2108
+ {
2109
+ let pos = position.load(Ordering::Relaxed);
2110
+ let fd = fd.borrowed();
2111
+ drop(t);
2112
+ self.read_via_stream(fd, pos).map_err(|e| {
2113
+ e.try_into()
2114
+ .context("failed to call `read-via-stream`")
2115
+ .unwrap_or_else(types::Error::trap)
2116
+ })?
2117
+ }
2118
+ // TODO: Support sockets
2119
+ _ => return Err(types::Errno::Badf.into()),
2120
+ }
2121
+ };
2122
+ streams::HostInputStream::subscribe(self, stream)
2123
+ .context("failed to call `subscribe` on `input-stream`")
2124
+ .map_err(types::Error::trap)?
2125
+ }
2126
+ types::SubscriptionU::FdWrite(types::SubscriptionFdReadwrite {
2127
+ file_descriptor,
2128
+ }) => {
2129
+ let stream = {
2130
+ let t = self.transact()?;
2131
+ let desc = t.get_descriptor(file_descriptor)?;
2132
+ match desc {
2133
+ Descriptor::Stdout { stream, .. }
2134
+ | Descriptor::Stderr { stream, .. } => stream.borrowed(),
2135
+ Descriptor::File(File {
2136
+ fd,
2137
+ position,
2138
+ append,
2139
+ ..
2140
+ }) if t.view.table().get(fd)?.is_file() => {
2141
+ let fd = fd.borrowed();
2142
+ let position = position.clone();
2143
+ let append = *append;
2144
+ drop(t);
2145
+ if append {
2146
+ self.append_via_stream(fd).map_err(|e| {
2147
+ e.try_into()
2148
+ .context("failed to call `append-via-stream`")
2149
+ .unwrap_or_else(types::Error::trap)
2150
+ })?
2151
+ } else {
2152
+ let pos = position.load(Ordering::Relaxed);
2153
+ self.write_via_stream(fd, pos).map_err(|e| {
2154
+ e.try_into()
2155
+ .context("failed to call `write-via-stream`")
2156
+ .unwrap_or_else(types::Error::trap)
2157
+ })?
2158
+ }
2159
+ }
2160
+ // TODO: Support sockets
2161
+ _ => return Err(types::Errno::Badf.into()),
2162
+ }
2163
+ };
2164
+ streams::HostOutputStream::subscribe(self, stream)
2165
+ .context("failed to call `subscribe` on `output-stream`")
2166
+ .map_err(types::Error::trap)?
2167
+ }
2168
+ };
2169
+ pollables.push(p);
2170
+ }
2171
+ let ready: HashSet<_> = self
2172
+ .poll(pollables)
2173
+ .await
2174
+ .context("failed to call `poll-oneoff`")
2175
+ .map_err(types::Error::trap)?
2176
+ .into_iter()
2177
+ .collect();
2178
+
2179
+ let mut count: types::Size = 0;
2180
+ for (sub, event) in (0..)
2181
+ .zip(subs.iter())
2182
+ .filter_map(|(idx, sub)| ready.contains(&idx).then_some(sub))
2183
+ .zip(events.iter())
2184
+ {
2185
+ let sub = sub?.read()?;
2186
+ let event = event?;
2187
+ let e = match sub.u {
2188
+ types::SubscriptionU::Clock(..) => types::Event {
2189
+ userdata: sub.userdata,
2190
+ error: types::Errno::Success,
2191
+ type_: types::Eventtype::Clock,
2192
+ fd_readwrite: types::EventFdReadwrite {
2193
+ flags: types::Eventrwflags::empty(),
2194
+ nbytes: 0,
2195
+ },
2196
+ },
2197
+ types::SubscriptionU::FdRead(types::SubscriptionFdReadwrite {
2198
+ file_descriptor,
2199
+ }) => {
2200
+ let t = self.transact()?;
2201
+ let desc = t.get_descriptor(file_descriptor)?;
2202
+ match desc {
2203
+ Descriptor::Stdin { .. } => types::Event {
2204
+ userdata: sub.userdata,
2205
+ error: types::Errno::Success,
2206
+ type_: types::Eventtype::FdRead,
2207
+ fd_readwrite: types::EventFdReadwrite {
2208
+ flags: types::Eventrwflags::empty(),
2209
+ nbytes: 1,
2210
+ },
2211
+ },
2212
+ Descriptor::File(File { fd, position, .. })
2213
+ if t.view.table().get(fd)?.is_file() =>
2214
+ {
2215
+ let fd = fd.borrowed();
2216
+ let position = position.clone();
2217
+ drop(t);
2218
+ match self.stat(fd).await? {
2219
+ filesystem::DescriptorStat { size, .. } => {
2220
+ let pos = position.load(Ordering::Relaxed);
2221
+ let nbytes = size.saturating_sub(pos);
2222
+ types::Event {
2223
+ userdata: sub.userdata,
2224
+ error: types::Errno::Success,
2225
+ type_: types::Eventtype::FdRead,
2226
+ fd_readwrite: types::EventFdReadwrite {
2227
+ flags: if nbytes == 0 {
2228
+ types::Eventrwflags::FD_READWRITE_HANGUP
2229
+ } else {
2230
+ types::Eventrwflags::empty()
2231
+ },
2232
+ nbytes: 1,
2233
+ },
2234
+ }
2235
+ }
2236
+ }
2237
+ }
2238
+ // TODO: Support sockets
2239
+ _ => return Err(types::Errno::Badf.into()),
2240
+ }
2241
+ }
2242
+ types::SubscriptionU::FdWrite(types::SubscriptionFdReadwrite {
2243
+ file_descriptor,
2244
+ }) => {
2245
+ let t = self.transact()?;
2246
+ let desc = t.get_descriptor(file_descriptor)?;
2247
+ match desc {
2248
+ Descriptor::Stdout { .. } | Descriptor::Stderr { .. } => types::Event {
2249
+ userdata: sub.userdata,
2250
+ error: types::Errno::Success,
2251
+ type_: types::Eventtype::FdWrite,
2252
+ fd_readwrite: types::EventFdReadwrite {
2253
+ flags: types::Eventrwflags::empty(),
2254
+ nbytes: 1,
2255
+ },
2256
+ },
2257
+ Descriptor::File(File { fd, .. }) if t.view.table().get(fd)?.is_file() => {
2258
+ types::Event {
2259
+ userdata: sub.userdata,
2260
+ error: types::Errno::Success,
2261
+ type_: types::Eventtype::FdWrite,
2262
+ fd_readwrite: types::EventFdReadwrite {
2263
+ flags: types::Eventrwflags::empty(),
2264
+ nbytes: 1,
2265
+ },
2266
+ }
2267
+ }
2268
+ // TODO: Support sockets
2269
+ _ => return Err(types::Errno::Badf.into()),
2270
+ }
2271
+ }
2272
+ };
2273
+ event.write(e)?;
2274
+ count = count
2275
+ .checked_add(1)
2276
+ .ok_or_else(|| types::Error::from(types::Errno::Overflow))?
2277
+ }
2278
+ Ok(count)
2279
+ }
2280
+
2281
+ #[instrument(skip(self))]
2282
+ fn proc_exit(&mut self, status: types::Exitcode) -> anyhow::Error {
2283
+ // Check that the status is within WASI's range.
2284
+ if status >= 126 {
2285
+ return anyhow::Error::msg("exit with invalid exit status outside of [0..126)");
2286
+ }
2287
+ crate::preview2::I32Exit(status as i32).into()
2288
+ }
2289
+
2290
+ #[instrument(skip(self))]
2291
+ fn proc_raise(&mut self, _sig: types::Signal) -> Result<(), types::Error> {
2292
+ Err(types::Errno::Notsup.into())
2293
+ }
2294
+
2295
+ #[instrument(skip(self))]
2296
+ fn sched_yield(&mut self) -> Result<(), types::Error> {
2297
+ // No such thing in preview 2. Intentionally left empty.
2298
+ Ok(())
2299
+ }
2300
+
2301
+ #[instrument(skip(self))]
2302
+ fn random_get<'a>(
2303
+ &mut self,
2304
+ buf: &GuestPtr<'a, u8>,
2305
+ buf_len: types::Size,
2306
+ ) -> Result<(), types::Error> {
2307
+ let rand = self
2308
+ .get_random_bytes(buf_len.into())
2309
+ .context("failed to call `get-random-bytes`")
2310
+ .map_err(types::Error::trap)?;
2311
+ write_bytes(buf, &rand)?;
2312
+ Ok(())
2313
+ }
2314
+
2315
+ #[allow(unused_variables)]
2316
+ #[instrument(skip(self))]
2317
+ fn sock_accept(
2318
+ &mut self,
2319
+ fd: types::Fd,
2320
+ flags: types::Fdflags,
2321
+ ) -> Result<types::Fd, types::Error> {
2322
+ todo!("preview1 sock_accept is not implemented")
2323
+ }
2324
+
2325
+ #[allow(unused_variables)]
2326
+ #[instrument(skip(self))]
2327
+ fn sock_recv<'a>(
2328
+ &mut self,
2329
+ fd: types::Fd,
2330
+ ri_data: &types::IovecArray<'a>,
2331
+ ri_flags: types::Riflags,
2332
+ ) -> Result<(types::Size, types::Roflags), types::Error> {
2333
+ todo!("preview1 sock_recv is not implemented")
2334
+ }
2335
+
2336
+ #[allow(unused_variables)]
2337
+ #[instrument(skip(self))]
2338
+ fn sock_send<'a>(
2339
+ &mut self,
2340
+ fd: types::Fd,
2341
+ si_data: &types::CiovecArray<'a>,
2342
+ _si_flags: types::Siflags,
2343
+ ) -> Result<types::Size, types::Error> {
2344
+ todo!("preview1 sock_send is not implemented")
2345
+ }
2346
+
2347
+ #[allow(unused_variables)]
2348
+ #[instrument(skip(self))]
2349
+ fn sock_shutdown(&mut self, fd: types::Fd, how: types::Sdflags) -> Result<(), types::Error> {
2350
+ todo!("preview1 sock_shutdown is not implemented")
2351
+ }
2352
+ }
2353
+
2354
+ trait ResourceExt<T> {
2355
+ fn borrowed(&self) -> Resource<T>;
2356
+ }
2357
+
2358
+ impl<T: 'static> ResourceExt<T> for Resource<T> {
2359
+ fn borrowed(&self) -> Resource<T> {
2360
+ Resource::new_borrow(self.rep())
2361
+ }
2362
+ }