Extism es un marco liviano para construir con WebAssembly (Wasm). Admite la ejecución de código Wasm en servidores, el borde, CLI, IoT, navegadores y todo lo demás. Extism está diseñado para ser "universal", ya que admite una interfaz común, sin importar dónde se ejecute.
Nota: Uno de los principales casos de uso de Extism es la creación de software y complementos extensibles . ¿Quiere poder ejecutar código arbitrario y no confiable de sus usuarios? El extismo hace que esto sea seguro y práctico.
Además, Extism agrega algunas utilidades adicionales además de los tiempos de ejecución estándar de Wasm. Por ejemplo, admitimos variables de alcance de módulo/memoria persistente, HTTP seguro y controlado por host sin WASI, limitadores y temporizadores de tiempo de ejecución, vinculación de funciones de host más simple y más. Los usuarios de Extism construyen:
Elija un SDK para importarlo a su programa y consulte la documentación para comenzar:
Tipo | Idioma | Código fuente | Paquete |
---|---|---|---|
SDK de óxido | https://github.com/extism/extism/tree/main/runtime | Cajas.io | |
SDK de JS | https://github.com/extism/js-sdk (¡admite Web, Node, Deno y Bun!) | MNP | |
SDK de elixir | https://github.com/extism/elixir-sdk | Maleficio | |
Ir al SDK | https://github.com/extism/go-sdk | ir mod | |
SDK de Haskell | https://github.com/extism/haskell-sdk | Hackear | |
SDK de Java | https://github.com/extism/java-sdk | sonatipo | |
SDK de .NET | https://github.com/extism/dotnet-sdk (¡Soporta C# y F#!) | Nuget | |
OCaml SDK | https://github.com/extism/ocaml-sdk | opam | |
SDK de Perl | https://github.com/extism/perl-sdk | CPAN | |
PHP SDK | https://github.com/extism/php-sdk | empaquetador | |
SDK de Python | https://github.com/extism/python-sdk | PyPi | |
SDK de rubí | https://github.com/extism/ruby-sdk | rubígemas | |
SDK de Zig | https://github.com/extism/zig-sdk | N / A | |
SDK de C | https://github.com/extism/extism/tree/main/libextism | N / A | |
SDK de C++ | https://github.com/extism/cpp-sdk | N / A |
Los hosts de Extism (que ejecutan el SDK) deben ejecutar código WebAssembly que tenga una biblioteca PDK, o kit de desarrollo de complementos, compilada en el binario .wasm
. Los PDK facilitan a los autores de códigos de complementos/extensiones leer entradas del host y devolver datos, leer la configuración proporcionada, establecer/obtener variables, realizar llamadas HTTP salientes si está permitido y más.
Elija un PDK para importar a su programa Wasm y consulte la documentación para comenzar:
Tipo | Idioma | Código fuente | Paquete |
---|---|---|---|
Óxido PDK | https://github.com/extism/rust-pdk | Cajas.io | |
JS PDK | https://github.com/extism/js-pdk | N / A | |
PDK de Python | https://github.com/extism/python-pdk | N / A | |
Ir PDK | https://github.com/extism/go-pdk | ir mod | |
Haskell PDK | https://github.com/extism/haskell-pdk | Hackear | |
PDK de ensamblador | https://github.com/extism/assemblyscript-pdk | MNP | |
.NET PDK | https://github.com/extism/dotnet-pdk (¡Soporta C# y F#!) | Nuget | |
C-PDK | https://github.com/extism/c-pdk | N / A | |
PDK de C++ | https://github.com/extism/cpp-pdk | N / A | |
ZigPDK | https://github.com/extism/zig-pdk | N / A |
A menudo es muy útil definir un esquema para describir las firmas y tipos de funciones que desea utilizar entre los lenguajes Extism SDK y PDK.
XTP Bindgen es un marco de código abierto para generar enlaces PDK para complementos de Extism. Lo utiliza la plataforma XTP, pero se puede utilizar fuera de la plataforma para definir cualquier sistema de complemento compatible con Extism.
xtp
.Vea las instrucciones de instalación aquí.
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...
Vea un ejemplo en example-schema.yaml, o un ejemplo completo de "fregadero de cocina" en la página de documentos.
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
Esto creará un proyecto completo de complemento repetitivo con el que puede comenzar. Implemente las funciones vacías y ejecute xtp plugin build
para compilar su complemento.
Para obtener más información sobre XTP Bindgen, consulte el repositorio dylibso/xtp-bindgen y la documentación oficial del esquema XTP.
Si tiene algún problema o tiene alguna pregunta, únase a nuestro Discord y háganoslo saber. Nuestra comunidad es muy receptiva y está feliz de ayudarlo a comenzar.
Dirígete al sitio web del proyecto para obtener más información y documentos. Además, considere leer una descripción general del extismo y sus objetivos y enfoque.
Gracias por considerar una contribución a Extism. ¡Estaremos encantados de ayudarte a hacer un PR o encontrar algo en lo que trabajar!
La forma más fácil de comenzar sería unirse a Discord o abrir un problema en el rastreador de problemas de extism/proposals
, que eventualmente puede convertirse en una Propuesta de mejora del extismo (EIP).
Para obtener más información, lea la guía de contribución.
Extism es un producto de código abierto del equipo de:
¡Comuníquese y cuéntenos qué está construyendo! Nos encantaría ayudar: [email protected]