jco
سلسلة أدوات JavaScript للعمل مع WebAssembly Components
مشروع تحالف Bytecode
توفر Jco سلسلة أدوات JS أصلية بالكامل للعمل مع WebAssembly Components في JavaScript.
تشمل الميزات:
"نقل" ثنائيات مكون Wasm إلى وحدات ES التي يمكن تشغيلها في أي بيئة JS.
دعم WASI Preview2 في Node.js والمتصفحات (تجريبي).
إنشاءات المكونات لمساعدات Wasm Tools، المتاحة للاستخدام كمكتبة أو أوامر CLI للاستخدام في بيئات JS الأصلية، بالإضافة إلى مساعد التحسين للمكونات عبر Binaryen.
تشغيل وتقديم أوامر مثل Wasmtime، كتطبيقات JS لعالمي الأوامر وHTTP Proxy.
أمر "Componentize" لإنشاء مكونات مكتوبة بلغة JavaScript بسهولة (غلاف ComponentizeJS).
لإنشاء مكونات بلغات أخرى، راجع مشروع Cargo Component لـ Rust وWit Bindgen للتعرف على العديد من مساعدي bindgen الضيف.
تثبيت npm @bytecodealliance/jco
يمكن استخدام Jco إما كاستيراد مكتبة أو كواجهة سطر أوامر (CLI) عبر الأمر jco
.
راجع صفحة "مثال سير العمل" للحصول على مثال الاستخدام الكامل.
الاستخدام: jco <command> [خيارات] jco - أدوات مكون WebAssembly JS JS Component Transpilation Bindgen & Wasm Tools لـ JS خيارات: -V، --version إخراج رقم الإصدار -h, --help عرض المساعدة للأوامر: مكون [خيارات] <js-source> قم بإنشاء مكون من وحدة JavaScript نقل [خيارات] <component-path> نقل مكون WebAssembly إلى JS + Wasm الأساسي لتنفيذ JavaScript الأنواع [options] <wit-path> قم بإنشاء أنواع لـ WIT المحددة تشغيل [خيارات] <command> [args...] تشغيل مكون أمر WASI خدمة [خيارات] <server> [args...] خدمة مكون WASI HTTP يقوم opt [options] <component-file> بتحسين مكون Wasm، بما في ذلك تشغيل تحسينات Wasm-opt Binaryen مع [خيارات] <component-path> قم باستخراج WIT من مكون WebAssembly [مكون wasm-tools] طباعة [خيارات] <input> طباعة نص WebAssembly WAT لملف ثنائي [طباعة أدوات wasm] عرض البيانات الوصفية [خيارات] [الوحدة النمطية] استخراج البيانات الوصفية للمنتج لثنائي Wasm [عرض البيانات التعريفية لأدوات Wasm] البيانات الوصفية - إضافة [خيارات] [الوحدة النمطية] إضافة بيانات تعريف المنتج لثنائي Wasm [إضافة البيانات التعريفية لأدوات Wasm] تحليل [خيارات] <input> يوزع تنسيق نص Wasm إلى ملف ثنائي [تحليل أدوات Wasm] جديد [خيارات] <core-module> إنشاء مكون WebAssembly مقتبس من جوهر مكون Wasm [مكون أدوات wasm جديد] تضمين [خيارات] [الوحدة الأساسية] تضمين قسم كتابة المكون في وحدة Wasm الأساسية [تضمين مكون أدوات Wasm] مساعدة [أمر] عرض المساعدة للأمر
للمساعدة في خيارات الأوامر الفردية، استخدم jco <cmd> --help
.
راجع Transpiling Docs لمزيد من المعلومات والخلفية.
للاتصال مباشرة بعملية النقل في Rust، فإن bindgen المستخدم في Jco متاح أيضًا على crates.io كـ js-component-bindgen.
بالنسبة لمكونات Wasm التي تنفذ عالم أوامر WASI، يتم توفير أداة jco run
لتشغيل هذه التطبيقات في Node.js.
jco run cowasy.component.wasm hello
باستخدام تطبيق Preview2-shim WASI، يتم توفير الوصول الكامل إلى أساسيات النظام الأساسي، بما في ذلك أذونات نظام الملفات ومتغيرات البيئة.
بالنسبة لمكونات وكيل HTTP، توفر jco serve
تطبيقًا لخادم JS:
jco serve --port 8080 server.wasm
يوفر Wasmtime بشكل عام التطبيق الأكثر أداءً لتنفيذ الأوامر وعوالم الوكيل للاستخدام. هذه التطبيقات مخصصة عندما تكون المحاكاة الافتراضية لـ JS مطلوبة أو هي الطريقة الأكثر ملاءمة.
ملاحظة : تعتبر
jco componentize
تجريبية، ويمكن إجراء تغييرات جذرية دون إشعار.
لتكوين تشغيل ملف JS:
jco componentize app.js --wit wit -n world-name -o component.wasm
ينشئ مكونًا من وحدة JS التي تطبق تعريف WIT العالمي، عبر تضمين محرك Spidermonkey.
راجع ComponentizeJS لمزيد من التفاصيل حول هذه العملية.
transpile(component: Uint8Array, opts?): Promise<{ files: Record<string, Uint8Array> }>
نقل مكون إلى JS.
opt(component: Uint8Array, opts?): Promise<{ component: Uint8Array }>
قم بتحسين أحد المكونات باستخدام مشروع Binaryen Wasm-opt.
componentWit(component: Uint8Array, document?: string): string
استخرج عالم WIT من مكون ثنائي.
print(component: Uint8Array): string
اطبع WAT لثنائي المكون.
metadataShow(wasm: Uint8Array): Metadata
قم باستخراج البيانات التعريفية لسلسلة أدوات المنتج لأحد المكونات ووحداته المتداخلة.
parse(wat: string): Uint8Array
تحليل مكون WAT لإخراج مكون ثنائي.
componentNew(coreWasm: Uint8Array | null, adapters?: [String, Uint8Array][]): Uint8Array
أداة إنشاء المكونات "WIT Component"، التي توفر بشكل اختياري مجموعة من ثنائيات المحولات المسماة.
componentEmbed(coreWasm: Uint8Array | null, wit: String, opts?: { stringEncoding?, dummy?, world?, metadata? }): Uint8Array
أداة تضمين المكونات "WIT Component"، لتضمين أنواع المكونات في الثنائيات الأساسية، كحالة استخدام متقدمة لإنشاء المكونات.
metadataAdd(wasm: Uint8Array, metadata): Uint8Array
إضافة بيانات تعريف منتج جديدة إلى مكون أو أساسي Wasm الثنائي.
راجع فصل المساهمة في كتاب Jco.
تم ترخيص هذا المشروع بموجب ترخيص Apache 2.0 مع استثناء LLVM. راجع الترخيص لمزيد من التفاصيل.
ما لم تنص صراحة على خلاف ذلك، فإن أي مساهمة يتم تقديمها عمدًا لتضمينها في هذا المشروع بواسطتك، كما هو محدد في ترخيص Apache-2.0، يجب أن يتم ترخيصها على النحو الوارد أعلاه، دون أي شروط أو أحكام إضافية.