Node.js 22.0 သည် JavaScript တွင် ကွန်ရက်အက်ပလီကေးရှင်းများ လုပ်ဆောင်ရန်အတွက် ပလပ်ဖောင်းတစ်ခုဖြစ်သည်။ Node.js 22.0 ကို ရေရှည်ပံ့ပိုးမှုဌာနခွဲတစ်ခုအဖြစ် သတ်မှတ်ထားသော်လည်း တည်ငြိမ်ပြီးနောက် အောက်တိုဘာလတွင်သာ ဤအခြေအနေကို သတ်မှတ်ပေးမည်ဖြစ်သည်။ Node.js 22.x ကို 30 ခုနှစ် ဧပြီလ 2027 ရက်နေ့အထိ ပံ့ပိုးပေးပါမည်။ Node.js 20.x ၏ ယခင် LTS ဌာနခွဲကို ပြုပြင်ထိန်းသိမ်းမှုသည် ဧပြီလ 2026 အထိ ကြာမြင့်မည်ဖြစ်ပြီး နောက်ဆုံး LTS ဌာနခွဲ 18.x မတိုင်မီ တစ်နှစ်သည် ဧပြီလ 2025 ခုနှစ်အထိ ဖြစ်သည်။ Node.js 21.x ၏ ဇာတ်ညွှန်းဌာနခွဲကို ဇွန် 1၊ 2024 တွင် ရပ်ဆိုင်းမည်ဖြစ်သည်။
အဓိက တိုးတက်မှုများ-
- V8 အင်ဂျင်ကို Chromium 12.4 တွင်အသုံးပြုသော ဗားရှင်း 124 သို့ အဆင့်မြှင့်တင်ထားပါသည်။ V21 8 အင်ဂျင်ကိုအသုံးပြုသည့် Node.js 11.8 ဌာနခွဲနှင့် နှိုင်းယှဉ်ထားသော အပြောင်းအလဲများထဲတွင်)၊
- WebAssembly သို့ အမှိုက်စုဆောင်းသူ (Kotlin၊ PHP၊ Java စသည်ဖြင့်) အသုံးပြုသော ပရိုဂရမ်းမင်းဘာသာစကားများဖြင့် ရေးသားထားသော ပရိုဂရမ်များ သယ်ဆောင်ခြင်းကို ရိုးရှင်းစေမည့် WasmGC တိုးချဲ့မှုအတွက် ပံ့ပိုးမှု။ WasmGC သည် လိုင်းမဟုတ်သော မှတ်ဉာဏ်ခွဲဝေမှုကို အသုံးပြုနိုင်သည့် တည်ဆောက်ပုံနှင့် array အမျိုးအစားအသစ်များကို ပေါင်းထည့်သည်။
- Array.fromAsync() နည်းလမ်းအတွက် ပံ့ပိုးမှု၊ ၎င်းသည် array-like၊ iterable သို့မဟုတ် async iterable object တစ်ခုမှ ကူးယူထားသော Array အရာဝတ္ထု၏ စံနမူနာအသစ်တစ်ခုကို တပြိုင်နက် ပြန်ပေးသည်။
- .map၊ .filter၊ .find၊ .take၊ .drop၊ .forEach နှင့် .reduce ကဲ့သို့သော iterator နည်းလမ်းများအတွက် ပံ့ပိုးမှု။
- တန်ဖိုးများအစုအဝေးကိုသတ်မှတ်ပေးပြီး လမ်းဆုံ၊ ပြည်ထောင်စု၊ ခြားနားချက် နှင့် ထပ်ပေါင်းခြင်းကဲ့သို့သော ဘုံသတ်မှတ်လုပ်ဆောင်ချက်များကို အကောင်အထည်ဖော်သည့်နည်းလမ်းများကို ပေးဆောင်သည့် Set object တစ်ခုအတွက် ပံ့ပိုးမှု။
- Maglev optimizing JIT compiler ကို ပုံမှန်အားဖြင့် ဖွင့်ထားပြီး၊ အလွန်အကျွံသုံးထားသော JavaScript ကုဒ်အတွက် စွမ်းဆောင်ရည်မြင့် စက်ကုဒ်ကို အမြန်ထုတ်ပေးရန် ရည်ရွယ်သည်။ Maglev ကိုဖွင့်ခြင်းသည် ရေရှည်လုပ်ဆောင်မှုမလုပ်ဆောင်သည့် ခဏတာ CLI အပလီကေးရှင်းများကို သိသိသာသာ အရှိန်မြှင့်နိုင်သည်၊ ဥပမာအားဖြင့်၊ Jetstrea စမ်းသပ်မှုကို ပြီးမြောက်ရန်အချိန်ကို 7.5% နှင့် Speedometer စမ်းသပ်မှု 5% လျှော့ချသည်။
- highWaterMark ရွေးချယ်မှု၏တန်ဖိုးကို 16 KB မှ 65 KB အထိ တိုးမြှင့်ခြင်းဖြင့် stream များနှင့်အတူ အလုပ်လုပ်ခြင်းအား အရှိန်မြှင့်ခဲ့သည် (အသံဖမ်းခြင်းအတွက် အကန့်အသတ်ကို သတ်မှတ်သည်)။ ပြောင်းလဲမှုသည် မမ်မိုရီသုံးစွဲမှု တိုးလာသောကြောင့်၊ အကန့်အသတ်ရှိသော RAM တွင် အသုံးပြုရန် ဒီဇိုင်းထုတ်ထားသော အပလီကေးရှင်းများသည် setDefaultHighWaterMark() သို့ ခေါ်ဆိုခြင်းဖြင့် တန်ဖိုးဟောင်းသို့ ပြန်သွားရန် လိုအပ်ပါသည်။
- AbortSignal instantiation ကို ပိုမိုထိရောက်စွာ လုပ်ဆောင်ခြင်းဖြင့် fetch() နှင့် test runner APIs များ၏ စွမ်းဆောင်ရည်ကို မြှင့်တင်လိုက်ပါ။ ဖိုင်စနစ်များနှင့် တစ်ပြိုင်တည်းလုပ်ဆောင်ခြင်းဆိုင်ရာ API များ၏ စွမ်းဆောင်ရည်ကို မြှင့်တင်ထားသည်။
- synchronous mode တွင် JavaScript ESM modules (ECMAScript Modules) ကိုဖွင့်ရန် "require()" ခေါ်ဆိုမှုကို အသုံးပြုရန်အတွက် စမ်းသပ်မှုအင်္ဂါရပ်ကို ပံ့ပိုးပေးထားပါသည်။ ESM မော်ဂျူးများကို ဘရောက်ဆာများတွင် အသုံးပြုပြီး Node.js အတွက် သီးခြား CommonJS modules များကို အစားထိုးပါသည်။ "require()" မှတစ်ဆင့် တင်ရန် ESM module ကို synchronous mode (ထိပ်တန်းအဆင့်တွင် မစောင့်ဘဲ) တွင် လုပ်ဆောင်ရပါမည်။ ပံ့ပိုးမှုကို “--experimental-require-module” အလံမှတစ်ဆင့် ဖွင့်ထားသည်။
- "--run" ကွန်မန်းကို အသုံးပြု၍ package.json ဖိုင်တွင် သတ်မှတ်ထားသော scripts များကို run ရန် စမ်းသပ်နိုင်စွမ်းကို ပေါင်းထည့်ထားသည်။ “
- “node –watch” ညွှန်ကြားချက်ကို တင်သွင်းထားသည့်ဖိုင်ကို ပြောင်းလဲသည့်အခါ လုပ်ငန်းစဉ်ကို ပြန်လည်စတင်ကြောင်း သေချာစေသည့် နာရီမုဒ်ကို အကောင်အထည်ဖော်ခြင်းဖြင့် တည်ငြိမ်သောအမျိုးအစားသို့ ရွှေ့လိုက်သည် (ဥပမာ၊ “node –watch index.js” ကို လုပ်ဆောင်ပါက၊ index.js ပြောင်းလဲသည့်အခါ လုပ်ငန်းစဉ်သည် အလိုအလျောက် ပြန်လည်စတင်လိမ့်မည်)။
- WebSocket API ၏ မူလအကောင်အထည်ဖော်မှုအား တည်ငြိမ်အောင်ပြုလုပ်ထားပြီး၊ WebSocket အား အပိုမှီခိုမှုများကို ထည့်သွင်းခြင်းမပြုဘဲ သုံးစွဲသူမုဒ်တွင် အသုံးပြုခွင့်ပြုထားသည်။
- Navigator API အတွက် တစ်စိတ်တစ်ပိုင်း ပံ့ပိုးမှု ထပ်ထည့်ထားသည်။
- Webstreams API သည် deflate-raw compression ဖော်မတ်အတွက် ပံ့ပိုးမှု ထပ်လောင်းပေးထားသည်။
- glob နှင့် globSync လုပ်ဆောင်ချက်များကို ဖိုင်လမ်းကြောင်းများ၏ ပုံစံအတိုင်း ကိုက်ညီမှုအတွက် node:fsmodule သို့ ပေါင်းထည့်ထားသည်။
- မှားယွင်းစွာသတ်မှတ်ထားသော IPv6 stacks များကို ပိုမိုကောင်းမွန်စွာ ကိုင်တွယ်ခြင်း။ IPv6 လုပ်ဆောင်ချက်တွင် ပြဿနာများရှိသောအခါ အမြန်ပြန်လှည့်ရန်အတွက် Happy Eyeballs algorithm ကို အကောင်အထည်ဖော်ထားသည်။
- util API ကို ရပ်တန့်ထားသည်။
- အပ်ဒိတ်လုပ်ထားသော မှီခိုဗားရှင်းများ- npm 10.5.1၊ libuv 1.48.0၊ simdutf 5.2.3၊ c-ares 1.28.1၊ zlib 1.3.0.1-motley-24c07df၊ simdjson မှ 3.8.0၊ ada 2.7.7 နှင့် undic .
Node.js ပလက်ဖောင်းကို ဝဘ်အပလီကေးရှင်းများ၏ server-side ပံ့ပိုးမှုအတွက်နှင့် စံ client- နှင့် server-side ကွန်ရက်ပရိုဂရမ်များ ဖန်တီးရန်အတွက် အသုံးပြုနိုင်ပါသည်။ Node.js အပလီကေးရှင်းများ၏ လုပ်ဆောင်နိုင်စွမ်းကို ချဲ့ထွင်ရန်အတွက်၊ အကောင်အထည်ဖော်သည့် မော်ဂျူးများအပါအဝင် မော်ဂျူးများစွာကို ပြင်ဆင်ထားပါသည်။ ဆာဗာများ HTTP၊ SMTP၊ XMPP၊ DNS၊ FTP၊ IMAP၊ POP3 တို့၏ client များ၊ ဝဘ် framework အမျိုးမျိုး၊ WebSocket နှင့် Ajax handler များ၊ DBMS (MySQL၊ PostgreSQL၊ SQLite၊ MongoDB) သို့ ချိတ်ဆက်ကိရိယာများ၊ template အင်ဂျင်များ၊ CSS အင်ဂျင်များ၊ cryptographic algorithms များနှင့် authorization systems (OAuth) များ၏ အကောင်အထည်ဖော်မှုများ၊ XML parsers များ။
အပြိုင်တောင်းဆိုမှုများ အများအပြားကို ကိုင်တွယ်ရန်၊ Node.js သည် ပိတ်ဆို့ခြင်းမဟုတ်သော ဖြစ်ရပ်လုပ်ဆောင်ခြင်းနှင့် ပြန်ခေါ်ခြင်းဆိုင်ရာ ကိုင်တွယ်သူများကို သတ်မှတ်ခြင်းအပေါ် အခြေခံ၍ အညီအမျှ ကုဒ်လုပ်ဆောင်မှုပုံစံကို အသုံးပြုသည်။ multiplexing connections များအတွက် ပံ့ပိုးပေးထားသော နည်းလမ်းများတွင် epoll၊ kqueue၊ /dev/poll နှင့် ရွေးချယ်ပါ။ ချိတ်ဆက်မှုများပြားခြင်းအတွက်၊ Unix စနစ်များရှိ libev နှင့် Windows ရှိ IOCP အတွက် အပိုပရိုဂရမ်ဖြစ်သည့် libuv စာကြည့်တိုက်ကို အသုံးပြုသည်။ libeio စာကြည့်တိုက်ကို thread pool တစ်ခုဖန်တီးရန်အသုံးပြုထားပြီး၊ ပိတ်ဆို့ခြင်းမပြုသောမုဒ်တွင် DNS မေးမြန်းမှုများကို လုပ်ဆောင်ရန်အတွက် c-ares ကို ပေါင်းစပ်ထားသည်။ ပိတ်ဆို့ခြင်းကို ဖြစ်စေသော စနစ်ခေါ်ဆိုမှုအားလုံးကို thread pool အတွင်းတွင် လုပ်ဆောင်ပြီး၊ ထို့နောက် signal handlers များကဲ့သို့ ၎င်းတို့၏ အလုပ်၏ရလဒ်ကို အမည်မဖော်လိုသော ပိုက်တစ်ခုမှတဆင့် ပြန်ပို့ပေးပါသည်။
JavaScript ကုဒ်ကို Google မှထုတ်လုပ်သော V8 အင်ဂျင်ကိုအသုံးပြုခြင်းဖြင့်သေချာစေသည် (ထို့ပြင် Microsoft သည် Chakra-Core အင်ဂျင်ဖြင့် Node.js ဗားရှင်းကိုဖန်တီးနေသည်)။ ၎င်း၏ အဓိကအချက်မှာ Node.js သည် Perl AnyEvent၊ Ruby Event Machine၊ Python Twisted frameworks နှင့် Tcl တွင် ဖြစ်ရပ်များကို အကောင်အထည်ဖော်ခြင်းများနှင့် ဆင်တူသော်လည်း Node.js ရှိ event loop ကို developer မှ ဝှက်ထားပြီး ဝဘ်အက်ပလီကေးရှင်းတစ်ခုတွင် ဖြစ်ရပ်လုပ်ဆောင်ခြင်းနှင့် ဆင်တူသည်။ browser တွင်အလုပ်လုပ်သည်။
source: opennet.ru
