Mae Wasmer 3.0, pecyn cymorth ar gyfer adeiladu cymwysiadau sy'n seiliedig ar WebCynulliad, ar gael

Cyflwynir trydydd datganiad mawr y prosiect Wasmer, sy'n datblygu amser rhedeg ar gyfer gweithredu modiwlau WebAssembly y gellir eu defnyddio i greu cymwysiadau cyffredinol a all redeg ar wahanol systemau gweithredu, yn ogystal â gweithredu cod di-ymddiried ar ei ben ei hun. Mae cod y prosiect wedi'i ysgrifennu yn Rust ac yn cael ei ddosbarthu o dan y drwydded MIT.

Darperir y gallu i redeg un cymhwysiad ar wahanol lwyfannau trwy grynhoi cod i god canolradd lefel isel WebAssembly, a all redeg ar unrhyw OS neu gael ei ymgorffori mewn rhaglenni mewn ieithoedd rhaglennu eraill. Mae'r rhaglenni yn gynwysyddion ysgafn sy'n rhedeg pseudocode WebAssembly. Nid yw'r cynwysyddion hyn wedi'u clymu i'r system weithredu a gallant gynnwys cod a ysgrifennwyd yn wreiddiol mewn unrhyw iaith raglennu. Gellir defnyddio pecyn cymorth Emscripten i'w lunio i WebAssembly. Er mwyn trosi WebAssembly yn god peiriant y platfform presennol, mae'n cefnogi cysylltiad gwahanol gefnau casglu (Singlepass, Cranelift, LLVM) a pheiriannau (gan ddefnyddio JIT neu gynhyrchu cod peiriant).

Mae cymwysiadau wedi'u hynysu o'r brif system mewn amgylchedd blwch tywod ac mae ganddynt fynediad yn unig at y swyddogaeth ddatganedig (mecanwaith diogelwch yn seiliedig ar reoli gallu - ar gyfer gweithredoedd gyda phob un o'r adnoddau (ffeiliau, cyfeirlyfrau, socedi, galwadau system, ac ati), y rhaid rhoi'r pwerau priodol i'r cais). Darperir rheolaeth mynediad a rhyngweithio â'r system gan ddefnyddio API WASI (Rhyngwyneb System WebAssembly), sy'n darparu rhyngwynebau rhaglennu ar gyfer gweithio gyda ffeiliau, socedi a swyddogaethau eraill a ddarperir gan y system weithredu.

Mae'r platfform yn caniatáu ichi gyflawni perfformiad gweithredu cymwysiadau yn agos at gynulliadau brodorol. Gan ddefnyddio'r Peiriant Gwrthrych Brodorol ar gyfer modiwl WebCynulliad, gallwch gynhyrchu cod peiriant (“wasmer compile -native” i gynhyrchu ffeiliau gwrthrych .so, .dylib a .dll wedi'u llunio ymlaen llaw), sy'n gofyn am ychydig o amser rhedeg i'w rhedeg, ond sy'n cadw'r holl ynysu blwch tywod Nodweddion. Mae'n bosibl cyflenwi rhaglenni wedi'u llunio ymlaen llaw gyda Wasmer adeiledig. Cynigir yr API Rust a Wasm-C-API ar gyfer creu ychwanegion ac estyniadau.

I lansio cynhwysydd WebAssembly, gosodwch Wasmer yn y system amser rhedeg, sy'n dod heb ddibyniaethau allanol (“curl https://get.wasmer.io -sSfL | sh”), a rhedeg y ffeil angenrheidiol (“wasmer test.wasm” ). Dosberthir rhaglenni ar ffurf modiwlau WebAssembly rheolaidd, y gellir eu rheoli gan ddefnyddio rheolwr pecyn WAPM. Mae Wasmer hefyd ar gael fel llyfrgell y gellir ei defnyddio i fewnosod cod WebAssembly i raglenni Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir a Java.

Newidiadau mawr yn Wasmer 3.0:

  • Ychwanegwyd y gallu i greu ffeiliau gweithredadwy brodorol ar gyfer unrhyw lwyfan. Mae'r gorchymyn "wasmer create-exe" wedi'i ailgynllunio'n llwyr i drosi ffeil cod canolraddol WebAssembly yn weithrediadau hunangynhwysol ar gyfer llwyfannau Linux, Windows, a macOS a all redeg heb osod Wasmer ei hun.
  • Mae'n bosibl lansio pecynnau WAPM sydd wedi'u lleoli yn y cyfeiriadur wapm.io gan ddefnyddio'r gorchymyn “wasmer run”. Er enghraifft, bydd rhedeg "wasmer run python / python" yn lawrlwytho'r pecyn python o'r ystorfa wapm.io a'i redeg.
  • Mae API Wasmer Rust wedi'i ailgynllunio'n llwyr, gan newid arddull gweithio gyda chof a darparu'r gallu i arbed gwrthrychau Wasm yn ddiogel yn strwythur y Storfa. Mae strwythur MemoryView newydd wedi'i gynnig sy'n caniatáu darllen ac ysgrifennu data i ardal cof llinol.
  • Mae set o gydrannau wasmer-js wedi'u rhoi ar waith i redeg Wasmer mewn porwr gwe a rhyngweithio ag ef o JavaScript gan ddefnyddio'r llyfrgell wasm-bindgen. Yn ei alluoedd, mae wasmer-js yn cyfateb i'r cydrannau wasmer-sys sydd wedi'u cynllunio i redeg Wasmer ar systemau gweithredu rheolaidd.
  • Mae peiriannau wedi'u symleiddio. Yn lle peiriannau ar wahân ar gyfer JIT, cysylltu deinamig a statig (Universal, Dylib, StaticLib), cynigir un injan gyffredin bellach, a rheolir y cod llwytho ac arbed ar lefel gosod paramedrau.
  • I ddad-gyfrifo arteffactau, defnyddir y fframwaith rkyv, sy'n sicrhau gweithrediad yn y modd copi sero, h.y. sy'n gofyn am unrhyw ddyraniad cof ychwanegol ac sy'n cyflawni dad-gyfeiriad dim ond gan ddefnyddio'r byffer a ddarparwyd yn wreiddiol. Mae'r defnydd o rkyv wedi cynyddu cyflymder cychwyn yn sylweddol.
  • Mae casglwr pas sengl Singlepass wedi'i wella, gan ychwanegu cefnogaeth ar gyfer swyddogaethau aml-werth, gwell dibynadwyedd, a chefnogaeth ychwanegol ar gyfer fframiau trin eithriadau.
  • Gwell gweithrediad o WASI (Rhyngwyneb System WebCynulliad) API. Mae problemau yn rhyngwyneb meddalwedd WASI ar gyfer gweithio gyda'r system ffeiliau wedi'u datrys. Mae mathau mewnol wedi'u hailgynllunio gan ddefnyddio WAI (Rhyngwynebau WebAssembly), a fydd yn galluogi cyfres o nodweddion newydd yn y dyfodol.

Ffynhonnell: opennet.ru

Ychwanegu sylw