QuickJS - QEMU और FFmpeg के संस्थापक द्वारा विकसित एक हल्का जावास्क्रिप्ट इंजन

जावास्क्रिप्ट

फ्रांसीसी गणितज्ञ फैब्रिस बेलार्ड, जिन्होंने QEMU और FFmpeg परियोजनाओं की स्थापना की और जिन्होंने संख्या Pi की गणना करने के लिए सबसे तेज़ फॉर्मूला भी बनाया और BPG छवि प्रारूप विकसित किया।

फैब्रिस बेलार्ड हैं QEMU के मुख्य डेवलपर के रूप में जाना जाता है (एक एमुलेटर जो विभिन्न हार्डवेयर आर्किटेक्चर का अनुकरण करता है) और टिनी सी कंपाइलर (टीसीसी), एक बहुत छोटा लेकिन पूर्ण सी कंपाइलर, मूल रूप से अंतर्राष्ट्रीय ऑबफस्केटेड सी कोड प्रतियोगिता जीतने के लिए लिखा गया था।

अब हाल ही में अपने नए काम का पहला संस्करण जनता के साथ साझा किया जो जावास्क्रिप्ट में है और यह है एक नया JavaScript इंजन जिसे QuickJS कहा जाता है।

जावास्क्रिप्ट क्विकजेएस के बारे में

क्विकजेएस जावास्क्रिप्ट इंजन यह कॉम्पैक्ट है और अन्य प्रणालियों में शामिल होने पर केंद्रित है। प्रोजेक्ट कोड यह सी में लिखा गया है और एमआईटी लाइसेंस के तहत वितरित किया गया है। Emscripten का उपयोग करके WebAssembly में संकलित और ब्राउज़रों में चलाने के लिए उपयुक्त एक इंजन बिल्ड भी उपलब्ध है।

जावास्क्रिप्ट कार्यान्वयन मॉड्यूल, एसिंक्रोनस जनरेटर और प्रॉक्सी सहित ES2019 विनिर्देश का समर्थन करता है।

क्विकजेएस जावास्क्रिप्ट इंजन में जावास्क्रिप्ट के लिए वैकल्पिक गैर-मानक गणित एक्सटेंशन समर्थित हैं, जैसे कि BigInt और BigFloat प्रकार, साथ ही ऑपरेटर ओवरलोड।

प्रदर्शन के मामले में, QuickJS उपलब्ध एनालॉग्स से काफी बेहतर प्रदर्शन करता हैउदाहरण के लिए, बेंच-वी8 परीक्षण पर, एक्सएस इंजन 35% आगे है, डुकटेप दोगुने से अधिक, जेरीस्क्रिप्ट तीन गुना और म्यूजेएस सात गुना आगे है।

एप्लिकेशन में इंजन को एम्बेड करने के लिए लाइब्रेरी के अलावा, यह प्रोजेक्ट qjs दुभाषिया भी प्रदान करता है, जिसका उपयोग कमांड लाइन से जावास्क्रिप्ट कोड निष्पादित करने के लिए किया जा सकता है।

इसके अलावा, क्यूजेएससी कंपाइलर उपलब्ध है और निष्पादन योग्य फ़ाइलों को आउटपुट करने में सक्षम है जिन्हें अलग से चलाया जा सकता है और इन्हें बाहरी निर्भरता की आवश्यकता नहीं है।

क्विकजेएस जावास्क्रिप्ट इंजन की मुख्य विशेषताएं निम्नलिखित बिंदु बाहर खड़े हैं:

  • कॉम्पैक्ट और अन्य परियोजनाओं में एकीकृत करना आसान। कोड में केवल कुछ सी फ़ाइलें शामिल हैं जिन्हें बनाने के लिए बाहरी निर्भरता की आवश्यकता नहीं होती है। एक सरल संकलित एप्लिकेशन लगभग 190 Kb लेता है
  • बहुत उच्च प्रदर्शन और तेज़ बूट समय। एक कोर पर सामान्य डेस्कटॉप कंप्यूटर चलाने पर 56 हजार ईसीएमएस्क्रिप्ट संगतता परीक्षण पास करने में लगभग 100 सेकंड लगते हैं। रनटाइम आरंभीकरण में 300 माइक्रोसेकंड से कम समय लगता है
  • ES2019 विनिर्देश के लिए लगभग पूर्ण समर्थन और "बी" एप्लिकेशन के लिए पूर्ण समर्थन, जो विरासत वेब अनुप्रयोगों के साथ संगतता के लिए घटकों को परिभाषित करता है
  • सभी ईसीएमएस्क्रिप्ट टेस्ट सूट परीक्षणों को पूरा करें
  • बाहरी निर्भरता के बिना निष्पादन योग्य फ़ाइलों में जावास्क्रिप्ट कोड संकलित करने के लिए समर्थन
  • कचरा संग्रहकर्ता चक्रीय सफ़ाई किए बिना संदर्भ गिनती पर निर्भर करता है, जिससे पूर्वानुमानित व्यवहार संभव हो जाता है और मेमोरी की खपत कम हो जाती है
  • जावास्क्रिप्ट भाषा में गणितीय गणनाओं के लिए एक्सटेंशन का एक सेट
  • कमांड लाइन मोड में कोड चलाने के लिए एक शेल, जो प्रासंगिक कोड हाइलाइटिंग का समर्थन करता है
  • सी लाइब्रेरी के शीर्ष पर कॉम्पैक्ट मानक लाइब्रेरी

इसके अतिरिक्त, दूसरी ओर, परियोजना तीन सी लाइब्रेरी भी विकसित कर रही है QuickJS में शामिल संबंधित मुद्दे और व्यक्तिगत उपयोग के लिए उपयुक्त:

  1. फ्रीगएक्सपी: एक छोटी और तेज़ रेगुलर एक्सप्रेशन लाइब्रेरी जो ES2019 जावास्क्रिप्ट विनिर्देश का अनुपालन करती है
  2. लिबुनिकोड: एक छोटी यूनिकोड लाइब्रेरी जो केस रूपांतरण, यूनिकोड सामान्यीकरण, यूनिकोड स्क्रिप्ट अनुरोध, सामान्य यूनिकोड श्रेणी क्वेरी और सभी यूनिकोड बाइनरी गुणों का समर्थन करती है
  3. libbf: यह एक छोटी सी लाइब्रेरी भी है जो IEEE 754 फ़्लोटिंग पॉइंट ऑपरेशंस और ट्रान्सेंडैंटल फ़ंक्शंस को सटीक राउंडिंग के साथ लागू करती है। इसे एक अलग परियोजना के रूप में बनाए रखा गया है।

सैवास्क्रिप्ट क्विकजेएस कैसे प्राप्त करें?

आप अपने संकलन के लिए स्रोत कोड यहां से डाउनलोड कर सकते हैं निम्नलिखित लिंक. इंस्टालेशन पर, लिनक्स या मैक ओएस/एक्स पर इंजन को संकलित करने के लिए एक मेकफ़ाइल प्रदान की जाती है।

उसी लिंक में आप QuickJS दस्तावेज़ से परामर्श ले सकते हैं अधिक जानकारी के लिए। यह बेंचमार्क जानकारी भी प्रदान करता है कि QuickJS Google के V8 इंजन के साथ कैसा प्रदर्शन करता है और इसके और उसी श्रेणी के अन्य टूल के बीच तुलना करता है।


अपनी टिप्पणी दर्ज करें

आपका ईमेल पता प्रकाशित नहीं किया जाएगा। आवश्यक फ़ील्ड के साथ चिह्नित कर रहे हैं *

*

*

  1. डेटा के लिए जिम्मेदार: एबी इंटरनेट नेटवर्क 2008 SL
  2. डेटा का उद्देश्य: नियंत्रण स्पैम, टिप्पणी प्रबंधन।
  3. वैधता: आपकी सहमति
  4. डेटा का संचार: डेटा को कानूनी बाध्यता को छोड़कर तीसरे पक्ष को संचार नहीं किया जाएगा।
  5. डेटा संग्रहण: ऑकेंटस नेटवर्क्स (EU) द्वारा होस्ट किया गया डेटाबेस
  6. अधिकार: किसी भी समय आप अपनी जानकारी को सीमित, पुनर्प्राप्त और हटा सकते हैं।