يصرّف مُخرَج WebImage ذو backend = "wasm-lm" شيفرة Java أو Kotlin إلى WebAssembly لبيئات
JavaScript المضيفة التي تصرّف WebAssembly وقت التشغيل. تحتفظ الوحدة بكومتها وجامع مهملاتها في الذاكرة الخطية، لذا لا
تحتاج البيئة المضيفة إلى دعم WasmGC. ومثل نسخة المتصفح، تبدأ الوحدة عبر محمّل JavaScript
الخاص بها؛ وهي ليست وحدة WASI ولا مكوّن WASI، ولا تُنشر على Cloudflare Workers.
البناء
المتطلبات المسبقة هي نفسها في نسخة المتصفح: وجود wasm-as من Binaryen في
PATH، وشيفرة تستوفي متطلبات Native Image.
amends "elide:project.pkl"
import "elide:Jvm.pkl" as jvm
import "elide:NativeImage.pkl" as nativeImage
name = "hello-edge"
artifacts {
["app-jar"] = new jvm.Jar {
sources { "main" }
}
["edge"] = new nativeImage.WebImage {
from { "app-jar" }
name = "hello"
entrypoint = "Hello"
backend = "wasm-lm"
runtime = "node"
}
}elide build
node .dev/artifacts/native-image/hello.jsدون ملف بيان:
elide javac -- -d classes Hello.java
elide native-image -- --tool:wasm-lm -cp classes -o hello Hello| الخاصية | القيمة لـ Edge |
|---|---|
backend | "wasm-lm". |
runtime | "node" لواجهات API المتوافقة مع Node؛ وتكتشف "generic" واجهات المتصفح أيضًا. |
autoRun | تشغّل القيمة true (الافتراضية) الدالة main عند تحميل hello.js. |
المخرجات والحجم
| الملف | يُنشر | الحجم لبرنامج hello world |
|---|---|---|
hello.js | نعم: المحمّل. | 42 KB |
hello.js.wasm | نعم: الوحدة. | 2.1 MB (660 KB بعد ضغط gzip) |
hello.js.wat | لا: الصيغة النصية، للفحص. | 38 MB |
hello.js.map | اختياري: يُنتج مع sourceMap = true. |
وحدة الذاكرة الخطية أكبر من نسخة WasmGC للبرنامج نفسه، التي تستخدم جامع مهملات البيئة المضيفة.
متطلبات البيئة المضيفة
| المتطلب | السبب |
|---|---|
معالجة استثناءات WebAssembly مع exnref | تستخدمها الوحدة. |
| تصريف WebAssembly من البايتات وقت التشغيل | يقرأ المحمّل hello.js.wasm ويصرّفه عند البدء. |
fs من Node أو fetch | يقرأ المحمّل الوحدة عبر أحدهما. |
| البيئة المضيفة | تشغّل الحزمة |
|---|---|
| Node.js 25+ | نعم: node hello.js. |
| Bun | نعم: bun hello.js. |
| Cloudflare Workers | لا: لا تصرّف Workers إلا الوحدات المضمّنة وقت النشر، وترفض تصريف المحمّل وقت التشغيل بالخطأ Wasm code generation disallowed by embedder. |
| بيئات WASI المضيفة (Fastly Compute، Wasmtime) | لا: تستورد الوحدة من محمّل JavaScript الخاص بها، لا من WASI. |