عن المشروع

Wasmtime هو وقت تشغيل مستقل لـ WebAssembly، تم تطويره كمشروع من Bytecode Alliance. وهو مصمم ليكون سريعًا وآمنًا وقابلًا للتهيئة ومتوافقًا مع المعايير، ويمكن استخدامه كأداة سطر أوامر وكوقت تشغيل مضمّن في تطبيقات أخرى. التثبيت يمكن تثبيت واجهة سطر الأوامر على Linux وmacOS باستخدام سكربت شل يقوم بالتثبيت في $WASMTIME_HOME (الذي يكون افتراضيًا $HOME/.wasmtime)، مع وضع الملف التنفيذي في $WASMTIME_HOME/bin. يمكن لمستخدمي Windows وغيرهم تنزيل المثبّتات والملفات الثنائية من صفحة GitHub Releases. خيارات التثبيت الإضافية موثقة في الكتاب الإلكتروني. مثال على الاستخدام مع تثبيت مترجم Rust، يمكن ترجمة برنامج Rust إلى مكوّن WebAssembly باستخدام هدف wasm32-wasip2، ثم تنفيذه باستخدام أمر wasmtime. يعرض ملف README مثال hello-world يطبع "Hello, world!" عند التشغيل. الميزات الرئيسية - سريع: مبني على مولّد الأكواد المحسّن Cranelift، الذي يمكنه إنتاج كود آلة إما في وقت التشغيل أو مسبقًا. وهو محسّن للإنشاء الفعّال للنسخ، واستدعاءات منخفضة التكلفة بين المضيف وwasm، وقابلية التوسع للنسخ المتزامنة. - آمن: يركز التطوير على الصحة والأمان، بالاعتماد على ضمانات سلامة وقت التشغيل في Rust. تمر الميزات بعملية RFC، واستمرار الاختبارات العشوائية عبر OSS Fuzz من Google، وسياسة إصدار وسياسة أمان محددة. يدمج المشروع أيضًا دفاعات ضد مشكلات مثل Spectre ويتعاون مع باحثين أكاديميين في التحقق الرسمي من الأجزاء الحرجة في Wasmtime وCranelift. - قابل للتهيئة: يتم توفير إعدادات افتراضية معقولة، لكن التهيئة تسمح بالتحكم الدقيق في استهلاك وحدة المعالجة المركزية والذاكرة، من البيئات الصغيرة إلى الخوادم الكبيرة ذات العديد من النسخ المتزامنة. - WASI: يدعم مجموعة غنية من واجهات برمجة التطبيقات للتفاعل مع بيئة المضيف من خلال معيار WASI. - متوافق مع المعايير: يجتاز مجموعة اختبارات WebAssembly الرسمية، وينفّذ واجهة برمجة التطبيقات الرسمية C الخاصة بـ wasm، وينفّذ مقترحات WebAssembly المستقبلية. يشارك المطورون في عملية معايير WebAssembly. دعم اللغات يمكن تضمين Wasmtime من لغات متعددة. اللغات المدعومة من Bytecode Alliance تشمل Rust (حزمة wasmtime crate)، وC (ملفات الرأس wasm.h وwasi.h وwasmtime.h، مع CMake)، وC++ (ملف الرأس wasmtime.hh)، وPython (حزمة wasmtime على PyPI)، و.NET (حزمة Wasmtime NuGet)، وGo (مستودع wasmtime-go)، وRuby (جوهرة wasmtime). اللغات المدعومة من المجتمع تشمل Elixir (حزمة wasmex على Hex) وPerl (وحدة Wasm::Wasmtime في حزمة Wasm Perl). التوثيق دليل Wasmtime هو نقطة البداية الموصى بها لتعلم ما يمكن أن يفعله Wasmtime، والإجابة عن الأسئلة، والمساهمة في المشروع.