Mozilla, Fastly, Intel మరియు Red Hat వెబ్‌అసెంబ్లీని సార్వత్రిక వినియోగానికి వేదికగా ప్రోత్సహిస్తాయి

Mozilla, Fastly, Intel మరియు Red Hat ఏకమయ్యారు ఏదైనా ఇన్‌ఫ్రాస్ట్రక్చర్, ఆపరేటింగ్ సిస్టమ్ లేదా పరికరంలో సురక్షితమైన కోడ్ అమలు కోసం WebAssemblyని విశ్వవ్యాప్త ప్లాట్‌ఫారమ్‌గా చేయడంలో సహాయపడే సాంకేతికతలను అభివృద్ధి చేయడంలో దాని ప్రయత్నాలు. వెబ్ బ్రౌజర్‌లలో మాత్రమే కాకుండా WebAssemblyని ఉపయోగించడానికి అనుమతించే రన్‌టైమ్ మరియు కంపైలర్‌ల ఉమ్మడి అభివృద్ధి కోసం ఒక సంఘం ఏర్పాటు చేయబడింది. బైట్‌కోడ్ అలయన్స్.

బ్రౌజర్ వెలుపల అమలు చేయగల WebAssembly ఆకృతిలో డెలివరీ చేయబడిన పోర్టబుల్ ప్రోగ్రామ్‌లను సృష్టించడానికి, మేము APIని ఉపయోగించమని సూచిస్తున్నాము నేనా (WebAssembly సిస్టమ్ ఇంటర్‌ఫేస్), ఇది ఆపరేటింగ్ సిస్టమ్‌తో ప్రత్యక్ష పరస్పర చర్య కోసం సాఫ్ట్‌వేర్ ఇంటర్‌ఫేస్‌లను అందిస్తుంది (ఫైళ్లు, సాకెట్లు మొదలైన వాటితో పని చేయడానికి POSIX API). WASIని ఉపయోగించే అప్లికేషన్‌ల అమలు నమూనా యొక్క ప్రత్యేక లక్షణం ఏమిటంటే, అవి ప్రధాన సిస్టమ్ నుండి వేరుచేయడం కోసం శాండ్‌బాక్స్ వాతావరణంలో నడుస్తాయి మరియు ప్రతి వనరులతో (ఫైళ్లు, డైరెక్టరీలు, సాకెట్లు, సిస్టమ్ కాల్‌లు) చర్యల కోసం సామర్థ్య నిర్వహణ ఆధారంగా భద్రతా యంత్రాంగాన్ని ఉపయోగిస్తాయి. , మొదలైనవి) అనువర్తనానికి తగిన అనుమతులు ఇవ్వాలి (ప్రకటిత కార్యాచరణకు మాత్రమే యాక్సెస్ అందించబడుతుంది).

ఒకటి లక్ష్యాలు సృష్టించబడిన కూటమి పెద్ద సంఖ్యలో డిపెండెన్సీలతో ఆధునిక మాడ్యులర్ అప్లికేషన్‌లను పంపిణీ చేసే సమస్యకు పరిష్కారం. అటువంటి అప్లికేషన్లలో, ప్రతి డిపెండెన్సీ దుర్బలత్వాలు లేదా దాడులకు సంభావ్య మూలం కావచ్చు. డిపెండెన్సీని నియంత్రించడం ద్వారా దానితో అనుబంధించబడిన అన్ని అప్లికేషన్‌లపై నియంత్రణను పొందేందుకు మిమ్మల్ని అనుమతిస్తుంది. అప్లికేషన్‌పై నమ్మకం అనేది స్వయంచాలకంగా అన్ని డిపెండెన్సీలపై నమ్మకాన్ని సూచిస్తుంది, అయితే డిపెండెన్సీలు తరచుగా కార్యకలాపాలను నియంత్రించలేని మూడవ పక్ష బృందాలచే అభివృద్ధి చేయబడతాయి మరియు నిర్వహించబడతాయి. బైట్‌కోడ్ అలయన్స్ సభ్యులు అంతర్లీనంగా విశ్వసించని వెబ్‌అసెంబ్లీ అప్లికేషన్‌లను సురక్షితంగా అమలు చేయడానికి సమగ్ర పరిష్కారాన్ని అందించాలని భావిస్తున్నారు.

రక్షణ కోసం, నానోప్రాసెస్‌ల భావనను ఉపయోగించాలని ప్రతిపాదించబడింది, దీనిలో ప్రతి డిపెండెన్సీ మాడ్యూల్ విడిగా వివిక్త WebAssembly మాడ్యూల్‌గా విభజించబడింది, ఈ మాడ్యూల్‌కు సంబంధించి మాత్రమే శక్తులు సెట్ చేయబడతాయి (ఉదాహరణకు, స్ట్రింగ్‌లను ప్రాసెస్ చేయడానికి లైబ్రరీ కాదు నెట్‌వర్క్ సాకెట్ లేదా ఫైల్‌ను తెరవగలరు). ప్రక్రియ వేరు కాకుండా, WebAssembly హ్యాండ్లర్లు తేలికైనవి మరియు దాదాపు అదనపు వనరులు అవసరం లేదు - హ్యాండ్లర్ల మధ్య పరస్పర చర్య సాధారణ ఫంక్షన్‌లను కాల్ చేయడం కంటే చాలా నెమ్మదిగా ఉండదు. విభజన అనేది వ్యక్తిగత మాడ్యూళ్ల స్థాయిలో మాత్రమే కాకుండా, ఉదాహరణకు, సాధారణ మెమరీ ప్రాంతాలతో పని చేయాల్సిన మాడ్యూళ్ల సమూహాల స్థాయిలో కూడా చేయవచ్చు.

అభ్యర్థించిన అధికారాలు డిపెండెన్సీల స్థాయిలోనే నిర్ణయించబడతాయి మరియు పేరెంట్ మాడ్యూల్స్ ద్వారా గొలుసుతో పాటు డిపెండెన్సీలకు అప్పగించబడతాయి (WASIలోని వనరులు ప్రత్యేక రకమైన ఫైల్ డిస్క్రిప్టర్ - సామర్థ్యంతో అనుబంధించబడి ఉంటాయి). ఉదాహరణకు, ఒక నిర్దిష్ట డైరెక్టరీ మరియు సిస్టమ్ కాల్‌లను యాక్సెస్ చేయగల సామర్థ్యాన్ని మాడ్యూల్‌కు అప్పగించవచ్చు మరియు మాడ్యూల్ డెవలప్‌మెంట్ ఇన్‌ఫ్రాస్ట్రక్చర్ రాజీపడినా లేదా దుర్బలత్వాన్ని గుర్తించినా, దాడి సమయంలో, యాక్సెస్ ఈ వనరులకు మాత్రమే పరిమితం చేయబడుతుంది. టెక్స్ట్ ప్రాసెసింగ్ మాడ్యూల్ నెట్‌వర్క్ కనెక్షన్‌ని తెరవడానికి అనుమతిని అభ్యర్థించడం వంటి అనుమానాస్పద కార్యాచరణకు సూచికగా మాడ్యూల్ సృష్టికర్తల రిసోర్స్ డిక్లరేషన్‌లు ఉంటాయి. ప్రారంభంలో సెట్ చేసిన అనుమతులు తనిఖీ చేయబడతాయి మరియు అవి మారితే, స్థానిక మాడ్యూల్ సంతకం నవీకరించబడే వరకు డిపెండెన్సీ లోడింగ్ తిరస్కరించబడుతుంది.

బైట్‌కోడ్ అలయన్స్ విభాగంలో ఉమ్మడి అభివృద్ధి కోసం అనువదించారు WebAssemblyకి సంబంధించిన అనేకం ప్రాజెక్టులు, కూటమి వ్యవస్థాపక సంస్థలచే మునుపు విడిగా అభివృద్ధి చేయబడింది:

  • వాస్‌టైమ్ — సాధారణ స్టాండ్-అలోన్ అప్లికేషన్‌లుగా WASI పొడిగింపులతో వెబ్‌అసెంబ్లీ అప్లికేషన్‌లను అమలు చేయడానికి రన్‌టైమ్. ఇది ప్రత్యేక కమాండ్ లైన్ యుటిలిటీని ఉపయోగించి WebAssembly బైట్‌కోడ్‌ని ప్రారంభించడం మరియు రెడీమేడ్ ఎక్జిక్యూటబుల్ ఫైల్‌లను లింక్ చేయడం రెండింటికి మద్దతు ఇస్తుంది (wasmtime అప్లికేషన్‌లో లైబ్రరీగా నిర్మించబడింది). Wasmtime మీరు వివిధ అప్లికేషన్‌ల కోసం రన్‌టైమ్‌ను స్కేల్ చేయడానికి అనుమతించే సౌకర్యవంతమైన మాడ్యులర్ నిర్మాణాన్ని కలిగి ఉంది, ఉదాహరణకు, మీరు పరిమిత వనరులతో పరికరాల కోసం స్ట్రిప్డ్-డౌన్ వెర్షన్‌ను సృష్టించవచ్చు;
  • లూసెట్ — WebAssembly ఫార్మాట్‌లో ప్రోగ్రామ్‌లను అమలు చేయడానికి కంపైలర్ మరియు రన్‌టైమ్. విలక్షణమైనది లక్షణం లూసెట్ అనేది ప్రత్యక్ష అమలుకు అనువైన మెషిన్ కోడ్‌లో JITకి బదులుగా పూర్తి-స్థాయి ముందస్తు సంకలనాన్ని (AOT, ముందస్తుగా) ఉపయోగించడం. ప్రాజెక్ట్ ఫాస్ట్లీ ద్వారా అభివృద్ధి చేయబడింది మరియు కనిష్ట వనరులను వినియోగించుకోవడానికి మరియు చాలా త్వరగా కొత్త సందర్భాలను ప్రారంభించేందుకు ఆప్టిమైజ్ చేయబడింది (ప్రతి అభ్యర్థనపై ప్రారంభించబడిన హ్యాండ్లర్ల కోసం WebAssemblyని ఉపయోగించే క్లౌడ్ ఎడ్జ్ కంప్యూటింగ్ ఇంజిన్‌లో లూసెట్‌ను వేగంగా ఉపయోగిస్తుంది). ఉమ్మడి ప్రాజెక్ట్‌లో భాగంగా, లూసెట్ కంపైలర్ వాస్మ్‌టైమ్‌ను బేస్‌గా ఉపయోగించేందుకు మార్చడానికి ప్రణాళిక చేయబడింది;
  • WAMR (WebAssembly మైక్రో రన్‌టైమ్) అనేది WebAssemblyని అమలు చేయడానికి మరొక రన్‌టైమ్, వాస్తవానికి ఇంటర్నెట్ ఆఫ్ థింగ్స్ పరికరాలలో ఉపయోగం కోసం Intel చే అభివృద్ధి చేయబడింది. WAMR కనిష్ట వనరుల వినియోగం కోసం ఆప్టిమైజ్ చేయబడింది మరియు తక్కువ మొత్తంలో RAM ఉన్న పరికరాలలో ఉపయోగించవచ్చు. ప్రాజెక్ట్ వెబ్‌అసెంబ్లీ బైట్‌కోడ్‌ను అమలు చేయడానికి ఒక ఇంటర్‌ప్రెటర్ మరియు వర్చువల్ మెషీన్, ఒక API (Libc యొక్క ఉపసమితి) మరియు డైనమిక్ అప్లికేషన్ మేనేజ్‌మెంట్ కోసం సాధనాలను కలిగి ఉంటుంది;
  • క్రేన్లిఫ్ట్ — హార్డ్‌వేర్ ఆర్కిటెక్చర్‌ల నుండి స్వతంత్రంగా ఉండే ఇంటర్మీడియట్ ప్రాతినిధ్యాన్ని నిర్దిష్ట హార్డ్‌వేర్ ప్లాట్‌ఫారమ్‌ల కోసం ఆప్టిమైజ్ చేసిన ఎక్జిక్యూటబుల్ మెషిన్ కోడ్‌గా అనువదించే కోడ్ జెనరేటర్. క్రేన్‌లిఫ్ట్ చాలా వేగవంతమైన ఫలితాల ఉత్పత్తి కోసం ఫంక్షన్ కంపైలేషన్‌కు సమాంతరంగా మద్దతు ఇస్తుంది, ఇది JIT కంపైలర్‌లను రూపొందించడానికి ఉపయోగించబడుతుంది (క్రేన్‌లిఫ్ట్-ఆధారిత JIT Wasmtime వర్చువల్ మెషీన్‌లో ఉపయోగించబడుతుంది);
  • WASI సాధారణ - ఆపరేటింగ్ సిస్టమ్‌తో పరస్పర చర్యను నిర్వహించడానికి WASI (వెబ్‌అసెంబ్లీ సిస్టమ్ ఇంటర్‌ఫేస్) API యొక్క ప్రత్యేక అమలు;
  • సరుకు-వాసి — బ్రౌజర్ వెలుపల WebAssemblyని ఉపయోగించడం కోసం WASI ఇంటర్‌ఫేస్‌ని ఉపయోగించి WebAssembly బైట్‌కోడ్‌లో రస్ట్ కోడ్‌ను కంపైల్ చేయడానికి ఒక ఆదేశాన్ని అమలు చేసే కార్గో ప్యాకేజీ మేనేజర్ కోసం ఒక మాడ్యూల్;
  • wat и వాంపార్సర్ — టెక్స్ట్ (WAT, WAST) మరియు WebAssembly బైట్‌కోడ్ యొక్క బైనరీ ప్రాతినిధ్యాలను అన్వయించడానికి పార్సర్‌లు.

రీక్యాప్ చేయడానికి, WebAssembly అనేది Asm.js లాంటిది, కానీ భిన్నంగా ఉంటుంది ఇది జావాస్క్రిప్ట్‌తో ముడిపడి ఉండని బైనరీ ఫార్మాట్ మరియు వివిధ ప్రోగ్రామింగ్ భాషల నుండి సంకలనం చేయబడిన తక్కువ-స్థాయి ఇంటర్మీడియట్ కోడ్‌ను బ్రౌజర్‌లో అమలు చేయడానికి అనుమతిస్తుంది. WebAssemblyకి చెత్త కలెక్టర్ అవసరం లేదు ఎందుకంటే ఇది స్పష్టమైన మెమరీ నిర్వహణను ఉపయోగిస్తుంది. వెబ్‌అసెంబ్లీ కోసం JITని ఉపయోగించడం ద్వారా, మీరు స్థానిక కోడ్‌కు దగ్గరగా పనితీరు స్థాయిలను సాధించవచ్చు. WebAssembly యొక్క ప్రధాన లక్ష్యాలలో వివిధ ప్లాట్‌ఫారమ్‌లలో పోర్టబిలిటీ, ఊహాజనిత ప్రవర్తన మరియు ఒకే విధమైన కోడ్ అమలును నిర్ధారించడం.

మూలం: opennet.ru

ఒక వ్యాఖ్యను జోడించండి