QEMU un FFmpeg dibinātājs ir publicējis JavaScript dzini Micro QuickJS

Franču matemātiķis Fabrice Bellard, kurš savulaik dibināja projektus QEMU, FFmpeg, BPG, QuickJS, TinyGL un TinyCC, ir publicējis jaunu JavaScript dzinēju iebūvētajām sistēmām - Micro QuickJS, kas spēj kompilēt un izpildīt JavaScript programmas, patērējot tikai 10 KB RAM. Kopā ar C bibliotēku dzinējs aizņem aptuveni 100 KB pastāvīgās atmiņas. Ir iespējama JavaScript kompilācija bytecodā un atsevišķa bytecode izpilde. Projekta kods rakstīts valodā C un izplatīts zem MIT licences.

Dzinējs atbalsta JavaScript valodas apakšnodaļu, kas ir tuvu ECMAScript 5 (ES2019) specifikācijai, bet izvirza stingrākas prasības kodam un neļauj izmantot dažas neefektīvas vai kļūdainas JavaScript konstrukcijas. Piemēram, globālajām mainīgajām obligāti jābūt deklarētām ar atslēgvārdu „var”, aizliegts lietot „with”, masīvi nedrīkst saturēt tukšumus, nav iespējama inicializācija, kad tiek deklarēts veids „new Number(1)”, un no eval nav iespējams piekļūt lokālajiem mainīgajiem.

Micro QuickJS veiktspēja ir tuvu QuickJS dzinējam, kuru Fabrice attīsta kopš 2019. gada. Micro QuickJS izmanto daļu koda no QuickJS dzinēja, taču arhitektūra lielā mērā atšķiras un projektēta minimālai atmiņas patēriņai. Piemēram, Micro QuickJS izmanto izsekojošo atkritumu savācēju, kamēr QuickJS ir izveidojis atsauču skaitīšanu. Atkritumu savākšanas papildu izmaksas ir tikai daži bitti katram piešķirtajam atmiņas blokam. Atmiņas piešķiršanai tiek izmantota paša izstrādāta allocator, kas nav atkarīgs no bibliotēkas funkcijas malloc().

Citi atšķirības no QuickJS: nesavilkts steks; atšķirīga iekšējā objektu attēlošana; virknēšanu saglabāšana UTF-8 kodējumā; standarta bibliotēkas ģenerēšana kompilācijas laikā un tās uzglabāšana pastāvīgajā atmiņā, izveidojot tikai dažus objektus RAM; tuvu QuickJS, bet nesavilkts rekursijai, parsers; bytecode ģenerēšana un optimizācija notiek vienā pārejā (QuickJS ir vairāki pārejas optimizācijai). virtuālā mašīnaFranču matemātiķis Fabrice Bellard, kurš savulaik dibināja projektus QEMU, FFmpeg, BPG, QuickJS, TinyGL un TinyCC, ir publicējis jaunu JavaScript dzinēju iebūvētajām sistēmām - Micro QuickJS.

Avots: opennet.lv

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster