Node.js 17.0, జావాస్క్రిప్ట్లో నెట్వర్క్ అప్లికేషన్లను అమలు చేయడానికి ప్లాట్ఫారమ్ విడుదల చేయబడింది. Node.js 17.0 అనేది ఒక సాధారణ మద్దతు శాఖ, ఇది జూన్ 2022 వరకు అప్డేట్లను అందుకోవడం కొనసాగుతుంది. రాబోయే రోజుల్లో, Node.js 16 బ్రాంచ్ యొక్క స్థిరీకరణ పూర్తవుతుంది, ఇది LTS స్థితిని పొందుతుంది మరియు ఏప్రిల్ 2024 వరకు మద్దతు ఇవ్వబడుతుంది. Node.js 14.0 యొక్క మునుపటి LTS బ్రాంచ్ నిర్వహణ ఏప్రిల్ 2023 వరకు మరియు చివరి LTS బ్రాంచ్ 12.0కి ముందు సంవత్సరం ఏప్రిల్ 2022 వరకు కొనసాగుతుంది.
ప్రధాన మెరుగుదలలు:
- V8 ఇంజిన్ వెర్షన్ 9.5కి అప్డేట్ చేయబడింది.
- ప్రామిస్ అసమకాలిక కంప్యూటింగ్ ఇంటర్ఫేస్ ఉపయోగం ఆధారంగా ప్రాథమిక API యొక్క వేరియంట్ల అమలు కొనసాగింది. మునుపు అందించిన టైమర్లు ప్రామిసెస్ మరియు స్ట్రీమ్స్ ప్రామిసెస్ APIలతో పాటు, రీడ్లైన్ మాడ్యూల్ని ఉపయోగించి డేటా లైన్ వారీగా చదవడం కోసం Node.js 17.0 రీడ్లైన్ ప్రామిస్ APIని పరిచయం చేసింది. 'node:readline/promises' నుండి రీడ్లైన్గా * దిగుమతి చేయండి; 'ప్రాసెస్' నుండి {stdin ఇన్పుట్గా, stdoutని అవుట్పుట్గా దిగుమతి చేయండి; const rl = readline.createInterface({ఇన్పుట్, అవుట్పుట్}); const answer = వేచి ఉండండి rl.question('Node.js గురించి మీరు ఏమనుకుంటున్నారు?'); console.log('మీ విలువైన అభిప్రాయానికి ధన్యవాదాలు: ${సమాధానం}'); rl.close();
- సరఫరా చేయబడిన OpenSSL లైబ్రరీ వెర్షన్ 3.0కి నవీకరించబడింది (QUIC ప్రోటోకాల్ సపోర్ట్ ఎనేబుల్ చేయబడిన quictls/openssl ఫోర్క్ ఉపయోగించబడుతుంది).
- అప్లికేషన్ను ముగించడానికి కారణమయ్యే ప్రమాదకరమైన ఎర్రర్ల విషయంలో అవుట్పుట్ అయ్యే స్టాక్ ట్రేస్లలో ప్రదర్శించబడేలా Node.js వెర్షన్ ప్రారంభించబడింది.
అదనంగా, మేము ప్రస్తుత Node.js బ్రాంచ్లలో (CVE-2021-22959, CVE-2021-22960) రెండు దుర్బలత్వాల తొలగింపును పేర్కొనవచ్చు, ఇది "HTTP అభ్యర్థన స్మగ్లింగ్" (HRS) దాడులను నిర్వహించడం సాధ్యం చేస్తుంది, ఇది అనుమతిస్తుంది ఫ్రంటెండ్ మరియు బ్యాకెండ్ మధ్య ఒకే థ్రెడ్లో ప్రాసెస్ చేయబడిన ఇతర వినియోగదారుల అభ్యర్థనల కంటెంట్లను మేము గుర్తించాము (ఉదాహరణకు, హానికరమైన జావాస్క్రిప్ట్ కోడ్ను మరొక వినియోగదారు సెషన్లో చేర్చవచ్చు). వివరాలు తర్వాత వెల్లడి చేయబడతాయి, అయితే HTTP హెడర్ పేరు మరియు పెద్దప్రేగు మధ్య ఖాళీలను తప్పుగా నిర్వహించడం, అలాగే క్యారేజ్ రిటర్న్ మరియు లైన్ ఫీడ్ క్యారెక్టర్లను ప్రసారం చేసేటప్పుడు ఉపయోగించే పారామీటర్ బ్లాక్లో విభిన్నంగా నిర్వహించడం వల్ల సమస్యలు తలెత్తుతున్నాయని మాత్రమే మాకు తెలుసు. "చంక్డ్" మోడ్లో భాగాలలో అభ్యర్థన శరీరం "
గుర్తుచేసుకోవాల్సిన విషయం ఏమిటంటే, Node.js ప్లాట్ఫారమ్ను వెబ్ అప్లికేషన్ల సర్వర్-సైడ్ సపోర్ట్ కోసం మరియు ప్రామాణిక క్లయింట్- మరియు సర్వర్-సైడ్ నెట్వర్క్ ప్రోగ్రామ్లను రూపొందించడానికి ఉపయోగించవచ్చు. Node.js అప్లికేషన్ల కార్యాచరణను విస్తరించడానికి, అమలులతో సహా మాడ్యూళ్ల యొక్క పెద్ద సేకరణను సిద్ధం చేశారు. సర్వర్లు మరియు HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, వివిధ వెబ్ ఫ్రేమ్వర్క్లతో అనుసంధానం కోసం మాడ్యూల్స్, వెబ్సాకెట్ మరియు అజాక్స్ హ్యాండ్లర్లు, DBMS (MySQL, PostgreSQL, SQLite, MongoDB) కు కనెక్టర్లు, టెంప్లేట్ ఇంజిన్లు, CSS ఇంజిన్లు, క్రిప్టోగ్రాఫిక్ అల్గారిథమ్లు మరియు ఆథరైజేషన్ సిస్టమ్ల అమలులు (OAuth), XML పార్సర్లు.
అధిక సంఖ్యలో సమాంతర అభ్యర్థనలను నిర్వహించడానికి, Node.js నాన్-బ్లాకింగ్ ఈవెంట్ ప్రాసెసింగ్ మరియు కాల్బ్యాక్ హ్యాండ్లర్ల ఆధారంగా ఒక అసింక్రోనస్ కోడ్ ఎగ్జిక్యూషన్ మోడల్ను ఉపయోగిస్తుంది. మద్దతు ఉన్న కనెక్షన్ మల్టీప్లెక్సింగ్ పద్ధతులలో epoll, kqueue, /dev/poll, మరియు select ఉన్నాయి. కనెక్షన్ మల్టీప్లెక్సింగ్ కోసం libuv లైబ్రరీ ఉపయోగించబడుతుంది, ఇది Unix సిస్టమ్లలో libev మరియు IOCPలో IOCP యొక్క సూపర్సెట్. Windowsథ్రెడ్ పూల్ను సృష్టించడానికి libeio లైబ్రరీని ఉపయోగిస్తారు, మరియు DNS ప్రశ్నలను నాన్-బ్లాకింగ్ మోడ్లో నిర్వహించడానికి c-aresను అనుసంధానించారు. అన్ని బ్లాకింగ్ సిస్టమ్ కాల్స్ థ్రెడ్ పూల్లోనే అమలు చేయబడతాయి, ఆపై సిగ్నల్ హ్యాండ్లర్ల వలె, వాటి ఫలితాలను ఒక పేరులేని పైప్ ద్వారా తిరిగి పంపుతాయి. జావాస్క్రిప్ట్ అమలును గూగుల్ యొక్క V8 ఇంజిన్ అందిస్తుంది (మైక్రోసాఫ్ట్ కూడా చక్ర-కోర్ ఇంజిన్తో Node.js యొక్క ఒక రూపాంతరాన్ని అభివృద్ధి చేస్తోంది).
దాని ప్రధాన భాగంలో, Node.js అనేది Perl AnyEvent, రూబీ ఈవెంట్ మెషిన్, పైథాన్ ట్విస్టెడ్ ఫ్రేమ్వర్క్లు మరియు Tcl ఈవెంట్ ఇంప్లిమెంటేషన్ను పోలి ఉంటుంది, అయితే Node.jsలోని ఈవెంట్ లూప్ డెవలపర్ నుండి దాచబడింది మరియు నడుస్తున్న వెబ్ అప్లికేషన్లో ఈవెంట్ హ్యాండ్లింగ్ను పోలి ఉంటుంది. బ్రౌజర్లో. node.js కోసం అప్లికేషన్లను వ్రాస్తున్నప్పుడు, మీరు ఈవెంట్-ఆధారిత ప్రోగ్రామింగ్ యొక్క ప్రత్యేకతలను పరిగణించాలి, ఉదాహరణకు, "var result = db.query("select..");" పనిని పూర్తి చేయడం మరియు ఫలితాల తదుపరి ప్రాసెసింగ్ కోసం వేచి ఉండటంతో, Node.js అసమకాలిక అమలు సూత్రాన్ని ఉపయోగిస్తుంది, అనగా. కోడ్ "db.query("select..", ఫంక్షన్ (ఫలితం) {ఫలితం ప్రాసెసింగ్});"గా రూపాంతరం చెందుతుంది, దీనిలో నియంత్రణ తక్షణమే తదుపరి కోడ్కు వెళుతుంది మరియు డేటా వచ్చిన తర్వాత ప్రశ్న ఫలితం ప్రాసెస్ చేయబడుతుంది.
మూలం: opennet.ru
