המתמטיקאי הצרפתי פבריס בלארד, שהקים את הפרויקטים QEMU ו- FFmpeg ויצר גם את הנוסחה המהירה ביותר לחישוב מספר ה- Pi ופיתח את פורמט התמונה BPG.
פבריס בלארד היא ידוע בעיקר כמפתח הראשי של QEMU (אמולטור המדמה ארכיטקטורות חומרה שונות) ו- Tiny C Compiler (tcc), מהדר C קטן אך מקיף מאוד, שנכתב במקור כדי לזכות בתחרות "הבינלאומית קוד C מעורפלת".
עכשיו לאחרונה שיתף את הציבור בגרסה הראשונה של יצירתו החדשה שנמצא ב- JavaScript וזהו מנוע חדש בשם JavaScript QuickJS.
אודות JavaScript QuickJS
מנוע ה- JavaScript של QuickJS הוא קומפקטי ומתוכנן לשילוב במערכות אחרות. קוד הפרויקט הוא כתוב ב- C ומופץ ברישיון MIT. זמין גם מבנה מנוע שהורכב לתוך WebAssembly באמצעות Emscripten ומתאים להפעלה בדפדפנים.
הטמעת JavaScript תומך במפרט ES2019, כולל מודולים, גנרטורים אסינכרוניים ו- Proxy.
במנוע ה- JavaScript של QuickJS תוספים תוספים מתמטיים אופציונליים שאינם סטנדרטיים עבור JavaScript, כגון סוגי BigInt ו- BigFloat, כמו גם עומס יתר על המפעיל.
לפי ביצועים, QuickJS עולה בצורה משמעותית על אנלוגים זמיניםלדוגמא, במבחן ה- bench-v8, מנוע ה- XS מקדים 35%, ה- DukTape הוכפל יותר מ- JerryScript שלוש פעמים ו- MuJS שבע פעמים.
בנוסף לספרייה להטמעת המנוע ביישום, הפרויקט מציע גם את המתורגמן qjs, באמצעותו ניתן להפעיל קוד JavaScript משורת הפקודה.
בנוסף, מהדר qjsc זמין ומסוגל להוציא קבצי הפעלה הניתנים להפעלה בנפרד וכי אלה אינם דורשים תלות חיצונית.
מהתכונות העיקריות של מנוע ה- JavaScript של QuickJS הנקודות הבאות בולטות:
- קומפקטי וקל לשילוב בפרויקטים אחרים. הקוד כולל רק כמה קבצי C שאינם דורשים בניית תלות חיצונית. יישום מורכב פשוט אורך כ -190 קילו-בייט
- ביצועים גבוהים מאוד וזמני הפעלה מהירים. מעבר של 56 אלף בדיקות תאימות ECMAScript לוקח כ- 100 שניות כאשר מריצים שולחן עבודה רגיל על גרעין. אתחול זמן ריצה לוקח פחות מ -300 מיקרו שניות
- כמעט תמיכה מלאה במפרט ES2019 ותמיכה מלאה ביישום "B", המגדיר את הרכיבים לתאימות ליישומי אינטרנט ישנים יותר
- השלם את המעבר של כל הבדיקות של חבילת הבדיקה ECMAScript
- תמיכה בהרכבת קוד Javascript לקבצי הפעלה ללא תלות חיצונית
- אספן האשפה מסתמך על ספירת הפניות ללא ניקוי מחזורי, מה שמאפשר התנהגות צפויה וצריכת זיכרון מופחתת
- סט הרחבות לחישובים מתמטיים בשפת JavaScript
- מעטפת לביצוע קוד במצב שורת פקודה, התומכת בהדגשת קוד הקשר
- ספרייה סטנדרטית קומפקטית על פני ספריית C.
בנוסף לכל אלה, מצד שני, הפרויקט מפתח גם שלוש ספריות C צדדים קשורים המעורבים ב- QuickJS ומתאימים לשימוש פרטני:
- freegexp: ספריית regex קטנה ומהירה שתואמת למפרט JavaScript ES2019
- ליבוניקוד: ספריית Unicode קטנה התומכת בהמרת מקרה, נורמליזציה של Unicode, בקשות סקריפט של Unicode, שאילתות בקטגוריה כללית של Unicode וכל המאפיינים הבינאריים של Unicode
- libbf: זוהי גם ספרייה קטנה המיישמת פעולות נקודה צפה של IEEE 754 ופונקציות טרנסצנדנטליות בעזרת עיגול מדויק. זה נשמר כפרויקט נפרד.
כיצד להשיג SavaScript QuickJS?
ניתן לבצע הורדת קוד המקור לאוסף הקישור הבא. לאחר ההתקנה, מסופק Makefile לאיסוף המנוע ב- Linux או Mac OS / X.
באותו קישור תוכלו לעיין בתיעוד QuickJS למידע נוסף. הוא גם מספק מידע מדד המציג ביצועי QuickJS עם מנוע ה- V8 של גוגל והשוואה בינו לבין כלים אחרים באותה קטגוריה.