Extism은 WebAssembly(Wasm)를 사용하여 구축하기 위한 경량 프레임워크입니다. 서버, 에지, CLI, IoT, 브라우저 및 그 사이의 모든 것에서 Wasm 코드 실행을 지원합니다. Extism은 실행 위치에 관계없이 공통 인터페이스를 지원한다는 점에서 "보편적"으로 설계되었습니다.
참고: Extism의 주요 사용 사례 중 하나는 확장 가능한 소프트웨어 및 플러그인을 구축하는 것 입니다. 사용자가 신뢰할 수 없는 임의의 코드를 실행할 수 있기를 원하십니까? 실존주의는 이것을 안전하고 실용적으로 만듭니다.
또한 Extism은 표준 Wasm 런타임 위에 몇 가지 추가 유틸리티를 추가합니다. 예를 들어, 영구 메모리/모듈 범위 변수, WASI가 없는 보안 및 호스트 제어 HTTP, 런타임 제한기 및 타이머, 더 간단한 호스트 기능 연결 등을 지원합니다. Extism 사용자는 다음을 빌드합니다.
프로그램으로 가져올 SDK를 선택하고 시작하려면 설명서를 참조하세요.
유형 | 언어 | 소스 코드 | 패키지 |
---|---|---|---|
러스트 SDK | https://github.com/extism/extism/tree/main/runtime | Crates.io | |
JS SDK | https://github.com/extism/js-sdk (웹, 노드, Deno 및 Bun을 지원합니다!) | NPM | |
엘릭서 SDK | https://github.com/extism/elixir-sdk | 마녀 | |
SDK를 이동 | https://github.com/extism/go-sdk | 모드로 이동 | |
하스켈 SDK | https://github.com/extism/haskell-sdk | 해킹 | |
자바 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 | CPAN | |
PHP SDK | https://github.com/extism/php-sdk | 포장 전문가 | |
파이썬 SDK | https://github.com/extism/python-sdk | 파이파이 | |
루비 SDK | https://github.com/extism/ruby-sdk | RubyGems | |
지그 SDK | https://github.com/extism/zig-sdk | 해당 없음 | |
C SDK | https://github.com/extism/extism/tree/main/libextism | 해당 없음 | |
C++ SDK | https://github.com/extism/cpp-sdk | 해당 없음 |
Extism 호스트(SDK 실행)는 .wasm
바이너리로 컴파일된 PDK 또는 플러그인 개발 키트 라이브러리가 있는 WebAssembly 코드를 실행해야 합니다. PDK를 사용하면 플러그인/확장 코드 작성자가 호스트에서 입력을 읽고 데이터를 다시 반환하고, 제공된 구성을 읽고, 변수를 설정/가져오고, 허용되는 경우 아웃바운드 HTTP 호출을 수행하는 등의 작업을 쉽게 수행할 수 있습니다.
Wasm 프로그램으로 가져올 PDK를 선택하고 시작하려면 설명서를 참조하세요.
유형 | 언어 | 소스 코드 | 패키지 |
---|---|---|---|
러스트 PDK | https://github.com/extism/rust-pdk | Crates.io | |
JS PDK | https://github.com/extism/js-pdk | 해당 없음 | |
파이썬 PDK | https://github.com/extism/python-pdk | 해당 없음 | |
PDK로 이동 | https://github.com/extism/go-pdk | 모드로 이동 | |
하스켈 PDK | https://github.com/extism/haskell-pdk | 해킹 | |
어셈블리스크립트 PDK | https://github.com/extism/assemblescript-pdk | NPM | |
.NET PDK | https://github.com/extism/dotnet-pdk (C# 및 F# 지원!) | 너겟 | |
C PDK | https://github.com/extism/c-pdk | 해당 없음 | |
C++ PDK | https://github.com/extism/cpp-pdk | 해당 없음 | |
지그 PDK | https://github.com/extism/zig-pdk | 해당 없음 |
Extism SDK와 PDK 언어 간에 사용하려는 함수 서명 및 유형을 설명하기 위해 스키마를 정의하는 것은 종종 매우 유용합니다.
XTP Bindgen은 Extism 플러그인용 PDK 바인딩을 생성하는 오픈 소스 프레임워크입니다. 이는 XTP 플랫폼에서 사용되지만 Extism 호환 플러그인 시스템을 정의하기 위해 플랫폼 외부에서 사용될 수 있습니다.
xtp
CLI를 설치합니다.여기에서 설치 지침을 참조하세요.
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 스키마 문서를 참조하세요.
문제가 발생하거나 궁금한 점이 있으면 Discord에 가입하여 알려주세요. 우리 커뮤니티는 매우 신속하게 반응하며 귀하가 시작할 수 있도록 기꺼이 도와드립니다.
자세한 내용과 문서를 보려면 프로젝트 웹사이트를 방문하세요. 또한 Extism의 개요와 그 목표 및 접근 방식을 읽어보세요.
Extism에 대한 기여를 고려해 주셔서 감사합니다. PR을 작성하거나 작업할 내용을 찾는 데 도움을 드리게 되어 기쁘게 생각합니다!
시작하는 가장 쉬운 방법은 Discord에 가입하거나 extism/proposals
문제 추적기에서 문제를 여는 것입니다. 이는 결국 EIP(극단주의 개선 제안)가 될 수 있습니다.
자세한 내용은 기여 가이드를 읽어보세요.
Extism은 다음 팀의 오픈 소스 제품입니다.
연락하여 무엇을 구축하고 있는지 알려주세요! 도움을 드리고 싶습니다: [email protected]