Updates the requirements on [prost](https://github.com/tokio-rs/prost) to permit the latest version. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/tokio-rs/prost/blob/master/CHANGELOG.md">prost's changelog</a>.</em></p> <blockquote> <h1>Prost version 0.13.1</h1> <p><em>PROST!</em> is a <a href="https://developers.google.com/protocol-buffers/">Protocol Buffers</a> implementation for the <a href="https://www.rust-lang.org/">Rust Language</a>. <code>prost</code> generates simple, idiomatic Rust code from <code>proto2</code> and <code>proto3</code> files.</p> <h2>Bug fixes</h2> <ul> <li>Enum variant named Error causes ambiguous item (<a href="https://redirect.github.com/tokio-rs/prost/issues/1098">#1098</a>)</li> </ul> <h1>PROST version 0.13.0</h1> <p><strong>note</strong>: this version was yanked in favor of 0.13.1</p> <p><em>PROST!</em> is a <a href="https://developers.google.com/protocol-buffers/">Protocol Buffers</a> implementation for the <a href="https://www.rust-lang.org/">Rust Language</a>. <code>prost</code> generates simple, idiomatic Rust code from <code>proto2</code> and <code>proto3</code> files.</p> <p>This major update brings new features and fixes:</p> <h2>Breaking changes</h2> <ul> <li> <p>derive Copy trait for messages where possible (<a href="https://redirect.github.com/tokio-rs/prost/issues/950">#950</a>)</p> <p><code>prost-build</code> will automatically derive <code>trait Copy</code> for some messages. If you manually implement <code>Copy</code> you should remove your implementation.</p> </li> <li> <p>Change generated functions signatures to remove type parameters (<a href="https://redirect.github.com/tokio-rs/prost/issues/1045">#1045</a>)</p> <p>The function signature of <code>trait Message</code> is changed to use <code>impl Buf</code> instead of a named generic type. If you implement <code>trait Message</code>, you should change the function signature.</p> </li> <li> <p>Lightweight error value in TryFrom<!-- raw HTML omitted --> for enums (<a href="https://redirect.github.com/tokio-rs/prost/issues/1010">#1010</a>)</p> <p>When a <code>impl TryFrom<i32></code> is generated by <code>prost</code> derive macros, it will now return the error type <code>UnknownEnumValue</code> instead of <code>DecodeError</code>. The new error can be used to retreive the integer value that failed to convert.</p> </li> </ul> <h2>Features</h2> <ul> <li> <p>fix: Only touch include file if contents is changed (<a href="https://redirect.github.com/tokio-rs/prost/issues/1058">#1058</a>)</p> <p>Most generated files are untouched when the contents doesn't change. Use the same mechanism for include file as well.</p> </li> </ul> <h2>Dependencies</h2> <ul> <li>update env_logger requirement from 0.10 to 0.11 (<a href="https://redirect.github.com/tokio-rs/prost/issues/1074">#1074</a>)</li> <li>update criterion requirement from 0.4 to 0.5 (<a href="https://redirect.github.com/tokio-rs/prost/issues/1071">#1071</a>)</li> <li>Remove unused libz-sys (<a href="https://redirect.github.com/tokio-rs/prost/issues/1077">#1077</a>)</li> <li>build(deps): update itertools requirement from >=0.10, <!-- raw HTML omitted -->=0.10, <=0.13 (<a href="https://redirect.github.com/tokio-rs/prost/issues/1070">#1070</a>)</li> </ul> <h2>Documentation</h2> <ul> <li>better checking of tag duplicates, avoid discarding invalid variant errs (<a href="https://redirect.github.com/tokio-rs/prost/issues/951">#951</a>)</li> <li>docs: Fix broken link warnings (<a href="https://redirect.github.com/tokio-rs/prost/issues/1056">#1056</a>)</li> <li>Add missing LICENSE symlink (<a href="https://redirect.github.com/tokio-rs/prost/issues/1086">#1086</a>)</li> </ul> <h2>Internal</h2> <ul> <li>workspace package metadata (<a href="https://redirect.github.com/tokio-rs/prost/issues/1036">#1036</a>)</li> <li>fix: Build error due to merge conflict (<a href="https://redirect.github.com/tokio-rs/prost/issues/1068">#1068</a>)</li> <li>build: Fix release scripts (<a href="https://redirect.github.com/tokio-rs/prost/issues/1055">#1055</a>)</li> <li>chore: Add ci to check MSRV (<a href="https://redirect.github.com/tokio-rs/prost/issues/1057">#1057</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="f19104a3d4"><code>f19104a</code></a> chore: prepare 0.13.1 release (<a href="https://redirect.github.com/tokio-rs/prost/issues/1099">#1099</a>)</li> <li><a href="26463f437e"><code>26463f4</code></a> fix: Enum variant named <code>Error</code> causes ambiguous item (<a href="https://redirect.github.com/tokio-rs/prost/issues/1098">#1098</a>)</li> <li><a href="23f7174969"><code>23f7174</code></a> chore: Release version 0.13.0 (<a href="https://redirect.github.com/tokio-rs/prost/issues/1093">#1093</a>)</li> <li><a href="7a1424cf8c"><code>7a1424c</code></a> build: Fix prepare-release.sh (<a href="https://redirect.github.com/tokio-rs/prost/issues/1094">#1094</a>)</li> <li><a href="7790799b0d"><code>7790799</code></a> build(deps): update itertools requirement from >=0.10, <=0.12 to >=0.10, <=0....</li> <li><a href="4a0cc17102"><code>4a0cc17</code></a> Add missing LICENSE symlink (<a href="https://redirect.github.com/tokio-rs/prost/issues/1086">#1086</a>)</li> <li><a href="ae33a5ea97"><code>ae33a5e</code></a> ci: Set rust version of clippy job to a fixed version (<a href="https://redirect.github.com/tokio-rs/prost/issues/1090">#1090</a>)</li> <li><a href="ba77654083"><code>ba77654</code></a> fix: Only touch include file if contents is changed (<a href="https://redirect.github.com/tokio-rs/prost/issues/1058">#1058</a>)</li> <li><a href="e7049d3eb2"><code>e7049d3</code></a> workspace package metadata (<a href="https://redirect.github.com/tokio-rs/prost/issues/1036">#1036</a>)</li> <li><a href="ef4930c140"><code>ef4930c</code></a> docs: Fix broken link warnings (<a href="https://redirect.github.com/tokio-rs/prost/issues/1056">#1056</a>)</li> <li>Additional commits viewable in <a href="https://github.com/tokio-rs/prost/compare/v0.12.0...v0.13.1">compare view</a></li> </ul> </details> <br /> You can trigger a rebase of this PR by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> > **Note** > Automatic rebases have been disabled on this pull request as it has been open for over 30 days. Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Overview
Extism is a lightweight framework for building with WebAssembly (Wasm). It supports running Wasm code on servers, the edge, CLIs, IoT, browsers and everything in between. Extism is designed to be "universal" in that it supports a common interface, no matter where it runs.
Note: One of the primary use cases for Extism is building extensible software & plugins. You want to be able to execute arbitrary, untrusted code from your users? Extism makes this safe and practical to do.
Additionally, Extism adds some extra utilities on top of standard Wasm runtimes. For example, we support persistent memory/module-scope variables, secure & host-controlled HTTP without WASI, runtime limiters & timers, simpler host function linking, and more. Extism users build:
- plug-in systems
- FaaS platforms
- code generators
- web applications
- & much more...
Run WebAssembly In Your App
Pick a SDK to import into your program, and refer to the documentation to get started:
| Type | Language | Source Code | Package |
|---|---|---|---|
| Rust SDK | https://github.com/extism/extism/tree/main/runtime | Crates.io | |
| JS SDK | https://github.com/extism/js-sdk (supports Web, Node, Deno & Bun!) |
NPM | |
| Elixir SDK | https://github.com/extism/elixir-sdk | Hex | |
| Go SDK | https://github.com/extism/go-sdk | Go mod | |
| Haskell SDK | https://github.com/extism/haskell-sdk | Hackage | |
| Java SDK | https://github.com/extism/java-sdk | Sonatype | |
| .NET SDK | https://github.com/extism/dotnet-sdk (supports C# & F#!) |
Nuget | |
| OCaml SDK | https://github.com/extism/ocaml-sdk | opam | |
| Perl SDK | https://github.com/extism/perl-sdk | CPAN | |
| PHP SDK | https://github.com/extism/php-sdk | Packagist | |
| Python SDK | https://github.com/extism/python-sdk | PyPi | |
| Ruby SDK | https://github.com/extism/ruby-sdk | RubyGems | |
| Zig SDK | https://github.com/extism/zig-sdk | N/A | |
| C SDK | https://github.com/extism/extism/tree/main/libextism | N/A | |
| C++ SDK | https://github.com/extism/cpp-sdk | N/A |
Compile WebAssembly to run in Extism Hosts
Extism Hosts (running the SDK) must execute WebAssembly code that has a PDK
library compiled in to the .wasm binary. PDKs make it easy for plug-in /
extension code authors to read input from the host and return data back, read
provided configuration, set/get variables, make outbound HTTP calls if allowed,
and more.
Pick a PDK to import into your Wasm program, and refer to the documentation to get started:
| Type | Language | Source Code | Package |
|---|---|---|---|
| Rust PDK | https://github.com/extism/rust-pdk | Crates.io | |
| JS PDK | https://github.com/extism/js-pdk | N/A | |
| Go PDK | https://github.com/extism/go-pdk | Go mod | |
| Haskell PDK | https://github.com/extism/haskell-pdk | Hackage | |
| AssemblyScript PDK | https://github.com/extism/assemblyscript-pdk | NPM | |
| .NET PDK | https://github.com/extism/dotnet-pdk (supports C# & F#!) |
https://www.nuget.org/packages/Extism.Pdk | |
| C PDK | https://github.com/extism/c-pdk | N/A | |
| Zig PDK | https://github.com/extism/zig-pdk | N/A |
Support
Discord
If you experience any problems or have any questions, please join our Discord and let us know. Our community is very responsive and happy to help get you started.
Usage
Head to the project website for more information and docs. Also, consider reading an overview of Extism and its goals & approach.
Contribution
Thank you for considering a contribution to Extism, we are happy to help you make a PR or find something to work on!
The easiest way to start would be to join the
Discord or open an issue on the
extism/proposals issue tracker, which
can eventually become an Extism Improvement Proposal (EIP).
For more information, please read the Contributing guide.
Who's behind this?
Extism is an open-source product from the team at:
Reach out and tell us what you're building! We'd love to help: hello@dylibso.com