├── .formatter.exs ├── .github ├── CODEOWNERS └── workflows │ ├── ci.yaml │ └── release.yaml ├── .gitignore ├── LICENSE ├── Makefile ├── README.md ├── lib ├── extism.ex └── extism │ ├── cancel_handle.ex │ ├── native.ex │ └── plugin.ex ├── logo.png ├── mix.exs ├── mix.lock ├── native └── extism_nif │ ├── .cargo │ └── config │ ├── .gitignore │ ├── Cargo.lock │ ├── Cargo.toml │ └── src │ └── lib.rs ├── test ├── extism_test.exs └── test_helper.exs └── wasm ├── count-vowels.wasm └── json-plugin.wasm /.formatter.exs: -------------------------------------------------------------------------------- 1 | # Used by "mix format" 2 | [ 3 | inputs: ["{mix,.formatter}.exs", "{config,lib,test}/**/*.{ex,exs}"] 4 | ] 5 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @bhelx 2 | -------------------------------------------------------------------------------- /.github/workflows/ci.yaml: -------------------------------------------------------------------------------- 1 | name: Elixir CI 2 | 3 | on: 4 | push: 5 | branches: [ main ] 6 | pull_request: 7 | branches: [ main ] 8 | 9 | jobs: 10 | ci: 11 | name: Elixir CI 12 | runs-on: ubuntu-latest 13 | env: 14 | MIX_ENV: test 15 | steps: 16 | - name: Checkout sources 17 | uses: actions/checkout@v3 18 | - name: Setup Rust 19 | uses: actions-rs/toolchain@v1 20 | with: 21 | toolchain: stable 22 | - name: Setup Elixir Host SDK 23 | uses: erlef/setup-beam@v1 24 | with: 25 | experimental-otp: true 26 | otp-version: '25.0.4' 27 | elixir-version: '1.14.0' 28 | - name: Test Elixir Host SDK 29 | run: | 30 | LD_LIBRARY_PATH=/usr/local/lib make test 31 | 32 | -------------------------------------------------------------------------------- /.github/workflows/release.yaml: -------------------------------------------------------------------------------- 1 | on: 2 | workflow_dispatch: 3 | push: 4 | tags: 5 | - '*' 6 | 7 | name: Release Elixir SDK 8 | 9 | jobs: 10 | release-sdks: 11 | name: release-elixir 12 | runs-on: ubuntu-latest 13 | steps: 14 | - name: Checkout 15 | uses: actions/checkout@v3 16 | - name: Setup Elixir Host SDK 17 | uses: erlef/setup-beam@v1 18 | with: 19 | experimental-otp: true 20 | otp-version: '25.0.4' 21 | elixir-version: '1.14.0' 22 | - name: Publish Elixir Host SDK to hex.pm 23 | env: 24 | HEX_API_KEY: ${{ secrets.HEX_PM_API_TOKEN }} 25 | run: | 26 | make publish 27 | 28 | 29 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # The directory Mix will write compiled artifacts to. 2 | /_build/ 3 | 4 | # If you run "mix test --cover", coverage assets end up here. 5 | /cover/ 6 | 7 | # The directory Mix downloads your dependencies sources to. 8 | /deps/ 9 | 10 | # Where third-party dependencies like ExDoc output generated docs. 11 | /doc/ 12 | 13 | # Ignore .fetch files in case you like to edit your project deps locally. 14 | /.fetch 15 | 16 | # If the VM crashes, it generates a dump, let's ignore it too. 17 | erl_crash.dump 18 | 19 | # Also ignore archive artifacts (built via "mix archive.build"). 20 | *.ez 21 | 22 | # Ignore package tarball (built via "mix hex.build"). 23 | extism-*.tar 24 | 25 | # Temporary files, for example, from tests. 26 | /tmp/ 27 | 28 | /priv/ 29 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2022 Dylibso, Inc. 2 | 3 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 4 | 5 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 6 | 7 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 8 | 9 | 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. 10 | 11 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: test 2 | 3 | prepare: 4 | mix deps.get 5 | mix compile 6 | 7 | test: prepare 8 | mix test 9 | 10 | clean: 11 | mix clean 12 | 13 | publish: clean prepare 14 | mix hex.build 15 | mix hex.publish --yes 16 | 17 | format: 18 | mix format 19 | 20 | lint: 21 | mix format --check-formatted 22 | 23 | docs: 24 | mix docs 25 | 26 | show-docs: docs 27 | open doc/index.html 28 | 29 | seed: 30 | curl -L https://github.com/extism/plugins/releases/latest/download/count_vowels.debug.wasm > wasm/count-vowels.wasm 31 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Extism 2 | 3 | Extism Host SDK for Elixir 4 | 5 | ## Docs 6 | 7 | Read the [docs on hexdocs.pm](https://hexdocs.pm/extism/). 8 | 9 | ## Installation 10 | 11 | You can find this package on hex.pm [![hex.pm](https://img.shields.io/hexpm/v/extism.svg)](https://hex.pm/packages/extism) 12 | 13 | ```elixir 14 | def deps do 15 | [ 16 | {:extism, "1.0.0"} 17 | ] 18 | end 19 | ``` 20 | 21 | > **Note**: You do not need to install the Extism Runtime shared object, but you will need a rust toolchain installed to build this package. See [Install Rust](https://www.rust-lang.org/tools/install) to install for your platform. 22 | 23 | ## Getting Started 24 | 25 | This guide should walk you through some of the concepts in Extism and this Elixir library. 26 | 27 | > *Note*: You should be able to follow this guide by copy pasting the code into `iex` using `iex -S mix`. 28 | 29 | ### Creating A Plug-in 30 | 31 | The primary concept in Extism is the [plug-in](https://extism.org/docs/concepts/plug-in). You can think of a plug-in as a code module stored in a `.wasm` file. 32 | 33 | Since you may not have an Extism plug-in on hand to test, let's load a demo plug-in from the web: 34 | 35 | ```elixir 36 | url = "https://github.com/extism/plugins/releases/latest/download/count_vowels.wasm" 37 | manifest = %{wasm: [%{url: url}]} 38 | {:ok, plugin} = Extism.Plugin.new(manifest, false) 39 | ``` 40 | 41 | > **Note**: See [the Manifest docs](https://extism.org/docs/concepts/manifest) as it has a rich schema and a lot of options. 42 | 43 | ### Calling A Plug-in's Exports 44 | 45 | This plug-in was written in Rust and it does one thing, it counts vowels in a string. As such, it exposes one "export" function: `count_vowels`. We can call exports using [Extism.Plugin#call/3](https://hexdocs.pm/extism/Extism.Plugin.html#call/3): 46 | 47 | ```elixir 48 | {:ok, output} = Extism.Plugin.call(plugin, "count_vowels", "Hello, World!") 49 | # => {"count": 3, "total": 3, "vowels": "aeiouAEIOU"} 50 | ``` 51 | 52 | All exports have a simple interface of bytes-in and bytes-out. This plug-in happens to take a string and return a JSON encoded string with a report of results. 53 | 54 | ### Plug-in State 55 | 56 | Plug-ins may be stateful or stateless. Plug-ins can maintain state b/w calls by the use of variables. Our count vowels plug-in remembers the total number of vowels it's ever counted in the "total" key in the result. You can see this by making subsequent calls to the export: 57 | 58 | ```elixir 59 | {:ok, output} = Extism.Plugin.call(plugin, "count_vowels", "Hello, World!") 60 | # => {"count": 3, "total": 6, "vowels": "aeiouAEIOU"} 61 | {:ok, output} = Extism.Plugin.call(plugin, "count_vowels", "Hello, World!") 62 | # => {"count": 3, "total": 9, "vowels": "aeiouAEIOU"} 63 | ``` 64 | 65 | These variables will persist until this plug-in is freed or you initialize a new one. 66 | 67 | ### Configuration 68 | 69 | > TODO: Implement config 70 | 71 | Plug-ins may optionally take a configuration object. This is a static way to configure the plug-in. Our count-vowels plugin takes an optional configuration to change out which characters are considered vowels. Example: 72 | 73 | ```elixir 74 | {:ok, output} = Extism.Plugin.call(plugin, "count_vowels", "Yellow, World!") 75 | # => {"count": 3, "total": 3, "vowels": "aeiouAEIOU"} 76 | 77 | {:ok, plugin} = Extism.Plugin.new(manifest, false, %{"vowels": "aeiouyAEIOUY"}) 78 | {:ok, output} = Extism.Plugin.call(plugin, "count_vowels", "Yellow, World!") 79 | plugin.call("count_vowels", "Yellow, World!") 80 | # => {"count": 4, "total": 4, "vowels": "aeiouAEIOUY"} 81 | ``` 82 | 83 | ### Host Functions 84 | 85 | We don't offer host function support in this library yet. If it is something you need, please [file an issue](https://github.com/extism/elixir-sdk/issues/new)! 86 | 87 | -------------------------------------------------------------------------------- /lib/extism.ex: -------------------------------------------------------------------------------- 1 | defmodule Extism do 2 | def set_log_file(filepath, level) do 3 | Extism.Native.set_log_file(filepath, level) 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /lib/extism/cancel_handle.ex: -------------------------------------------------------------------------------- 1 | defmodule Extism.CancelHandle do 2 | @moduledoc """ 3 | A CancelHandle is a handle generated by a plugin that allows it to be cancelled from another 4 | thread while running. 5 | """ 6 | defstruct [ 7 | # The actual NIF Resource 8 | handle: nil 9 | ] 10 | 11 | def wrap_resource(handle) do 12 | %__MODULE__{ 13 | handle: handle 14 | } 15 | end 16 | 17 | @doc """ 18 | Cancel plugin execution 19 | """ 20 | def cancel(handle) do 21 | Extism.Native.plugin_cancel(handle.handle) 22 | end 23 | end 24 | 25 | defimpl Inspect, for: Extim.CancelHandle do 26 | import Inspect.Algebra 27 | 28 | def inspect(dict, opts) do 29 | concat(["#Extism.CancelHandle<", to_doc(dict.handle, opts), ">"]) 30 | end 31 | end 32 | -------------------------------------------------------------------------------- /lib/extism/native.ex: -------------------------------------------------------------------------------- 1 | defmodule Extism.Native do 2 | @moduledoc """ 3 | This module represents the Native Extism runtime API and is for internal use. 4 | Do not use or rely on this this module. 5 | """ 6 | use Rustler, 7 | otp_app: :extism, 8 | crate: :extism_nif 9 | 10 | def plugin_new_with_manifest(_manifest, _wasi), do: error() 11 | def plugin_call(_plugin, _name, _input), do: error() 12 | def plugin_has_function(_plugin, _function_name), do: error() 13 | def plugin_free(_plugin), do: error() 14 | def set_log_file(_filename, _level), do: error() 15 | def plugin_cancel_handle(_plugin), do: error() 16 | def plugin_cancel(_handle), do: error() 17 | 18 | defp error, do: :erlang.nif_error(:nif_not_loaded) 19 | end 20 | -------------------------------------------------------------------------------- /lib/extism/plugin.ex: -------------------------------------------------------------------------------- 1 | defmodule Extism.Plugin do 2 | @moduledoc """ 3 | A Plugin represents an instance of your WASM program from the given manifest. 4 | """ 5 | defstruct [ 6 | # The actual NIF Resource 7 | plugin: nil, 8 | ] 9 | 10 | def wrap_resource(plugin) do 11 | %__MODULE__{ 12 | plugin: plugin 13 | } 14 | end 15 | 16 | @doc """ 17 | Creates a new plugin 18 | 19 | ## Parameters 20 | 21 | - manifest: The manifest as a map https://extism.org/docs/concepts/manifest/ 22 | - wasi: Use true to enable WASI. Defaults to false. 23 | 24 | ## Returns 25 | 26 | A result tuple with the plugin or an error 27 | """ 28 | def new(manifest, wasi \\ false) do 29 | {:ok, manifest_payload} = JSON.encode(manifest) 30 | 31 | case Extism.Native.plugin_new_with_manifest(manifest_payload, wasi) do 32 | {:error, err} -> {:error, err} 33 | res -> {:ok, Extism.Plugin.wrap_resource(res)} 34 | end 35 | end 36 | 37 | @doc """ 38 | Call a plugin's function by name 39 | 40 | ## Examples 41 | 42 | iex> {:ok, plugin} = Extism.Plugin.new(manifest, false) 43 | iex> {:ok, output} = Extism.Plugin.call(plugin, "count_vowels", "this is a test") 44 | # {:ok, "{\"count\": 4}"} 45 | 46 | ## Parameters 47 | 48 | - plugin: The plugin 49 | - name: The name of the function as a string 50 | - input: The input data as a string 51 | 52 | ## Returns 53 | 54 | A string representation of the functions output 55 | 56 | """ 57 | def call(plugin, name, input) do 58 | case Extism.Native.plugin_call(plugin.plugin, name, input) do 59 | {:error, err} -> {:error, err} 60 | res -> {:ok, res} 61 | end 62 | end 63 | 64 | @doc """ 65 | Frees the plugin 66 | """ 67 | def free(plugin) do 68 | Extism.Native.plugin_free(plugin.plugin) 69 | end 70 | 71 | @doc """ 72 | Returns true if the given plugin responds to the given function name 73 | """ 74 | def has_function(plugin, function_name) do 75 | Extism.Native.plugin_has_function(plugin.plugin, function_name) 76 | end 77 | end 78 | 79 | defimpl Inspect, for: Extim.Plugin do 80 | import Inspect.Algebra 81 | 82 | def inspect(dict, opts) do 83 | concat(["#Extism.Plugin<", to_doc(dict.plugin, opts), ">"]) 84 | end 85 | end 86 | -------------------------------------------------------------------------------- /logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/extism/elixir-sdk/79d20e1b3778e0c7544902ee53a3e5dfe8a43b0f/logo.png -------------------------------------------------------------------------------- /mix.exs: -------------------------------------------------------------------------------- 1 | defmodule Extism.MixProject do 2 | use Mix.Project 3 | 4 | def project do 5 | [ 6 | app: :extism, 7 | version: "1.0.0", 8 | elixir: "~> 1.12", 9 | start_permanent: Mix.env() == :prod, 10 | deps: deps(), 11 | package: package(), 12 | aliases: aliases(), 13 | docs: docs() 14 | ] 15 | end 16 | 17 | # Run "mix help compile.app" to learn about applications. 18 | def application do 19 | [ 20 | extra_applications: [:logger] 21 | ] 22 | end 23 | 24 | defp deps do 25 | [ 26 | {:rustler, "~> 0.29"}, 27 | {:json, "~> 1.4"}, 28 | {:ex_doc, "~> 0.21", only: :dev, runtime: false} 29 | ] 30 | end 31 | 32 | defp aliases do 33 | [ 34 | fmt: [ 35 | "format", 36 | "cmd cargo fmt --manifest-path native/io/Cargo.toml" 37 | ] 38 | ] 39 | end 40 | 41 | defp package do 42 | [ 43 | licenses: ["BSD-3-Clause"], 44 | description: "Extism Host SDK for Elixir and Erlang", 45 | name: "extism", 46 | files: ~w(lib native .formatter.exs mix.exs README.md LICENSE), 47 | links: %{"GitHub" => "https://github.com/extism/extism"} 48 | ] 49 | end 50 | 51 | defp docs do 52 | [ 53 | main: "Extism", 54 | logo: "./logo.png", 55 | main: "readme", 56 | extras: ["README.md"] 57 | ] 58 | end 59 | end 60 | -------------------------------------------------------------------------------- /mix.lock: -------------------------------------------------------------------------------- 1 | %{ 2 | "earmark_parser": {:hex, :earmark_parser, "1.4.39", "424642f8335b05bb9eb611aa1564c148a8ee35c9c8a8bba6e129d51a3e3c6769", [:mix], [], "hexpm", "06553a88d1f1846da9ef066b87b57c6f605552cfbe40d20bd8d59cc6bde41944"}, 3 | "ex_doc": {:hex, :ex_doc, "0.31.0", "06eb1dfd787445d9cab9a45088405593dd3bb7fe99e097eaa71f37ba80c7a676", [:mix], [{:earmark_parser, "~> 1.4.39", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.1", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "5350cafa6b7f77bdd107aa2199fe277acf29d739aba5aee7e865fc680c62a110"}, 4 | "jason": {:hex, :jason, "1.4.1", "af1504e35f629ddcdd6addb3513c3853991f694921b1b9368b0bd32beb9f1b63", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "fbb01ecdfd565b56261302f7e1fcc27c4fb8f32d56eab74db621fc154604a7a1"}, 5 | "json": {:hex, :json, "1.4.1", "8648f04a9439765ad449bc56a3ff7d8b11dd44ff08ffcdefc4329f7c93843dfa", [:mix], [], "hexpm", "9abf218dbe4ea4fcb875e087d5f904ef263d012ee5ed21d46e9dbca63f053d16"}, 6 | "makeup": {:hex, :makeup, "1.1.1", "fa0bc768698053b2b3869fa8a62616501ff9d11a562f3ce39580d60860c3a55e", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "5dc62fbdd0de44de194898b6710692490be74baa02d9d108bc29f007783b0b48"}, 7 | "makeup_elixir": {:hex, :makeup_elixir, "0.16.1", "cc9e3ca312f1cfeccc572b37a09980287e243648108384b97ff2b76e505c3555", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "e127a341ad1b209bd80f7bd1620a15693a9908ed780c3b763bccf7d200c767c6"}, 8 | "makeup_erlang": {:hex, :makeup_erlang, "0.1.3", "d684f4bac8690e70b06eb52dad65d26de2eefa44cd19d64a8095e1417df7c8fd", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "b78dc853d2e670ff6390b605d807263bf606da3c82be37f9d7f68635bd886fc9"}, 9 | "nimble_parsec": {:hex, :nimble_parsec, "1.4.0", "51f9b613ea62cfa97b25ccc2c1b4216e81df970acd8e16e8d1bdc58fef21370d", [:mix], [], "hexpm", "9c565862810fb383e9838c1dd2d7d2c437b3d13b267414ba6af33e50d2d1cf28"}, 10 | "rustler": {:hex, :rustler, "0.30.0", "cefc49922132b072853fa9b0ca4dc2ffcb452f68fb73b779042b02d545e097fb", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:toml, "~> 0.6", [hex: :toml, repo: "hexpm", optional: false]}], "hexpm", "9ef1abb6a7dda35c47cfc649e6a5a61663af6cf842a55814a554a84607dee389"}, 11 | "toml": {:hex, :toml, "0.7.0", "fbcd773caa937d0c7a02c301a1feea25612720ac3fa1ccb8bfd9d30d822911de", [:mix], [], "hexpm", "0690246a2478c1defd100b0c9b89b4ea280a22be9a7b313a8a058a2408a2fa70"}, 12 | } 13 | -------------------------------------------------------------------------------- /native/extism_nif/.cargo/config: -------------------------------------------------------------------------------- 1 | [target.'cfg(target_os = "macos")'] 2 | rustflags = [ 3 | "-C", "link-arg=-undefined", 4 | "-C", "link-arg=dynamic_lookup", 5 | ] 6 | 7 | # See https://github.com/rust-lang/rust/issues/59302 8 | [target.x86_64-unknown-linux-musl] 9 | rustflags = [ 10 | "-C", "target-feature=-crt-static" 11 | ] 12 | 13 | # Provides a small build size, but takes more time to build. 14 | [profile.release] 15 | lto = true 16 | -------------------------------------------------------------------------------- /native/extism_nif/.gitignore: -------------------------------------------------------------------------------- 1 | # Generated by Cargo 2 | # will have compiled files and executables 3 | debug/ 4 | target/ 5 | 6 | # Remove Cargo.lock from gitignore if creating an executable, leave it for libraries 7 | # More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html 8 | Cargo.lock 9 | 10 | # These are backup files generated by rustfmt 11 | **/*.rs.bk 12 | 13 | # MSVC Windows builds of rustc generate these, which store debugging information 14 | *.pdb 15 | -------------------------------------------------------------------------------- /native/extism_nif/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "addr2line" 7 | version = "0.21.0" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" 10 | dependencies = [ 11 | "gimli", 12 | ] 13 | 14 | [[package]] 15 | name = "adler" 16 | version = "1.0.2" 17 | source = "registry+https://github.com/rust-lang/crates.io-index" 18 | checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" 19 | 20 | [[package]] 21 | name = "ahash" 22 | version = "0.8.7" 23 | source = "registry+https://github.com/rust-lang/crates.io-index" 24 | checksum = "77c3a9648d43b9cd48db467b3f87fdd6e146bcc88ab0180006cef2179fe11d01" 25 | dependencies = [ 26 | "cfg-if", 27 | "once_cell", 28 | "version_check", 29 | "zerocopy", 30 | ] 31 | 32 | [[package]] 33 | name = "aho-corasick" 34 | version = "1.1.2" 35 | source = "registry+https://github.com/rust-lang/crates.io-index" 36 | checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" 37 | dependencies = [ 38 | "memchr", 39 | ] 40 | 41 | [[package]] 42 | name = "ambient-authority" 43 | version = "0.0.2" 44 | source = "registry+https://github.com/rust-lang/crates.io-index" 45 | checksum = "e9d4ee0d472d1cd2e28c97dfa124b3d8d992e10eb0a035f33f5d12e3a177ba3b" 46 | 47 | [[package]] 48 | name = "android_system_properties" 49 | version = "0.1.5" 50 | source = "registry+https://github.com/rust-lang/crates.io-index" 51 | checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 52 | dependencies = [ 53 | "libc", 54 | ] 55 | 56 | [[package]] 57 | name = "anyhow" 58 | version = "1.0.79" 59 | source = "registry+https://github.com/rust-lang/crates.io-index" 60 | checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" 61 | 62 | [[package]] 63 | name = "arbitrary" 64 | version = "1.3.2" 65 | source = "registry+https://github.com/rust-lang/crates.io-index" 66 | checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" 67 | 68 | [[package]] 69 | name = "async-trait" 70 | version = "0.1.77" 71 | source = "registry+https://github.com/rust-lang/crates.io-index" 72 | checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" 73 | dependencies = [ 74 | "proc-macro2", 75 | "quote", 76 | "syn 2.0.48", 77 | ] 78 | 79 | [[package]] 80 | name = "autocfg" 81 | version = "1.1.0" 82 | source = "registry+https://github.com/rust-lang/crates.io-index" 83 | checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" 84 | 85 | [[package]] 86 | name = "backtrace" 87 | version = "0.3.69" 88 | source = "registry+https://github.com/rust-lang/crates.io-index" 89 | checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" 90 | dependencies = [ 91 | "addr2line", 92 | "cc", 93 | "cfg-if", 94 | "libc", 95 | "miniz_oxide", 96 | "object", 97 | "rustc-demangle", 98 | ] 99 | 100 | [[package]] 101 | name = "base64" 102 | version = "0.21.6" 103 | source = "registry+https://github.com/rust-lang/crates.io-index" 104 | checksum = "c79fed4cdb43e993fcdadc7e58a09fd0e3e649c4436fa11da71c9f1f3ee7feb9" 105 | 106 | [[package]] 107 | name = "bincode" 108 | version = "1.3.3" 109 | source = "registry+https://github.com/rust-lang/crates.io-index" 110 | checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" 111 | dependencies = [ 112 | "serde", 113 | ] 114 | 115 | [[package]] 116 | name = "bitflags" 117 | version = "1.3.2" 118 | source = "registry+https://github.com/rust-lang/crates.io-index" 119 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 120 | 121 | [[package]] 122 | name = "bitflags" 123 | version = "2.4.1" 124 | source = "registry+https://github.com/rust-lang/crates.io-index" 125 | checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" 126 | 127 | [[package]] 128 | name = "block-buffer" 129 | version = "0.10.4" 130 | source = "registry+https://github.com/rust-lang/crates.io-index" 131 | checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 132 | dependencies = [ 133 | "generic-array", 134 | ] 135 | 136 | [[package]] 137 | name = "bumpalo" 138 | version = "3.14.0" 139 | source = "registry+https://github.com/rust-lang/crates.io-index" 140 | checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" 141 | 142 | [[package]] 143 | name = "bytemuck" 144 | version = "1.14.0" 145 | source = "registry+https://github.com/rust-lang/crates.io-index" 146 | checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" 147 | 148 | [[package]] 149 | name = "byteorder" 150 | version = "1.5.0" 151 | source = "registry+https://github.com/rust-lang/crates.io-index" 152 | checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 153 | 154 | [[package]] 155 | name = "bytes" 156 | version = "1.5.0" 157 | source = "registry+https://github.com/rust-lang/crates.io-index" 158 | checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" 159 | 160 | [[package]] 161 | name = "cap-fs-ext" 162 | version = "2.0.1" 163 | source = "registry+https://github.com/rust-lang/crates.io-index" 164 | checksum = "88e341d15ac1029aadce600be764a1a1edafe40e03cde23285bc1d261b3a4866" 165 | dependencies = [ 166 | "cap-primitives", 167 | "cap-std", 168 | "io-lifetimes", 169 | "windows-sys 0.52.0", 170 | ] 171 | 172 | [[package]] 173 | name = "cap-net-ext" 174 | version = "2.0.1" 175 | source = "registry+https://github.com/rust-lang/crates.io-index" 176 | checksum = "434168fe6533055f0f4204039abe3ff6d7db338ef46872a5fa39e9d5ad5ab7a9" 177 | dependencies = [ 178 | "cap-primitives", 179 | "cap-std", 180 | "rustix", 181 | "smallvec", 182 | ] 183 | 184 | [[package]] 185 | name = "cap-primitives" 186 | version = "2.0.1" 187 | source = "registry+https://github.com/rust-lang/crates.io-index" 188 | checksum = "fe16767ed8eee6d3f1f00d6a7576b81c226ab917eb54b96e5f77a5216ef67abb" 189 | dependencies = [ 190 | "ambient-authority", 191 | "fs-set-times", 192 | "io-extras", 193 | "io-lifetimes", 194 | "ipnet", 195 | "maybe-owned", 196 | "rustix", 197 | "windows-sys 0.52.0", 198 | "winx", 199 | ] 200 | 201 | [[package]] 202 | name = "cap-rand" 203 | version = "2.0.1" 204 | source = "registry+https://github.com/rust-lang/crates.io-index" 205 | checksum = "20e5695565f0cd7106bc3c7170323597540e772bb73e0be2cd2c662a0f8fa4ca" 206 | dependencies = [ 207 | "ambient-authority", 208 | "rand", 209 | ] 210 | 211 | [[package]] 212 | name = "cap-std" 213 | version = "2.0.1" 214 | source = "registry+https://github.com/rust-lang/crates.io-index" 215 | checksum = "593db20e4c51f62d3284bae7ee718849c3214f93a3b94ea1899ad85ba119d330" 216 | dependencies = [ 217 | "cap-primitives", 218 | "io-extras", 219 | "io-lifetimes", 220 | "rustix", 221 | ] 222 | 223 | [[package]] 224 | name = "cap-time-ext" 225 | version = "2.0.1" 226 | source = "registry+https://github.com/rust-lang/crates.io-index" 227 | checksum = "03261630f291f425430a36f38c847828265bc928f517cdd2004c56f4b02f002b" 228 | dependencies = [ 229 | "ambient-authority", 230 | "cap-primitives", 231 | "iana-time-zone", 232 | "once_cell", 233 | "rustix", 234 | "winx", 235 | ] 236 | 237 | [[package]] 238 | name = "cbindgen" 239 | version = "0.26.0" 240 | source = "registry+https://github.com/rust-lang/crates.io-index" 241 | checksum = "da6bc11b07529f16944307272d5bd9b22530bc7d05751717c9d416586cedab49" 242 | dependencies = [ 243 | "heck", 244 | "indexmap 1.9.3", 245 | "log", 246 | "proc-macro2", 247 | "quote", 248 | "serde", 249 | "serde_json", 250 | "syn 1.0.109", 251 | "tempfile", 252 | "toml 0.5.11", 253 | ] 254 | 255 | [[package]] 256 | name = "cc" 257 | version = "1.0.83" 258 | source = "registry+https://github.com/rust-lang/crates.io-index" 259 | checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" 260 | dependencies = [ 261 | "jobserver", 262 | "libc", 263 | ] 264 | 265 | [[package]] 266 | name = "cfg-if" 267 | version = "1.0.0" 268 | source = "registry+https://github.com/rust-lang/crates.io-index" 269 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 270 | 271 | [[package]] 272 | name = "core-foundation-sys" 273 | version = "0.8.6" 274 | source = "registry+https://github.com/rust-lang/crates.io-index" 275 | checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" 276 | 277 | [[package]] 278 | name = "cpp_demangle" 279 | version = "0.3.5" 280 | source = "registry+https://github.com/rust-lang/crates.io-index" 281 | checksum = "eeaa953eaad386a53111e47172c2fedba671e5684c8dd601a5f474f4f118710f" 282 | dependencies = [ 283 | "cfg-if", 284 | ] 285 | 286 | [[package]] 287 | name = "cpufeatures" 288 | version = "0.2.12" 289 | source = "registry+https://github.com/rust-lang/crates.io-index" 290 | checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" 291 | dependencies = [ 292 | "libc", 293 | ] 294 | 295 | [[package]] 296 | name = "cranelift-bforest" 297 | version = "0.103.0" 298 | source = "registry+https://github.com/rust-lang/crates.io-index" 299 | checksum = "7c22542c0b95bd3302f7ed6839869c561f2324bac2fd5e7e99f5cfa65fdc8b92" 300 | dependencies = [ 301 | "cranelift-entity", 302 | ] 303 | 304 | [[package]] 305 | name = "cranelift-codegen" 306 | version = "0.103.0" 307 | source = "registry+https://github.com/rust-lang/crates.io-index" 308 | checksum = "6b3db903ef2e9c8a4de2ea6db5db052c7857282952f9df604aa55d169e6000d8" 309 | dependencies = [ 310 | "bumpalo", 311 | "cranelift-bforest", 312 | "cranelift-codegen-meta", 313 | "cranelift-codegen-shared", 314 | "cranelift-control", 315 | "cranelift-entity", 316 | "cranelift-isle", 317 | "gimli", 318 | "hashbrown 0.14.3", 319 | "log", 320 | "regalloc2", 321 | "smallvec", 322 | "target-lexicon", 323 | ] 324 | 325 | [[package]] 326 | name = "cranelift-codegen-meta" 327 | version = "0.103.0" 328 | source = "registry+https://github.com/rust-lang/crates.io-index" 329 | checksum = "6590feb5a1d6438f974bf6a5ac4dddf69fca14e1f07f3265d880f69e61a94463" 330 | dependencies = [ 331 | "cranelift-codegen-shared", 332 | ] 333 | 334 | [[package]] 335 | name = "cranelift-codegen-shared" 336 | version = "0.103.0" 337 | source = "registry+https://github.com/rust-lang/crates.io-index" 338 | checksum = "7239038c56fafe77fddc8788fc8533dd6c474dc5bdc5637216404f41ba807330" 339 | 340 | [[package]] 341 | name = "cranelift-control" 342 | version = "0.103.0" 343 | source = "registry+https://github.com/rust-lang/crates.io-index" 344 | checksum = "f7dc9c595341404d381d27a3d950160856b35b402275f0c3990cd1ad683c8053" 345 | dependencies = [ 346 | "arbitrary", 347 | ] 348 | 349 | [[package]] 350 | name = "cranelift-entity" 351 | version = "0.103.0" 352 | source = "registry+https://github.com/rust-lang/crates.io-index" 353 | checksum = "44e3ee532fc4776c69bcedf7e62f9632cbb3f35776fa9a525cdade3195baa3f7" 354 | dependencies = [ 355 | "serde", 356 | "serde_derive", 357 | ] 358 | 359 | [[package]] 360 | name = "cranelift-frontend" 361 | version = "0.103.0" 362 | source = "registry+https://github.com/rust-lang/crates.io-index" 363 | checksum = "a612c94d09e653662ec37681dc2d6fd2b9856e6df7147be0afc9aabb0abf19df" 364 | dependencies = [ 365 | "cranelift-codegen", 366 | "log", 367 | "smallvec", 368 | "target-lexicon", 369 | ] 370 | 371 | [[package]] 372 | name = "cranelift-isle" 373 | version = "0.103.0" 374 | source = "registry+https://github.com/rust-lang/crates.io-index" 375 | checksum = "85db9830abeb1170b7d29b536ffd55af1d4d26ac8a77570b5d1aca003bf225cc" 376 | 377 | [[package]] 378 | name = "cranelift-native" 379 | version = "0.103.0" 380 | source = "registry+https://github.com/rust-lang/crates.io-index" 381 | checksum = "301ef0edafeaeda5771a5d2db64ac53e1818ae3111220a185677025fe91db4a1" 382 | dependencies = [ 383 | "cranelift-codegen", 384 | "libc", 385 | "target-lexicon", 386 | ] 387 | 388 | [[package]] 389 | name = "cranelift-wasm" 390 | version = "0.103.0" 391 | source = "registry+https://github.com/rust-lang/crates.io-index" 392 | checksum = "380f0abe8264e4570ac615fc31cef32a3b90a77f7eb97b08331f9dd357b1f500" 393 | dependencies = [ 394 | "cranelift-codegen", 395 | "cranelift-entity", 396 | "cranelift-frontend", 397 | "itertools 0.10.5", 398 | "log", 399 | "smallvec", 400 | "wasmparser", 401 | "wasmtime-types", 402 | ] 403 | 404 | [[package]] 405 | name = "crc32fast" 406 | version = "1.3.2" 407 | source = "registry+https://github.com/rust-lang/crates.io-index" 408 | checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" 409 | dependencies = [ 410 | "cfg-if", 411 | ] 412 | 413 | [[package]] 414 | name = "crossbeam-deque" 415 | version = "0.8.5" 416 | source = "registry+https://github.com/rust-lang/crates.io-index" 417 | checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" 418 | dependencies = [ 419 | "crossbeam-epoch", 420 | "crossbeam-utils", 421 | ] 422 | 423 | [[package]] 424 | name = "crossbeam-epoch" 425 | version = "0.9.18" 426 | source = "registry+https://github.com/rust-lang/crates.io-index" 427 | checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" 428 | dependencies = [ 429 | "crossbeam-utils", 430 | ] 431 | 432 | [[package]] 433 | name = "crossbeam-utils" 434 | version = "0.8.19" 435 | source = "registry+https://github.com/rust-lang/crates.io-index" 436 | checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" 437 | 438 | [[package]] 439 | name = "crypto-common" 440 | version = "0.1.6" 441 | source = "registry+https://github.com/rust-lang/crates.io-index" 442 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 443 | dependencies = [ 444 | "generic-array", 445 | "typenum", 446 | ] 447 | 448 | [[package]] 449 | name = "debugid" 450 | version = "0.8.0" 451 | source = "registry+https://github.com/rust-lang/crates.io-index" 452 | checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d" 453 | dependencies = [ 454 | "uuid", 455 | ] 456 | 457 | [[package]] 458 | name = "digest" 459 | version = "0.10.7" 460 | source = "registry+https://github.com/rust-lang/crates.io-index" 461 | checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 462 | dependencies = [ 463 | "block-buffer", 464 | "crypto-common", 465 | ] 466 | 467 | [[package]] 468 | name = "directories-next" 469 | version = "2.0.0" 470 | source = "registry+https://github.com/rust-lang/crates.io-index" 471 | checksum = "339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbc" 472 | dependencies = [ 473 | "cfg-if", 474 | "dirs-sys-next", 475 | ] 476 | 477 | [[package]] 478 | name = "dirs" 479 | version = "4.0.0" 480 | source = "registry+https://github.com/rust-lang/crates.io-index" 481 | checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" 482 | dependencies = [ 483 | "dirs-sys", 484 | ] 485 | 486 | [[package]] 487 | name = "dirs-sys" 488 | version = "0.3.7" 489 | source = "registry+https://github.com/rust-lang/crates.io-index" 490 | checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" 491 | dependencies = [ 492 | "libc", 493 | "redox_users", 494 | "winapi", 495 | ] 496 | 497 | [[package]] 498 | name = "dirs-sys-next" 499 | version = "0.1.2" 500 | source = "registry+https://github.com/rust-lang/crates.io-index" 501 | checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" 502 | dependencies = [ 503 | "libc", 504 | "redox_users", 505 | "winapi", 506 | ] 507 | 508 | [[package]] 509 | name = "either" 510 | version = "1.9.0" 511 | source = "registry+https://github.com/rust-lang/crates.io-index" 512 | checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" 513 | 514 | [[package]] 515 | name = "encoding_rs" 516 | version = "0.8.33" 517 | source = "registry+https://github.com/rust-lang/crates.io-index" 518 | checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" 519 | dependencies = [ 520 | "cfg-if", 521 | ] 522 | 523 | [[package]] 524 | name = "equivalent" 525 | version = "1.0.1" 526 | source = "registry+https://github.com/rust-lang/crates.io-index" 527 | checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" 528 | 529 | [[package]] 530 | name = "errno" 531 | version = "0.3.8" 532 | source = "registry+https://github.com/rust-lang/crates.io-index" 533 | checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" 534 | dependencies = [ 535 | "libc", 536 | "windows-sys 0.52.0", 537 | ] 538 | 539 | [[package]] 540 | name = "extism" 541 | version = "1.0.0" 542 | source = "registry+https://github.com/rust-lang/crates.io-index" 543 | checksum = "0929c64560cac1e9c71562ec1611dce2b383354371547d201802ab4abc23387b" 544 | dependencies = [ 545 | "anyhow", 546 | "cbindgen", 547 | "extism-convert", 548 | "extism-manifest", 549 | "glob", 550 | "libc", 551 | "serde", 552 | "serde_json", 553 | "sha2", 554 | "toml 0.8.8", 555 | "tracing", 556 | "tracing-subscriber", 557 | "ureq", 558 | "url", 559 | "uuid", 560 | "wasmtime", 561 | "wasmtime-wasi", 562 | ] 563 | 564 | [[package]] 565 | name = "extism-convert" 566 | version = "1.0.0" 567 | source = "registry+https://github.com/rust-lang/crates.io-index" 568 | checksum = "d01a01edfb12afa6ce5f4d5205831b0630edb867918aa3d2fc829a9dfbfa75f1" 569 | dependencies = [ 570 | "anyhow", 571 | "base64", 572 | "bytemuck", 573 | "prost", 574 | "rmp-serde", 575 | "serde", 576 | "serde_json", 577 | ] 578 | 579 | [[package]] 580 | name = "extism-manifest" 581 | version = "1.0.0" 582 | source = "registry+https://github.com/rust-lang/crates.io-index" 583 | checksum = "fb76af5cf0fd656e6dff25069056ef41ce0eb0541cc98c15b90b601a16fcfacc" 584 | dependencies = [ 585 | "base64", 586 | "serde", 587 | "serde_json", 588 | ] 589 | 590 | [[package]] 591 | name = "extism_nif" 592 | version = "0.3.0" 593 | dependencies = [ 594 | "extism", 595 | "log", 596 | "rustler", 597 | ] 598 | 599 | [[package]] 600 | name = "fallible-iterator" 601 | version = "0.3.0" 602 | source = "registry+https://github.com/rust-lang/crates.io-index" 603 | checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" 604 | 605 | [[package]] 606 | name = "fastrand" 607 | version = "2.0.1" 608 | source = "registry+https://github.com/rust-lang/crates.io-index" 609 | checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" 610 | 611 | [[package]] 612 | name = "fd-lock" 613 | version = "4.0.2" 614 | source = "registry+https://github.com/rust-lang/crates.io-index" 615 | checksum = "7e5768da2206272c81ef0b5e951a41862938a6070da63bcea197899942d3b947" 616 | dependencies = [ 617 | "cfg-if", 618 | "rustix", 619 | "windows-sys 0.52.0", 620 | ] 621 | 622 | [[package]] 623 | name = "flate2" 624 | version = "1.0.28" 625 | source = "registry+https://github.com/rust-lang/crates.io-index" 626 | checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" 627 | dependencies = [ 628 | "crc32fast", 629 | "miniz_oxide", 630 | ] 631 | 632 | [[package]] 633 | name = "form_urlencoded" 634 | version = "1.2.1" 635 | source = "registry+https://github.com/rust-lang/crates.io-index" 636 | checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" 637 | dependencies = [ 638 | "percent-encoding", 639 | ] 640 | 641 | [[package]] 642 | name = "fs-set-times" 643 | version = "0.20.1" 644 | source = "registry+https://github.com/rust-lang/crates.io-index" 645 | checksum = "033b337d725b97690d86893f9de22b67b80dcc4e9ad815f348254c38119db8fb" 646 | dependencies = [ 647 | "io-lifetimes", 648 | "rustix", 649 | "windows-sys 0.52.0", 650 | ] 651 | 652 | [[package]] 653 | name = "futures" 654 | version = "0.3.30" 655 | source = "registry+https://github.com/rust-lang/crates.io-index" 656 | checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" 657 | dependencies = [ 658 | "futures-channel", 659 | "futures-core", 660 | "futures-io", 661 | "futures-sink", 662 | "futures-task", 663 | "futures-util", 664 | ] 665 | 666 | [[package]] 667 | name = "futures-channel" 668 | version = "0.3.30" 669 | source = "registry+https://github.com/rust-lang/crates.io-index" 670 | checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" 671 | dependencies = [ 672 | "futures-core", 673 | "futures-sink", 674 | ] 675 | 676 | [[package]] 677 | name = "futures-core" 678 | version = "0.3.30" 679 | source = "registry+https://github.com/rust-lang/crates.io-index" 680 | checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" 681 | 682 | [[package]] 683 | name = "futures-io" 684 | version = "0.3.30" 685 | source = "registry+https://github.com/rust-lang/crates.io-index" 686 | checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" 687 | 688 | [[package]] 689 | name = "futures-sink" 690 | version = "0.3.30" 691 | source = "registry+https://github.com/rust-lang/crates.io-index" 692 | checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" 693 | 694 | [[package]] 695 | name = "futures-task" 696 | version = "0.3.30" 697 | source = "registry+https://github.com/rust-lang/crates.io-index" 698 | checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" 699 | 700 | [[package]] 701 | name = "futures-util" 702 | version = "0.3.30" 703 | source = "registry+https://github.com/rust-lang/crates.io-index" 704 | checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" 705 | dependencies = [ 706 | "futures-core", 707 | "futures-sink", 708 | "futures-task", 709 | "pin-project-lite", 710 | "pin-utils", 711 | ] 712 | 713 | [[package]] 714 | name = "fxhash" 715 | version = "0.2.1" 716 | source = "registry+https://github.com/rust-lang/crates.io-index" 717 | checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" 718 | dependencies = [ 719 | "byteorder", 720 | ] 721 | 722 | [[package]] 723 | name = "fxprof-processed-profile" 724 | version = "0.6.0" 725 | source = "registry+https://github.com/rust-lang/crates.io-index" 726 | checksum = "27d12c0aed7f1e24276a241aadc4cb8ea9f83000f34bc062b7cc2d51e3b0fabd" 727 | dependencies = [ 728 | "bitflags 2.4.1", 729 | "debugid", 730 | "fxhash", 731 | "serde", 732 | "serde_json", 733 | ] 734 | 735 | [[package]] 736 | name = "generic-array" 737 | version = "0.14.7" 738 | source = "registry+https://github.com/rust-lang/crates.io-index" 739 | checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 740 | dependencies = [ 741 | "typenum", 742 | "version_check", 743 | ] 744 | 745 | [[package]] 746 | name = "getrandom" 747 | version = "0.2.11" 748 | source = "registry+https://github.com/rust-lang/crates.io-index" 749 | checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" 750 | dependencies = [ 751 | "cfg-if", 752 | "libc", 753 | "wasi", 754 | ] 755 | 756 | [[package]] 757 | name = "gimli" 758 | version = "0.28.1" 759 | source = "registry+https://github.com/rust-lang/crates.io-index" 760 | checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" 761 | dependencies = [ 762 | "fallible-iterator", 763 | "indexmap 2.1.0", 764 | "stable_deref_trait", 765 | ] 766 | 767 | [[package]] 768 | name = "glob" 769 | version = "0.3.1" 770 | source = "registry+https://github.com/rust-lang/crates.io-index" 771 | checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" 772 | 773 | [[package]] 774 | name = "hashbrown" 775 | version = "0.12.3" 776 | source = "registry+https://github.com/rust-lang/crates.io-index" 777 | checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" 778 | 779 | [[package]] 780 | name = "hashbrown" 781 | version = "0.13.2" 782 | source = "registry+https://github.com/rust-lang/crates.io-index" 783 | checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" 784 | dependencies = [ 785 | "ahash", 786 | ] 787 | 788 | [[package]] 789 | name = "hashbrown" 790 | version = "0.14.3" 791 | source = "registry+https://github.com/rust-lang/crates.io-index" 792 | checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" 793 | dependencies = [ 794 | "ahash", 795 | ] 796 | 797 | [[package]] 798 | name = "heck" 799 | version = "0.4.1" 800 | source = "registry+https://github.com/rust-lang/crates.io-index" 801 | checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" 802 | 803 | [[package]] 804 | name = "hermit-abi" 805 | version = "0.3.3" 806 | source = "registry+https://github.com/rust-lang/crates.io-index" 807 | checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" 808 | 809 | [[package]] 810 | name = "iana-time-zone" 811 | version = "0.1.59" 812 | source = "registry+https://github.com/rust-lang/crates.io-index" 813 | checksum = "b6a67363e2aa4443928ce15e57ebae94fd8949958fd1223c4cfc0cd473ad7539" 814 | dependencies = [ 815 | "android_system_properties", 816 | "core-foundation-sys", 817 | "iana-time-zone-haiku", 818 | "js-sys", 819 | "wasm-bindgen", 820 | "windows-core", 821 | ] 822 | 823 | [[package]] 824 | name = "iana-time-zone-haiku" 825 | version = "0.1.2" 826 | source = "registry+https://github.com/rust-lang/crates.io-index" 827 | checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" 828 | dependencies = [ 829 | "cc", 830 | ] 831 | 832 | [[package]] 833 | name = "id-arena" 834 | version = "2.2.1" 835 | source = "registry+https://github.com/rust-lang/crates.io-index" 836 | checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005" 837 | 838 | [[package]] 839 | name = "idna" 840 | version = "0.5.0" 841 | source = "registry+https://github.com/rust-lang/crates.io-index" 842 | checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" 843 | dependencies = [ 844 | "unicode-bidi", 845 | "unicode-normalization", 846 | ] 847 | 848 | [[package]] 849 | name = "indexmap" 850 | version = "1.9.3" 851 | source = "registry+https://github.com/rust-lang/crates.io-index" 852 | checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" 853 | dependencies = [ 854 | "autocfg", 855 | "hashbrown 0.12.3", 856 | ] 857 | 858 | [[package]] 859 | name = "indexmap" 860 | version = "2.1.0" 861 | source = "registry+https://github.com/rust-lang/crates.io-index" 862 | checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" 863 | dependencies = [ 864 | "equivalent", 865 | "hashbrown 0.14.3", 866 | "serde", 867 | ] 868 | 869 | [[package]] 870 | name = "io-extras" 871 | version = "0.18.1" 872 | source = "registry+https://github.com/rust-lang/crates.io-index" 873 | checksum = "c301e73fb90e8a29e600a9f402d095765f74310d582916a952f618836a1bd1ed" 874 | dependencies = [ 875 | "io-lifetimes", 876 | "windows-sys 0.52.0", 877 | ] 878 | 879 | [[package]] 880 | name = "io-lifetimes" 881 | version = "2.0.3" 882 | source = "registry+https://github.com/rust-lang/crates.io-index" 883 | checksum = "5a611371471e98973dbcab4e0ec66c31a10bc356eeb4d54a0e05eac8158fe38c" 884 | 885 | [[package]] 886 | name = "ipnet" 887 | version = "2.9.0" 888 | source = "registry+https://github.com/rust-lang/crates.io-index" 889 | checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" 890 | 891 | [[package]] 892 | name = "itertools" 893 | version = "0.10.5" 894 | source = "registry+https://github.com/rust-lang/crates.io-index" 895 | checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" 896 | dependencies = [ 897 | "either", 898 | ] 899 | 900 | [[package]] 901 | name = "itertools" 902 | version = "0.11.0" 903 | source = "registry+https://github.com/rust-lang/crates.io-index" 904 | checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" 905 | dependencies = [ 906 | "either", 907 | ] 908 | 909 | [[package]] 910 | name = "itoa" 911 | version = "1.0.10" 912 | source = "registry+https://github.com/rust-lang/crates.io-index" 913 | checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" 914 | 915 | [[package]] 916 | name = "ittapi" 917 | version = "0.4.0" 918 | source = "registry+https://github.com/rust-lang/crates.io-index" 919 | checksum = "6b996fe614c41395cdaedf3cf408a9534851090959d90d54a535f675550b64b1" 920 | dependencies = [ 921 | "anyhow", 922 | "ittapi-sys", 923 | "log", 924 | ] 925 | 926 | [[package]] 927 | name = "ittapi-sys" 928 | version = "0.4.0" 929 | source = "registry+https://github.com/rust-lang/crates.io-index" 930 | checksum = "52f5385394064fa2c886205dba02598013ce83d3e92d33dbdc0c52fe0e7bf4fc" 931 | dependencies = [ 932 | "cc", 933 | ] 934 | 935 | [[package]] 936 | name = "jobserver" 937 | version = "0.1.27" 938 | source = "registry+https://github.com/rust-lang/crates.io-index" 939 | checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" 940 | dependencies = [ 941 | "libc", 942 | ] 943 | 944 | [[package]] 945 | name = "js-sys" 946 | version = "0.3.66" 947 | source = "registry+https://github.com/rust-lang/crates.io-index" 948 | checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" 949 | dependencies = [ 950 | "wasm-bindgen", 951 | ] 952 | 953 | [[package]] 954 | name = "lazy_static" 955 | version = "1.4.0" 956 | source = "registry+https://github.com/rust-lang/crates.io-index" 957 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 958 | 959 | [[package]] 960 | name = "leb128" 961 | version = "0.2.5" 962 | source = "registry+https://github.com/rust-lang/crates.io-index" 963 | checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" 964 | 965 | [[package]] 966 | name = "libc" 967 | version = "0.2.152" 968 | source = "registry+https://github.com/rust-lang/crates.io-index" 969 | checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" 970 | 971 | [[package]] 972 | name = "libredox" 973 | version = "0.0.1" 974 | source = "registry+https://github.com/rust-lang/crates.io-index" 975 | checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" 976 | dependencies = [ 977 | "bitflags 2.4.1", 978 | "libc", 979 | "redox_syscall", 980 | ] 981 | 982 | [[package]] 983 | name = "linux-raw-sys" 984 | version = "0.4.12" 985 | source = "registry+https://github.com/rust-lang/crates.io-index" 986 | checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" 987 | 988 | [[package]] 989 | name = "log" 990 | version = "0.4.20" 991 | source = "registry+https://github.com/rust-lang/crates.io-index" 992 | checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" 993 | 994 | [[package]] 995 | name = "mach" 996 | version = "0.3.2" 997 | source = "registry+https://github.com/rust-lang/crates.io-index" 998 | checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" 999 | dependencies = [ 1000 | "libc", 1001 | ] 1002 | 1003 | [[package]] 1004 | name = "matchers" 1005 | version = "0.1.0" 1006 | source = "registry+https://github.com/rust-lang/crates.io-index" 1007 | checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" 1008 | dependencies = [ 1009 | "regex-automata 0.1.10", 1010 | ] 1011 | 1012 | [[package]] 1013 | name = "maybe-owned" 1014 | version = "0.3.4" 1015 | source = "registry+https://github.com/rust-lang/crates.io-index" 1016 | checksum = "4facc753ae494aeb6e3c22f839b158aebd4f9270f55cd3c79906c45476c47ab4" 1017 | 1018 | [[package]] 1019 | name = "memchr" 1020 | version = "2.7.1" 1021 | source = "registry+https://github.com/rust-lang/crates.io-index" 1022 | checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" 1023 | 1024 | [[package]] 1025 | name = "memfd" 1026 | version = "0.6.4" 1027 | source = "registry+https://github.com/rust-lang/crates.io-index" 1028 | checksum = "b2cffa4ad52c6f791f4f8b15f0c05f9824b2ced1160e88cc393d64fff9a8ac64" 1029 | dependencies = [ 1030 | "rustix", 1031 | ] 1032 | 1033 | [[package]] 1034 | name = "memoffset" 1035 | version = "0.9.0" 1036 | source = "registry+https://github.com/rust-lang/crates.io-index" 1037 | checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" 1038 | dependencies = [ 1039 | "autocfg", 1040 | ] 1041 | 1042 | [[package]] 1043 | name = "miniz_oxide" 1044 | version = "0.7.1" 1045 | source = "registry+https://github.com/rust-lang/crates.io-index" 1046 | checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" 1047 | dependencies = [ 1048 | "adler", 1049 | ] 1050 | 1051 | [[package]] 1052 | name = "mio" 1053 | version = "0.8.10" 1054 | source = "registry+https://github.com/rust-lang/crates.io-index" 1055 | checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" 1056 | dependencies = [ 1057 | "libc", 1058 | "wasi", 1059 | "windows-sys 0.48.0", 1060 | ] 1061 | 1062 | [[package]] 1063 | name = "nu-ansi-term" 1064 | version = "0.46.0" 1065 | source = "registry+https://github.com/rust-lang/crates.io-index" 1066 | checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" 1067 | dependencies = [ 1068 | "overload", 1069 | "winapi", 1070 | ] 1071 | 1072 | [[package]] 1073 | name = "num-traits" 1074 | version = "0.2.17" 1075 | source = "registry+https://github.com/rust-lang/crates.io-index" 1076 | checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" 1077 | dependencies = [ 1078 | "autocfg", 1079 | ] 1080 | 1081 | [[package]] 1082 | name = "num_cpus" 1083 | version = "1.16.0" 1084 | source = "registry+https://github.com/rust-lang/crates.io-index" 1085 | checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" 1086 | dependencies = [ 1087 | "hermit-abi", 1088 | "libc", 1089 | ] 1090 | 1091 | [[package]] 1092 | name = "object" 1093 | version = "0.32.2" 1094 | source = "registry+https://github.com/rust-lang/crates.io-index" 1095 | checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" 1096 | dependencies = [ 1097 | "crc32fast", 1098 | "hashbrown 0.14.3", 1099 | "indexmap 2.1.0", 1100 | "memchr", 1101 | ] 1102 | 1103 | [[package]] 1104 | name = "once_cell" 1105 | version = "1.19.0" 1106 | source = "registry+https://github.com/rust-lang/crates.io-index" 1107 | checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" 1108 | 1109 | [[package]] 1110 | name = "overload" 1111 | version = "0.1.1" 1112 | source = "registry+https://github.com/rust-lang/crates.io-index" 1113 | checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" 1114 | 1115 | [[package]] 1116 | name = "paste" 1117 | version = "1.0.14" 1118 | source = "registry+https://github.com/rust-lang/crates.io-index" 1119 | checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" 1120 | 1121 | [[package]] 1122 | name = "percent-encoding" 1123 | version = "2.3.1" 1124 | source = "registry+https://github.com/rust-lang/crates.io-index" 1125 | checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" 1126 | 1127 | [[package]] 1128 | name = "pin-project-lite" 1129 | version = "0.2.13" 1130 | source = "registry+https://github.com/rust-lang/crates.io-index" 1131 | checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" 1132 | 1133 | [[package]] 1134 | name = "pin-utils" 1135 | version = "0.1.0" 1136 | source = "registry+https://github.com/rust-lang/crates.io-index" 1137 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 1138 | 1139 | [[package]] 1140 | name = "pkg-config" 1141 | version = "0.3.28" 1142 | source = "registry+https://github.com/rust-lang/crates.io-index" 1143 | checksum = "69d3587f8a9e599cc7ec2c00e331f71c4e69a5f9a4b8a6efd5b07466b9736f9a" 1144 | 1145 | [[package]] 1146 | name = "ppv-lite86" 1147 | version = "0.2.17" 1148 | source = "registry+https://github.com/rust-lang/crates.io-index" 1149 | checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" 1150 | 1151 | [[package]] 1152 | name = "proc-macro2" 1153 | version = "1.0.76" 1154 | source = "registry+https://github.com/rust-lang/crates.io-index" 1155 | checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c" 1156 | dependencies = [ 1157 | "unicode-ident", 1158 | ] 1159 | 1160 | [[package]] 1161 | name = "prost" 1162 | version = "0.12.3" 1163 | source = "registry+https://github.com/rust-lang/crates.io-index" 1164 | checksum = "146c289cda302b98a28d40c8b3b90498d6e526dd24ac2ecea73e4e491685b94a" 1165 | dependencies = [ 1166 | "bytes", 1167 | "prost-derive", 1168 | ] 1169 | 1170 | [[package]] 1171 | name = "prost-derive" 1172 | version = "0.12.3" 1173 | source = "registry+https://github.com/rust-lang/crates.io-index" 1174 | checksum = "efb6c9a1dd1def8e2124d17e83a20af56f1570d6c2d2bd9e266ccb768df3840e" 1175 | dependencies = [ 1176 | "anyhow", 1177 | "itertools 0.11.0", 1178 | "proc-macro2", 1179 | "quote", 1180 | "syn 2.0.48", 1181 | ] 1182 | 1183 | [[package]] 1184 | name = "psm" 1185 | version = "0.1.21" 1186 | source = "registry+https://github.com/rust-lang/crates.io-index" 1187 | checksum = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874" 1188 | dependencies = [ 1189 | "cc", 1190 | ] 1191 | 1192 | [[package]] 1193 | name = "quote" 1194 | version = "1.0.35" 1195 | source = "registry+https://github.com/rust-lang/crates.io-index" 1196 | checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" 1197 | dependencies = [ 1198 | "proc-macro2", 1199 | ] 1200 | 1201 | [[package]] 1202 | name = "rand" 1203 | version = "0.8.5" 1204 | source = "registry+https://github.com/rust-lang/crates.io-index" 1205 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 1206 | dependencies = [ 1207 | "libc", 1208 | "rand_chacha", 1209 | "rand_core", 1210 | ] 1211 | 1212 | [[package]] 1213 | name = "rand_chacha" 1214 | version = "0.3.1" 1215 | source = "registry+https://github.com/rust-lang/crates.io-index" 1216 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 1217 | dependencies = [ 1218 | "ppv-lite86", 1219 | "rand_core", 1220 | ] 1221 | 1222 | [[package]] 1223 | name = "rand_core" 1224 | version = "0.6.4" 1225 | source = "registry+https://github.com/rust-lang/crates.io-index" 1226 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 1227 | dependencies = [ 1228 | "getrandom", 1229 | ] 1230 | 1231 | [[package]] 1232 | name = "rayon" 1233 | version = "1.8.0" 1234 | source = "registry+https://github.com/rust-lang/crates.io-index" 1235 | checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" 1236 | dependencies = [ 1237 | "either", 1238 | "rayon-core", 1239 | ] 1240 | 1241 | [[package]] 1242 | name = "rayon-core" 1243 | version = "1.12.0" 1244 | source = "registry+https://github.com/rust-lang/crates.io-index" 1245 | checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" 1246 | dependencies = [ 1247 | "crossbeam-deque", 1248 | "crossbeam-utils", 1249 | ] 1250 | 1251 | [[package]] 1252 | name = "redox_syscall" 1253 | version = "0.4.1" 1254 | source = "registry+https://github.com/rust-lang/crates.io-index" 1255 | checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" 1256 | dependencies = [ 1257 | "bitflags 1.3.2", 1258 | ] 1259 | 1260 | [[package]] 1261 | name = "redox_users" 1262 | version = "0.4.4" 1263 | source = "registry+https://github.com/rust-lang/crates.io-index" 1264 | checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" 1265 | dependencies = [ 1266 | "getrandom", 1267 | "libredox", 1268 | "thiserror", 1269 | ] 1270 | 1271 | [[package]] 1272 | name = "regalloc2" 1273 | version = "0.9.3" 1274 | source = "registry+https://github.com/rust-lang/crates.io-index" 1275 | checksum = "ad156d539c879b7a24a363a2016d77961786e71f48f2e2fc8302a92abd2429a6" 1276 | dependencies = [ 1277 | "hashbrown 0.13.2", 1278 | "log", 1279 | "rustc-hash", 1280 | "slice-group-by", 1281 | "smallvec", 1282 | ] 1283 | 1284 | [[package]] 1285 | name = "regex" 1286 | version = "1.10.2" 1287 | source = "registry+https://github.com/rust-lang/crates.io-index" 1288 | checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" 1289 | dependencies = [ 1290 | "aho-corasick", 1291 | "memchr", 1292 | "regex-automata 0.4.3", 1293 | "regex-syntax 0.8.2", 1294 | ] 1295 | 1296 | [[package]] 1297 | name = "regex-automata" 1298 | version = "0.1.10" 1299 | source = "registry+https://github.com/rust-lang/crates.io-index" 1300 | checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" 1301 | dependencies = [ 1302 | "regex-syntax 0.6.29", 1303 | ] 1304 | 1305 | [[package]] 1306 | name = "regex-automata" 1307 | version = "0.4.3" 1308 | source = "registry+https://github.com/rust-lang/crates.io-index" 1309 | checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" 1310 | dependencies = [ 1311 | "aho-corasick", 1312 | "memchr", 1313 | "regex-syntax 0.8.2", 1314 | ] 1315 | 1316 | [[package]] 1317 | name = "regex-syntax" 1318 | version = "0.6.29" 1319 | source = "registry+https://github.com/rust-lang/crates.io-index" 1320 | checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" 1321 | 1322 | [[package]] 1323 | name = "regex-syntax" 1324 | version = "0.8.2" 1325 | source = "registry+https://github.com/rust-lang/crates.io-index" 1326 | checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" 1327 | 1328 | [[package]] 1329 | name = "ring" 1330 | version = "0.17.7" 1331 | source = "registry+https://github.com/rust-lang/crates.io-index" 1332 | checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74" 1333 | dependencies = [ 1334 | "cc", 1335 | "getrandom", 1336 | "libc", 1337 | "spin", 1338 | "untrusted", 1339 | "windows-sys 0.48.0", 1340 | ] 1341 | 1342 | [[package]] 1343 | name = "rmp" 1344 | version = "0.8.12" 1345 | source = "registry+https://github.com/rust-lang/crates.io-index" 1346 | checksum = "7f9860a6cc38ed1da53456442089b4dfa35e7cedaa326df63017af88385e6b20" 1347 | dependencies = [ 1348 | "byteorder", 1349 | "num-traits", 1350 | "paste", 1351 | ] 1352 | 1353 | [[package]] 1354 | name = "rmp-serde" 1355 | version = "1.1.2" 1356 | source = "registry+https://github.com/rust-lang/crates.io-index" 1357 | checksum = "bffea85eea980d8a74453e5d02a8d93028f3c34725de143085a844ebe953258a" 1358 | dependencies = [ 1359 | "byteorder", 1360 | "rmp", 1361 | "serde", 1362 | ] 1363 | 1364 | [[package]] 1365 | name = "rustc-demangle" 1366 | version = "0.1.23" 1367 | source = "registry+https://github.com/rust-lang/crates.io-index" 1368 | checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" 1369 | 1370 | [[package]] 1371 | name = "rustc-hash" 1372 | version = "1.1.0" 1373 | source = "registry+https://github.com/rust-lang/crates.io-index" 1374 | checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" 1375 | 1376 | [[package]] 1377 | name = "rustix" 1378 | version = "0.38.28" 1379 | source = "registry+https://github.com/rust-lang/crates.io-index" 1380 | checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316" 1381 | dependencies = [ 1382 | "bitflags 2.4.1", 1383 | "errno", 1384 | "itoa", 1385 | "libc", 1386 | "linux-raw-sys", 1387 | "once_cell", 1388 | "windows-sys 0.52.0", 1389 | ] 1390 | 1391 | [[package]] 1392 | name = "rustler" 1393 | version = "0.30.0" 1394 | source = "registry+https://github.com/rust-lang/crates.io-index" 1395 | checksum = "c4b4fea69e23de68c42c06769d6624d2d018da550c17244dd4b691f90ced4a7e" 1396 | dependencies = [ 1397 | "lazy_static", 1398 | "rustler_codegen", 1399 | "rustler_sys", 1400 | ] 1401 | 1402 | [[package]] 1403 | name = "rustler_codegen" 1404 | version = "0.30.0" 1405 | source = "registry+https://github.com/rust-lang/crates.io-index" 1406 | checksum = "406061bd07aaf052c344257afed4988c5ec8efe4d2352b4c2cf27ea7c8575b12" 1407 | dependencies = [ 1408 | "heck", 1409 | "proc-macro2", 1410 | "quote", 1411 | "syn 2.0.48", 1412 | ] 1413 | 1414 | [[package]] 1415 | name = "rustler_sys" 1416 | version = "2.3.1" 1417 | source = "registry+https://github.com/rust-lang/crates.io-index" 1418 | checksum = "0a7c0740e5322b64e2b952d8f0edce5f90fcf6f6fe74cca3f6e78eb3de5ea858" 1419 | dependencies = [ 1420 | "regex", 1421 | "unreachable", 1422 | ] 1423 | 1424 | [[package]] 1425 | name = "rustls" 1426 | version = "0.21.10" 1427 | source = "registry+https://github.com/rust-lang/crates.io-index" 1428 | checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" 1429 | dependencies = [ 1430 | "log", 1431 | "ring", 1432 | "rustls-webpki", 1433 | "sct", 1434 | ] 1435 | 1436 | [[package]] 1437 | name = "rustls-webpki" 1438 | version = "0.101.7" 1439 | source = "registry+https://github.com/rust-lang/crates.io-index" 1440 | checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" 1441 | dependencies = [ 1442 | "ring", 1443 | "untrusted", 1444 | ] 1445 | 1446 | [[package]] 1447 | name = "ryu" 1448 | version = "1.0.16" 1449 | source = "registry+https://github.com/rust-lang/crates.io-index" 1450 | checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" 1451 | 1452 | [[package]] 1453 | name = "sct" 1454 | version = "0.7.1" 1455 | source = "registry+https://github.com/rust-lang/crates.io-index" 1456 | checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" 1457 | dependencies = [ 1458 | "ring", 1459 | "untrusted", 1460 | ] 1461 | 1462 | [[package]] 1463 | name = "semver" 1464 | version = "1.0.21" 1465 | source = "registry+https://github.com/rust-lang/crates.io-index" 1466 | checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" 1467 | 1468 | [[package]] 1469 | name = "serde" 1470 | version = "1.0.195" 1471 | source = "registry+https://github.com/rust-lang/crates.io-index" 1472 | checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02" 1473 | dependencies = [ 1474 | "serde_derive", 1475 | ] 1476 | 1477 | [[package]] 1478 | name = "serde_derive" 1479 | version = "1.0.195" 1480 | source = "registry+https://github.com/rust-lang/crates.io-index" 1481 | checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c" 1482 | dependencies = [ 1483 | "proc-macro2", 1484 | "quote", 1485 | "syn 2.0.48", 1486 | ] 1487 | 1488 | [[package]] 1489 | name = "serde_json" 1490 | version = "1.0.111" 1491 | source = "registry+https://github.com/rust-lang/crates.io-index" 1492 | checksum = "176e46fa42316f18edd598015a5166857fc835ec732f5215eac6b7bdbf0a84f4" 1493 | dependencies = [ 1494 | "itoa", 1495 | "ryu", 1496 | "serde", 1497 | ] 1498 | 1499 | [[package]] 1500 | name = "serde_spanned" 1501 | version = "0.6.5" 1502 | source = "registry+https://github.com/rust-lang/crates.io-index" 1503 | checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" 1504 | dependencies = [ 1505 | "serde", 1506 | ] 1507 | 1508 | [[package]] 1509 | name = "sha2" 1510 | version = "0.10.8" 1511 | source = "registry+https://github.com/rust-lang/crates.io-index" 1512 | checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" 1513 | dependencies = [ 1514 | "cfg-if", 1515 | "cpufeatures", 1516 | "digest", 1517 | ] 1518 | 1519 | [[package]] 1520 | name = "sharded-slab" 1521 | version = "0.1.7" 1522 | source = "registry+https://github.com/rust-lang/crates.io-index" 1523 | checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" 1524 | dependencies = [ 1525 | "lazy_static", 1526 | ] 1527 | 1528 | [[package]] 1529 | name = "shellexpand" 1530 | version = "2.1.2" 1531 | source = "registry+https://github.com/rust-lang/crates.io-index" 1532 | checksum = "7ccc8076840c4da029af4f87e4e8daeb0fca6b87bbb02e10cb60b791450e11e4" 1533 | dependencies = [ 1534 | "dirs", 1535 | ] 1536 | 1537 | [[package]] 1538 | name = "slice-group-by" 1539 | version = "0.3.1" 1540 | source = "registry+https://github.com/rust-lang/crates.io-index" 1541 | checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" 1542 | 1543 | [[package]] 1544 | name = "smallvec" 1545 | version = "1.11.2" 1546 | source = "registry+https://github.com/rust-lang/crates.io-index" 1547 | checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" 1548 | 1549 | [[package]] 1550 | name = "socket2" 1551 | version = "0.5.5" 1552 | source = "registry+https://github.com/rust-lang/crates.io-index" 1553 | checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" 1554 | dependencies = [ 1555 | "libc", 1556 | "windows-sys 0.48.0", 1557 | ] 1558 | 1559 | [[package]] 1560 | name = "spin" 1561 | version = "0.9.8" 1562 | source = "registry+https://github.com/rust-lang/crates.io-index" 1563 | checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" 1564 | 1565 | [[package]] 1566 | name = "sptr" 1567 | version = "0.3.2" 1568 | source = "registry+https://github.com/rust-lang/crates.io-index" 1569 | checksum = "3b9b39299b249ad65f3b7e96443bad61c02ca5cd3589f46cb6d610a0fd6c0d6a" 1570 | 1571 | [[package]] 1572 | name = "stable_deref_trait" 1573 | version = "1.2.0" 1574 | source = "registry+https://github.com/rust-lang/crates.io-index" 1575 | checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" 1576 | 1577 | [[package]] 1578 | name = "syn" 1579 | version = "1.0.109" 1580 | source = "registry+https://github.com/rust-lang/crates.io-index" 1581 | checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 1582 | dependencies = [ 1583 | "proc-macro2", 1584 | "quote", 1585 | "unicode-ident", 1586 | ] 1587 | 1588 | [[package]] 1589 | name = "syn" 1590 | version = "2.0.48" 1591 | source = "registry+https://github.com/rust-lang/crates.io-index" 1592 | checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" 1593 | dependencies = [ 1594 | "proc-macro2", 1595 | "quote", 1596 | "unicode-ident", 1597 | ] 1598 | 1599 | [[package]] 1600 | name = "system-interface" 1601 | version = "0.26.1" 1602 | source = "registry+https://github.com/rust-lang/crates.io-index" 1603 | checksum = "0682e006dd35771e392a6623ac180999a9a854b1d4a6c12fb2e804941c2b1f58" 1604 | dependencies = [ 1605 | "bitflags 2.4.1", 1606 | "cap-fs-ext", 1607 | "cap-std", 1608 | "fd-lock", 1609 | "io-lifetimes", 1610 | "rustix", 1611 | "windows-sys 0.52.0", 1612 | "winx", 1613 | ] 1614 | 1615 | [[package]] 1616 | name = "target-lexicon" 1617 | version = "0.12.13" 1618 | source = "registry+https://github.com/rust-lang/crates.io-index" 1619 | checksum = "69758bda2e78f098e4ccb393021a0963bb3442eac05f135c30f61b7370bbafae" 1620 | 1621 | [[package]] 1622 | name = "tempfile" 1623 | version = "3.9.0" 1624 | source = "registry+https://github.com/rust-lang/crates.io-index" 1625 | checksum = "01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa" 1626 | dependencies = [ 1627 | "cfg-if", 1628 | "fastrand", 1629 | "redox_syscall", 1630 | "rustix", 1631 | "windows-sys 0.52.0", 1632 | ] 1633 | 1634 | [[package]] 1635 | name = "thiserror" 1636 | version = "1.0.56" 1637 | source = "registry+https://github.com/rust-lang/crates.io-index" 1638 | checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" 1639 | dependencies = [ 1640 | "thiserror-impl", 1641 | ] 1642 | 1643 | [[package]] 1644 | name = "thiserror-impl" 1645 | version = "1.0.56" 1646 | source = "registry+https://github.com/rust-lang/crates.io-index" 1647 | checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" 1648 | dependencies = [ 1649 | "proc-macro2", 1650 | "quote", 1651 | "syn 2.0.48", 1652 | ] 1653 | 1654 | [[package]] 1655 | name = "thread_local" 1656 | version = "1.1.7" 1657 | source = "registry+https://github.com/rust-lang/crates.io-index" 1658 | checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" 1659 | dependencies = [ 1660 | "cfg-if", 1661 | "once_cell", 1662 | ] 1663 | 1664 | [[package]] 1665 | name = "tinyvec" 1666 | version = "1.6.0" 1667 | source = "registry+https://github.com/rust-lang/crates.io-index" 1668 | checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" 1669 | dependencies = [ 1670 | "tinyvec_macros", 1671 | ] 1672 | 1673 | [[package]] 1674 | name = "tinyvec_macros" 1675 | version = "0.1.1" 1676 | source = "registry+https://github.com/rust-lang/crates.io-index" 1677 | checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 1678 | 1679 | [[package]] 1680 | name = "tokio" 1681 | version = "1.35.1" 1682 | source = "registry+https://github.com/rust-lang/crates.io-index" 1683 | checksum = "c89b4efa943be685f629b149f53829423f8f5531ea21249408e8e2f8671ec104" 1684 | dependencies = [ 1685 | "backtrace", 1686 | "bytes", 1687 | "libc", 1688 | "mio", 1689 | "num_cpus", 1690 | "pin-project-lite", 1691 | "socket2", 1692 | "windows-sys 0.48.0", 1693 | ] 1694 | 1695 | [[package]] 1696 | name = "toml" 1697 | version = "0.5.11" 1698 | source = "registry+https://github.com/rust-lang/crates.io-index" 1699 | checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" 1700 | dependencies = [ 1701 | "serde", 1702 | ] 1703 | 1704 | [[package]] 1705 | name = "toml" 1706 | version = "0.8.8" 1707 | source = "registry+https://github.com/rust-lang/crates.io-index" 1708 | checksum = "a1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35" 1709 | dependencies = [ 1710 | "serde", 1711 | "serde_spanned", 1712 | "toml_datetime", 1713 | "toml_edit", 1714 | ] 1715 | 1716 | [[package]] 1717 | name = "toml_datetime" 1718 | version = "0.6.5" 1719 | source = "registry+https://github.com/rust-lang/crates.io-index" 1720 | checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" 1721 | dependencies = [ 1722 | "serde", 1723 | ] 1724 | 1725 | [[package]] 1726 | name = "toml_edit" 1727 | version = "0.21.0" 1728 | source = "registry+https://github.com/rust-lang/crates.io-index" 1729 | checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" 1730 | dependencies = [ 1731 | "indexmap 2.1.0", 1732 | "serde", 1733 | "serde_spanned", 1734 | "toml_datetime", 1735 | "winnow", 1736 | ] 1737 | 1738 | [[package]] 1739 | name = "tracing" 1740 | version = "0.1.40" 1741 | source = "registry+https://github.com/rust-lang/crates.io-index" 1742 | checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" 1743 | dependencies = [ 1744 | "log", 1745 | "pin-project-lite", 1746 | "tracing-attributes", 1747 | "tracing-core", 1748 | ] 1749 | 1750 | [[package]] 1751 | name = "tracing-attributes" 1752 | version = "0.1.27" 1753 | source = "registry+https://github.com/rust-lang/crates.io-index" 1754 | checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" 1755 | dependencies = [ 1756 | "proc-macro2", 1757 | "quote", 1758 | "syn 2.0.48", 1759 | ] 1760 | 1761 | [[package]] 1762 | name = "tracing-core" 1763 | version = "0.1.32" 1764 | source = "registry+https://github.com/rust-lang/crates.io-index" 1765 | checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" 1766 | dependencies = [ 1767 | "once_cell", 1768 | "valuable", 1769 | ] 1770 | 1771 | [[package]] 1772 | name = "tracing-log" 1773 | version = "0.2.0" 1774 | source = "registry+https://github.com/rust-lang/crates.io-index" 1775 | checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" 1776 | dependencies = [ 1777 | "log", 1778 | "once_cell", 1779 | "tracing-core", 1780 | ] 1781 | 1782 | [[package]] 1783 | name = "tracing-subscriber" 1784 | version = "0.3.18" 1785 | source = "registry+https://github.com/rust-lang/crates.io-index" 1786 | checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" 1787 | dependencies = [ 1788 | "matchers", 1789 | "nu-ansi-term", 1790 | "once_cell", 1791 | "regex", 1792 | "sharded-slab", 1793 | "smallvec", 1794 | "thread_local", 1795 | "tracing", 1796 | "tracing-core", 1797 | "tracing-log", 1798 | ] 1799 | 1800 | [[package]] 1801 | name = "typenum" 1802 | version = "1.17.0" 1803 | source = "registry+https://github.com/rust-lang/crates.io-index" 1804 | checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" 1805 | 1806 | [[package]] 1807 | name = "unicode-bidi" 1808 | version = "0.3.14" 1809 | source = "registry+https://github.com/rust-lang/crates.io-index" 1810 | checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" 1811 | 1812 | [[package]] 1813 | name = "unicode-ident" 1814 | version = "1.0.12" 1815 | source = "registry+https://github.com/rust-lang/crates.io-index" 1816 | checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" 1817 | 1818 | [[package]] 1819 | name = "unicode-normalization" 1820 | version = "0.1.22" 1821 | source = "registry+https://github.com/rust-lang/crates.io-index" 1822 | checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" 1823 | dependencies = [ 1824 | "tinyvec", 1825 | ] 1826 | 1827 | [[package]] 1828 | name = "unicode-width" 1829 | version = "0.1.11" 1830 | source = "registry+https://github.com/rust-lang/crates.io-index" 1831 | checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" 1832 | 1833 | [[package]] 1834 | name = "unicode-xid" 1835 | version = "0.2.4" 1836 | source = "registry+https://github.com/rust-lang/crates.io-index" 1837 | checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" 1838 | 1839 | [[package]] 1840 | name = "unreachable" 1841 | version = "1.0.0" 1842 | source = "registry+https://github.com/rust-lang/crates.io-index" 1843 | checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" 1844 | dependencies = [ 1845 | "void", 1846 | ] 1847 | 1848 | [[package]] 1849 | name = "untrusted" 1850 | version = "0.9.0" 1851 | source = "registry+https://github.com/rust-lang/crates.io-index" 1852 | checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" 1853 | 1854 | [[package]] 1855 | name = "ureq" 1856 | version = "2.9.1" 1857 | source = "registry+https://github.com/rust-lang/crates.io-index" 1858 | checksum = "f8cdd25c339e200129fe4de81451814e5228c9b771d57378817d6117cc2b3f97" 1859 | dependencies = [ 1860 | "base64", 1861 | "flate2", 1862 | "log", 1863 | "once_cell", 1864 | "rustls", 1865 | "rustls-webpki", 1866 | "url", 1867 | "webpki-roots", 1868 | ] 1869 | 1870 | [[package]] 1871 | name = "url" 1872 | version = "2.5.0" 1873 | source = "registry+https://github.com/rust-lang/crates.io-index" 1874 | checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" 1875 | dependencies = [ 1876 | "form_urlencoded", 1877 | "idna", 1878 | "percent-encoding", 1879 | ] 1880 | 1881 | [[package]] 1882 | name = "uuid" 1883 | version = "1.6.1" 1884 | source = "registry+https://github.com/rust-lang/crates.io-index" 1885 | checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560" 1886 | dependencies = [ 1887 | "getrandom", 1888 | ] 1889 | 1890 | [[package]] 1891 | name = "valuable" 1892 | version = "0.1.0" 1893 | source = "registry+https://github.com/rust-lang/crates.io-index" 1894 | checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" 1895 | 1896 | [[package]] 1897 | name = "version_check" 1898 | version = "0.9.4" 1899 | source = "registry+https://github.com/rust-lang/crates.io-index" 1900 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 1901 | 1902 | [[package]] 1903 | name = "void" 1904 | version = "1.0.2" 1905 | source = "registry+https://github.com/rust-lang/crates.io-index" 1906 | checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" 1907 | 1908 | [[package]] 1909 | name = "wasi" 1910 | version = "0.11.0+wasi-snapshot-preview1" 1911 | source = "registry+https://github.com/rust-lang/crates.io-index" 1912 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 1913 | 1914 | [[package]] 1915 | name = "wasi-cap-std-sync" 1916 | version = "16.0.0" 1917 | source = "registry+https://github.com/rust-lang/crates.io-index" 1918 | checksum = "154528979a211aa28d969846e883df75705809ed9bcc70aba61460683ea7355b" 1919 | dependencies = [ 1920 | "anyhow", 1921 | "async-trait", 1922 | "cap-fs-ext", 1923 | "cap-rand", 1924 | "cap-std", 1925 | "cap-time-ext", 1926 | "fs-set-times", 1927 | "io-extras", 1928 | "io-lifetimes", 1929 | "once_cell", 1930 | "rustix", 1931 | "system-interface", 1932 | "tracing", 1933 | "wasi-common", 1934 | "windows-sys 0.48.0", 1935 | ] 1936 | 1937 | [[package]] 1938 | name = "wasi-common" 1939 | version = "16.0.0" 1940 | source = "registry+https://github.com/rust-lang/crates.io-index" 1941 | checksum = "3d888b611fee7d273dd057dc009d2dd3132736f36710ffd65657ac83628d1e3b" 1942 | dependencies = [ 1943 | "anyhow", 1944 | "bitflags 2.4.1", 1945 | "cap-rand", 1946 | "cap-std", 1947 | "io-extras", 1948 | "log", 1949 | "rustix", 1950 | "thiserror", 1951 | "tracing", 1952 | "wasmtime", 1953 | "wiggle", 1954 | "windows-sys 0.48.0", 1955 | ] 1956 | 1957 | [[package]] 1958 | name = "wasm-bindgen" 1959 | version = "0.2.89" 1960 | source = "registry+https://github.com/rust-lang/crates.io-index" 1961 | checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" 1962 | dependencies = [ 1963 | "cfg-if", 1964 | "wasm-bindgen-macro", 1965 | ] 1966 | 1967 | [[package]] 1968 | name = "wasm-bindgen-backend" 1969 | version = "0.2.89" 1970 | source = "registry+https://github.com/rust-lang/crates.io-index" 1971 | checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" 1972 | dependencies = [ 1973 | "bumpalo", 1974 | "log", 1975 | "once_cell", 1976 | "proc-macro2", 1977 | "quote", 1978 | "syn 2.0.48", 1979 | "wasm-bindgen-shared", 1980 | ] 1981 | 1982 | [[package]] 1983 | name = "wasm-bindgen-macro" 1984 | version = "0.2.89" 1985 | source = "registry+https://github.com/rust-lang/crates.io-index" 1986 | checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" 1987 | dependencies = [ 1988 | "quote", 1989 | "wasm-bindgen-macro-support", 1990 | ] 1991 | 1992 | [[package]] 1993 | name = "wasm-bindgen-macro-support" 1994 | version = "0.2.89" 1995 | source = "registry+https://github.com/rust-lang/crates.io-index" 1996 | checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" 1997 | dependencies = [ 1998 | "proc-macro2", 1999 | "quote", 2000 | "syn 2.0.48", 2001 | "wasm-bindgen-backend", 2002 | "wasm-bindgen-shared", 2003 | ] 2004 | 2005 | [[package]] 2006 | name = "wasm-bindgen-shared" 2007 | version = "0.2.89" 2008 | source = "registry+https://github.com/rust-lang/crates.io-index" 2009 | checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" 2010 | 2011 | [[package]] 2012 | name = "wasm-encoder" 2013 | version = "0.38.1" 2014 | source = "registry+https://github.com/rust-lang/crates.io-index" 2015 | checksum = "0ad2b51884de9c7f4fe2fd1043fccb8dcad4b1e29558146ee57a144d15779f3f" 2016 | dependencies = [ 2017 | "leb128", 2018 | ] 2019 | 2020 | [[package]] 2021 | name = "wasmparser" 2022 | version = "0.118.1" 2023 | source = "registry+https://github.com/rust-lang/crates.io-index" 2024 | checksum = "95ee9723b928e735d53000dec9eae7b07a60e490c85ab54abb66659fc61bfcd9" 2025 | dependencies = [ 2026 | "indexmap 2.1.0", 2027 | "semver", 2028 | ] 2029 | 2030 | [[package]] 2031 | name = "wasmprinter" 2032 | version = "0.2.75" 2033 | source = "registry+https://github.com/rust-lang/crates.io-index" 2034 | checksum = "3d027eb8294904fc715ac0870cebe6b0271e96b90605ee21511e7565c4ce568c" 2035 | dependencies = [ 2036 | "anyhow", 2037 | "wasmparser", 2038 | ] 2039 | 2040 | [[package]] 2041 | name = "wasmtime" 2042 | version = "16.0.0" 2043 | source = "registry+https://github.com/rust-lang/crates.io-index" 2044 | checksum = "a8e539fded2495422ea3c4dfa7beeddba45904eece182cf315294009e1a323bf" 2045 | dependencies = [ 2046 | "anyhow", 2047 | "async-trait", 2048 | "bincode", 2049 | "bumpalo", 2050 | "cfg-if", 2051 | "encoding_rs", 2052 | "fxprof-processed-profile", 2053 | "indexmap 2.1.0", 2054 | "libc", 2055 | "log", 2056 | "object", 2057 | "once_cell", 2058 | "paste", 2059 | "rayon", 2060 | "serde", 2061 | "serde_derive", 2062 | "serde_json", 2063 | "target-lexicon", 2064 | "wasm-encoder", 2065 | "wasmparser", 2066 | "wasmtime-cache", 2067 | "wasmtime-component-macro", 2068 | "wasmtime-component-util", 2069 | "wasmtime-cranelift", 2070 | "wasmtime-environ", 2071 | "wasmtime-fiber", 2072 | "wasmtime-jit", 2073 | "wasmtime-runtime", 2074 | "wasmtime-winch", 2075 | "wat", 2076 | "windows-sys 0.48.0", 2077 | ] 2078 | 2079 | [[package]] 2080 | name = "wasmtime-asm-macros" 2081 | version = "16.0.0" 2082 | source = "registry+https://github.com/rust-lang/crates.io-index" 2083 | checksum = "660ba9143e15a2acd921820df221b73aee256bd3ca2d208d73d8adc9587ccbb9" 2084 | dependencies = [ 2085 | "cfg-if", 2086 | ] 2087 | 2088 | [[package]] 2089 | name = "wasmtime-cache" 2090 | version = "16.0.0" 2091 | source = "registry+https://github.com/rust-lang/crates.io-index" 2092 | checksum = "a3ce373743892002f9391c6741ef0cb0335b55ec899d874f311222b7e36f4594" 2093 | dependencies = [ 2094 | "anyhow", 2095 | "base64", 2096 | "bincode", 2097 | "directories-next", 2098 | "log", 2099 | "rustix", 2100 | "serde", 2101 | "serde_derive", 2102 | "sha2", 2103 | "toml 0.5.11", 2104 | "windows-sys 0.48.0", 2105 | "zstd", 2106 | ] 2107 | 2108 | [[package]] 2109 | name = "wasmtime-component-macro" 2110 | version = "16.0.0" 2111 | source = "registry+https://github.com/rust-lang/crates.io-index" 2112 | checksum = "12ef32643324e564e1c359e9044daa06cbf90d7e2d6c99a738d17a12959f01a5" 2113 | dependencies = [ 2114 | "anyhow", 2115 | "proc-macro2", 2116 | "quote", 2117 | "syn 2.0.48", 2118 | "wasmtime-component-util", 2119 | "wasmtime-wit-bindgen", 2120 | "wit-parser", 2121 | ] 2122 | 2123 | [[package]] 2124 | name = "wasmtime-component-util" 2125 | version = "16.0.0" 2126 | source = "registry+https://github.com/rust-lang/crates.io-index" 2127 | checksum = "8c87d06c18d21a4818f354c00a85f4ebc62b2270961cd022968452b0e4dbed9d" 2128 | 2129 | [[package]] 2130 | name = "wasmtime-cranelift" 2131 | version = "16.0.0" 2132 | source = "registry+https://github.com/rust-lang/crates.io-index" 2133 | checksum = "2d648c8b4064a7911093b02237cd5569f71ca171d3a0a486bf80600b19e1cba2" 2134 | dependencies = [ 2135 | "anyhow", 2136 | "cfg-if", 2137 | "cranelift-codegen", 2138 | "cranelift-control", 2139 | "cranelift-entity", 2140 | "cranelift-frontend", 2141 | "cranelift-native", 2142 | "cranelift-wasm", 2143 | "gimli", 2144 | "log", 2145 | "object", 2146 | "target-lexicon", 2147 | "thiserror", 2148 | "wasmparser", 2149 | "wasmtime-cranelift-shared", 2150 | "wasmtime-environ", 2151 | "wasmtime-versioned-export-macros", 2152 | ] 2153 | 2154 | [[package]] 2155 | name = "wasmtime-cranelift-shared" 2156 | version = "16.0.0" 2157 | source = "registry+https://github.com/rust-lang/crates.io-index" 2158 | checksum = "290a89027688782da8ff60b12bb95695494b1874e0d0ba2ba387d23dace6d70c" 2159 | dependencies = [ 2160 | "anyhow", 2161 | "cranelift-codegen", 2162 | "cranelift-control", 2163 | "cranelift-native", 2164 | "gimli", 2165 | "object", 2166 | "target-lexicon", 2167 | "wasmtime-environ", 2168 | ] 2169 | 2170 | [[package]] 2171 | name = "wasmtime-environ" 2172 | version = "16.0.0" 2173 | source = "registry+https://github.com/rust-lang/crates.io-index" 2174 | checksum = "61eb64fb3e0da883e2df4a13a81d6282e072336e6cb6295021d0f7ab2e352754" 2175 | dependencies = [ 2176 | "anyhow", 2177 | "cranelift-entity", 2178 | "gimli", 2179 | "indexmap 2.1.0", 2180 | "log", 2181 | "object", 2182 | "serde", 2183 | "serde_derive", 2184 | "target-lexicon", 2185 | "thiserror", 2186 | "wasm-encoder", 2187 | "wasmparser", 2188 | "wasmprinter", 2189 | "wasmtime-component-util", 2190 | "wasmtime-types", 2191 | ] 2192 | 2193 | [[package]] 2194 | name = "wasmtime-fiber" 2195 | version = "16.0.0" 2196 | source = "registry+https://github.com/rust-lang/crates.io-index" 2197 | checksum = "40ecf1d3a838b0956b71ad3f8cb80069a228339775bf02dd35d86a5a68bbe443" 2198 | dependencies = [ 2199 | "anyhow", 2200 | "cc", 2201 | "cfg-if", 2202 | "rustix", 2203 | "wasmtime-asm-macros", 2204 | "wasmtime-versioned-export-macros", 2205 | "windows-sys 0.48.0", 2206 | ] 2207 | 2208 | [[package]] 2209 | name = "wasmtime-jit" 2210 | version = "16.0.0" 2211 | source = "registry+https://github.com/rust-lang/crates.io-index" 2212 | checksum = "f485336add49267d8859e8f8084d2d4b9a4b1564496b6f30ba5b168d50c10ceb" 2213 | dependencies = [ 2214 | "addr2line", 2215 | "anyhow", 2216 | "bincode", 2217 | "cfg-if", 2218 | "cpp_demangle", 2219 | "gimli", 2220 | "ittapi", 2221 | "log", 2222 | "object", 2223 | "rustc-demangle", 2224 | "rustix", 2225 | "serde", 2226 | "serde_derive", 2227 | "target-lexicon", 2228 | "wasmtime-environ", 2229 | "wasmtime-jit-debug", 2230 | "wasmtime-jit-icache-coherence", 2231 | "wasmtime-runtime", 2232 | "windows-sys 0.48.0", 2233 | ] 2234 | 2235 | [[package]] 2236 | name = "wasmtime-jit-debug" 2237 | version = "16.0.0" 2238 | source = "registry+https://github.com/rust-lang/crates.io-index" 2239 | checksum = "65e119affec40edb2fab9044f188759a00c2df9c3017278d047012a2de1efb4f" 2240 | dependencies = [ 2241 | "object", 2242 | "once_cell", 2243 | "rustix", 2244 | "wasmtime-versioned-export-macros", 2245 | ] 2246 | 2247 | [[package]] 2248 | name = "wasmtime-jit-icache-coherence" 2249 | version = "16.0.0" 2250 | source = "registry+https://github.com/rust-lang/crates.io-index" 2251 | checksum = "6b6d197fcc34ad32ed440e1f9552fd57d1f377d9699d31dee1b5b457322c1f8a" 2252 | dependencies = [ 2253 | "cfg-if", 2254 | "libc", 2255 | "windows-sys 0.48.0", 2256 | ] 2257 | 2258 | [[package]] 2259 | name = "wasmtime-runtime" 2260 | version = "16.0.0" 2261 | source = "registry+https://github.com/rust-lang/crates.io-index" 2262 | checksum = "794b2bb19b99ef8322ff0dd9fe1ba7e19c41036dfb260b3f99ecce128c42ff92" 2263 | dependencies = [ 2264 | "anyhow", 2265 | "cc", 2266 | "cfg-if", 2267 | "encoding_rs", 2268 | "indexmap 2.1.0", 2269 | "libc", 2270 | "log", 2271 | "mach", 2272 | "memfd", 2273 | "memoffset", 2274 | "paste", 2275 | "psm", 2276 | "rustix", 2277 | "sptr", 2278 | "wasm-encoder", 2279 | "wasmtime-asm-macros", 2280 | "wasmtime-environ", 2281 | "wasmtime-fiber", 2282 | "wasmtime-jit-debug", 2283 | "wasmtime-versioned-export-macros", 2284 | "wasmtime-wmemcheck", 2285 | "windows-sys 0.48.0", 2286 | ] 2287 | 2288 | [[package]] 2289 | name = "wasmtime-types" 2290 | version = "16.0.0" 2291 | source = "registry+https://github.com/rust-lang/crates.io-index" 2292 | checksum = "d995db8bb56f2cd8d2dc0ed5ffab94ffb435283b0fe6747f80f7aab40b2d06a1" 2293 | dependencies = [ 2294 | "cranelift-entity", 2295 | "serde", 2296 | "serde_derive", 2297 | "thiserror", 2298 | "wasmparser", 2299 | ] 2300 | 2301 | [[package]] 2302 | name = "wasmtime-versioned-export-macros" 2303 | version = "16.0.0" 2304 | source = "registry+https://github.com/rust-lang/crates.io-index" 2305 | checksum = "f55c5565959287c21dd0f4277ae3518dd2ae62679f655ee2dbc4396e19d210db" 2306 | dependencies = [ 2307 | "proc-macro2", 2308 | "quote", 2309 | "syn 2.0.48", 2310 | ] 2311 | 2312 | [[package]] 2313 | name = "wasmtime-wasi" 2314 | version = "16.0.0" 2315 | source = "registry+https://github.com/rust-lang/crates.io-index" 2316 | checksum = "ccd8370078149d49a3a47e93741553fd79b700421464b6a27ca32718192ab130" 2317 | dependencies = [ 2318 | "anyhow", 2319 | "async-trait", 2320 | "bitflags 2.4.1", 2321 | "bytes", 2322 | "cap-fs-ext", 2323 | "cap-net-ext", 2324 | "cap-rand", 2325 | "cap-std", 2326 | "cap-time-ext", 2327 | "fs-set-times", 2328 | "futures", 2329 | "io-extras", 2330 | "io-lifetimes", 2331 | "libc", 2332 | "log", 2333 | "once_cell", 2334 | "rustix", 2335 | "system-interface", 2336 | "thiserror", 2337 | "tokio", 2338 | "tracing", 2339 | "url", 2340 | "wasi-cap-std-sync", 2341 | "wasi-common", 2342 | "wasmtime", 2343 | "wiggle", 2344 | "windows-sys 0.48.0", 2345 | ] 2346 | 2347 | [[package]] 2348 | name = "wasmtime-winch" 2349 | version = "16.0.0" 2350 | source = "registry+https://github.com/rust-lang/crates.io-index" 2351 | checksum = "2c6f945ff9bad96e0a69973d74f193c19f627c8adbf250e7cb73ae7564b6cc8a" 2352 | dependencies = [ 2353 | "anyhow", 2354 | "cranelift-codegen", 2355 | "gimli", 2356 | "object", 2357 | "target-lexicon", 2358 | "wasmparser", 2359 | "wasmtime-cranelift-shared", 2360 | "wasmtime-environ", 2361 | "winch-codegen", 2362 | ] 2363 | 2364 | [[package]] 2365 | name = "wasmtime-wit-bindgen" 2366 | version = "16.0.0" 2367 | source = "registry+https://github.com/rust-lang/crates.io-index" 2368 | checksum = "f328b2d4a690270324756e886ed5be3a4da4c00be0eea48253f4595ad068062b" 2369 | dependencies = [ 2370 | "anyhow", 2371 | "heck", 2372 | "indexmap 2.1.0", 2373 | "wit-parser", 2374 | ] 2375 | 2376 | [[package]] 2377 | name = "wasmtime-wmemcheck" 2378 | version = "16.0.0" 2379 | source = "registry+https://github.com/rust-lang/crates.io-index" 2380 | checksum = "67761d8f8c0b3c13a5d34356274b10a40baba67fe9cfabbfc379a8b414e45de2" 2381 | 2382 | [[package]] 2383 | name = "wast" 2384 | version = "35.0.2" 2385 | source = "registry+https://github.com/rust-lang/crates.io-index" 2386 | checksum = "2ef140f1b49946586078353a453a1d28ba90adfc54dde75710bc1931de204d68" 2387 | dependencies = [ 2388 | "leb128", 2389 | ] 2390 | 2391 | [[package]] 2392 | name = "wast" 2393 | version = "69.0.1" 2394 | source = "registry+https://github.com/rust-lang/crates.io-index" 2395 | checksum = "c1ee37317321afde358e4d7593745942c48d6d17e0e6e943704de9bbee121e7a" 2396 | dependencies = [ 2397 | "leb128", 2398 | "memchr", 2399 | "unicode-width", 2400 | "wasm-encoder", 2401 | ] 2402 | 2403 | [[package]] 2404 | name = "wat" 2405 | version = "1.0.82" 2406 | source = "registry+https://github.com/rust-lang/crates.io-index" 2407 | checksum = "aeb338ee8dee4d4cd05e6426683f21c5087dc7cfc8903e839ccf48d43332da3c" 2408 | dependencies = [ 2409 | "wast 69.0.1", 2410 | ] 2411 | 2412 | [[package]] 2413 | name = "webpki-roots" 2414 | version = "0.25.3" 2415 | source = "registry+https://github.com/rust-lang/crates.io-index" 2416 | checksum = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10" 2417 | 2418 | [[package]] 2419 | name = "wiggle" 2420 | version = "16.0.0" 2421 | source = "registry+https://github.com/rust-lang/crates.io-index" 2422 | checksum = "0afb26cd3269289bb314a361ff0a6685e5ce793b62181a9fe3f81ace15051697" 2423 | dependencies = [ 2424 | "anyhow", 2425 | "async-trait", 2426 | "bitflags 2.4.1", 2427 | "thiserror", 2428 | "tracing", 2429 | "wasmtime", 2430 | "wiggle-macro", 2431 | ] 2432 | 2433 | [[package]] 2434 | name = "wiggle-generate" 2435 | version = "16.0.0" 2436 | source = "registry+https://github.com/rust-lang/crates.io-index" 2437 | checksum = "cef2868fed7584d2b552fa317104858ded80021d23b073b2d682d3c932a027bd" 2438 | dependencies = [ 2439 | "anyhow", 2440 | "heck", 2441 | "proc-macro2", 2442 | "quote", 2443 | "shellexpand", 2444 | "syn 2.0.48", 2445 | "witx", 2446 | ] 2447 | 2448 | [[package]] 2449 | name = "wiggle-macro" 2450 | version = "16.0.0" 2451 | source = "registry+https://github.com/rust-lang/crates.io-index" 2452 | checksum = "31ae1ec11a17ea481539ee9a5719a278c9790d974060fbf71db4b2c05378780b" 2453 | dependencies = [ 2454 | "proc-macro2", 2455 | "quote", 2456 | "syn 2.0.48", 2457 | "wiggle-generate", 2458 | ] 2459 | 2460 | [[package]] 2461 | name = "winapi" 2462 | version = "0.3.9" 2463 | source = "registry+https://github.com/rust-lang/crates.io-index" 2464 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 2465 | dependencies = [ 2466 | "winapi-i686-pc-windows-gnu", 2467 | "winapi-x86_64-pc-windows-gnu", 2468 | ] 2469 | 2470 | [[package]] 2471 | name = "winapi-i686-pc-windows-gnu" 2472 | version = "0.4.0" 2473 | source = "registry+https://github.com/rust-lang/crates.io-index" 2474 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 2475 | 2476 | [[package]] 2477 | name = "winapi-x86_64-pc-windows-gnu" 2478 | version = "0.4.0" 2479 | source = "registry+https://github.com/rust-lang/crates.io-index" 2480 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 2481 | 2482 | [[package]] 2483 | name = "winch-codegen" 2484 | version = "0.14.0" 2485 | source = "registry+https://github.com/rust-lang/crates.io-index" 2486 | checksum = "58e58c236a6abdd9ab454552b4f29e16cfa837a86897c1503313b2e62e7609ec" 2487 | dependencies = [ 2488 | "anyhow", 2489 | "cranelift-codegen", 2490 | "gimli", 2491 | "regalloc2", 2492 | "smallvec", 2493 | "target-lexicon", 2494 | "wasmparser", 2495 | "wasmtime-environ", 2496 | ] 2497 | 2498 | [[package]] 2499 | name = "windows-core" 2500 | version = "0.52.0" 2501 | source = "registry+https://github.com/rust-lang/crates.io-index" 2502 | checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" 2503 | dependencies = [ 2504 | "windows-targets 0.52.0", 2505 | ] 2506 | 2507 | [[package]] 2508 | name = "windows-sys" 2509 | version = "0.48.0" 2510 | source = "registry+https://github.com/rust-lang/crates.io-index" 2511 | checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 2512 | dependencies = [ 2513 | "windows-targets 0.48.5", 2514 | ] 2515 | 2516 | [[package]] 2517 | name = "windows-sys" 2518 | version = "0.52.0" 2519 | source = "registry+https://github.com/rust-lang/crates.io-index" 2520 | checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 2521 | dependencies = [ 2522 | "windows-targets 0.52.0", 2523 | ] 2524 | 2525 | [[package]] 2526 | name = "windows-targets" 2527 | version = "0.48.5" 2528 | source = "registry+https://github.com/rust-lang/crates.io-index" 2529 | checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 2530 | dependencies = [ 2531 | "windows_aarch64_gnullvm 0.48.5", 2532 | "windows_aarch64_msvc 0.48.5", 2533 | "windows_i686_gnu 0.48.5", 2534 | "windows_i686_msvc 0.48.5", 2535 | "windows_x86_64_gnu 0.48.5", 2536 | "windows_x86_64_gnullvm 0.48.5", 2537 | "windows_x86_64_msvc 0.48.5", 2538 | ] 2539 | 2540 | [[package]] 2541 | name = "windows-targets" 2542 | version = "0.52.0" 2543 | source = "registry+https://github.com/rust-lang/crates.io-index" 2544 | checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" 2545 | dependencies = [ 2546 | "windows_aarch64_gnullvm 0.52.0", 2547 | "windows_aarch64_msvc 0.52.0", 2548 | "windows_i686_gnu 0.52.0", 2549 | "windows_i686_msvc 0.52.0", 2550 | "windows_x86_64_gnu 0.52.0", 2551 | "windows_x86_64_gnullvm 0.52.0", 2552 | "windows_x86_64_msvc 0.52.0", 2553 | ] 2554 | 2555 | [[package]] 2556 | name = "windows_aarch64_gnullvm" 2557 | version = "0.48.5" 2558 | source = "registry+https://github.com/rust-lang/crates.io-index" 2559 | checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 2560 | 2561 | [[package]] 2562 | name = "windows_aarch64_gnullvm" 2563 | version = "0.52.0" 2564 | source = "registry+https://github.com/rust-lang/crates.io-index" 2565 | checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" 2566 | 2567 | [[package]] 2568 | name = "windows_aarch64_msvc" 2569 | version = "0.48.5" 2570 | source = "registry+https://github.com/rust-lang/crates.io-index" 2571 | checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 2572 | 2573 | [[package]] 2574 | name = "windows_aarch64_msvc" 2575 | version = "0.52.0" 2576 | source = "registry+https://github.com/rust-lang/crates.io-index" 2577 | checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" 2578 | 2579 | [[package]] 2580 | name = "windows_i686_gnu" 2581 | version = "0.48.5" 2582 | source = "registry+https://github.com/rust-lang/crates.io-index" 2583 | checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 2584 | 2585 | [[package]] 2586 | name = "windows_i686_gnu" 2587 | version = "0.52.0" 2588 | source = "registry+https://github.com/rust-lang/crates.io-index" 2589 | checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" 2590 | 2591 | [[package]] 2592 | name = "windows_i686_msvc" 2593 | version = "0.48.5" 2594 | source = "registry+https://github.com/rust-lang/crates.io-index" 2595 | checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 2596 | 2597 | [[package]] 2598 | name = "windows_i686_msvc" 2599 | version = "0.52.0" 2600 | source = "registry+https://github.com/rust-lang/crates.io-index" 2601 | checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" 2602 | 2603 | [[package]] 2604 | name = "windows_x86_64_gnu" 2605 | version = "0.48.5" 2606 | source = "registry+https://github.com/rust-lang/crates.io-index" 2607 | checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 2608 | 2609 | [[package]] 2610 | name = "windows_x86_64_gnu" 2611 | version = "0.52.0" 2612 | source = "registry+https://github.com/rust-lang/crates.io-index" 2613 | checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" 2614 | 2615 | [[package]] 2616 | name = "windows_x86_64_gnullvm" 2617 | version = "0.48.5" 2618 | source = "registry+https://github.com/rust-lang/crates.io-index" 2619 | checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 2620 | 2621 | [[package]] 2622 | name = "windows_x86_64_gnullvm" 2623 | version = "0.52.0" 2624 | source = "registry+https://github.com/rust-lang/crates.io-index" 2625 | checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" 2626 | 2627 | [[package]] 2628 | name = "windows_x86_64_msvc" 2629 | version = "0.48.5" 2630 | source = "registry+https://github.com/rust-lang/crates.io-index" 2631 | checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 2632 | 2633 | [[package]] 2634 | name = "windows_x86_64_msvc" 2635 | version = "0.52.0" 2636 | source = "registry+https://github.com/rust-lang/crates.io-index" 2637 | checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" 2638 | 2639 | [[package]] 2640 | name = "winnow" 2641 | version = "0.5.33" 2642 | source = "registry+https://github.com/rust-lang/crates.io-index" 2643 | checksum = "b7520bbdec7211caa7c4e682eb1fbe07abe20cee6756b6e00f537c82c11816aa" 2644 | dependencies = [ 2645 | "memchr", 2646 | ] 2647 | 2648 | [[package]] 2649 | name = "winx" 2650 | version = "0.36.3" 2651 | source = "registry+https://github.com/rust-lang/crates.io-index" 2652 | checksum = "f9643b83820c0cd246ecabe5fa454dd04ba4fa67996369466d0747472d337346" 2653 | dependencies = [ 2654 | "bitflags 2.4.1", 2655 | "windows-sys 0.52.0", 2656 | ] 2657 | 2658 | [[package]] 2659 | name = "wit-parser" 2660 | version = "0.13.0" 2661 | source = "registry+https://github.com/rust-lang/crates.io-index" 2662 | checksum = "15df6b7b28ce94b8be39d8df5cb21a08a4f3b9f33b631aedb4aa5776f785ead3" 2663 | dependencies = [ 2664 | "anyhow", 2665 | "id-arena", 2666 | "indexmap 2.1.0", 2667 | "log", 2668 | "semver", 2669 | "serde", 2670 | "serde_derive", 2671 | "serde_json", 2672 | "unicode-xid", 2673 | ] 2674 | 2675 | [[package]] 2676 | name = "witx" 2677 | version = "0.9.1" 2678 | source = "registry+https://github.com/rust-lang/crates.io-index" 2679 | checksum = "e366f27a5cabcddb2706a78296a40b8fcc451e1a6aba2fc1d94b4a01bdaaef4b" 2680 | dependencies = [ 2681 | "anyhow", 2682 | "log", 2683 | "thiserror", 2684 | "wast 35.0.2", 2685 | ] 2686 | 2687 | [[package]] 2688 | name = "zerocopy" 2689 | version = "0.7.32" 2690 | source = "registry+https://github.com/rust-lang/crates.io-index" 2691 | checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" 2692 | dependencies = [ 2693 | "zerocopy-derive", 2694 | ] 2695 | 2696 | [[package]] 2697 | name = "zerocopy-derive" 2698 | version = "0.7.32" 2699 | source = "registry+https://github.com/rust-lang/crates.io-index" 2700 | checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" 2701 | dependencies = [ 2702 | "proc-macro2", 2703 | "quote", 2704 | "syn 2.0.48", 2705 | ] 2706 | 2707 | [[package]] 2708 | name = "zstd" 2709 | version = "0.11.2+zstd.1.5.2" 2710 | source = "registry+https://github.com/rust-lang/crates.io-index" 2711 | checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" 2712 | dependencies = [ 2713 | "zstd-safe", 2714 | ] 2715 | 2716 | [[package]] 2717 | name = "zstd-safe" 2718 | version = "5.0.2+zstd.1.5.2" 2719 | source = "registry+https://github.com/rust-lang/crates.io-index" 2720 | checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" 2721 | dependencies = [ 2722 | "libc", 2723 | "zstd-sys", 2724 | ] 2725 | 2726 | [[package]] 2727 | name = "zstd-sys" 2728 | version = "2.0.9+zstd.1.5.5" 2729 | source = "registry+https://github.com/rust-lang/crates.io-index" 2730 | checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656" 2731 | dependencies = [ 2732 | "cc", 2733 | "pkg-config", 2734 | ] 2735 | -------------------------------------------------------------------------------- /native/extism_nif/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "extism_nif" 3 | version = "0.3.0" 4 | edition = "2021" 5 | authors = ["Benjamin Eckel "] 6 | 7 | [lib] 8 | name = "extism_nif" 9 | path = "src/lib.rs" 10 | crate-type = ["cdylib"] 11 | 12 | # need this to be here and be empty 13 | [workspace] 14 | 15 | [dependencies] 16 | rustler = "0.30.0" 17 | extism = "1.0.0" 18 | log = "0.4" 19 | -------------------------------------------------------------------------------- /native/extism_nif/src/lib.rs: -------------------------------------------------------------------------------- 1 | use extism::Plugin; 2 | use rustler::{Env, ResourceArc, Term}; 3 | use std::str; 4 | use std::sync::RwLock; 5 | 6 | mod atoms { 7 | rustler::atoms! { 8 | ok, 9 | error, 10 | unknown // Other error 11 | } 12 | } 13 | 14 | struct ExtismPlugin { 15 | plugin: RwLock>, 16 | } 17 | unsafe impl Sync for ExtismPlugin {} 18 | unsafe impl Send for ExtismPlugin {} 19 | 20 | struct ExtismCancelHandle { 21 | handle: RwLock, 22 | } 23 | 24 | unsafe impl Sync for ExtismCancelHandle {} 25 | unsafe impl Send for ExtismCancelHandle {} 26 | 27 | fn load(env: Env, _: Term) -> bool { 28 | rustler::resource!(ExtismPlugin, env); 29 | rustler::resource!(ExtismCancelHandle, env); 30 | true 31 | } 32 | 33 | fn to_rustler_error(extism_error: extism::Error) -> rustler::Error { 34 | rustler::Error::Term(Box::new(extism_error.to_string())) 35 | } 36 | 37 | fn freed_error() -> rustler::Error { 38 | rustler::Error::Term(Box::new("Plugin has already been freed".to_string())) 39 | } 40 | 41 | #[rustler::nif] 42 | fn plugin_new_with_manifest( 43 | manifest_payload: String, 44 | wasi: bool, 45 | ) -> Result, rustler::Error> { 46 | let manifest_bytes = manifest_payload.as_bytes(); 47 | match Plugin::new(manifest_bytes, [], wasi) { 48 | Err(e) => Err(to_rustler_error(e)), 49 | Ok(plugin) => Ok(ResourceArc::new(ExtismPlugin { 50 | plugin: RwLock::new(Some(plugin)), 51 | })), 52 | } 53 | } 54 | 55 | #[rustler::nif] 56 | fn plugin_call( 57 | plugin: ResourceArc, 58 | name: String, 59 | input: String, 60 | ) -> Result { 61 | let mut plugin = plugin.plugin.write().unwrap(); 62 | if let Some(plugin) = &mut *plugin { 63 | let result = match plugin.call(name, input) { 64 | Err(e) => Err(to_rustler_error(e)), 65 | Ok(result) => match str::from_utf8(result) { 66 | Ok(output) => Ok(output.to_string()), 67 | Err(_e) => Err(rustler::Error::Term(Box::new( 68 | "Could not read output from plugin", 69 | ))), 70 | }, 71 | }; 72 | result 73 | } else { 74 | Err(freed_error()) 75 | } 76 | } 77 | 78 | #[rustler::nif] 79 | fn plugin_cancel_handle( 80 | plugin: ResourceArc, 81 | ) -> Result, rustler::Error> { 82 | let mut plugin = plugin.plugin.write().unwrap(); 83 | if let Some(plugin) = &mut *plugin { 84 | let handle = plugin.cancel_handle(); 85 | Ok(ResourceArc::new(ExtismCancelHandle { 86 | handle: RwLock::new(handle), 87 | })) 88 | } else { 89 | Err(freed_error()) 90 | } 91 | } 92 | 93 | #[rustler::nif] 94 | fn plugin_cancel(handle: ResourceArc) -> bool { 95 | handle.handle.read().unwrap().cancel().is_ok() 96 | } 97 | 98 | #[rustler::nif] 99 | fn plugin_free(plugin: ResourceArc) -> Result<(), rustler::Error> { 100 | let mut plugin = plugin.plugin.write().unwrap(); 101 | if let Some(plugin) = plugin.take() { 102 | drop(plugin); 103 | } 104 | Ok(()) 105 | } 106 | 107 | // #[rustler::nif] 108 | // fn set_log_file(file: String, log_level: String) -> Result { 109 | // match extism::set_log_callback(logger, log_level) { 110 | // Ok(()) => Ok(atoms::ok()), 111 | // Err(e) => Err(rustler::Error::Term(Box::new(format!( 112 | // "Did not set custom logger: {e:?}" 113 | // )))), 114 | // } 115 | // } 116 | 117 | #[rustler::nif] 118 | fn plugin_has_function( 119 | plugin: ResourceArc, 120 | function_name: String, 121 | ) -> Result { 122 | let mut plugin = plugin.plugin.write().unwrap(); 123 | if let Some(plugin) = &mut *plugin { 124 | let has_function = plugin.function_exists(function_name); 125 | Ok(has_function) 126 | } else { 127 | Err(freed_error()) 128 | } 129 | } 130 | 131 | rustler::init!( 132 | "Elixir.Extism.Native", 133 | [ 134 | plugin_new_with_manifest, 135 | plugin_call, 136 | plugin_has_function, 137 | plugin_cancel_handle, 138 | plugin_cancel, 139 | plugin_free, 140 | //set_log_file, 141 | ], 142 | load = load 143 | ); 144 | -------------------------------------------------------------------------------- /test/extism_test.exs: -------------------------------------------------------------------------------- 1 | defmodule ExtismTest do 2 | use ExUnit.Case 3 | doctest Extism 4 | 5 | defp new_plugin() do 6 | path = Path.join([__DIR__, "../wasm/count-vowels.wasm"]) 7 | manifest = %{wasm: [%{path: path}]} 8 | {:ok, plugin} = Extism.Plugin.new(manifest, false) 9 | plugin 10 | end 11 | 12 | test "counts vowels" do 13 | plugin = new_plugin() 14 | {:ok, output} = Extism.Plugin.call(plugin, "count_vowels", "this is a test") 15 | assert JSON.decode(output) == {:ok, %{"count" => 4, "total" => 4, "vowels" => "aeiouAEIOU"}} 16 | end 17 | 18 | test "can make multiple calls on a plugin" do 19 | plugin = new_plugin() 20 | {:ok, output} = Extism.Plugin.call(plugin, "count_vowels", "this is a test") 21 | assert JSON.decode(output) == {:ok, %{"count" => 4, "total" => 4, "vowels" => "aeiouAEIOU"}} 22 | {:ok, output} = Extism.Plugin.call(plugin, "count_vowels", "this is a test again") 23 | assert JSON.decode(output) == {:ok, %{"count" => 7, "total" => 11, "vowels" => "aeiouAEIOU"}} 24 | {:ok, output} = Extism.Plugin.call(plugin, "count_vowels", "this is a test thrice") 25 | assert JSON.decode(output) == {:ok, %{"count" => 6, "total" => 17, "vowels" => "aeiouAEIOU"}} 26 | {:ok, output} = Extism.Plugin.call(plugin, "count_vowels", "🌎hello🌎world🌎") 27 | assert JSON.decode(output) == {:ok, %{"count" => 3, "total" => 20, "vowels" => "aeiouAEIOU"}} 28 | end 29 | 30 | test "can free a plugin" do 31 | plugin = new_plugin() 32 | {:ok, output} = Extism.Plugin.call(plugin, "count_vowels", "this is a test") 33 | assert JSON.decode(output) == {:ok, %{"count" => 4, "total" => 4, "vowels" => "aeiouAEIOU"}} 34 | Extism.Plugin.free(plugin) 35 | # Expect an error when calling a plugin that was freed 36 | {:error, _err} = Extism.Plugin.call(plugin, "count_vowels", "this is a test") 37 | end 38 | 39 | test "errors on bad manifest" do 40 | {:error, _msg} = Extism.Plugin.new(%{"wasm" => 123}, false) 41 | end 42 | 43 | test "errors on unknown function" do 44 | plugin = new_plugin() 45 | {:error, _msg} = Extism.Plugin.call(plugin, "unknown", "this is a test") 46 | end 47 | 48 | # test "set_log_file" do 49 | # Extism.set_log_file("/tmp/logfile.log", "debug") 50 | # end 51 | 52 | test "has_function" do 53 | plugin = new_plugin() 54 | assert Extism.Plugin.has_function(plugin, "count_vowels") 55 | assert !Extism.Plugin.has_function(plugin, "unknown") 56 | end 57 | 58 | # test "handles error on call" do 59 | # path = Path.join([__DIR__, "../wasm/json-plugin.wasm"]) 60 | # manifest = %{wasm: [%{path: path}]} 61 | # {:ok, plugin} = Extism.Plugin.new(manifest, true) 62 | # result = Extism.Plugin.call(plugin, "foo", "hot {garbage}aaaa") 63 | # assert {:error, err_msg} = result 64 | # assert err_msg =~ ~r/Uncaught SyntaxError/ 65 | # end 66 | end 67 | -------------------------------------------------------------------------------- /test/test_helper.exs: -------------------------------------------------------------------------------- 1 | ExUnit.start() 2 | -------------------------------------------------------------------------------- /wasm/count-vowels.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/extism/elixir-sdk/79d20e1b3778e0c7544902ee53a3e5dfe8a43b0f/wasm/count-vowels.wasm -------------------------------------------------------------------------------- /wasm/json-plugin.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/extism/elixir-sdk/79d20e1b3778e0c7544902ee53a3e5dfe8a43b0f/wasm/json-plugin.wasm --------------------------------------------------------------------------------