wasmtime 15.0.1 → 16.0.0

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