Node.js 22.0 гарсан нь сүлжээний програмуудыг JavaScript дээр ажиллуулах платформ юм. Node.js 22.0 нь урт хугацааны дэмжлэгийн салбар гэж ангилагддаг боловч тогтворжсоны дараа энэ статусыг зөвхөн 22-р сард олгоно. Node.js 30.x нь 2027 оны 20-р сарын 2026 хүртэл дэмжигдэх болно. Node.js 18.x-ийн өмнөх LTS салбарын засвар үйлчилгээ 2025 оны 21-р сар хүртэл, сүүлийн LTS 1.x салбараас өмнөх жил 2024 оны XNUMX-р сар хүртэл үргэлжилнэ. Node.js XNUMX.x-ийн үе шатыг XNUMX оны XNUMX-р сарын XNUMX-нд зогсооно.
Гол сайжруулалтууд:
- V8 хөдөлгүүрийг Chromium 12.4-д ашигласан 124 хувилбар болгон шинэчилсэн. V21 8 хөдөлгүүрийг ашигласан Node.js 11.8 салбартай харьцуулсан өөрчлөлтүүдийн дунд:
- Хог цуглуулагч (Kotlin, PHP, Java гэх мэт) ашигладаг програмчлалын хэл дээр бичигдсэн програмуудыг WebAssembly руу шилжүүлэх ажлыг хялбаршуулдаг WasmGC өргөтгөлийн дэмжлэг. WasmGC нь шугаман бус санах ойн хуваарилалтыг ашиглах боломжтой шинэ төрлийн бүтэц, массивуудыг нэмдэг.
- Массивтай төстэй, давтагдах эсвэл асинх бус давтагдах объектоос хуулсан Array объектын шинэ жишээг асинхроноор буцаадаг Array.fromAsync() аргын дэмжлэг.
- .map, .filter, .find, .take, .drop, .forEach болон .reduce зэрэг давталтын аргуудыг дэмжинэ.
- Утгын цуглуулгыг тодорхойлсон Set объектын дэмжлэг, огтлолцол, нэгдэл, ялгаа, нэмэх зэрэг нийтлэг багц үйлдлүүдийг хэрэгжүүлэх аргуудыг санал болгодог.
- Maglev оновчтой JIT хөрвүүлэгч нь анхдагчаар идэвхжсэн бөгөөд өргөн хэрэглэгддэг JavaScript кодын өндөр гүйцэтгэлтэй машины кодыг хурдан гаргахад чиглэгддэг. Maglev-ийг идэвхжүүлснээр урт хугацааны үйл ажиллагаа явуулдаггүй богино хугацааны CLI програмуудыг ихээхэн хурдасгах боломжтой, жишээлбэл, Jetstrea тестийг дуусгах хугацаа 7.5%, хурд хэмжигчийг 5% -иар бууруулдаг.
- HighWaterMark тохируулгын утгыг 16 КБ-аас 65 КБ хүртэл нэмэгдүүлснээр урсгалтай ажиллах ажлыг хурдасгасан (бичлэгийг буферлэх хүртэлх хязгаарыг тодорхойлдог). Өөрчлөлт нь санах ойн хэрэглээг нэмэгдүүлэхэд хүргэдэг тул хязгаарлагдмал RAM дээр ажиллахад зориулагдсан программууд setDefaultHighWaterMark() руу залгах замаар хуучин утгыг нь буцаах шаардлагатай болж магадгүй юм.
- AbortSignal instantiation-ийг илүү үр дүнтэй болгосноор fetch() болон туршилтын гүйгч API-ийн гүйцэтгэл сайжирсан. Файлын системтэй синхрон ажиллахтай холбоотой API-ийн гүйцэтгэл сайжирсан.
- JavaScript ESM модулиудыг (ECMAScript модулиуд) синхрон горимд ачаалахын тулд "require()" дуудлагыг ашиглах туршилтын функцийг өгсөн. ESM модулиудыг хөтчүүдэд ашигладаг бөгөөд Node.js-д зориулсан CommonJS модулиудыг орлуулдаг. "require()"-ээр ачаалахын тулд ESM модулийг синхрон горимд (дээд түвшинд хүлээхгүйгээр) ажиллуулах ёстой. Дэмжлэгийг "--туршилтын-шаардлагатай-модуль" туг ашиглан идэвхжүүлсэн.
- "--run" командыг ашиглан package.json файлд тодорхойлсон скриптүүдийг ажиллуулах туршилтын чадварыг нэмсэн. "
- Импортолсон файл өөрчлөгдөх үед процессыг дахин эхлүүлэхийг баталгаажуулах горимыг хэрэгжүүлснээр "node –watch" командыг тогтвортой ангилалд шилжүүлсэн (жишээлбэл, хэрэв "node –watch index.js" ажиллаж байвал index.js өөрчлөгдөх үед процесс автоматаар дахин эхлэх болно).
- WebSocket API-ийн эх хувилбарыг тогтворжуулж, WebSocket-ийг нэмэлт хамаарал суулгахгүйгээр үйлчлүүлэгчийн горимд ашиглах боломжийг олгосон.
- Navigator API-д хэсэгчилсэн дэмжлэг нэмсэн.
- Webstreams API нь deflate-raw шахалтын форматын дэмжлэгийг нэмсэн.
- Файлын замуудын загварыг тааруулахын тулд node:fsmodule-д glob болон globSync функцуудыг нэмсэн.
- Буруу тохируулсан IPv6 стектэй ажиллах сайжруулсан. IPv6 үйлдлийн системд асуудал гарсан тохиолдолд хурдан буцаах зорилгоор Happy Eyeballs алгоритмыг хэрэгжүүлсэн.
- Хэрэглээний 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. .
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, сонгох зэрэг орно. Холболтын мултиплексийн хувьд libuv номын санг ашигладаг бөгөөд энэ нь Unix систем дээрх libev болон Windows дээрх IOCP-ийн нэмэлт юм. Libeio номын санг урсгалын сан үүсгэхэд ашигладаг бөгөөд c-ares нь блоклохгүй горимд DNS асуулга явуулахад нэгтгэгддэг. Блоклоход хүргэдэг бүх системийн дуудлагууд нь урсгалын сан дотор хийгдэх ба дараа нь дохионы зохицуулагчид шиг ажлын үр дүнг нэргүй хоолойгоор дамжуулдаг.
Google-ийн боловсруулсан V8 хөдөлгүүрийг ашиглан JavaScript кодын гүйцэтгэлийг хангадаг (үүнээс гадна Microsoft нь Chakra-Core хөдөлгүүртэй Node.js хувилбарыг боловсруулж байна). Үндсэндээ Node.js нь Perl AnyEvent, Ruby Event Machine, Python Twisted frameworks болон Tcl дээрх үйл явдлуудын хэрэгжилттэй төстэй боловч Node.js дахь үйл явдлын давталт нь хөгжүүлэгчээс далд бөгөөд вэб программ дахь үйл явдлын боловсруулалттай төстэй. хөтөч дээр ажиллаж байна.
Эх сурвалж: opennet.ru
