Exism est un framework léger pour la construction avec WebAssembly (Wasm). Il prend en charge l'exécution du code Wasm sur les serveurs, la périphérie, les CLI, l'IoT, les navigateurs et tout le reste. Extisme est conçu pour être « universel » dans le sens où il prend en charge une interface commune, quel que soit l'endroit où il s'exécute.
Remarque : L'un des principaux cas d'utilisation d'Extism consiste à créer des logiciels et des plugins extensibles . Vous souhaitez pouvoir exécuter du code arbitraire et non fiable de la part de vos utilisateurs ? L'exisme rend cette opération sûre et pratique.
De plus, Exism ajoute des utilitaires supplémentaires en plus des environnements d'exécution Wasm standard. Par exemple, nous prenons en charge les variables persistantes de mémoire/de portée du module, le HTTP sécurisé et contrôlé par l'hôte sans WASI, les limiteurs et minuteries d'exécution, la liaison plus simple des fonctions de l'hôte, et bien plus encore. Les utilisateurs d'Extism construisent :
Choisissez un SDK à importer dans votre programme et reportez-vous à la documentation pour commencer :
Taper | Langue | Code source | Emballer |
---|---|---|---|
SDK Rouille | https://github.com/extism/exism/tree/main/runtime | Caisses.io | |
SDK JS | https://github.com/extism/js-sdk (prend en charge Web, Node, Deno et Bun !) | MNP | |
SDK Élixir | https://github.com/extism/elixir-sdk | Hex | |
Aller au SDK | https://github.com/extism/go-sdk | Allez mod | |
Kit de développement logiciel Haskell | https://github.com/extism/haskell-sdk | Piratage | |
SDK Java | https://github.com/extism/java-sdk | Sonatype | |
SDK .NET | https://github.com/extism/dotnet-sdk (prend en charge C# et F# !) | Nuget | |
SDK OCaml | https://github.com/extism/ocaml-sdk | opam | |
SDK Perl | https://github.com/extism/perl-sdk | CPAN | |
SDK PHP | https://github.com/extism/php-sdk | Packagiste | |
SDK Python | https://github.com/extism/python-sdk | PyPi | |
SDK Ruby | https://github.com/extism/ruby-sdk | RubyGemmes | |
SDK Zig | https://github.com/extism/zig-sdk | N / A | |
SDK C | https://github.com/extism/extism/tree/main/libextism | N / A | |
SDK C++ | https://github.com/extism/cpp-sdk | N / A |
Les hôtes Extism (exécutant le SDK) doivent exécuter du code WebAssembly doté d'une bibliothèque PDK, ou Plug-in Development Kit, compilée dans le binaire .wasm
. Les PDK permettent aux auteurs de code de plug-in/d'extension de lire facilement les entrées de l'hôte et de renvoyer les données, de lire la configuration fournie, de définir/obtenir des variables, d'effectuer des appels HTTP sortants si cela est autorisé, et bien plus encore.
Choisissez un PDK à importer dans votre programme Wasm et reportez-vous à la documentation pour commencer :
Taper | Langue | Code source | Emballer |
---|---|---|---|
PDK de rouille | https://github.com/extism/rust-pdk | Caisses.io | |
JSPDK | https://github.com/extism/js-pdk | N / A | |
PythonPDK | https://github.com/extism/python-pdk | N / A | |
Allez PDK | https://github.com/extism/go-pdk | Allez mod | |
Haskell PDK | https://github.com/extism/haskell-pdk | Piratage | |
PDK AssemblyScript | https://github.com/extism/assemblyscript-pdk | MNP | |
Kit PDK .NET | https://github.com/extism/dotnet-pdk (prend en charge C# et F# !) | Nuget | |
C PDK | https://github.com/extism/c-pdk | N / A | |
Kit PDK C++ | https://github.com/extism/cpp-pdk | N / A | |
Zig PDK | https://github.com/extism/zig-pdk | N / A |
Il est souvent très utile de définir un schéma pour décrire les signatures de fonctions et les types que vous souhaitez utiliser entre les langages Extism SDK et PDK.
XTP Bindgen est un framework open source permettant de générer des liaisons PDK pour les plug-ins Extism. Il est utilisé par la plateforme XTP, mais peut être utilisé en dehors de la plateforme pour définir n'importe quel système de plug-in compatible avec Extism.
xtp
.Voir les instructions d'installation ici.
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...
Voir un exemple dans example-schema.yaml, ou un exemple complet "d'évier de cuisine" sur la page de documentation.
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
Cela créera un projet de plugin standard complet avec lequel vous pourrez commencer. Implémentez la ou les fonctions vides et exécutez xtp plugin build
pour compiler votre plugin.
Pour plus d'informations sur XTP Bindgen, consultez le référentiel dylibso/xtp-bindgen et la documentation officielle de XTP Schema.
Si vous rencontrez des problèmes ou avez des questions, veuillez rejoindre notre Discord et faites-le nous savoir. Notre communauté est très réactive et heureuse de vous aider à démarrer.
Rendez-vous sur le site Web du projet pour plus d’informations et de documentation. Pensez également à lire un aperçu de l’Extisme, de ses objectifs et de son approche.
Merci d'avoir envisagé une contribution à Extisme, nous serons heureux de vous aider à réaliser un PR ou à trouver quelque chose sur lequel travailler !
Le moyen le plus simple de commencer serait de rejoindre le Discord ou d'ouvrir un ticket sur le système de suivi des problèmes extism/proposals
, qui peut éventuellement devenir une proposition d'amélioration de l'extisme (EIP).
Pour plus d’informations, veuillez lire le guide de contribution.
Extisme est un produit open source de l'équipe de :
Contactez-nous et dites-nous ce que vous construisez ! Nous serions ravis de vous aider : [email protected]