بنیانگذار QEMU و FFmpeg موتور جاوا اسکریپت QuickJS را منتشر می کند

ریاضیدان فرانسوی فابریس بلارد، که زمانی پروژه های QEMU و FFmpeg را پایه گذاری کرد و همچنین سریع ترین فرمول را برای محاسبه پی ایجاد کرد و فرمت تصویر را توسعه داد. تولید ناخالص ملی، اولین نسخه موتور جاوا اسکریپت جدید را منتشر کرد QuickJS. موتور جمع و جور و متمرکز بر تعبیه در سیستم های دیگر است. کد پروژه به زبان C نوشته شده و تحت مجوز MIT توزیع شده است. همچنین مجموعه‌ای از موتور موجود است که با استفاده از Emscripten در WebAssembly کامپایل شده و برای اجرا در مرورگرها مناسب است.

پیاده سازی جاوا اسکریپت پشتیبانی می کند مشخصات ES2019، از جمله ماژول ها، ژنراتورهای ناهمزمان و پراکسی ها. ریاضیات غیر استاندارد به صورت اختیاری پشتیبانی می شوند. انبساط برای جاوا اسکریپت، مانند انواع BigInt و BigFloat، و همچنین اضافه بار اپراتور. از نظر عملکرد، QuickJS قابل توجه است برتر از آنالوگ های موجود، به عنوان مثال، در آزمون
bench-v8 جلوتر از موتور است XS در 35، ، duktape بیش از دو برابر جری اسکریپت سه بار و MuJS هفت بار.

این پروژه علاوه بر کتابخانه ای برای جاسازی موتور در برنامه ها، مفسر qjs را نیز ارائه می دهد که می تواند برای اجرای کد جاوا اسکریپت از خط فرمان استفاده شود. علاوه بر این، کامپایلر qjsc در دسترس است که قادر به تولید فایل‌های اجرایی مستقلی است که به وابستگی‌های خارجی نیاز ندارند.

ویژگی های کلیدی:

  • فشرده و آسان برای ادغام در پروژه های دیگر. این کد فقط شامل چند فایل C است که برای ساخت آنها نیازی به وابستگی خارجی ندارند. برنامه ساده کامپایل شده حدود 190 کیلوبایت طول می کشد.
  • عملکرد بسیار بالا و زمان راه اندازی کم. گذراندن 56 هزار تست سازگاری ECMAScript زمانی که روی یک هسته از یک رایانه رومیزی معمولی اجرا می شود، حدود 100 ثانیه طول می کشد. مقداردهی اولیه زمان اجرا کمتر از 300 میکروثانیه طول می کشد.
  • پشتیبانی تقریباً کامل از مشخصات ES2019 و پشتیبانی کامل از ضمیمه B، که مؤلفه‌هایی را برای سازگاری با برنامه‌های وب قدیمی‌تر تعریف می‌کند.
  • گذراندن کامل تمام تست‌های مجموعه تست ECMAScript؛
  • پشتیبانی از کامپایل کد جاوا اسکریپت در فایل های اجرایی بدون وابستگی خارجی.
  • جمع‌آوری زباله با مرجع شمارش شده بدون چرخه پاکسازی، که امکان رفتار قابل پیش‌بینی و کاهش مصرف حافظه را فراهم می‌آورد.
  • مجموعه ای از برنامه های افزودنی برای محاسبات ریاضی در زبان جاوا اسکریپت.
  • پوسته ای برای اجرای کد در حالت خط فرمان که از برجسته کردن کد متنی پشتیبانی می کند.
  • یک کتابخانه استاندارد فشرده با صحافی روی کتابخانه C.

این پروژه همچنین سه کتابخانه C همراه در QuickJS و مناسب برای یک برنامه جداگانه توسعه می دهد:

  • libregexp پیاده سازی سریع عبارات منظم است که به طور کامل با مشخصات Javascript ES 2019 مطابقت دارد.
  • libunicode - یک کتابخانه فشرده برای کار با یونیکد.
  • libbf اجرای عملیات نقطه شناور دقیق دلخواه و گرد کردن دقیق توابع ماورایی است.

منبع: opennet.ru

اضافه کردن نظر