عن المشروع
يوفر qzjs وقت تشغيل QuickJS-ng قابل للتضمين مع طبقة تجريد المنصة Platform Abstraction Layer (PAL) لتطبيقات C. يشغل محرك ES2023 كامل على خيط داخلي خاص به مع حلقة أحداث libuv، مما يلغي الحاجة إلى ضخ حلقة الأحداث من جانب المضيف. ينفذ الوقت التشغيلي 21 وحدة متوافقة مع WinterTC بما في ذلك fetch و console و crypto.subtle و ReadableStream و setTimeout و fs و URL و TextEncoder والمزيد.
الميزات الرئيسية:
- دعم ES2023 مع بدء سريع (~4.82ms متوسط بعد تهيئة WAMR الكسولة) وبصمة ذاكرة منخفضة
- تنفيذ أصلي لـ libuv: يملك qzjs خيطًا داخليًا + حلقة libuv؛ المضيف لا يلمس JS مباشرة
- HTTP/TLS بالتدفق عبر mbedTLS مع فك ترميز نقل مجزأ والتحقق من الشهادة
- امتدادات أصلية للضغط (miniz) والتشفير (mbedTLS) وترميز النص (UTF-8/Base64) وWebAssembly (WAMR افتراضي، wasm3 بديل)
- تنفيذ متعدد السياقات مع تعليق/استئناف ناعم إلى القرص؛ Web Workers تعمل كخيوط متوازية حقيقية أو عمليات معزولة (الافتراضي منذ معلم multi-process M-P2)
- رسائل آمنة بين المضيف ↔ الوقت التشغيلي عبر JSON (qz_post_message / message_cb) و postMessage/onmessage على جانب JS
- تنفيذ CLI مستقل لتشغيل واجهات ويب WinterTC مباشرة (بدون واجهات Node.js)
- مصحح DAP خطوة مدمج في المكتبة (تفعيله بـ -DQZ_BUILD_DEBUGGER=ON)
- مجموعة اختبارات شاملة مع GoogleTest و mock_libuv للاختبارات غير المتصلة الحتمية وفئات اختبار موسومة (offline و network و benchmark و test262)
نظام البناء يستخدم CMake مع مفاتيح ميزات (QZ_WITH_*) للامتدادات الاختيارية، ملفات بناء (minimal/standard) وأهداف للاختبارات والأمثلة والمصحح. جميع التبعيات (QuickJS-ng و libuv و mbedTLS و miniz و WAMR و wasm3) مبنية من المصدر كوحدات git فرعية تحت C99 صارم. إعادة بناء polyfill تستخدم npm devDependencies (esbuild و urlpattern-polyfill و @ungap/structured-clone و web-streams-polyfill) لكنها غير مشحونة في الثنائيات.
الهيكل: يتواصل تطبيق المضيف مع وقت تشغيل qz_t عبر رسائل JSON آمنة بين الخيوط. يعمل الوقت التشغيلي على خيط خاص به مع حلقة libuv و JSContext وجسر الإدخال/الإخراج. بشكل افتراضي (QZ_PROCESS_MODEL=ISOLATED) يكون المضيف والوقت التشغيلي عمليات منفصلة تتواصل عبر أغلفة مُطوّرة بـ FlatBuffers على socketpair لعزل الأعطال. مرخص بـ MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.