Wasmer ప్రాజెక్ట్ దాని రెండవ ప్రధాన విడుదలను విడుదల చేసింది, వివిధ ఆపరేటింగ్ సిస్టమ్లలో అమలు చేయగల యూనివర్సల్ అప్లికేషన్లను సృష్టించడానికి అలాగే అవిశ్వసనీయ కోడ్ను ఒంటరిగా అమలు చేయడానికి ఉపయోగించే WebAssembly మాడ్యూల్లను అమలు చేయడానికి రన్టైమ్ను అభివృద్ధి చేసింది. ప్రాజెక్ట్ కోడ్ రస్ట్లో వ్రాయబడింది మరియు MIT లైసెన్స్ క్రింద పంపిణీ చేయబడుతుంది.
అప్లికేషన్ కోడ్ని తక్కువ-స్థాయి WebAssembly ఇంటర్మీడియట్ కోడ్గా కంపైల్ చేయడం ద్వారా పోర్టబిలిటీ సాధించబడుతుంది, ఇది ఏదైనా OSలో అమలు చేయగలదు లేదా ఇతర ప్రోగ్రామింగ్ భాషల్లో ప్రోగ్రామ్లలో పొందుపరచబడుతుంది. ప్రోగ్రామ్లు WebAssembly సూడోకోడ్ని అమలు చేసే తేలికపాటి కంటైనర్లు. ఈ కంటైనర్లు ఆపరేటింగ్ సిస్టమ్తో ముడిపడి ఉండవు మరియు వాస్తవానికి ఏదైనా ప్రోగ్రామింగ్ భాషలో వ్రాసిన కోడ్ను కలిగి ఉంటాయి. WebAssemblyకి కంపైల్ చేయడానికి Emscripten టూల్కిట్ను ఉపయోగించవచ్చు. WebAssemblyని ప్రస్తుత ప్లాట్ఫారమ్ యొక్క మెషిన్ కోడ్గా అనువదించడానికి, ఇది వివిధ కంపైలేషన్ బ్యాకెండ్లు (Singlepass, Cranelift, LLVM) మరియు ఇంజిన్ల (JIT లేదా మెషిన్ కోడ్ ఉత్పత్తిని ఉపయోగించి) కనెక్షన్కు మద్దతు ఇస్తుంది.
సిస్టమ్తో యాక్సెస్ నియంత్రణ మరియు పరస్పర చర్య WASI (వెబ్అసెంబ్లీ సిస్టమ్ ఇంటర్ఫేస్) APIని ఉపయోగించి అందించబడుతుంది, ఇది ఆపరేటింగ్ సిస్టమ్ అందించిన ఫైల్లు, సాకెట్లు మరియు ఇతర ఫంక్షన్లతో పనిచేయడానికి ప్రోగ్రామింగ్ ఇంటర్ఫేస్లను అందిస్తుంది. అప్లికేషన్లు శాండ్బాక్స్ వాతావరణంలో ప్రధాన సిస్టమ్ నుండి వేరు చేయబడతాయి మరియు డిక్లేర్డ్ ఫంక్షనాలిటీకి మాత్రమే యాక్సెస్ కలిగి ఉంటాయి (సామర్థ్య నిర్వహణపై ఆధారపడిన భద్రతా యంత్రాంగం - ప్రతి వనరులతో (ఫైళ్లు, డైరెక్టరీలు, సాకెట్లు, సిస్టమ్ కాల్లు మొదలైనవి) చర్యల కోసం, దరఖాస్తుకు తగిన అధికారాలు ఇవ్వాలి).
WebAssembly కంటైనర్ను ప్రారంభించడానికి, బాహ్య డిపెండెన్సీలు లేకుండా వచ్చే రన్టైమ్ సిస్టమ్లో Wasmerని ఇన్స్టాల్ చేయండి (“curl https://get.wasmer.io -sSfL | sh”), మరియు అవసరమైన ఫైల్ను (“wasmer test.wasm” రన్ చేయండి. ) ప్రోగ్రామ్లు సాధారణ WebAssembly మాడ్యూల్స్ రూపంలో పంపిణీ చేయబడతాయి, వీటిని WAPM ప్యాకేజీ మేనేజర్ని ఉపయోగించి నిర్వహించవచ్చు. రస్ట్, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir మరియు Java ప్రోగ్రామ్లలో WebAssembly కోడ్ను పొందుపరచడానికి ఉపయోగించే లైబ్రరీగా Wasmer కూడా అందుబాటులో ఉంది.
స్థానిక సమావేశాలకు దగ్గరగా అప్లికేషన్ ఎగ్జిక్యూషన్ పనితీరును సాధించడానికి ప్లాట్ఫారమ్ మిమ్మల్ని అనుమతిస్తుంది. WebAssembly మాడ్యూల్ కోసం స్థానిక ఆబ్జెక్ట్ ఇంజిన్ని ఉపయోగించి, మీరు మెషీన్ కోడ్ను రూపొందించవచ్చు ("wasmer compile -native" ప్రీకంపైల్డ్ .so, .dylib మరియు .dll ఆబ్జెక్ట్ ఫైల్లను రూపొందించడానికి), ఇది అమలు చేయడానికి కనీస రన్టైమ్ అవసరం, కానీ మొత్తం శాండ్బాక్స్ ఐసోలేషన్ను కలిగి ఉంటుంది. లక్షణాలు. అంతర్నిర్మిత వాస్మర్తో ప్రీకంపైల్డ్ ప్రోగ్రామ్లను సరఫరా చేయడం సాధ్యపడుతుంది. యాడ్-ఆన్లు మరియు పొడిగింపులను సృష్టించడం కోసం రస్ట్ API మరియు Wasm-C-API అందించబడతాయి.
వాస్మర్ యొక్క సంస్కరణ సంఖ్యలో గణనీయమైన మార్పు అంతర్గత APIకి అననుకూల మార్పుల పరిచయంతో ముడిపడి ఉంది, ఇది డెవలపర్ల ప్రకారం, 99% ప్లాట్ఫారమ్ వినియోగదారులను ప్రభావితం చేయదు. అనుకూలతను విచ్ఛిన్నం చేసే మార్పులలో, సీరియలైజ్డ్ వాస్మ్ మాడ్యూల్స్ ఫార్మాట్లో కూడా మార్పు ఉంది (వాస్మర్ 1.0లో సీరియల్ చేయబడిన మాడ్యూల్స్ వాస్మర్ 2.0లో ఉపయోగించబడవు). ఇతర మార్పులు:
- SIMD (సింగిల్ ఇన్స్ట్రక్షన్, మల్టిపుల్ డేటా) సూచనలకు మద్దతు, డేటా ఆపరేషన్ల సమాంతరీకరణను అనుమతిస్తుంది. మెషిన్ లెర్నింగ్, వీడియో ఎన్కోడింగ్ మరియు డీకోడింగ్, ఇమేజ్ ప్రాసెసింగ్, ఫిజికల్ ప్రాసెస్ సిమ్యులేషన్ మరియు గ్రాఫిక్స్ మానిప్యులేషన్ వంటి SIMD ఉపయోగం పనితీరును గణనీయంగా మెరుగుపరుస్తుంది.
- ఇతర మాడ్యూల్స్లో లేదా అంతర్లీన వాతావరణంలో సమాచారాన్ని యాక్సెస్ చేయడానికి Wasm మాడ్యూల్లను అనుమతించే సూచన రకాలకు మద్దతు.
- ముఖ్యమైన పనితీరు ఆప్టిమైజేషన్లు చేయబడ్డాయి. ఫ్లోటింగ్ పాయింట్ సంఖ్యలతో LLVM రన్టైమ్ వేగం సుమారు 50% పెరిగింది. కెర్నల్కు యాక్సెస్ అవసరమయ్యే పరిస్థితులను తగ్గించడం ద్వారా ఫంక్షన్ కాల్లు గణనీయంగా వేగవంతం చేయబడ్డాయి. క్రేన్లిఫ్ట్ కోడ్ జనరేటర్ పనితీరు 40% పెరిగింది. డేటా డీరియలైజేషన్ సమయం తగ్గింది.
- సారాంశాన్ని మరింత ఖచ్చితంగా ప్రతిబింబించడానికి, ఇంజిన్ల పేర్లు మార్చబడ్డాయి: JIT → యూనివర్సల్, స్థానిక → Dylib (డైనమిక్ లైబ్రరీ), ఆబ్జెక్ట్ ఫైల్ → StaticLib (స్టాటిక్ లైబ్రరీ).
మూలం: opennet.ru