QEMU жана FFmpeg Негиздөөчүсү QuickJS JavaScript Engine жарыялайт

QEMU жана FFmpeg долбоорлорун негиздеген француз математиги Фабрис Беллард да Pi санын эсептөөнүн эң ылдам формуласын түзүп, сүрөт форматын иштеп чыккан. .bpg, жаңы JavaScript кыймылдаткычынын биринчи чыгарылышын жарыялады QuickJS. Мотор компакттуу жана башка системаларга интеграциялоо үчүн иштелип чыккан. Долбоордун коду C тилинде жазылган жана MIT лицензиясы боюнча таратылат. Кыймылдаткычтын түзүлүшү да бар, ал Emscripten аркылуу WebAssemblyге түзүлгөн жана браузерлерде аткарууга ылайыктуу.

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

Кыймылдаткычты тиркемелерге киргизүү үчүн китепканадан тышкары, долбоор ошондой эле буйрук сабынан JavaScript кодун иштетүү үчүн колдонула турган qjs котормочу сунуштайт. Мындан тышкары, qjsc компилятору бар, ал тышкы көз карандылыкты талап кылбаган, өз алдынча аткарууга ылайыктуу, аткарылуучу аткарылуучу файлдарды түзүүгө жөндөмдүү.

Негизги өзгөчөлүктөр:

  • Компакттуу жана башка долбоорлорго интеграциялоо оңой. Код жыйын үчүн тышкы көз карандылыкты талап кылбаган бир нече C файлдарын гана камтыйт. Эң жөнөкөй компиляцияланган тиркеме 190 КБга жакынды алат;
  • Абдан жогорку аткаруу жана кыска баштоо убактысы. 56 миң ECMAScript шайкештик сыноолорун өткөрүү кадимки рабочий компьютердин бир өзөгүндө аткарылганда 100 секундга жакын убакытты талап кылат. Иштөө убактысын баштоо 300 микросекунддан аз убакытты алат;
  • ES2019 спецификациясын дээрлик толук колдоо жана эски веб тиркемелер менен шайкештик үчүн компоненттерди аныктаган В тиркемесин толук колдоо;
  • ECMAScript Test Suite бардык тесттерден толук өтүү;
  • Javascript кодун тышкы көз карандылыксыз аткарылуучу файлдарга компиляциялоону колдоо;
  • Циклдик тазалоосуз маалымдамаларды эсептөөгө негизделген таштанды жыйноочу, бул бизге болжолдуу жүрүм-турумга жетишүүгө жана эстутумду керектөөнү кыскартууга мүмкүндүк берди;
  • JavaScript'те математикалык эсептөөлөр үчүн кеңейтүүлөрдүн жыйындысы;
  • Контексттик кодду бөлүп көрсөтүүнү колдогон буйрук сабы режиминде кодду аткаруу үчүн кабык;
  • Компакт стандарттуу китепкана C китепканасынын үстүнөн оролгон.

Долбоор ошондой эле QuickJS менен алектенген жана жеке колдонууга ылайыктуу үч коштоочу C китепканасын иштеп чыгууда:

  • libregexp - Javascript ES 2019 спецификациясына толук шайкеш келген кадимки туюнтмалардын тез ишке ашырылышы;
  • libunicod - Юникод менен иштөө үчүн компакттуу китепкана;
  • libbf - так тегеректөө менен эркин тактык калкыма чекиттик операцияларды жана трансценденттик функцияларды ишке ашыруу.

Source: opennet.ru

Комментарий кошуу