Extism adalah kerangka kerja ringan untuk dibangun dengan WebAssembly (Wasm). Ini mendukung menjalankan kode Wasm di server, edge, CLI, IoT, browser, dan semua yang ada di antaranya. Extism dirancang untuk menjadi "universal" karena mendukung antarmuka umum, di mana pun ia dijalankan.
Catatan: Salah satu kasus penggunaan utama Extism adalah membuat perangkat lunak & plugin yang dapat diperluas . Anda ingin dapat mengeksekusi kode arbitrer dan tidak tepercaya dari pengguna Anda? Ekstisme menjadikan hal ini aman dan praktis untuk dilakukan.
Selain itu, Extism menambahkan beberapa utilitas tambahan di atas runtime Wasm standar. Misalnya, kami mendukung variabel memori persisten/cakupan modul, HTTP yang aman & dikontrol host tanpa WASI, pembatas & pengatur waktu proses, penautan fungsi host yang lebih sederhana, dan banyak lagi. Pengguna ekstisme membangun:
Pilih SDK untuk diimpor ke program Anda, dan lihat dokumentasi untuk memulai:
Jenis | Bahasa | Kode Sumber | Kemasan |
---|---|---|---|
SDK Karat | https://github.com/extism/extism/tree/main/runtime | peti.io | |
JSSDK | https://github.com/extism/js-sdk (mendukung Web, Node, Deno & Bun!) | NPM | |
SDK Ramuan | https://github.com/extism/elixir-sdk | kutukan | |
Buka SDK | https://github.com/extism/go-sdk | Pergi mod | |
SDK Haskell | https://github.com/extism/haskell-sdk | Peretasan | |
SDK Jawa | https://github.com/extism/java-sdk | Tipe Sona | |
.NET SDK | https://github.com/extism/dotnet-sdk (mendukung C# & F#!) | Nuget | |
SDK OCaml | https://github.com/extism/ocaml-sdk | opam | |
PerlSDK | https://github.com/extism/perl-sdk | CPAN | |
PHPSDK | https://github.com/extism/php-sdk | ahli pengemasan | |
SDK Python | https://github.com/extism/python-sdk | PyPi | |
SDK Ruby | https://github.com/extism/ruby-sdk | Permata Ruby | |
Zig SDK | https://github.com/extism/zig-sdk | T/A | |
C SDK | https://github.com/extism/extism/tree/main/libextism | T/A | |
C++SDK | https://github.com/extism/cpp-sdk | T/A |
Host Extism (menjalankan SDK) harus menjalankan kode WebAssembly yang memiliki pustaka PDK, atau Plug-in Development Kit, yang dikompilasi ke dalam biner .wasm
. PDK memudahkan penulis kode plugin/ekstensi untuk membaca masukan dari host dan mengembalikan data, membaca konfigurasi yang disediakan, mengatur/mendapatkan variabel, melakukan panggilan HTTP keluar jika diizinkan, dan banyak lagi.
Pilih PDK untuk diimpor ke program Wasm Anda, dan lihat dokumentasi untuk memulai:
Jenis | Bahasa | Kode Sumber | Kemasan |
---|---|---|---|
PDK Karat | https://github.com/extism/rust-pdk | peti.io | |
JS PDK | https://github.com/extism/js-pdk | T/A | |
PDK Python | https://github.com/extism/python-pdk | T/A | |
Lanjut PDK | https://github.com/extism/go-pdk | Pergi mod | |
PDK Haskell | https://github.com/extism/haskell-pdk | Peretasan | |
PDK Skrip Perakitan | https://github.com/extism/assemblyscript-pdk | NPM | |
.NET PDK | https://github.com/extism/dotnet-pdk (mendukung C# & F#!) | Nuget | |
C PDK | https://github.com/extism/c-pdk | T/A | |
C++ PDK | https://github.com/extism/cpp-pdk | T/A | |
Zig PDK | https://github.com/extism/zig-pdk | T/A |
Seringkali sangat berguna untuk menentukan skema guna mendeskripsikan tanda tangan fungsi dan tipe yang ingin Anda gunakan antara bahasa Extism SDK dan PDK.
XTP Bindgen adalah kerangka kerja sumber terbuka untuk menghasilkan pengikatan PDK untuk plug-in Extism. Ini digunakan oleh Platform XTP, tetapi dapat digunakan di luar platform untuk mendefinisikan sistem plug-in yang kompatibel dengan Extism.
xtp
.Lihat petunjuk instalasi di sini.
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...
Lihat contoh di example-schema.yaml, atau contoh lengkap "wastafel dapur" di halaman dokumen.
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
Ini akan membuat seluruh proyek plugin boilerplate untuk Anda mulai. Terapkan fungsi yang kosong, dan jalankan xtp plugin build
untuk mengkompilasi plugin Anda.
Untuk informasi lebih lanjut tentang XTP Bindgen, lihat repositori dylibso/xtp-bindgen dan dokumentasi resmi Skema XTP.
Jika Anda mengalami masalah atau memiliki pertanyaan, silakan bergabung dengan Discord kami dan beri tahu kami. Komunitas kami sangat responsif dan senang membantu Anda memulai.
Kunjungi situs web proyek untuk informasi dan dokumen lebih lanjut. Juga, pertimbangkan untuk membaca ikhtisar Ekstisme dan tujuan & pendekatannya.
Terima kasih telah mempertimbangkan kontribusi pada Extism, kami dengan senang hati membantu Anda membuat PR atau menemukan sesuatu untuk dikerjakan!
Cara termudah untuk memulai adalah dengan bergabung dengan Discord atau membuka isu di pelacak masalah extism/proposals
, yang pada akhirnya bisa menjadi Proposal Peningkatan Ekstisme (EIP).
Untuk informasi lebih lanjut, silakan baca panduan Berkontribusi.
Extism adalah produk sumber terbuka dari tim di:
Hubungi kami dan beri tahu kami apa yang sedang Anda bangun! Kami ingin membantu: [email protected]