சர்வர் பக்க JavaScript இயங்குதளம் Node.js 20.0 கிடைக்கிறது

ஜாவாஸ்கிரிப்டில் நெட்வொர்க் பயன்பாடுகளை இயக்குவதற்கான தளமான Node.js 20.0 இன் வெளியீடு நடந்துள்ளது. நீண்ட ஆதரவு கிளைக்கு Node.js 20.0 ஒதுக்கப்பட்டுள்ளது, ஆனால் நிலைப்படுத்தப்பட்ட பிறகு அக்டோபர் வரை இந்த நிலை ஒதுக்கப்படாது. Node.js 20.x ஏப்ரல் 30, 2026 வரை ஆதரிக்கப்படும். முந்தைய Node.js 18.x LTS கிளையின் பராமரிப்பு ஏப்ரல் 2025 வரையிலும், முந்தைய 16.x LTS கிளை செப்டம்பர் 2023 வரையிலும் நீடிக்கும். 14.x LTS கிளை ஏப்ரல் 30 அன்றும், Node.js 19.x இடைக்கால கிளை ஜூன் 1ம் தேதியும் நிறுத்தப்படும்.

முக்கிய மேம்பாடுகள்:

  • V8 இன்ஜின் பதிப்பு 11.3 க்கு புதுப்பிக்கப்பட்டது, இது Chromium 113 இல் பயன்படுத்தப்படுகிறது. Chromium 19 இன்ஜின், String.prototype.isWellFormed மற்றும் toWellFormed செயல்பாடுகளை பயன்படுத்திய Node.js 107 கிளையுடன் ஒப்பிடும்போது மாற்றங்கள், Array.prototype மற்றும் TypedArray.prototype முறைகள், Array மற்றும் TypedArray ஆப்ஜெக்ட்களின் மாற்றத்தின் மீது நகலெடுக்கும் முறைகள், RegExp இல் "v" கொடி, ArrayBuffer இன் அளவை மாற்றுவதற்கான ஆதரவு மற்றும் WebAssembly இல் tail-call இன் அளவை அதிகரிப்பதற்கான ஆதரவு.
  • செயல்படுத்தும் போது சில ஆதாரங்களுக்கான அணுகலைக் கட்டுப்படுத்த அனுமதிக்கும் சோதனை அனுமதி மாதிரி பொறிமுறையானது முன்மொழியப்பட்டது. இயங்கும் போது "--சோதனை-அனுமதி" கொடியைக் குறிப்பிடுவதன் மூலம் அனுமதி மாதிரி ஆதரவு இயக்கப்படுகிறது. ஆரம்ப அமலாக்கத்தில், FS, குழந்தை செயல்முறைகள் (--அனுமதி-குழந்தை-செயல்பாடு) சில பகுதிகளை எழுதுவதை கட்டுப்படுத்தவும் (--allow-fs-read) படிக்கவும் (--allow-fs-read) விருப்பங்கள் முன்மொழியப்பட்டன. , add-ons (--no-addons ) மற்றும் threads (--allow-worker). எடுத்துக்காட்டாக, /tmp கோப்பகத்தில் எழுதவும் /home/index.js கோப்பைப் படிக்கவும் அனுமதிக்க, நீங்கள் குறிப்பிடலாம்: node --experimental-permission --allow-fs-write=/tmp/ --allow-fs-read =/home/index.js இன்டெக்ஸ் .js

    அணுகலைச் சரிபார்க்க, process.permission.has() முறையைப் பயன்படுத்த பரிந்துரைக்கப்படுகிறது, எடுத்துக்காட்டாக, "process.permission.has('fs.write',"/tmp/test").

  • "--பரிசோதனை- ஏற்றி" விருப்பத்தின் மூலம் ஏற்றப்பட்ட ECMAScript வெளிப்புற தொகுதிகளுக்கான (ESMகள்) ஹேண்ட்லர்கள் இப்போது ஒரு தனி நூலில் செயல்படுத்தப்படுகின்றன, இது பிரதான தொடரிலிருந்து தனிமைப்படுத்தப்பட்டுள்ளது, இது பயன்பாட்டுக் குறியீடு மற்றும் ஏற்றப்பட்ட ESM தொகுதிகளின் குறுக்குவெட்டை நீக்குகிறது. உலாவிகளைப் போலவே, import.meta.resolve() முறையும் இப்போது ஒரு பயன்பாட்டிலிருந்து அழைக்கப்படும்போது ஒத்திசைவாகச் செயல்படுகிறது. Node.js இன் அடுத்த கிளைகளில் ஒன்றில், ESM ஏற்றுதல் ஆதரவு நிலையான அம்சங்களின் வகைக்கு மாற்ற திட்டமிடப்பட்டுள்ளது.
  • முனை:சோதனை (test_runner) தொகுதி, TAP (Test Anything Protocol) வடிவத்தில் முடிவுகளை வழங்கும் JavaScript சோதனைகளை உருவாக்கி இயக்க வடிவமைக்கப்பட்டுள்ளது, நிலையான நிலைக்கு நகர்த்தப்பட்டது.
  • ஒரு தனி செயல்திறன் குழு உருவாக்கப்பட்டது, இது புதிய கிளைக்கான தயாரிப்பில், URL பாகுபடுத்துதல், ஃபெட்ச்() மற்றும் EventTarget உள்ளிட்ட பல்வேறு இயக்க நேர கூறுகளை விரைவுபடுத்த வேலை செய்தது. எடுத்துக்காட்டாக, EventTarget ஐ துவக்குவதற்கான மேல்நிலை பாதியாக குறைக்கப்பட்டுள்ளது, URL.canParse() முறையின் செயல்திறன் கணிசமாக மேம்படுத்தப்பட்டுள்ளது மற்றும் டைமர்களின் செயல்திறன் மேம்படுத்தப்பட்டுள்ளது. கூடுதலாக, C ++ இல் எழுதப்பட்ட உயர் செயல்திறன் கொண்ட URL பாகுபடுத்தி - Ada 2.0 வெளியீடு சேர்க்கப்பட்டுள்ளது.
  • ஒற்றை இயங்கக்கூடிய கோப்பு (SEA, ஒற்றை இயங்கக்கூடிய பயன்பாடுகள்) வடிவத்தில் பயன்பாடுகளை வழங்குவதற்கான சோதனை அம்சத்தின் வளர்ச்சி தொடர்கிறது. இப்போது இயங்கக்கூடிய ஒன்றை உருவாக்க, JSON உள்ளமைவு கோப்பிலிருந்து உருவாக்கப்பட்ட ஒரு குமிழியை மாற்ற வேண்டும் (ஜாவாஸ்கிரிப்ட் கோப்பை மாற்றுவதற்குப் பதிலாக).
  • மேம்படுத்தப்பட்ட Web Crypto API இணக்கத்தன்மை மற்ற திட்டங்களின் செயலாக்கங்களுடன்.
  • ARM64 கணினிகளில் Windows க்கான அதிகாரப்பூர்வ ஆதரவு சேர்க்கப்பட்டது.
  • தனித்த WebAssembly பயன்பாடுகளை உருவாக்குவதற்கான WASI (WebAssembly System Interface) நீட்டிப்புகளுக்கான தொடர்ச்சியான ஆதரவு. WASI ஆதரவை இயக்க சிறப்பு கட்டளை வரி கொடியை குறிப்பிட வேண்டிய அவசியம் நீக்கப்பட்டது.

Node.js இயங்குதளமானது வலை பயன்பாடுகளின் சேவையக பராமரிப்பு மற்றும் வழக்கமான கிளையன்ட் மற்றும் சர்வர் நெட்வொர்க் புரோகிராம்களை உருவாக்குவதற்கும் பயன்படுத்தப்படலாம். Node.js க்கான பயன்பாடுகளின் செயல்பாட்டை விரிவுபடுத்த, தொகுதிகளின் ஒரு பெரிய தொகுப்பு தயார் செய்யப்பட்டுள்ளது, இதில் HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 சேவையகங்கள் மற்றும் கிளையன்ட்கள், ஒருங்கிணைப்புக்கான தொகுதிகள் ஆகியவற்றைச் செயல்படுத்துவதன் மூலம் தொகுதிகளைக் காணலாம். பல்வேறு இணைய கட்டமைப்புகள், WebSocket மற்றும் Ajax கையாளுபவர்கள், DBMS இணைப்பிகள் (MySQL, PostgreSQL, SQLite, MongoDB), டெம்ப்ளேட்டிங் என்ஜின்கள், CSS இன்ஜின்கள், கிரிப்டோ அல்காரிதம்கள் மற்றும் அங்கீகார அமைப்புகளின் செயலாக்கங்கள் (OAuth), XML பாகுபடுத்திகள்.

அதிக எண்ணிக்கையிலான இணை கோரிக்கைகளின் செயலாக்கத்தை உறுதிசெய்ய, Node.js ஒரு ஒத்திசைவற்ற குறியீடு செயல்படுத்தல் மாதிரியைத் தடுக்காத நிகழ்வு கையாளுதல் மற்றும் கால்பேக் ஹேண்ட்லர்களின் வரையறை ஆகியவற்றின் அடிப்படையில் பயன்படுத்துகிறது. மல்டிபிளெக்சிங் இணைப்புகளுக்கான ஆதரவு முறைகள் epoll, kqueue, /dev/poll மற்றும் தேர்ந்தெடுக்கும். இணைப்பு மல்டிபிளெக்சிங்கிற்கு, லிபுவ் லைப்ரரி பயன்படுத்தப்படுகிறது, இது யூனிக்ஸ் சிஸ்டங்களில் லிபெவ் மற்றும் விண்டோஸில் ஐஓசிபிக்கான துணை நிரலாகும். libeio நூலகம் ஒரு நூல் குளத்தை உருவாக்கப் பயன்படுகிறது, மேலும் c-ares ஒருங்கிணைக்கப்பட்டு DNS வினவல்களைத் தடுக்காத பயன்முறையில் செயல்படுத்தப்படுகிறது. தடுப்பை ஏற்படுத்தும் அனைத்து சிஸ்டம் அழைப்புகளும் த்ரெட் பூலுக்குள்ளேயே செயல்படுத்தப்படுகின்றன, பின்னர், சிக்னல் ஹேண்ட்லர்களைப் போல, பெயரிடப்படாத குழாய் (குழாய்) மூலம் தங்கள் வேலையின் முடிவை மாற்றும். ஜாவாஸ்கிரிப்ட் குறியீட்டை செயல்படுத்துவது கூகுள் உருவாக்கிய V8 இன்ஜினைப் பயன்படுத்துவதன் மூலம் வழங்கப்படுகிறது (மேலும், மைக்ரோசாப்ட் சக்ரா-கோர் எஞ்சினுடன் Node.js இன் பதிப்பை உருவாக்குகிறது).

அதன் மையத்தில், Node.js ஆனது Perl AnyEvent, Ruby Event Machine, Python Twisted frameworks மற்றும் Tcl நிகழ்வு செயல்படுத்தல் ஆகியவற்றைப் போன்றது, ஆனால் Node.js இல் உள்ள நிகழ்வு லூப் டெவலப்பரிடம் இருந்து மறைக்கப்பட்டு, இயங்கும் இணையப் பயன்பாட்டில் நிகழ்வைக் கையாளுவதை ஒத்திருக்கிறது. உலாவியில். node.js க்கான பயன்பாடுகளை எழுதும் போது, ​​நிகழ்வு-உந்துதல் நிரலாக்கத்தின் பிரத்தியேகங்களைக் கருத்தில் கொள்ள வேண்டும், எடுத்துக்காட்டாக, "var result = db.query("select..");" வேலை முடிவடையும் வரை காத்திருக்கும் மற்றும் முடிவுகளின் அடுத்தடுத்த செயலாக்கத்துடன், Node.js ஒத்திசைவற்ற செயல்பாட்டின் கொள்கையைப் பயன்படுத்துகிறது, அதாவது. குறியீடு "db.query("select..", செயல்பாடு (முடிவு) {முடிவு செயலாக்கம்});" என மாற்றப்படுகிறது, இதில் கட்டுப்பாடு உடனடியாக மேலும் குறியீட்டிற்கு அனுப்பப்படும், மேலும் தரவு வந்தவுடன் வினவல் முடிவு செயலாக்கப்படும்.

ஆதாரம்: opennet.ru

கருத்தைச் சேர்