వెబ్అసెంబ్లీ 3 మిడిల్వేర్ మరియు దాని అనుబంధిత APIని ప్రామాణీకరించే కొత్త స్పెసిఫికేషన్ యొక్క డ్రాఫ్ట్ను W2.0C ప్రచురించింది, ఇది బ్రౌజర్లు మరియు హార్డ్వేర్ ప్లాట్ఫారమ్లలో పోర్టబుల్ అయిన అధిక-పనితీరు గల అప్లికేషన్ల సృష్టిని అనుమతిస్తుంది. WebAssembly వివిధ ప్రోగ్రామింగ్ భాషల నుండి కంపైల్ చేయబడిన అప్లికేషన్లను అమలు చేయడానికి బ్రౌజర్-స్వతంత్ర, సార్వత్రిక, తక్కువ-స్థాయి ఇంటర్మీడియట్ కోడ్ను అందిస్తుంది. వెబ్అసెంబ్లీ కోసం JITని ఉపయోగించడం ద్వారా, మీరు స్థానిక కోడ్కు దగ్గరగా పనితీరు స్థాయిలను సాధించవచ్చు.
వెబ్అసెంబ్లీ సాంకేతికతను బ్రౌజర్లో వీడియో ఎన్కోడింగ్, ఆడియో ప్రాసెసింగ్, గ్రాఫిక్స్ మరియు 3D మానిప్యులేషన్, గేమ్ డెవలప్మెంట్, క్రిప్టోగ్రాఫిక్ ఆపరేషన్లు మరియు C/C++ వంటి సంకలన భాషలలో వ్రాసిన కోడ్ను అనుమతించడం ద్వారా గణిత గణనలు వంటి అధిక-పనితీరు గల పనులను నిర్వహించడానికి ఉపయోగించవచ్చు. .
WebAssembly యొక్క ప్రధాన లక్ష్యాలలో వివిధ ప్లాట్ఫారమ్లలో పోర్టబిలిటీ, ఊహాజనిత ప్రవర్తన మరియు ఒకే విధమైన కోడ్ అమలును నిర్ధారించడం. ఇటీవల, WebAssembly బ్రౌజర్లకే పరిమితం కాకుండా ఏదైనా ఇన్ఫ్రాస్ట్రక్చర్, ఆపరేటింగ్ సిస్టమ్ మరియు పరికరంలో కోడ్ని సురక్షితంగా అమలు చేయడానికి విశ్వవ్యాప్త ప్లాట్ఫారమ్గా కూడా ప్రచారం చేయబడింది.
W3C వెబ్అసెంబ్లీ 2.0 కోసం మూడు డ్రాఫ్ట్ స్పెసిఫికేషన్లను ప్రచురించింది:
- WebAssembly కోర్ - WebAssembly ఇంటర్మీడియట్ కోడ్ని అమలు చేయడానికి తక్కువ-స్థాయి వర్చువల్ మిషన్ను వివరిస్తుంది. WebAssemblyతో అనుబంధించబడిన వనరులు ".wasm" ఆకృతిలో అందించబడతాయి, జావాలోని ".class" ఫైల్ల మాదిరిగానే, ఆ డేటాతో పని చేయడానికి స్టాటిక్ డేటా మరియు కోడ్ విభాగాలు ఉంటాయి.
- WebAssembly JavaScript ఇంటర్ఫేస్ - జావాస్క్రిప్ట్తో అనుసంధానం కోసం APIని అందిస్తుంది. WebAssembly ఫంక్షన్లకు విలువలను పొందడానికి మరియు పారామితులను పాస్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. WebAssembly యొక్క అమలు JavaScript భద్రతా నమూనాను అనుసరిస్తుంది మరియు ప్రధాన సిస్టమ్తో అన్ని పరస్పర చర్య JavaScript కోడ్ని అమలు చేసే విధంగానే నిర్వహించబడుతుంది.
- WebAssembly Web API - ".wasm" వనరులను అభ్యర్థించడం మరియు అమలు చేయడం కోసం ప్రామిస్ మెకానిజం ఆధారంగా ప్రోగ్రామింగ్ ఇంటర్ఫేస్ను నిర్వచిస్తుంది. WebAssembly రిసోర్స్ ఫార్మాట్ ఫైల్ పూర్తిగా లోడ్ అయ్యే వరకు వేచి ఉండకుండా ఎగ్జిక్యూషన్ ప్రారంభించడానికి ఆప్టిమైజ్ చేయబడింది, ఇది వెబ్ అప్లికేషన్ల ప్రతిస్పందనను మెరుగుపరుస్తుంది.
ప్రమాణం యొక్క మొదటి వెర్షన్తో పోలిస్తే WebAssembly 2.0లో ప్రధాన మార్పులు:
- v128 వెక్టార్ రకం మరియు సంబంధిత వెక్టార్ సూచనలకు మద్దతు, ఇది బహుళ సంఖ్యా విలువలపై సమాంతరంగా (SIMD, ఒకే సూచన బహుళ డేటా) చర్యలను నిర్వహించడానికి మిమ్మల్ని అనుమతిస్తుంది.
- మ్యూటబుల్ గ్లోబల్ వేరియబుల్స్ దిగుమతి మరియు ఎగుమతి సామర్థ్యం, C++లో స్టాక్ పాయింటర్ల వంటి విలువలకు గ్లోబల్ బైండింగ్ను అనుమతిస్తుంది.
- ఫలితం పొంగిపొర్లుతున్నప్పుడు మినహాయింపును ఇవ్వడానికి బదులుగా, కనిష్ట లేదా గరిష్టంగా సాధ్యమయ్యే విలువను (SIMDకి అవసరమైనది) అందించడం ద్వారా పూర్ణాంకానికి కొత్త ఫ్లోట్ సూచన.
- పూర్ణాంకాల సంకేత విస్తరణకు సూచనలు (సంకేతం మరియు విలువను కొనసాగిస్తూ సంఖ్య యొక్క బిట్ లోతును పెంచడం).
- బహుళ విలువలను తిరిగి ఇచ్చే బ్లాక్లు మరియు ఫంక్షన్లకు మద్దతు (ఫంక్షన్లకు బహుళ పారామితులను పాస్ చేయడంతో పాటు).
- BigInt64Array మరియు BigUint64Array JavaScript ఫంక్షన్ల అమలు BigInt JavaScript రకం మరియు 64-బిట్ పూర్ణాంకాల WebAssembly ప్రాతినిధ్యం మధ్య మార్చడానికి.
- రిఫరెన్స్ రకాలు (funcref మరియు externref) మరియు వాటి అనుబంధిత సూచనలకు (select, ref.null, ref.func మరియు ref.is_null) మద్దతు.
- Memory.copy, memory.fill, memory.init మరియు data.drop మెమొరీ రీజియన్ల మధ్య డేటాను కాపీ చేయడం మరియు మెమరీ రీజియన్లను క్లియర్ చేయడం కోసం సూచనలు.
- పట్టికలను నేరుగా యాక్సెస్ చేయడానికి మరియు సవరించడానికి సూచనలు (table.set, table.get, table.size, table.grow). ఒక మాడ్యూల్లో బహుళ పట్టికలను సృష్టించడం, దిగుమతి చేయడం మరియు ఎగుమతి చేయగల సామర్థ్యం. బ్యాచ్ మోడ్లో పట్టికలను కాపీ చేయడం/పూర్తి చేయడం కోసం విధులు (table.copy, table.init మరియు elem.drop).
మూలం: opennet.ru