Wasmer 2.0-ը՝ WebAssembly-ի վրա հիմնված հավելվածներ ստեղծելու գործիքակազմ, հասանելի է

Wasmer նախագիծը թողարկել է իր երկրորդ հիմնական թողարկումը՝ մշակելով գործարկման ժամանակ WebAssembly մոդուլների գործարկման համար, որոնք կարող են օգտագործվել ունիվերսալ հավելվածներ ստեղծելու համար, որոնք կարող են աշխատել տարբեր օպերացիոն համակարգերում, ինչպես նաև առանձին-առանձին գործարկել անվստահելի կոդ: Ծրագրի կոդը գրված է Rust-ով և տարածվում է MIT լիցենզիայի ներքո:

Դյուրատարությունը ձեռք է բերվում հավելվածի ծածկագիրը ցածր մակարդակի WebAssembly միջանկյալ կոդի մեջ կազմելով, որը կարող է գործարկվել ցանկացած ՕՀ-ով կամ ներկառուցվել ծրագրավորման այլ լեզուների ծրագրերում: Ծրագրերը թեթև բեռնարկղեր են, որոնք աշխատում են WebAssembly կեղծ կոդով: Այս բեռնարկղերը կապված չեն օպերացիոն համակարգի հետ և կարող են ներառել ծրագրավորման ցանկացած լեզվով սկզբնապես գրված կոդ: Emscripten գործիքակազմը կարող է օգտագործվել WebAssembly-ում կոմպիլյացիայի համար: WebAssembly-ն ընթացիկ պլատֆորմի մեքենայական կոդի թարգմանելու համար այն աջակցում է տարբեր կոմպիլյատորների (Singlepass, Cranelift, LLVM) և շարժիչների միացմանը (օգտագործելով JIT կամ մեքենայական կոդի ստեղծում):

Մուտքի վերահսկումը և համակարգի հետ փոխազդեցությունը ապահովվում է WASI (WebAssembly System Interface) API-ի միջոցով, որն ապահովում է ծրագրավորման միջերեսներ ֆայլերի, վարդակների և օպերացիոն համակարգի կողմից տրամադրվող այլ գործառույթների հետ աշխատելու համար: Հավելվածները մեկուսացված են հիմնական համակարգից Sandbox միջավայրում և հասանելի են միայն հայտարարված ֆունկցիոնալությանը (անվտանգության մեխանիզմ, որը հիմնված է հնարավորությունների կառավարման վրա. դիմումին պետք է տրվեն համապատասխան լիազորություններ):

WebAssembly կոնտեյներ գործարկելու համար բավական է համակարգում տեղադրել Wasmer runtime, որը գալիս է առանց արտաքին կախվածությունների («curl https://get.wasmer.io -sSfL | sh») և գործարկել անհրաժեշտ ֆայլը («wasmer test» .wasm»): Ծրագրերը բաշխվում են սովորական WebAssembly մոդուլների տեսքով, որոնք կարելի է կառավարել WAPM փաթեթի կառավարչի միջոցով։ Wasmer-ը հասանելի է նաև որպես գրադարան, որը կարող է օգտագործվել Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir և Java ծրագրերում WebAssembly կոդը ներկառուցելու համար:

Պլատֆորմը թույլ է տալիս հասնել հավելվածների կատարման արդյունավետությանը, որը մոտ է հայրենի հավաքներին: Օգտագործելով Native Object Engine-ը WebAssembly մոդուլի համար, դուք կարող եք գեներացնել բնիկ կոդ («wasmer compile -native»՝ նախապես կազմված .so, .dylib և .dll օբյեկտների ֆայլերի ստեղծման համար), որը գործարկելու համար պահանջում է նվազագույն գործարկման ժամանակ, բայց պահպանում է բոլոր հատկանիշները: ավազատուփի մեկուսացում. Հնարավոր է նախապես կազմված ծրագրեր մատակարարել ներկառուցված Wasmer-ով: Rust API-ն և Wasm-C-API-ն առաջարկվում են հավելումներ և հավելումներ ստեղծելու համար:

Wasmer-ի տարբերակի համարի զգալի փոփոխությունը կապված է ներքին API-ում անհամատեղելի փոփոխությունների ներդրման հետ, ինչը, ըստ մշակողների, չի ազդի հարթակի օգտատերերի 99%-ի վրա։ Համատեղելիությունը խախտող փոփոխությունների թվում կա նաև սերիականացված Wasm մոդուլների ձևաչափի փոփոխություն (Wasmer 1.0 սերիականացված մոդուլները չեն կարող օգտագործվել Wasmer 2.0-ում): Այլ փոփոխություններ.

  • Աջակցություն SIMD (Մեկ հրահանգ, բազմակի տվյալներ) հրահանգներին, որը թույլ է տալիս զուգահեռացնել տվյալների գործառնությունները: Այն ոլորտները, որոնցում SIMD-ի օգտագործումը կարող է զգալիորեն բարելավել կատարողականը, ներառում են մեքենայական ուսուցում, տեսանյութերի կոդավորում և վերծանում, պատկերների մշակում, ֆիզիկական գործընթացների մոդելավորում և գրաֆիկական մանիպուլյացիա:
  • Աջակցություն հղման տեսակներին, որը թույլ է տալիս Wasm մոդուլներին մուտք գործել տեղեկատվություն այլ մոդուլների կամ հիմքում ընկած միջավայրում:
  • Կատարվել են կատարողականի զգալի օպտիմալացումներ: LLVM-ի գործարկման արագությունը լողացող կետով թվերով ավելացել է մոտավորապես 50%-ով: Գործառույթների կանչերը զգալիորեն արագացել են՝ նվազեցնելով միջուկին հասանելիություն պահանջող իրավիճակները: Cranelift կոդի գեներատորի արդյունավետությունը բարձրացել է 40%-ով: Նվազեցված տվյալների ապասերիալացման ժամանակը:
    Wasmer 2.0-ը՝ WebAssembly-ի վրա հիմնված հավելվածներ ստեղծելու գործիքակազմ, հասանելի է
    Wasmer 2.0-ը՝ WebAssembly-ի վրա հիմնված հավելվածներ ստեղծելու գործիքակազմ, հասանելի է
  • Էությունը ավելի ճշգրիտ արտացոլելու համար փոխվել են շարժիչների անվանումները՝ JIT → Universal, Native → Dylib (Դինամիկ գրադարան), Object File → StaticLib (Static Library):

Source: opennet.ru

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