منصوبے کے بارے میں
qzjs C ایپلی کیشنز کے لیے Platform Abstraction Layer (PAL) کے ساتھ ایک ایمبیڈ ایبل QuickJS-ng رن ٹائم فراہم کرتا ہے۔ یہ ایک اندرونی تھریڈ پر libuv ایونٹ لوپ کے ساتھ مکمل ES2023 انجن چلاتا ہے، جس سے ہوسٹ سائیڈ ایونٹ لوپ پمپنگ کی ضرورت ختم ہو جاتی ہے۔ رن ٹائم 21 WinterTC مطابق ماڈیولز کو نافذ کرتا ہے جن میں fetch، console، crypto.subtle، ReadableStream، setTimeout، fs، URL، TextEncoder اور مزید شامل ہیں۔
اہم صلاحیتیں:
- ES2023 سپورٹ تیز اسٹارٹ اپ (~4.82ms میڈین lazy WAMR init کے بعد) اور کم میموری فوٹ پرنٹ کے ساتھ
- libuv-native execution: qzjs ایک اندرونی تھریڈ + libuv لوپ کا مالک ہے؛ ہوسٹ کبھی براہ راست JS کو نہیں چھوتا
- mbedTLS کے ذریعے Streaming HTTP/TLS chunked transfer decoding اور سرٹیفکیٹ ویریفکیشن کے ساتھ
- کمپریشن (miniz)، کرپٹو (mbedTLS)، ٹیکسٹ کوڈیکس (UTF-8/Base64) اور WebAssembly (WAMR ڈیفالٹ، wasm3 متبادل) کے لیے Native extensions
- ڈسک پر soft suspend/resume کے ساتھ Multi-context execution؛ Web Workers حقیقی متوازی تھریڈز یا الگ تھلگ پروسیسز کے طور پر چلتے ہیں (multi-process M-P2 milestone کے بعد سے ڈیفالٹ)
- JSON کے ذریعے Thread-safe host ↔ runtime messaging (qz_post_message / message_cb) اور JS سائیڈ پر postMessage/onmessage
- WinterTC Web APIs کو براہ راست چلانے کے لیے Standalone CLI executable (کوئی Node.js APIs نہیں)
- لائبریری میں بنایا گیا DAP step-debugger (-DQZ_BUILD_DEBUGGER=ON کے ساتھ فعال کریں)
- GoogleTest کے ساتھ جامع ٹیسٹ سوٹ، deterministic offline ٹیسٹس کے لیے mock_libuv، اور لیبل شدہ ٹیسٹ کیٹیگریز (offline، network، benchmark، test262)
بلڈ سسٹم CMake استعمال کرتا ہے جس میں optional extensions کے لیے feature toggles (QZ_WITH_*)، بلڈ پروفائلز (minimal/standard)، اور ٹیسٹس، examples اور debugger کے لیے targets ہیں۔ تمام dependencies (QuickJS-ng، libuv، mbedTLS، miniz، WAMR، wasm3) کو سخت C99 کے تحت git submodules کے طور پر سورس سے بنایا جاتا ہے۔ polyfill rebuild npm devDependencies (esbuild، urlpattern-polyfill، @ungap/structured-clone، web-streams-polyfill) استعمال کرتا ہے لیکن وہ بائنریز میں شپ نہیں کیے جاتے۔
آرکیٹیکچر: ہوسٹ ایپلی کیشن thread-safe JSON messaging کے ذریعے qz_t رن ٹائم کے ساتھ communicate کرتی ہے۔ رن ٹائم اپنے تھریڈ پر libuv loop، JSContext اور I/O bridge کے ساتھ چلتا ہے۔ ڈیفالٹ طور پر (QZ_PROCESS_MODEL=ISOLATED)، ہوسٹ اور رن ٹائم الگ پروسیسز ہیں جو crash isolation کے لیے socketpair پر FlatBuffers-framed envelopes کے ذریعے communicate کرتے ہیں۔ Licensed MIT۔
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.