Extism は、WebAssembly (Wasm) を使用して構築するための軽量フレームワークです。サーバー、エッジ、CLI、IoT、ブラウザー、およびその間にあるすべてのものでの Wasm コードの実行をサポートします。 Extism は、実行場所に関係なく、共通のインターフェイスをサポートするという点で「ユニバーサル」になるように設計されています。
注: Extism の主な使用例の 1 つは、拡張可能なソフトウェアとプラグインを構築することです。ユーザーからの任意の信頼できないコードを実行できるようにしたいですか? Extism により、これが安全かつ現実的に実行できるようになります。
さらに、Extism は標準の Wasm ランタイムにいくつかの追加ユーティリティを追加します。たとえば、永続メモリ/モジュール スコープ変数、WASI を使用しない安全でホスト制御の HTTP、ランタイム リミッターとタイマー、よりシンプルなホスト関数リンクなどをサポートしています。 Extism ユーザーは以下を構築します。
プログラムにインポートする SDK を選択し、ドキュメントを参照して開始してください。
タイプ | 言語 | ソースコード | パッケージ |
---|---|---|---|
Rust SDK | https://github.com/extism/extism/tree/main/runtime | Crates.io | |
JS SDK | https://github.com/extism/js-sdk (Web、Node、Deno、Bun をサポート!) | 故宮 | |
エリクサーSDK | https://github.com/extism/elixir-sdk | 16進数 | |
ゴーSDK | https://github.com/extism/go-sdk | ゴーモッド | |
ハスケルSDK | https://github.com/extism/haskell-sdk | ハッキング | |
Java SDK | https://github.com/extism/java-sdk | ソナタイプ | |
.NET SDK | https://github.com/extism/dotnet-sdk (C# と F# をサポート!) | ナゲット | |
OCaml SDK | https://github.com/extism/ocaml-sdk | オパム | |
Perl SDK | https://github.com/extism/perl-sdk | CPAN | |
PHP SDK | https://github.com/extism/php-sdk | 梱包担当者 | |
Python SDK | https://github.com/extism/python-sdk | ピピ | |
Ruby SDK | https://github.com/extism/ruby-sdk | ルビージェムズ | |
ジグSDK | https://github.com/extism/zig-sdk | 該当なし | |
C SDK | https://github.com/extism/extism/tree/main/libextism | 該当なし | |
C++ SDK | https://github.com/extism/cpp-sdk | 該当なし |
Extism ホスト (SDK を実行している) は、 .wasm
バイナリにコンパイルされた PDK (プラグイン開発キット) ライブラリを含む WebAssembly コードを実行する必要があります。 PDK を使用すると、プラグイン/拡張コードの作成者は、ホストからの入力を読み取ってデータを返したり、提供された構成を読み取ったり、変数を設定/取得したり、許可されている場合はアウトバウンド HTTP 呼び出しを行ったりすることが容易になります。
Wasm プログラムにインポートする PDK を選択し、ドキュメントを参照して開始してください。
タイプ | 言語 | ソースコード | パッケージ |
---|---|---|---|
錆びたPDK | https://github.com/extism/rust-pdk | Crates.io | |
JS PDK | https://github.com/extism/js-pdk | 該当なし | |
Python PDK | https://github.com/extism/python-pdk | 該当なし | |
ゴーPDK | https://github.com/extism/go-pdk | ゴーモッド | |
ハスケル PDK | https://github.com/extism/haskell-pdk | ハッキング | |
AssemblyScript PDK | https://github.com/extism/assemblyscript-pdk | 故宮 | |
.NET PDK | https://github.com/extism/dotnet-pdk (C# と F# をサポート!) | ナゲット | |
C PDK | https://github.com/extism/c-pdk | 該当なし | |
C++ PDK | https://github.com/extism/cpp-pdk | 該当なし | |
ジグPDK | https://github.com/extism/zig-pdk | 該当なし |
Extism SDK 言語と PDK 言語間で使用する関数シグネチャと型を記述するスキーマを定義すると、多くの場合非常に役立ちます。
XTP Bindgen は、Extism プラグインの PDK バインディングを生成するオープン ソース フレームワークです。これは XTP プラットフォームによって使用されますが、プラットフォームの外部で Extism 互換のプラグイン システムを定義するために使用できます。
xtp
CLIをインストールします。インストール手順はこちらをご覧ください。
version : v1-draft
exports :
CountVowels :
input :
type : string
contentType : text/plain; charset=utf-8
output :
$ref : " #/components/schemas/VowelReport "
contentType : application/json
# components.schemas defined in example-schema.yaml...
example-schema.yaml の例、またはドキュメント ページの完全な「キッチン シンク」の例を参照してください。
xtp plugin init --schema-file ./example-schema.yaml
> 1. TypeScript
2. Go
3. Rust
4. Python
5. C#
6. Zig
7. C++
8. GitHub Template
9. Local Template
これにより、開始できる定型プラグイン プロジェクト全体が作成されます。空の関数を実装し、 xtp plugin build
実行してプラグインをコンパイルします。
XTP Bindgen の詳細については、dylibso/xtp-bindgen リポジトリと公式 XTP スキーマ ドキュメントを参照してください。
問題が発生したり、質問がある場合は、Discord に参加してお知らせください。私たちのコミュニティは非常に迅速に対応し、喜んでお手伝いをいたします。
詳細とドキュメントについては、プロジェクトの Web サイトにアクセスしてください。また、Extism の概要とその目標とアプローチを読むことも検討してください。
Extism への貢献をご検討いただきありがとうございます。PR を作成したり、取り組んでいただけるものを見つけたりするお手伝いをさせていただきます。
最も簡単な開始方法は、Discord に参加するか、 extism/proposals
Issue Tracker で問題を開くことです。これは最終的に Extism Improvement Proposal (EIP) になる可能性があります。
詳細については、貢献ガイドをお読みください。
Extism は、次のチームによるオープンソース製品です。
連絡して、何を構築しているのか教えてください。ぜひお手伝いさせていただきます: [email protected]