Муассиси QEMU ва FFmpeg Engine QuickJS JavaScript-ро нашр мекунад

Математики фаронсавӣ Фабрис Беллард, ки лоиҳаҳои QEMU ва FFmpeg-ро таъсис додааст, инчунин формулаи зудтаринро барои ҳисоб кардани рақами Pi офаридааст ва формати тасвирро таҳия кардааст. ММД, нашри аввалини муҳаррики нави JavaScript-ро нашр кард QuickJS. Мотор паймон буда, барои ҳамгироӣ ба системаҳои дигар пешбинӣ шудааст. Рамзи лоиҳа дар C навишта шудааст ва таҳти иҷозатномаи MIT паҳн карда мешавад. Сохтани муҳаррик низ дастрас аст, ки дар WebAssembly бо истифода аз Emscripten тартиб дода шудааст ва барои иҷро дар браузерҳо мувофиқ аст.

Амалисозии JavaScript дастгирӣ мекунад Мушаххасоти ES2019, аз ҷумла модулҳо, генераторҳои асинхронӣ ва прокси. Математикаи ғайристандартӣ ихтиёрӣ дастгирӣ карда мешавад васеъкунӣ барои JavaScript, ба монанди намудҳои BigInt ва BigFloat, инчунин аз ҳад зиёди оператор. Фаъолияти QuickJS назаррас аст олӣ аналогҳои дастрас, масалан, дар санҷиш
бенч-в8 аз двигатель пеш ме-равад XS дар 35%, DukTape бештар аз ду баробар афзуд jerryscript се маротиба ва МуЖС хафт маротиба.

Илова ба китобхона барои ворид кардани муҳаррик ба барномаҳо, лоиҳа инчунин тарҷумони qjs-ро пешниҳод мекунад, ки метавонад барои иҷро кардани коди JavaScript аз сатри фармон истифода шавад. Ғайр аз он, компилятори qjsc мавҷуд аст, ки қодир ба тавлиди файлҳои иҷрошавандаи баромади барои иҷрои мустақил мувофиқ аст, ки вобастагии берунаро талаб намекунад.

Хусусиятҳои асосии:

  • Паймон ва осон ба ҳамгироӣ ба лоиҳаҳои дигар. Рамз танҳо якчанд файлҳои C-ро дар бар мегирад, ки барои васлкунӣ вобастагии берунаро талаб намекунанд. Соддатарин замимаи тартибдодашуда тақрибан 190 KB мегирад;
  • Иҷрои хеле баланд ва вақти кӯтоҳи оғозёбӣ. Гузаронидани 56 ҳазор санҷиши мутобиқати ECMAScript ҳангоми иҷро кардани як ядрои як компютери мизи корӣ тақрибан 100 сонияро мегирад. Оғозсозии вақти корӣ камтар аз 300 микросонияро мегирад;
  • Қариб пурра дастгирии мушаххасоти ES2019 ва дастгирии пурраи Замимаи В, ки ҷузъҳоро барои мутобиқат бо барномаҳои веби кӯҳна муайян мекунад;
  • Гузаронидани пурраи ҳама санҷишҳо аз ECMAScript Test Suite;
  • Дастгирии тартиб додани коди Javascript ба файлҳои иҷрошаванда бидуни вобастагии беруна;
  • Ҷамъоварии партовҳо дар асоси ҳисобкунии истинод бе тозакунии даврӣ, ки ба мо имкон дод, ки рафтори пешбинишавандаро ба даст орем ва истеъмоли хотираро кам кунем;
  • Маҷмӯи васеъшавӣ барои ҳисобҳои математикӣ дар JavaScript;
  • Шиша барои иҷро кардани код дар реҷаи сатри фармон, ки равшансозии коди контекстиро дастгирӣ мекунад;
  • Китобхонаи стандартии паймоне, ки дар болои китобхонаи C ҷойгир шудаанд.

Лоиҳа инчунин се китобхонаи C ҳамроҳро таҳия мекунад, ки дар QuickJS иштирок мекунанд ва барои истифодаи инфиродӣ мувофиқанд:

  • libregexp - татбиқи зуди ифодаҳои муқаррарӣ, ки бо мушаххасоти Javascript ES 2019 комилан мувофиқ аст;
  • libunicod - китобхонаи паймон барои кор бо Юникод;
  • libbf - Амалисозии амалҳои ихтиёрии дақиқи шинокунанда ва функсияҳои транссенденталӣ бо яклухткунии дақиқ.

Манбаъ: opennet.ru

Илова Эзоҳ