JavaScript платформасы Node.js 22.0.0 жеткиликтүү

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 бутагына салыштырмалуу өзгөрүүлөрдүн арасында төмөнкүлөр белгиленген:
    • WasmGC кеңейтүүсүн колдоо, бул таштанды жыйгычты (Kotlin, PHP, Java ж. WasmGC сызыктуу эмес эстутумду бөлүштүрүүнү колдоно алган структуралардын жана массивдердин жаңы түрлөрүн кошот.
    • Array.fromAsync() методун колдоо, ал массив сыяктуу, кайталануучу же асинхрондуу кайталануучу объекттен көчүрүлгөн Array объектинин жаңы нускасын асинхрондуу түрдө кайтарат.
    • .map, .filter, .find, .take, .drop, .forEach жана .reduce сыяктуу итератор ыкмаларын колдоо.
    • Нарктардын жыйындысын аныктаган Set объектисин колдоо жана кесилиш, биримдик, айырма жана кошуу сыяктуу жалпы топтом операцияларын ишке ашыруучу ыкмаларды сунуштайт.
  • Maglev оптималдаштыруучу JIT компилятору демейки боюнча иштетилген, ал көп колдонулган JavaScript коду үчүн жогорку өндүрүмдүүлүктөгү машина кодун тез түзүүгө багытталган. Maglevди иштетүү узак мөөнөттүү операцияларды аткарбаган кыска мөөнөттүү CLI тиркемелерин бир топ ылдамдата алат, мисалы, Jetstrea тестин бүтүрүү убактысы 7.5% га, ал эми Спидометр тести 5% га кыскарат.
  • Агымдар менен иштөө highWaterMark опциясынын маанисин 16 КБдан 65 КБга чейин жогорулатуу менен тездетилген (жаздыруу буферге коюлган чекти аныктайт). Өзгөртүү эстутум керектөөнүн көбөйүшүнө алып келет, андыктан чектелген оперативдүү эстутумда иштөө үчүн иштелип чыккан колдонмолор setDefaultHighWaterMark() чалуу аркылуу эски мааниге кайтарылышы керек болушу мүмкүн.
  • AbortSignal инстанциясын натыйжалуураак кылуу менен fetch() жана сыноочу API'лердин иштеши жакшыртылды. Файл системалары менен синхрондуу иштөөгө байланышкан API'лердин иштеши жакшыртылды.
  • Синхрондуу режимде JavaScript ESM модулдарын (ECMAScript модулдарын) жүктөө үчүн "талап()" чалуусун колдонуу үчүн эксперименталдык функция берилди. ESM модулдары браузерлерде колдонулат жана Node.js үчүн өзгөчө CommonJS модулдарын алмаштырат. "Require()" аркылуу жүктөө үчүн ESM модулу синхрондуу режимде аткарылышы керек (жогорку деңгээлде күтпөстөн). Колдоо "--эксперименталдык-талап-модуль" желеги аркылуу иштетилген.
  • "--run" буйругун колдонуу менен package.json файлында аныкталган скрипттерди иштетүү үчүн эксперименталдык мүмкүнчүлүк кошулду "
  • “Түйүн –саат” буйругу импорттолгон файл өзгөргөндө процесстин кайра башталышын камсыз кылган кароо режимин ишке ашыруу менен туруктуу категорияга жылдырылды (мисалы, “node –watch index.js” аткарылса, index.js өзгөргөндө процесс автоматтык түрдө кайра башталат).
  • WebSocket API'нин түпнуска ишке ашырылышы турукташып, WebSocketге кошумча көз карандылыктарды орнотпостон кардар режиминде колдонууга мүмкүндүк берет.
  • Navigator API үчүн жарым-жартылай колдоо кошулду.
  • Webstreams API deflate-raw кысуу форматын колдоону кошту.
  • Файл жолдорунун үлгүсүн дал келтирүү үчүн node:fsmoduleге glob жана globSync функциялары кошулду.
  • Туура эмес конфигурацияланган IPv6 стектерин иштетүү жакшыртылды. IPv6 иштеши менен көйгөйлөр болгон учурда тез артка кайтаруу үчүн Happy Eyeballs алгоритми ишке ашырылды.
  • 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. .

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 сурамдарын аткаруу үчүн интеграцияланган. Бөгөттөөгө алып келген бардык системалык чалуулар жип бассейнинин ичинде аткарылат жана андан кийин сигнал иштеткичтер сыяктуу, өз ишинин натыйжасын аты жок түтүк аркылуу кайра өткөрүп беришет.

JavaScript кодунун аткарылышы Google тарабынан иштелип чыккан V8 кыймылдаткычын колдонуу аркылуу камсыздалат (мындан тышкары, Microsoft Chakra-Core кыймылдаткычы менен Node.js версиясын иштеп чыгууда). Негизинен, Node.js Perl AnyEvent, Ruby Event Machine, Python Twisted алкактары жана Tcl ичиндеги окуяларды ишке ашырууга окшош, бирок Node.js ичиндеги окуя цикли иштеп чыгуучудан жашырылган жана веб-тиркемедеги окуяны иштетүүгө окшош. браузерде иштеп жатат.

Source: opennet.ru

Комментарий кошуу