QEMU va FFmpeg asoschisi QuickJS JavaScript dvigatelini nashr etadi

QEMU va FFmpeg loyihalariga asos solgan frantsuz matematigi Fabris Bellard ham Pi sonini hisoblashning eng tezkor formulasini yaratdi va tasvir formatini ishlab chiqdi. .bpg, yangi JavaScript dvigatelining birinchi versiyasini chop etdi QuickJS. Dvigatel ixcham va boshqa tizimlarga integratsiya qilish uchun mo'ljallangan. Loyiha kodi C tilida yozilgan va MIT litsenziyasi ostida tarqatiladi. Dvigatelning tuzilishi Emscripten yordamida WebAssembly-ga tuzilgan va brauzerlarda ishlash uchun moslashtirilgan ham mavjud.

JavaScript-ni amalga oshirish qo'llab-quvvatlash ES2019 spetsifikatsiyasi, jumladan modullar, asinxron generatorlar va proksi-serverlar. Nostandart matematika ixtiyoriy ravishda qo'llab-quvvatlanadi kattalashtirish BigInt va BigFloat turlari kabi JavaScript uchun, shuningdek operatorning haddan tashqari yuklanishi. QuickJS ning ishlashi muhim dan ustun mavjud analoglar, masalan, testda
bench-v8 dvigateldan oldinda XS 35%da, DukTape ikki barobardan koΚ»proqqa koΚ»paydi jerryscript uch marta va MuJS etti marta.

Dvigatelni ilovalarga joylashtirish uchun kutubxonadan tashqari, loyiha qjs tarjimonini ham taklif qiladi, undan JavaScript kodini buyruq satridan ishga tushirish uchun foydalanish mumkin. Bundan tashqari, qjsc kompilyatori mavjud bo'lib, u tashqi bog'liqlikni talab qilmaydigan mustaqil bajarish uchun mos bo'lgan ijro etuvchi fayllarni yaratishga qodir.

Asosiy xususiyatlari:

  • Yilni va boshqa loyihalarga integratsiya qilish oson. Kod faqat bir nechta C fayllarini o'z ichiga oladi, ular montaj uchun tashqi bog'liqlikni talab qilmaydi. Eng oddiy kompilyatsiya qilingan dastur taxminan 190 KB ni oladi;
  • Juda yuqori unumdorlik va qisqa ishga tushirish vaqti. 56 ming ECMAScript muvofiqlik testlaridan o'tish oddiy ish stoli kompyuterining bitta yadrosida bajarilganda taxminan 100 soniya davom etadi. Ish vaqtini ishga tushirish 300 mikrosekunddan kamroq vaqtni oladi;
  • ES2019 spetsifikatsiyasini deyarli toβ€˜liq qoβ€˜llab-quvvatlash va eski veb-ilovalar bilan muvofiqligi uchun komponentlarni belgilaydigan B ilovasini toβ€˜liq qoβ€˜llab-quvvatlash;
  • ECMAScript Test Suite-dan barcha testlardan to'liq o'tish;
  • Javascript kodini tashqi bog'liqliklarsiz bajariladigan fayllarga kompilyatsiya qilishni qo'llab-quvvatlash;
  • Tsiklik tozalashsiz mos yozuvlar hisobiga asoslangan axlat yig'uvchi, bu bizga bashorat qilinadigan xatti-harakatlarga erishish va xotira sarfini kamaytirish imkonini berdi;
  • JavaScript-da matematik hisoblar uchun kengaytmalar to'plami;
  • Kontekstli kodni ta'kidlashni qo'llab-quvvatlaydigan buyruq qatori rejimida kodni bajarish uchun qobiq;
  • C kutubxonasi ustidagi o'ramlari bilan ixcham standart kutubxona.

Loyiha, shuningdek, QuickJS-da ishtirok etadigan va individual foydalanish uchun mos keladigan uchta C kutubxonasini ishlab chiqmoqda:

  • libregexp - Javascript ES 2019 spetsifikatsiyasiga to'liq mos keladigan oddiy iboralarni tez amalga oshirish;
  • libunicod - Unicode bilan ishlash uchun ixcham kutubxona;
  • libbf - ixtiyoriy aniqlikdagi suzuvchi nuqta operatsiyalari va transsendental funktsiyalarni aniq yaxlitlash bilan amalga oshirish.

Manba: opennet.ru

a Izoh qo'shish