QEMU-ի և FFmpeg-ի հիմնադիրը հրապարակում է QuickJS JavaScript Engine-ը

Ֆրանսիացի մաթեմատիկոս Ֆաբրիս Բելարդը, ով ժամանակին հիմնադրել է QEMU և FFmpeg նախագծերը, ինչպես նաև ստեղծել է pi-ի հաշվարկման ամենաարագ բանաձևը և մշակել պատկերի ձևաչափը։ ՀՆԱ, հրապարակել է JavaScript նոր շարժիչի առաջին թողարկումը QuickJS. Շարժիչը կոմպակտ է և կենտրոնացած է այլ համակարգերում ներդրման վրա: Ծրագրի կոդը գրված է C-ով և տարածվում է MIT լիցենզիայի ներքո: Հասանելի է նաև շարժիչի հավաքածու, որը կազմվել է WebAssembly-ին Emscripten-ի միջոցով և հարմար է բրաուզերներում կատարման համար:

JavaScript-ի իրականացում աջակցում է ES2019 ճշգրտումը, ներառյալ մոդուլները, ասինխրոն գեներատորները և վստահված սարքերը: Ոչ ստանդարտ մաթեմատիկան ընտրովի է: ընդլայնումներ JavaScript-ի համար, ինչպիսիք են BigInt և BigFloat տեսակները, ինչպես նաև օպերատորի գերբեռնվածություն. Կատարման առումով QuickJS-ը նշանակալի է վերադասից առկա անալոգները, օրինակ, թեստի մեջ
bench-v8-ը շարժիչից առաջ է XS 35%, duktape ավելի քան երկու անգամ jerryscript երեք անգամ և MuJS յոթ անգամ։

Բացի հավելվածներում շարժիչը ներկառուցելու գրադարանից, նախագիծն առաջարկում է նաև qjs թարգմանիչ, որը կարող է օգտագործվել հրամանի տողից JavaScript կոդը գործարկելու համար: Ավելին, qjsc կոմպիլյատորը հասանելի է, որն ի վիճակի է ստեղծել ինքնուրույն գործարկվող ֆայլեր, որոնք չեն պահանջում արտաքին կախվածություն:

Հիմնական առանձնահատկությունները.

  • Կոմպակտ և հեշտ է ինտեգրվել այլ նախագծերին: Կոդը ներառում է միայն մի քանի C ֆայլեր, որոնց ստեղծման համար արտաքին կախվածություն չի պահանջվում: Կազմված պարզ հավելվածը տևում է մոտ 190 ԿԲ;
  • Շատ բարձր կատարողականություն և գործարկման ցածր ժամանակ: ECMAScript-ի համատեղելիության 56 հազար թեստեր անցնելը տևում է մոտ 100 վայրկյան, երբ այն կատարվում է սովորական սեղանադիր համակարգչի մեկ միջուկի վրա: Գործողության սկզբնավորումը տևում է 300 միկրովայրկյանից պակաս;
  • Գրեթե ամբողջական աջակցություն ES2019-ի հստակեցմանը և ամբողջական աջակցություն Հավելված B-ին, որը սահմանում է բաղադրիչներ հին վեբ հավելվածների հետ համատեղելիության համար.
  • ECMAScript թեստային փաթեթի բոլոր թեստերի ամբողջական անցում;
  • Աջակցություն Javascript ծածկագիրը գործարկվող ֆայլերի մեջ առանց արտաքին կախվածությունների կազմման;
  • Հաշվարկված աղբահանող սարք՝ առանց մաքրման հեծանվավազքի, որը թույլ է տվել կանխատեսելի վարքագիծ և կրճատել հիշողության սպառումը.
  • JavaScript լեզվով մաթեմատիկական հաշվարկների ընդլայնումների մի շարք;
  • Հրամանի տողում կոդի կատարման վահանակ, որն աջակցում է համատեքստային կոդի ընդգծմանը.
  • Կոմպակտ ստանդարտ գրադարան՝ C գրադարանի վրա կապողներով:

Նախագիծը նաև մշակում է երեք ուղեկից C-գրադարաններ, որոնք ներգրավված են QuickJS-ում և հարմար են առանձին հավելվածի համար.

  • libregexp-ը սովորական արտահայտությունների արագ իրականացում է, որը լիովին համապատասխանում է Javascript ES 2019 բնութագրին.
  • libunicode - կոմպակտ գրադարան Յունիկոդի հետ աշխատելու համար;
  • libbf-ը լողացող կետի կամայական ճշգրիտ գործողությունների և ճշգրիտ կլորացման տրանսցենդենտալ ֆունկցիաների իրականացումն է:

Source: opennet.ru

Добавить комментарий