Extism เป็นเฟรมเวิร์กน้ำหนักเบาสำหรับการสร้างด้วย WebAssembly (Wasm) รองรับการรันโค้ด Wasm บนเซิร์ฟเวอร์, Edge, CLI, IoT, เบราว์เซอร์ และทุกสิ่งในระหว่างนั้น Extism ได้รับการออกแบบให้เป็น "สากล" โดยรองรับอินเทอร์เฟซทั่วไปไม่ว่าจะทำงานที่ไหนก็ตาม
หมายเหตุ: หนึ่งในกรณีการใช้งานหลักสำหรับ Extism คือ การสร้างซอฟต์แวร์และปลั๊กอินที่ขยายได้ คุณต้องการที่จะรันโค้ดที่ไม่น่าเชื่อถือจากผู้ใช้ของคุณตามอำเภอใจหรือไม่? การคลั่งไคล้ทำให้สิ่งนี้ปลอดภัยและทำได้จริง
นอกจากนี้ Extism ยังเพิ่มยูทิลิตี้พิเศษบางอย่างนอกเหนือจากรันไทม์ Wasm มาตรฐาน ตัวอย่างเช่น เรารองรับตัวแปรขอบเขตหน่วยความจำ/โมดูลแบบถาวร, HTTP ที่ปลอดภัยและควบคุมโดยโฮสต์โดยไม่มี WASI, ตัวจำกัดรันไทม์และตัวจับเวลา, การลิงก์ฟังก์ชันโฮสต์ที่ง่ายขึ้น และอื่นๆ ผู้ใช้ Extism สร้าง:
เลือก SDK ที่จะนำเข้าไปยังโปรแกรมของคุณ และดูเอกสารประกอบเพื่อเริ่มต้น:
พิมพ์ | ภาษา | ซอร์สโค้ด | บรรจุุภัณฑ์ |
---|---|---|---|
สนิม SDK | https://github.com/extism/extism/tree/main/runtime | Crates.io | |
JS SDK | https://github.com/extism/js-sdk (รองรับเว็บ, โหนด, Deno และ Bun!) | เอ็นพีเอ็ม | |
Elixir 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 | ซีปัน | |
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 | ไม่มี | |
ซี SDK | https://github.com/extism/extism/tree/main/libextism | ไม่มี | |
C++ SDK | https://github.com/extism/cpp-sdk | ไม่มี |
โฮสต์ Extism (เรียกใช้ SDK) จะต้องรันโค้ด WebAssembly ที่มี PDK หรือ Plug-in Development Kit ซึ่งเป็นไลบรารีที่คอมไพล์เป็นไบนารี . .wasm
PDK ช่วยให้ผู้เขียนโค้ดปลั๊กอิน/ส่วนขยายสามารถอ่านอินพุตจากโฮสต์และส่งคืนข้อมูล อ่านการกำหนดค่าที่ให้มา ตั้งค่า/รับตัวแปร โทร HTTP ขาออกหากได้รับอนุญาต และอื่นๆ ได้อย่างง่ายดาย
เลือก PDK ที่จะนำเข้าสู่โปรแกรม Wasm ของคุณ และดูเอกสารประกอบเพื่อเริ่มต้น:
พิมพ์ | ภาษา | ซอร์สโค้ด | บรรจุุภัณฑ์ |
---|---|---|---|
สนิม PDK | https://github.com/extism/rust-pdk | Crates.io | |
เจเอส พีดีเค | https://github.com/extism/js-pdk | ไม่มี | |
หลาม PDK | 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 PDK | https://github.com/extism/dotnet-pdk (รองรับ C# และ F#!) | นูเก็ต | |
ซี พีดีเค | https://github.com/extism/c-pdk | ไม่มี | |
C++ PDK | https://github.com/extism/cpp-pdk | ไม่มี | |
ซิก พีดีเค | https://github.com/extism/zig-pdk | ไม่มี |
มักจะมีประโยชน์มากในการกำหนดสคีมาเพื่ออธิบายลายเซ็นของฟังก์ชันและประเภทที่คุณต้องการใช้ระหว่างภาษา Extism SDK และ PDK
XTP Bindgen เป็นเฟรมเวิร์กโอเพ่นซอร์สเพื่อสร้างการเชื่อมโยง PDK สำหรับปลั๊กอิน Extism มันถูกใช้โดยแพลตฟอร์ม 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 Schema อย่างเป็นทางการ
หากคุณประสบปัญหาหรือมีคำถามใดๆ โปรดเข้าร่วม Discord ของเราและแจ้งให้เราทราบ ชุมชนของเราตอบสนองและยินดีเป็นอย่างยิ่งที่จะช่วยให้คุณเริ่มต้นได้
ไปที่เว็บไซต์โครงการเพื่อดูข้อมูลเพิ่มเติมและเอกสาร นอกจากนี้ ให้พิจารณาอ่านภาพรวมของ Extism รวมถึงเป้าหมายและแนวทางของมัน
ขอขอบคุณที่พิจารณาการมีส่วนร่วมกับ Extism เรายินดีที่จะช่วยคุณประชาสัมพันธ์หรือหาอะไรทำ!
วิธีที่ง่ายที่สุดในการเริ่มต้นคือการเข้าร่วม Discord หรือเปิดประเด็นในตัวติดตามปัญหา extism/proposals
ซึ่งในที่สุดอาจกลายเป็น Extism Improvement Proposal (EIP) ได้
สำหรับข้อมูลเพิ่มเติม โปรดอ่านคู่มือการสนับสนุน
Extism เป็นผลิตภัณฑ์โอเพ่นซอร์สจากทีมงานที่:
ติดต่อเราและบอกเราว่าคุณกำลังสร้างอะไร! เรายินดีให้ความช่วยเหลือ: [email protected]