Extism 是一個使用 WebAssembly (Wasm) 進行建構的輕量級框架。它支援在伺服器、邊緣、CLI、物聯網、瀏覽器以及介於兩者之間的所有裝置上執行 Wasm 程式碼。 Extism 被設計為“通用”,因為它支援通用接口,無論它在哪裡運行。
注意: Extism 的主要用例之一是建立可擴展的軟體和插件。您希望能夠執行使用者的任意、不受信任的程式碼嗎?存在主義使這一切變得安全且實用。
此外,Extism 在標準 Wasm 運行時之上添加了一些額外的實用程式。例如,我們支援持久性記憶體/模組範圍變數、無需 WASI 的安全且主機控制的 HTTP、執行時間限制器和計時器、更簡單的主機函數連結等等。存在主義用戶建構:
選擇一個 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 | 十六進位 | |
去SDK | https://github.com/extism/go-sdk | 去模組 | |
哈斯克爾軟體開發工具包 | https://github.com/extism/haskell-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 | 皮皮 | |
紅寶石SDK | https://github.com/extism/ruby-sdk | 紅寶石 | |
紫光SDK | https://github.com/extism/zig-sdk | 不適用 | |
軟體開發工具包 | https://github.com/extism/extism/tree/main/libextism | 不適用 | |
C++ SDK | https://github.com/extism/cpp-sdk | 不適用 |
Extism 主機(執行 SDK)必須執行 WebAssembly 程式碼,該程式碼具有編譯到.wasm
二進位檔案中的 PDK(或外掛程式開發工具包)庫。 PDK 讓外掛程式/擴充程式碼作者可以輕鬆地從主機讀取輸入並傳回資料、讀取提供的配置、設定/取得變數、在允許的情況下進行出站 HTTP 呼叫等。
選擇一個 PDK 匯入到您的 Wasm 程式中,並參考文件開始:
類型 | 語言 | 原始碼 | 包裹 |
---|---|---|---|
鐵鏽PDK | https://github.com/extism/rust-pdk | Crates.io | |
JSPDK | 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#!) | 努蓋特 | |
磷酸二氫鉀 | 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 Schema 文件。
如果您遇到任何問題或有任何疑問,請加入我們的 Discord 並告訴我們。我們的社區反應非常積極,很樂意幫助您入門。
前往專案網站以獲取更多資訊和文件。另外,請考慮閱讀 Extism 及其目標和方法的概述。
感謝您考慮為 Extism 做出貢獻,我們很高興幫助您製作 PR 或找到可以做的事情!
最簡單的開始方法是加入 Discord 或在extism/proposals
問題追蹤器上提出問題,最終可以成為 Extism Improvement Proposal (EIP)。
有關更多信息,請閱讀貢獻指南。
Extism 是來自以下團隊的開源產品:
聯絡我們並告訴我們您正在建立什麼!我們很樂意提供協助: [email protected]