Extism ist ein leichtes Framework zum Erstellen mit WebAssembly (Wasm). Es unterstützt die Ausführung von Wasm-Code auf Servern, Edge, CLIs, IoT, Browsern und allem dazwischen. Extism ist so konzipiert, dass es „universell“ ist, da es eine gemeinsame Schnittstelle unterstützt, unabhängig davon, wo es ausgeführt wird.
Hinweis: Einer der Hauptanwendungsfälle für Extism ist die Erstellung erweiterbarer Software und Plugins . Sie möchten beliebigen, nicht vertrauenswürdigen Code Ihrer Benutzer ausführen können? Extism macht dies sicher und praktisch.
Darüber hinaus fügt Extism zusätzlich zu den Standard-Wasm-Laufzeiten einige zusätzliche Dienstprogramme hinzu. Wir unterstützen beispielsweise persistente Speicher-/Modulbereichsvariablen, sicheres und hostgesteuertes HTTP ohne WASI, Laufzeitbegrenzer und Timer, einfachere Host-Funktionsverknüpfung und mehr. Extism-Benutzer bauen:
Wählen Sie ein SDK aus, das Sie in Ihr Programm importieren möchten, und lesen Sie die Dokumentation, um loszulegen:
Typ | Sprache | Quellcode | Paket |
---|---|---|---|
Rust SDK | https://github.com/extism/extism/tree/main/runtime | Crates.io | |
JS SDK | https://github.com/extism/js-sdk (unterstützt Web, Node, Deno & Bun!) | NPM | |
Elixir SDK | https://github.com/extism/elixir-sdk | Verhexen | |
Gehen Sie zum SDK | https://github.com/extism/go-sdk | Geh mod | |
Haskell SDK | https://github.com/extism/haskell-sdk | Hacking | |
Java SDK | https://github.com/extism/java-sdk | Sonatyp | |
.NET SDK | https://github.com/extism/dotnet-sdk (unterstützt C# und 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 | Paketist | |
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 |
Extism-Hosts (auf denen das SDK ausgeführt wird) müssen WebAssembly-Code ausführen, der über eine PDK- oder Plug-in-Development-Kit-Bibliothek verfügt, die in die .wasm
Binärdatei kompiliert ist. PDKs machen es Plug-in-/Erweiterungscode-Autoren einfach, Eingaben vom Host zu lesen und Daten zurückzugeben, bereitgestellte Konfigurationen zu lesen, Variablen festzulegen/abzurufen, ausgehende HTTP-Aufrufe durchzuführen, sofern zulässig, und vieles mehr.
Wählen Sie ein PDK aus, das Sie in Ihr Wasm-Programm importieren möchten, und lesen Sie die Dokumentation, um loszulegen:
Typ | Sprache | Quellcode | Paket |
---|---|---|---|
Rust PDK | https://github.com/extism/rust-pdk | Crates.io | |
JS PDK | https://github.com/extism/js-pdk | N / A | |
Python PDK | https://github.com/extism/python-pdk | N / A | |
Gehen Sie PDK | https://github.com/extism/go-pdk | Geh mod | |
Haskell PDK | https://github.com/extism/haskell-pdk | Hacking | |
AssemblyScript PDK | https://github.com/extism/assemblyscript-pdk | NPM | |
.NET PDK | https://github.com/extism/dotnet-pdk (unterstützt C# und F#!) | Nuget | |
C PDK | https://github.com/extism/c-pdk | N / A | |
C++ PDK | https://github.com/extism/cpp-pdk | N / A | |
Zig PDK | https://github.com/extism/zig-pdk | N / A |
Es ist oft sehr nützlich, ein Schema zu definieren, um die Funktionssignaturen und -typen zu beschreiben, die Sie zwischen den Extism SDK- und PDK-Sprachen verwenden möchten.
XTP Bindgen ist ein Open-Source-Framework zum Generieren von PDK-Bindungen für Extism-Plug-Ins. Es wird von der XTP-Plattform verwendet, kann aber auch außerhalb der Plattform verwendet werden, um jedes Extism-kompatible Plug-in-System zu definieren.
xtp
CLI.Siehe Installationsanweisungen hier.
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...
Sehen Sie sich ein Beispiel in example-schema.yaml oder ein vollständiges „Kitchen Sink“-Beispiel auf der Dokumentationsseite an.
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
Dadurch wird ein komplettes Boilerplate-Plugin-Projekt erstellt, mit dem Sie beginnen können. Implementieren Sie die leeren Funktionen und führen Sie xtp plugin build
aus, um Ihr Plugin zu kompilieren.
Weitere Informationen zu XTP Bindgen finden Sie im dylibso/xtp-bindgen-Repository und in der offiziellen XTP-Schema-Dokumentation.
Wenn Sie auf Probleme stoßen oder Fragen haben, treten Sie bitte unserem Discord bei und lassen Sie es uns wissen. Unsere Community ist sehr reaktionsschnell und hilft Ihnen gerne beim Einstieg.
Weitere Informationen und Dokumente finden Sie auf der Projektwebsite. Denken Sie auch darüber nach, einen Überblick über Extismus und seine Ziele und Herangehensweise zu lesen.
Vielen Dank, dass Sie über einen Beitrag zu Extism nachgedacht haben. Wir helfen Ihnen gerne bei der Erstellung einer PR oder bei der Suche nach etwas, an dem Sie arbeiten können!
Der einfachste Weg wäre, dem Discord beizutreten oder ein Problem im extism/proposals
Issue-Tracker zu eröffnen, das schließlich zu einem Extism Improvement Proposal (EIP) werden kann.
Weitere Informationen finden Sie im Beitragsleitfaden.
Extism ist ein Open-Source-Produkt des Teams von:
Nehmen Sie Kontakt mit uns auf und sagen Sie uns, was Sie bauen! Wir helfen Ihnen gerne weiter: [email protected]