המתמטיקאי הצרפתי פבריס בלארד, שייסד את הפרויקטים QEMU ו-FFmpeg, יצר גם את הנוסחה המהירה ביותר לחישוב המספר Pi ופיתח את פורמט התמונה , פרסם את המהדורה הראשונה של מנוע JavaScript החדש . המנוע קומפקטי ומיועד לשילוב במערכות אחרות. קוד הפרויקט כתוב ב-C ומופץ תחת רישיון MIT. בנייה של המנוע זמינה גם היא, מורכבת לתוך WebAssembly באמצעות Emscripten ומתאימה לביצוע בדפדפנים.
יישום JavaScript מפרט ES2019, כולל מודולים, גנרטורים אסינכרוניים ופרוקסי. מתמטיקה לא סטנדרטית נתמכת באופן אופציונלי עבור JavaScript, כגון סוגי BigInt ו-BigFloat, וכן . הביצועים של QuickJS משמעותיים אנלוגים זמינים, למשל, במבחן
bench-v8 מקדים את המנוע בשיעור של 35%, יותר מכפול שלוש פעמים ו שבע פעמים.
בנוסף לספרייה להטמעת המנוע באפליקציות, הפרויקט מציע גם מתורגמן qjs, שניתן להשתמש בו כדי להריץ קוד JavaScript משורת הפקודה. יתר על כן, מהדר qjsc זמין, המסוגל לייצר קבצי הפעלה ניתנים להרצה המתאימים לביצוע עצמאי שאינם דורשים תלות חיצונית.
תכונות עיקריות:
- קומפקטי וקל לשילוב בפרויקטים אחרים. הקוד כולל רק כמה קבצי C שאינם דורשים תלות חיצונית להרכבה. יישום הקומפילציה הפשוט ביותר לוקח בערך 190 KB;
- ביצועים גבוהים מאוד וזמן הפעלה קצר. העברת 56 אלף מבחני תאימות של ECMAScript נמשכת כ-100 שניות כאשר הם מבוצעים על ליבה אחת של מחשב שולחני רגיל. אתחול זמן ריצה לוקח פחות מ-300 מיקרו-שניות;
- תמיכה כמעט מלאה במפרט ES2019 ותמיכה מלאה בנספח B, המגדיר רכיבים לתאימות עם יישומי אינטרנט מדור קודם;
- עמידה מלאה בכל המבחנים מחבילת הבדיקות של ECMAScript;
- תמיכה בהידור קוד Javascript לקבצי הפעלה ללא תלות חיצונית;
- אספן אשפה המבוסס על ספירת התייחסויות ללא ניקוי מחזורי, מה שאפשר לנו להשיג התנהגות צפויה ולהפחית את צריכת הזיכרון;
- סט הרחבות לחישובים מתמטיים ב-JavaScript;
- מעטפת לביצוע קוד במצב שורת פקודה, התומכת בהדגשת קוד הקשר;
- ספרייה סטנדרטית קומפקטית עם עטיפות מעל ספריית C.
הפרויקט מפתח גם שלוש ספריות C נלוות המעורבות ב-QuickJS ומתאימות לשימוש אישי:
- libregexp - הטמעה מהירה של ביטויים רגולריים, תואם באופן מלא למפרט Javascript ES 2019;
- libunicode - ספרייה קומפקטית לעבודה עם Unicode;
- libbf - יישום של פעולות דיוק שרירותיות של נקודה צפה ופונקציות טרנסצנדנטליות עם עיגול מדויק.
מקור: OpenNet.ru
