QEMU болон FFmpeg үүсгэн байгуулагч QuickJS JavaScript хөдөлгүүрийг нийтэлдэг

QEMU болон FFmpeg төслүүдийг үндэслэгч Францын математикч Фабрис Беллард мөн Pi тоог тооцоолох хамгийн хурдан томъёог бүтээж, зургийн форматыг боловсруулсан. ДНБ, шинэ JavaScript хөдөлгүүрийн анхны хувилбарыг нийтлэв QuickJS. Хөдөлгүүр нь авсаархан бөгөөд бусад системд нэгтгэх зориулалттай. Төслийн код нь C хэл дээр бичигдсэн бөгөөд MIT лицензийн дагуу түгээгддэг. Emscripten ашиглан WebAssembly-д эмхэтгэсэн, хөтчүүдэд ашиглахад тохиромжтой хөдөлгүүрийн загвар бас байдаг.

JavaScript хэрэгжилт дэмждэг Модуль, асинхрон генератор, прокси зэрэг ES2019 тодорхойлолт. Стандарт бус математикийг нэмэлтээр дэмждэг тэлэлт BigInt болон BigFloat төрлүүд гэх мэт JavaScript-д зориулагдсан операторын хэт ачаалал. QuickJS-ийн гүйцэтгэл чухал юм нь дээр юм боломжтой аналогууд, жишээлбэл, туршилтанд
bench-v8 нь хөдөлгүүрээс түрүүлж байна XS 35%, DukTape хоёр дахин нэмэгджээ jerryscript гурван удаа ба МУЖ долоон удаа.

Уг төсөл нь программуудад хөдөлгүүр оруулах номын сангаас гадна командын мөрөөс JavaScript кодыг ажиллуулахад ашиглаж болох qjs орчуулагчийг санал болгодог. Нэмж дурдахад qjsc хөрвүүлэгч нь гадны хамаарал шаарддаггүй бие даасан гүйцэтгэлд тохиромжтой гаралтын гүйцэтгэгдэх файлуудыг үүсгэх боломжтой.

Үндсэн онцлогууд:

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

Төсөл нь мөн QuickJS-д хамрагдсан, хувь хүний ​​​​хэрэглэхэд тохиромжтой гурван дагалдах Си номын санг хөгжүүлж байна.

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

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх