Node.js రచయిత సురక్షిత JavaScript ప్లాట్ఫారమ్ Deno 1.0ని అందించారు
రెండేళ్ల అభివృద్ధి తర్వాత సమర్పించారు మొదటి ప్రధాన విడుదల డెనో 1.0, JavaScript మరియు టైప్స్క్రిప్ట్లోని అప్లికేషన్ల స్టాండ్-ఏలోన్ ఎగ్జిక్యూషన్ కోసం ఒక ప్లాట్ఫారమ్, ఇది సర్వర్లో పనిచేసే హ్యాండ్లర్లను సృష్టించడానికి ఉపయోగించవచ్చు. ప్లాట్ఫారమ్ను ర్యాన్ డాల్ అభివృద్ధి చేశారు (ర్యాన్ డాల్), Node.js సృష్టికర్త. Node.js వలె, Deno జావాస్క్రిప్ట్ ఇంజిన్ను ఉపయోగిస్తుంది V8, ఇది Chromium-ఆధారిత బ్రౌజర్లలో కూడా ఉపయోగించబడుతుంది. అదే సమయంలో, Deno Node.js యొక్క ఫోర్క్ కాదు, కానీ మొదటి నుండి సృష్టించబడిన కొత్త ప్రాజెక్ట్. ప్రాజెక్ట్ కోడ్ ద్వారా పంపిణీ చేయబడింది MIT లైసెన్స్ కింద. అసెంబ్లీలు సిద్ధం Linux, Windows మరియు macOS కోసం.
ముఖ్యమైన సంస్కరణ సంఖ్య డెనో నేమ్స్పేస్లోని APIల స్థిరీకరణతో అనుబంధించబడింది, ఇవి OSతో అప్లికేషన్ల పరస్పర చర్యకు బాధ్యత వహిస్తాయి. ఇప్పటివరకు ఉన్న సాఫ్ట్వేర్ ఇంటర్ఫేస్లు స్థిరీకరించబడలేదు, డిఫాల్ట్గా దాచబడతాయి మరియు “--అస్థిర” మోడ్లో నడుస్తున్నప్పుడు మాత్రమే అందుబాటులో ఉంటాయి. కొత్త సంస్కరణలు ఏర్పడినందున, అటువంటి APIలు క్రమంగా స్థిరంగా మారతాయి. గ్లోబల్ నేమ్స్పేస్లోని API, setTimeout() మరియు fetch() వంటి సాధారణ ఫంక్షన్లను కలిగి ఉంటుంది, ఇది సంప్రదాయ వెబ్ బ్రౌజర్ల APIకి వీలైనంత దగ్గరగా ఉంటుంది మరియు బ్రౌజర్ల కోసం వెబ్ ప్రమాణాలకు అనుగుణంగా అభివృద్ధి చేయబడింది. రస్ట్ అందించిన APIలు నేరుగా ప్లాట్ఫారమ్ కోడ్లో ఉపయోగించబడతాయి, అలాగే డెనో రన్టైమ్ కోసం ప్లగిన్లను అభివృద్ధి చేయడానికి ఇంటర్ఫేస్ ఇంకా స్థిరీకరించబడలేదు మరియు అభివృద్ధిని కొనసాగించాయి.
కొత్త జావాస్క్రిప్ట్ ప్లాట్ఫారమ్ను రూపొందించడానికి ముఖ్య ఉద్దేశ్యాలు సంభావిత లోపాలను తొలగించాలనే కోరిక, ఒప్పుకున్నాడు Node.js ఆర్కిటెక్చర్లో మరియు వినియోగదారులకు మరింత సురక్షితమైన వాతావరణాన్ని అందిస్తుంది. భద్రతను మెరుగుపరచడానికి, V8 ఇంజిన్ రస్ట్లో వ్రాయబడింది, ఇది తక్కువ-స్థాయి మెమరీ మానిప్యులేషన్ నుండి ఉత్పన్నమయ్యే అనేక దుర్బలత్వాలను నివారిస్తుంది. ప్లాట్ఫారమ్ నాన్-బ్లాకింగ్ మోడ్లో అభ్యర్థనలను ప్రాసెస్ చేయడానికి ఉపయోగించబడుతుంది టోక్యో, రస్ట్లో కూడా వ్రాయబడింది. టోకియో ఈవెంట్-ఆధారిత ఆర్కిటెక్చర్ ఆధారంగా అధిక-పనితీరు గల అప్లికేషన్లను సృష్టించడానికి మిమ్మల్ని అనుమతిస్తుంది, మల్టీ-థ్రెడింగ్ మరియు ప్రాసెసింగ్ నెట్వర్క్ అభ్యర్థనలను అసమకాలిక రీతిలో సపోర్ట్ చేస్తుంది.
భద్రత-ఆధారిత డిఫాల్ట్ కాన్ఫిగరేషన్. ఫైల్ యాక్సెస్, నెట్వర్కింగ్ మరియు ఎన్విరాన్మెంట్ వేరియబుల్స్కి యాక్సెస్ డిఫాల్ట్గా డిసేబుల్ చేయబడతాయి మరియు తప్పనిసరిగా ఎనేబుల్ చేయబడాలి. అప్లికేషన్లు డిఫాల్ట్గా వివిక్త శాండ్బాక్స్ పరిసరాలలో అమలవుతాయి మరియు స్పష్టమైన అనుమతులను మంజూరు చేయకుండా సిస్టమ్ సామర్థ్యాలను యాక్సెస్ చేయలేవు;
జావాస్క్రిప్ట్కు మించిన టైప్స్క్రిప్ట్కు అంతర్నిర్మిత మద్దతు. ప్రామాణిక టైప్స్క్రిప్ట్ కంపైలర్ రకాలను తనిఖీ చేయడానికి మరియు జావాస్క్రిప్ట్ను రూపొందించడానికి ఉపయోగించబడుతుంది, ఇది V8లోని జావాస్క్రిప్ట్ పార్సింగ్తో పోలిస్తే పనితీరు హిట్కు దారితీస్తుంది. భవిష్యత్తులో, మేము టైప్స్క్రిప్ట్ టైప్ చెకింగ్ సిస్టమ్ యొక్క మా స్వంత అమలును సిద్ధం చేయడానికి ప్లాన్ చేస్తాము, ఇది టైప్స్క్రిప్ట్ ప్రాసెసింగ్ పనితీరును మాగ్నిట్యూడ్ క్రమంలో మెరుగుపరుస్తుంది;
రన్టైమ్ ఒకే స్వీయ-నియంత్రణ ఎక్జిక్యూటబుల్ ఫైల్ ("డెనో") రూపంలో వస్తుంది. Deno ఉపయోగించి అప్లికేషన్లను అమలు చేయడానికి ఇది సరిపోతుంది డౌన్లోడ్ దాని ప్లాట్ఫారమ్ కోసం ఒక ఎక్జిక్యూటబుల్ ఫైల్ ఉంది, దాదాపు 20 MB పరిమాణం ఉంటుంది, దీనికి బాహ్య డిపెండెన్సీలు లేవు మరియు సిస్టమ్లో ప్రత్యేక ఇన్స్టాలేషన్ అవసరం లేదు. అంతేకాకుండా, డెనో అనేది ఏకశిలా అప్లికేషన్ కాదు, ఇది రస్ట్లోని క్రేట్ ప్యాకేజీల సమాహారం (డెనో_కోర్, తుప్పుపట్టిన_v8), ఇది విడిగా ఉపయోగించవచ్చు;
ప్రోగ్రామ్ను ప్రారంభించేటప్పుడు, అలాగే మాడ్యూల్లను లోడ్ చేయడానికి, మీరు URL చిరునామాను ఉపయోగించవచ్చు. ఉదాహరణకు, welcome.js ప్రోగ్రామ్ను అమలు చేయడానికి, మీరు “deno https://deno.land/std/examples/welcome.js” ఆదేశాన్ని ఉపయోగించవచ్చు. బాహ్య వనరుల నుండి కోడ్ డౌన్లోడ్ చేయబడుతుంది మరియు స్థానిక సిస్టమ్లో కాష్ చేయబడుతుంది, కానీ స్వయంచాలకంగా ఎప్పటికీ నవీకరించబడదు (నవీకరణ చేయడానికి “--రీలోడ్” ఫ్లాగ్తో అప్లికేషన్ను స్పష్టంగా అమలు చేయడం అవసరం);
అప్లికేషన్లలో HTTP ద్వారా నెట్వర్క్ అభ్యర్థనల సమర్థవంతమైన ప్రాసెసింగ్; ప్లాట్ఫారమ్ అధిక-పనితీరు గల నెట్వర్క్ అప్లికేషన్లను రూపొందించడానికి రూపొందించబడింది;
డెనోలో మరియు సాధారణ వెబ్ బ్రౌజర్లో అమలు చేయగల సార్వత్రిక వెబ్ అప్లికేషన్లను సృష్టించగల సామర్థ్యం;
లభ్యత మాడ్యూల్స్ యొక్క ప్రామాణిక సెట్, దీని ఉపయోగం బాహ్య డిపెండెన్సీలకు కట్టుబడి ఉండవలసిన అవసరం లేదు. ప్రామాణిక సేకరణ నుండి మాడ్యూల్స్ అదనపు ఆడిట్ మరియు అనుకూలత పరీక్షకు లోనయ్యాయి;
రన్టైమ్తో పాటు, డెనో ప్లాట్ఫారమ్ ప్యాకేజీ మేనేజర్గా కూడా పనిచేస్తుంది మరియు కోడ్ లోపల URL ద్వారా మాడ్యూల్లను యాక్సెస్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. ఉదాహరణకు, మాడ్యూల్ను లోడ్ చేయడానికి, మీరు “https://deno.land/std/log/mod.ts” నుండి లాగ్గా “దిగుమతి *ని కోడ్లో పేర్కొనవచ్చు. URL ద్వారా బాహ్య సర్వర్ల నుండి డౌన్లోడ్ చేయబడిన ఫైల్లు కాష్ చేయబడ్డాయి. మాడ్యూల్ వెర్షన్లకు బైండింగ్ అనేది URL లోపల వెర్షన్ నంబర్లను పేర్కొనడం ద్వారా నిర్ణయించబడుతుంది, ఉదాహరణకు, “https://unpkg.com/[ఇమెయిల్ రక్షించబడింది]/dist/liltest.js";
నిర్మాణంలో సమీకృత డిపెండెన్సీ ఇన్స్పెక్షన్ సిస్టమ్ (“డెనో ఇన్ఫో” కమాండ్) మరియు కోడ్ ఫార్మాటింగ్ కోసం యుటిలిటీ (డెనో fmt) ఉన్నాయి;
అన్ని అప్లికేషన్ స్క్రిప్ట్లను ఒక జావాస్క్రిప్ట్ ఫైల్గా కలపవచ్చు.
Node.js నుండి తేడాలు:
Deno npm ప్యాకేజీ మేనేజర్ని ఉపయోగించదు
మరియు రిపోజిటరీలతో ముడిపడి ఉండదు, మాడ్యూల్లు URL ద్వారా లేదా ఫైల్ మార్గం ద్వారా పరిష్కరించబడతాయి మరియు మాడ్యూల్లను ఏదైనా వెబ్సైట్లో ఉంచవచ్చు;
API వ్యత్యాసం, డెనోలోని అన్ని అసమకాలిక చర్యలు వాగ్దానాన్ని అందిస్తాయి;
Denoకి ఫైల్లు, నెట్వర్క్ మరియు ఎన్విరాన్మెంట్ వేరియబుల్స్ కోసం అవసరమైన అన్ని అనుమతుల యొక్క స్పష్టమైన నిర్వచనం అవసరం;
హ్యాండ్లర్లతో అందించబడని అన్ని లోపాలు అప్లికేషన్ యొక్క ముగింపుకు దారితీస్తాయి;
Deno ECMAScript మాడ్యూల్ సిస్టమ్ని ఉపయోగిస్తుంది మరియు అవసరం();
Deno యొక్క అంతర్నిర్మిత HTTP సర్వర్ టైప్స్క్రిప్ట్లో వ్రాయబడింది మరియు స్థానిక TCP సాకెట్ల పైన నడుస్తుంది, అయితే Node.js HTTP సర్వర్ Cలో వ్రాయబడింది మరియు జావాస్క్రిప్ట్ కోసం బైండింగ్లను అందిస్తుంది. డెనో డెవలపర్లు మొత్తం TCP సాకెట్ లేయర్ను ఆప్టిమైజ్ చేయడం మరియు మరింత సాధారణ ఇంటర్ఫేస్ను అందించడంపై దృష్టి పెట్టారు. Deno HTTP సర్వర్ తక్కువ నిర్గమాంశను అందిస్తుంది కానీ ఊహించదగిన తక్కువ జాప్యాన్ని హామీ ఇస్తుంది. ఉదాహరణకు, పరీక్షలో, డెనో HTTP సర్వర్ ఆధారంగా ఒక సాధారణ అప్లికేషన్ సెకనుకు 25 వేల అభ్యర్థనలను గరిష్టంగా 1.3 మిల్లీసెకన్ల జాప్యంతో ప్రాసెస్ చేయగలిగింది. Node.jsలో, ఇదే విధమైన అప్లికేషన్ సెకనుకు 34 వేల అభ్యర్థనలను ప్రాసెస్ చేసింది, అయితే లేటెన్సీలు 2 మరియు 300 మిల్లీసెకన్ల వరకు ఉన్నాయి.
Deno Node.js (NPM) కోసం ప్యాకేజీలకు అనుకూలంగా లేదు, కానీ విడిగా అభివృద్ధి చేయబడుతోంది ఇంటర్లేయర్ ప్రామాణిక Node.js లైబ్రరీతో అనుకూలత కోసం, అది అభివృద్ధి చెందుతున్నప్పుడు, Node.js కోసం వ్రాసిన మరిన్ని అప్లికేషన్లు Denoలో అమలు చేయగలవు.