Објављен је Ноде.јс 22.0, платформа за покретање мрежних апликација у ЈаваСцрипт-у. Ноде.јс 22.0 је класификован као грана за дугорочну подршку, али ће овај статус бити додељен тек у октобру, након стабилизације. Ноде.јс 22.к ће бити подржан до 30. априла 2027. Одржавање претходне ЛТС гране Ноде.јс 20.к трајаће до априла 2026. године, а претпрошле ЛТС гране 18.к до априла 2025. године. Пробна грана Ноде.јс 21.к биће укинута 1. јуна 2024.
Главна побољшања:
- В8 мотор је ажуриран на верзију 12.4, која се користи у Цхромиум-у 124. Међу променама у поређењу са граном Ноде.јс 21, која је користила В8 11.8 мотор), примећује се:
- Подршка за проширење ВасмГЦ, које поједностављује пренос програма написаних на програмским језицима који користе сакупљач смећа (Котлин, ПХП, Јава, итд.) на ВебАссембли. ВасмГЦ додаје нове типове структура и низова који могу да користе нелинеарну алокацију меморије.
- Подршка за методу Арраи.фромАсинц(), која асинхроно враћа нову инстанцу Арраи објекта копирану из низа сличног, итерабле или асинц итерабле објекта.
- Подршка за методе итератора као што су .мап, .филтер, .финд, .таке, .дроп, .форЕацх и .редуце.
- Подршка за објекат Сет који дефинише колекцију вредности и нуди методе које имплементирају уобичајене скупове операције, као што су пресек, унија, разлика и сабирање.
- Маглев оптимизујући ЈИТ компајлер је подразумевано омогућен, са циљем да брзо генерише машински код високих перформанси за јако коришћен ЈаваСцрипт код. Омогућавање Маглев може значајно да убрза краткотрајне ЦЛИ апликације које не обављају дугорочне операције, на пример, време за завршетак Јетстреа теста је смањено за 7.5%, а тест Спеедометер за 5%.
- Рад са стримовима је убрзан повећањем вредности хигхВатерМарк опције са 16 КБ на 65 КБ (дефинише границу до које се снима баферовање). Промена резултира повећаном потрошњом меморије, тако да ће апликације дизајниране да раде на ограниченој РАМ меморији можда морати да се врате на стару вредност путем позива сетДефаултХигхВатерМарк().
- Побољшане перформансе АПИ-ја фетцх() и тест покретача чинећи инстанцирање АбортСигнал ефикаснијим. Побољшане су перформансе АПИ-ја који се односе на синхрони рад са системима датотека.
- Обезбеђена је експериментална функција за коришћење позива „рекуире()“ за учитавање ЈаваСцрипт ЕСМ модула (ЕЦМАСцрипт модули) у синхроном режиму. ЕСМ модули се користе у претраживачима и замењују ЦоммонЈС модуле специфичне за Ноде.јс. За учитавање преко "рекуире()", ЕСМ модул мора бити извршен у синхроном режиму (без чекања на највишем нивоу). Подршка је омогућена преко ознаке „--екпериментал-рекуире-модуле“.
- Додата експериментална могућност покретања скрипти дефинисаних у датотеци пацкаге.јсон помоћу команде „--рун“ "
- Команда „ноде –ватцх“ је премештена у стабилну категорију са имплементацијом режима праћења који обезбеђује да се процес поново покрене када се увезена датотека промени (на пример, ако се изврши „ноде –ватцх индек.јс“, процес ће се аутоматски поново покренути када се индек.јс промени).
- Основна имплементација ВебСоцкет АПИ-ја је стабилизована, омогућавајући да се ВебСоцкет користи у клијентском режиму без инсталирања додатних зависности.
- Додата делимична подршка за Навигатор АПИ.
- Вебстреамс АПИ је додао подршку за дефлате-рав формат компресије.
- Додате функције глоб и глобСинц у ноде:фсмодуле за подударање шаблона путања датотека.
- Побољшано руковање погрешно конфигурисаним ИПв6 стековима. Имплементиран је алгоритам Хаппи Еиебаллс за брзо враћање у случају проблема са радом ИПв6.
- Утил АПИ је застарео.
- Ажуриране верзије зависности: нпм 10.5.1, либув 1.48.0, симдутф 5.2.3, ц-арес 1.28.1, злиб 1.3.0.1-мотлеи-24ц07дф, симдјсон на 3.8.0, ада 2.7.7. .
Платформа Node.js може се користити и за подршку веб апликација на страни сервера и за креирање стандардних мрежних програма на страни клијента и сервера. Да би се проширила функционалност Node.js апликација, припремљена је велика колекција модула, укључујући и оне који имплементирају сервери и клијенти HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, модули за интеграцију са различитим веб фрејмворцима, WebSocket и Ajax обрађивачи, конектори ка DBMS-овима (MySQL, PostgreSQL, SQLite, MongoDB), механизми шаблона, CSS механизми, имплементације криптографских алгоритама и система ауторизације (OAuth), XML парсери.
За руковање великим бројем паралелних захтева, Ноде.јс користи модел извршавања асинхроног кода заснован на обради догађаја без блокирања и дефинисању руковалаца повратним позивима. Подржане методе за мултиплексирање веза укључују еполл, ккуеуе, /дев/полл и селецт. За мултиплексирање везе користи се библиотека либув, која је додатак либев-у на Уник системима и ИОЦП-у на Виндовс-у. Библиотека либеио се користи за креирање скупа нити, а ц-арес је интегрисан за обављање ДНС упита у режиму без блокирања. Сви системски позиви који узрокују блокирање се извршавају унутар скупа нити, а затим, као руковаоци сигнала, прослеђују резултат свог рада назад кроз неименовану цев.
Извршење ЈаваСцрипт кода је обезбеђено коришћењем В8 мотора који је развио Гоогле (поред тога, Мицрософт развија верзију Ноде.јс са Цхакра-Цоре мотором). У својој сржи, Ноде.јс је сличан Перл АниЕвент, Руби Евент Мацхине, Питхон Твистед оквирима и имплементацији догађаја у Тцл, али је петља догађаја у Ноде.јс скривена од програмера и подсећа на обраду догађаја у веб апликацији ради у претраживачу.
Извор: опеннет.ру
