Издање ЈаваСцрипт платформе на страни сервера Ноде.јс 17.0

Објављена је Ноде.јс 17.0, платформа за покретање мрежних апликација у ЈаваСцрипт-у. Ноде.јс 17.0 је редовна грана подршке која ће наставити да добија ажурирања до јуна 2022. У наредним данима биће завршена стабилизација гране Ноде.јс 16, која ће добити ЛТС статус и биће подржана до априла 2024. године. Одржавање претходне ЛТС гране Ноде.јс 14.0 трајаће до априла 2023. године, а претпрошле ЛТС гране 12.0 до априла 2022. године.

Главна побољшања:

  • В8 мотор је ажуриран на верзију 9.5.
  • Настављена је имплементација варијанти основног АПИ-ја заснованог на коришћењу Промисе асинхроног рачунарског интерфејса. Поред претходно понуђених АПИ-ја Тимерс Промисес и Стреамс Промисес, Ноде.јс 17.0 уводи Реадлине Промисе АПИ за читање података ред по ред помоћу модула реадлине. импорт * као ред за читање из 'ноде:реадлине/промисес'; импорт { стдин као улаз, стдоут као излаз } из 'процеса'; цонст рл = реадлине.цреатеИнтерфаце({ инпут, оутпут }); цонст ансвер = аваит рл.куестион('Шта мислите о Ноде.јс?'); цонсоле.лог('Хвала вам на вредним повратним информацијама: ${ансвер}'); рл.цлосе();
  • Испоручена ОпенССЛ библиотека је ажурирана на верзију 3.0 (користи се куицтлс/опенссл форк са омогућеном подршком за КУИЦ протокол).
  • Омогућио је приказивање верзије Ноде.јс у траговима стека који се излазе у случају фаталних грешака које узрокују прекид апликације.

Поред тога, можемо поменути елиминацију две рањивости у тренутним гранама Ноде.јс (ЦВЕ-2021-22959, ЦВЕ-2021-22960), које омогућавају извођење „ХТТП Рекуест Смугглинг” (ХРС) напада, који омогућавају нам да уђемо у садржај захтева других корисника који се обрађују у истој нити између фронтенда и позадине (на пример, злонамерни ЈаваСцрипт код може да се убаци у сесију другог корисника). Детаљи ће бити откривени касније, али за сада знамо само да су проблеми узроковани неправилним руковањем размацима између имена ХТТП заглавља и двотачка, као и другачијим руковањем знаковима за повратак и повлачење реда у блоку параметара који се користи приликом преноса. тело захтева у деловима у режиму „на комаде“

Подсетимо се да платформа Ноде.јс може да се користи како за подршку веб апликација на страни сервера, тако и за креирање обичних клијентских и серверских мрежних програма. За проширење функционалности апликација за Ноде.јс, припремљена је велика колекција модула у којој се могу пронаћи модули са имплементацијом ХТТП, СМТП, КСМПП, ДНС, ФТП, ИМАП, ПОП3 сервера и клијената, модули за интеграцију са различитим веб оквирима, ВебСоцкет и Ајак руковаоцима, конекторима за ДБМС (МиСКЛ, ПостгреСКЛ, СКЛите, МонгоДБ), шаблонским машинама, ЦСС машинама, имплементацијама криптографских алгоритама и система ауторизације (ОАутх), КСМЛ парсерима.

Да би обезбедио обраду великог броја паралелних захтева, Ноде.јс користи модел извршавања асинхроног кода заснован на руковању неблокирајућим догађајима и дефиницији руковалаца повратним позивима. Подржане методе за мултиплексирање веза су еполл, ккуеуе, /дев/полл и селецт. За мултиплексирање везе користи се библиотека либув, која је додатак за либев на Уник системима и ИОЦП на Виндовс-у. Библиотека либеио се користи за креирање скупа нити, а ц-арес је интегрисан за обављање ДНС упита у режиму без блокирања. Сви системски позиви који узрокују блокирање се извршавају унутар скупа нити, а затим, као руковаоци сигнала, преносе резултат свог рада назад кроз неименовану цев (цев). Извршење ЈаваСцрипт кода је обезбеђено коришћењем В8 мотора који је развио Гоогле (поред тога, Мицрософт развија верзију Ноде.јс са Цхакра-Цоре мотором).

У својој сржи, Ноде.јс је сличан Перл АниЕвент, Руби Евент Мацхине, Питхон Твистед оквирима и имплементацији догађаја Тцл, али је петља догађаја у Ноде.јс скривена од програмера и подсећа на руковање догађајима у веб апликацији која ради у претраживачу. Када пишете апликације за ноде.јс, потребно је да узмете у обзир специфичности програмирања заснованог на догађајима, на пример, уместо да радите „вар ресулт = дб.куери("селецт..");" са чекањем завршетка рада и накнадном обрадом резултата, Ноде.јс користи принцип асинхроног извршавања, тј. код се трансформише у "дб.куери("селецт..", фунцтион (ресулт) {ресулт процессинг});", у коме ће контрола тренутно прећи на даљи код, а резултат упита ће бити обрађен како подаци стигну.

Извор: опеннет.ру

Додај коментар