Extism — это облегченный фреймворк для сборки с помощью WebAssembly (Wasm). Он поддерживает запуск кода Wasm на серверах, периферийных устройствах, интерфейсах командной строки, Интернете вещей, браузерах и во всем, что между ними. Extism задуман как «универсальный» в том смысле, что он поддерживает общий интерфейс, независимо от того, где он работает.
Примечание. Одним из основных вариантов использования Extism является создание расширяемого программного обеспечения и плагинов . Вы хотите иметь возможность выполнять произвольный, ненадежный код ваших пользователей? Экзизм делает это безопасным и практичным.
Кроме того, Extism добавляет несколько дополнительных утилит поверх стандартной среды выполнения Wasm. Например, мы поддерживаем постоянные переменные области памяти/модуля, безопасный и управляемый хостом HTTP без WASI, ограничители и таймеры времени выполнения, более простое связывание функций хоста и многое другое. Пользователи Extism создают:
Выберите SDK для импорта в вашу программу и обратитесь к документации, чтобы начать:
Тип | Язык | Исходный код | Упаковка |
---|---|---|---|
Ржавчина SDK | https://github.com/extism/extism/tree/main/runtime | Ящики.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 | Перейти мод | |
Хаскелл SDK | https://github.com/extism/haskell-sdk | Хакадж | |
Java 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 | опам | |
Перл SDK | https://github.com/extism/perl-sdk | КПАН | |
PHP SDK | https://github.com/extism/php-sdk | Упаковщик | |
Python SDK | https://github.com/extism/python-sdk | ПиПи | |
Рубиновый SDK | https://github.com/extism/ruby-sdk | RubyGems | |
Зиг SDK | https://github.com/extism/zig-sdk | Н/Д | |
С SDK | https://github.com/extism/extism/tree/main/libextism | Н/Д | |
С++ SDK | https://github.com/extism/cpp-sdk | Н/Д |
Хосты Extism (на которых работает SDK) должны выполнять код WebAssembly, содержащий библиотеку PDK или Plug-in Development Kit, скомпилированную в двоичный файл .wasm
. PDK позволяют авторам кода плагинов/расширений легко считывать входные данные с хоста и возвращать данные обратно, читать предоставленную конфигурацию, устанавливать/получать переменные, выполнять исходящие HTTP-вызовы, если это разрешено, и многое другое.
Выберите PDK для импорта в вашу программу Wasm и обратитесь к документации, чтобы начать работу:
Тип | Язык | Исходный код | Упаковка |
---|---|---|---|
Руст ПДК | https://github.com/extism/rust-pdk | Ящики.io | |
СП ДК | https://github.com/extism/js-pdk | Н/Д | |
Python ПДК | https://github.com/extism/python-pdk | Н/Д | |
Вперед, ПДК | https://github.com/extism/go-pdk | Перейти мод | |
Хаскелл ПДК | https://github.com/extism/haskell-pdk | Хакадж | |
Ассемблерскрипт PDK | https://github.com/extism/assemblyscript-pdk | НПМ | |
.NET ПДК | https://github.com/extism/dotnet-pdk (поддерживает C# и F#!) | Нугет | |
С ПДК | https://github.com/extism/c-pdk | Н/Д | |
С++ ПДК | https://github.com/extism/cpp-pdk | Н/Д | |
Зиг ПДК | https://github.com/extism/zig-pdk | Н/Д |
Часто бывает очень полезно определить схему для описания сигнатур функций и типов, которые вы хотите использовать между языками Extism SDK и PDK.
XTP Bindgen — это платформа с открытым исходным кодом для создания привязок PDK для плагинов Extism. Он используется платформой XTP, но может использоваться и вне платформы для определения любой подключаемой системы, совместимой с Extism.
xtp
.Инструкции по установке смотрите здесь.
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, мы будем рады помочь вам сделать пиар или найти над чем поработать!
Самый простой способ начать — присоединиться к Discord или открыть проблему в системе отслеживания проблем extism/proposals
, которая в конечном итоге может стать Предложением по улучшению эктизма (EIP).
Для получения дополнительной информации, пожалуйста, прочитайте Руководство для участников.
Extism — это продукт с открытым исходным кодом от команды:
Свяжитесь с нами и расскажите, что вы строите! Мы будем рады помочь: [email protected]