QEMU және FFmpeg негізін қалаушы QuickJS JavaScript қозғалтқышын жариялайды

QEMU және FFmpeg жобаларының негізін қалаған француз математигі Фабрис Беллард сонымен қатар Pi санын есептеудің ең жылдам формуласын жасап, кескін пішімін әзірледі. .bpg, жаңа JavaScript қозғалтқышының бірінші шығарылымын жариялады QuickJS. Қозғалтқыш ықшам және басқа жүйелерге біріктіруге арналған. Жоба коды C тілінде жазылған және MIT лицензиясы бойынша таратылады. Emscripten көмегімен WebAssembly ішіне жинақталған және браузерлерде орындауға жарамды қозғалтқыштың құрастыруы да қолжетімді.

JavaScript енгізу қолдайды ES2019 спецификациясы, соның ішінде модульдер, асинхронды генераторлар және прокси. Стандартты емес математикаға қосымша қолдау көрсетіледі кеңейту BigInt және BigFloat түрлері сияқты JavaScript үшін, сондай-ақ оператордың шамадан тыс жүктелуі. QuickJS өнімділігі маңызды артық қол жетімді аналогтар, мысалы, сынақта
bench-v8 қозғалтқыштан алда XS 35%, DukTape екі еседен астам өсті jerryscript үш рет және MuJS жеті рет.

Қозғалтқышты қолданбаларға ендіруге арналған кітапханадан басқа, жоба пәрмен жолынан JavaScript кодын іске қосу үшін пайдалануға болатын qjs аудармашысын ұсынады. Сонымен қатар, qjsc компиляторы қол жетімді, ол сыртқы тәуелділікті қажет етпейтін дербес орындауға жарамды шығыс орындалатын файлдарды жасауға қабілетті.

Негізгі ерекшеліктері:

  • Ықшам және басқа жобаларға біріктіру оңай. Код жинақтау үшін сыртқы тәуелділікті қажет етпейтін бірнеше C файлдарын ғана қамтиды. Ең қарапайым құрастырылған қолданба шамамен 190 Кбайт алады;
  • Өте жоғары өнімділік және қысқа іске қосу уақыты. 56 мың ECMAScript үйлесімділік сынақтарынан өту әдеттегі жұмыс үстелі компьютерінің бір ядросында орындалғанда шамамен 100 секундты алады. Орындау уақытын инициализациялау 300 микросекундтан аз уақыт алады;
  • ES2019 спецификациясына толық дерлік қолдау және бұрынғы веб-қосымшалармен үйлесімділік үшін құрамдастарды анықтайтын В қосымшасына толық қолдау көрсету;
  • ECMAScript Test Suite барлық сынақтардан толық өту;
  • Javascript кодын сыртқы тәуелділіктерсіз орындалатын файлдарға құрастыруға қолдау көрсету;
  • Циклдік тазалаусыз анықтамалық санауға негізделген қоқыс жинағыш, бұл бізге болжамды әрекетке қол жеткізуге және жадты тұтынуды азайтуға мүмкіндік берді;
  • JavaScript-те математикалық есептеулерге арналған кеңейтімдер жинағы;
  • Мәтінмәндік кодты бөлектеуді қолдайтын пәрмен жолы режимінде кодты орындауға арналған қабық;
  • С кітапханасының үстіндегі қаптамалары бар ықшам стандартты кітапхана.

Жоба сонымен қатар QuickJS-ке қатысатын және жеке пайдалануға жарамды үш ілеспе C кітапханасын әзірлеуде:

  • libregexp - Javascript ES 2019 спецификациясымен толық үйлесімді тұрақты өрнектерді жылдам енгізу;
  • либуникод – Юникодпен жұмыс істеуге арналған жинақы кітапхана;
  • libbf - дәл дөңгелектеумен еркін дәлдіктегі өзгермелі нүкте операцияларын және трансценденттік функцияларды жүзеге асыру.

Ақпарат көзі: opennet.ru

пікір қалдыру