Sylfaenydd QEMU a FFmpeg yn Cyhoeddi QuickJS JavaScript Engine

Creodd y mathemategydd Ffrengig Fabrice Bellard, a sefydlodd y prosiectau QEMU a FFmpeg, hefyd y fformiwla gyflymaf ar gyfer cyfrifo'r rhif Pi a datblygodd fformat y ddelwedd CMC, cyhoeddodd y datganiad cyntaf o'r injan JavaScript newydd QuickJS. Mae'r injan yn gryno ac wedi'i dylunio i'w hintegreiddio i systemau eraill. Mae cod y prosiect wedi'i ysgrifennu yn C ac yn cael ei ddosbarthu o dan y drwydded MIT. Mae adeiladwaith o'r injan ar gael hefyd, wedi'i grynhoi i mewn i WebAssembly gan ddefnyddio Emscripten ac yn addas i'w weithredu mewn porwyr.

Gweithredu JavaScript yn cefnogi Manyleb ES2019, gan gynnwys modiwlau, generaduron asyncronig a dirprwyon. Cefnogir mathemateg ansafonol yn ddewisol ehangu ar gyfer JavaScript, megis mathau BigInt a BigFloat, yn ogystal â gorlwytho gweithredwr. Mae perfformiad QuickJS yn arwyddocaol uwchraddol i analogau sydd ar gael, er enghraifft, yn y prawf
bench-v8 ar y blaen i'r injan XS ar 35%, DukTap mwy na dyblu jerryscript tair gwaith a MuJS saith gwaith.

Yn ogystal â'r llyfrgell ar gyfer gwreiddio'r injan mewn cymwysiadau, mae'r prosiect hefyd yn cynnig dehonglydd qjs, y gellir ei ddefnyddio i redeg cod JavaScript o'r llinell orchymyn. At hynny, mae'r casglwr qjsc ar gael, sy'n gallu cynhyrchu ffeiliau gweithredadwy allbwn sy'n addas i'w gweithredu'n annibynnol nad oes angen dibyniaethau allanol arnynt.

Nodweddion Allweddol:

  • Compact a hawdd ei integreiddio i brosiectau eraill. Mae'r cod yn cynnwys dim ond ychydig o ffeiliau C nad oes angen dibyniaethau allanol arnynt ar gyfer cydosod. Mae'r cais symlaf yn cymryd tua 190 KB;
  • Perfformiad uchel iawn ac amser cychwyn byr. Mae pasio 56 mil o brofion cydnawsedd ECMAScript yn cymryd tua 100 eiliad pan gânt eu gweithredu ar un craidd o gyfrifiadur pen desg arferol. Mae cychwyn amser rhedeg yn cymryd llai na 300 microseconds;
  • Cefnogaeth lawn bron i fanyleb ES2019 a chefnogaeth lawn i Atodiad B, sy'n diffinio cydrannau ar gyfer cydweddoldeb â chymwysiadau gwe etifeddol;
  • Pasio'r holl brofion o'r Ystafell Brofi ECMAScript yn llwyr;
  • Cefnogaeth ar gyfer llunio cod Javascript yn ffeiliau gweithredadwy heb ddibyniaethau allanol;
  • Casglwr sbwriel yn seiliedig ar gyfri cyfrif heb lanhau cylchol, a oedd yn caniatáu inni gyflawni ymddygiad rhagweladwy a lleihau'r defnydd o gof;
  • Set o estyniadau ar gyfer cyfrifiadau mathemategol yn JavaScript;
  • Cragen ar gyfer gweithredu cod yn y modd llinell orchymyn, gan gefnogi amlygu cod cyd-destunol;
  • Llyfrgell safonol gryno gyda deunydd lapio dros lyfrgell C.

Mae’r prosiect hefyd yn datblygu tair llyfrgell C sy’n gysylltiedig â QuickJS ac sy’n addas at ddefnydd unigol:

  • libregexp - gweithredu ymadroddion rheolaidd yn gyflym, yn gwbl gydnaws â manyleb Javascript ES 2019;
  • libunicode - llyfrgell gryno ar gyfer gweithio gydag Unicode;
  • libbf - Gweithredu gweithrediadau pwynt arnawf trachywiredd mympwyol a swyddogaethau trosgynnol gyda thalgrynnu union.

Ffynhonnell: opennet.ru

Ychwanegu sylw