Изменения
Изменения в njs 0.8.5
Дата выпуска: 25 июня 2024 г.
Модули nginx:
-
Изменение:
r.variables.var,r.requestText,r.responseText,s.variables.var, и аргументdataобратного вызоваs.on()с типами событийuploadилиdownloadтеперь будут преобразовывать байты, недопустимые в кодировке UTF-8, в символ замены. При работе с двоичными данными используйтеr.rawVariables.var,r.requestBuffer,r.responseBuffer,s.rawVariables.var, и тип событияupstreamилиdownstreamдляs.on()вместо этого. -
Новая функция: добавлен аргумент
timeoutдля методов общего словаряadd(),set()иincr(). -
Исправление ошибки: исправлена проверка на дублирование переменных
js_set. -
Исправление ошибки: исправлено заголовок запроса
Hostпри нестандартном порту. -
Исправление ошибки: исправлена обработка тела запроса нулевой длины в
ngx.fetch()иr.subrequest(). -
Исправление ошибки: исправлен переполнение буфера в куче в
Headers.get(). -
Исправление ошибки: исправлена обработка ошибок в
r.subrequest().
Ядро:
-
Новая функция: добавлен модуль
zlibдля движкаQuickJS. -
Исправление ошибки: исправлен
zlib.inflate(). -
Исправление ошибки: исправлен
String.prototype.replaceAll()с аргументом нулевой длины. -
Исправление ошибки: исправлена обработка
retvalпосле исключения вArray.prototype.toSpliced(),Array.prototype.toReversed(),Array.prototype.toSorted(). -
Исправление ошибки: исправлена обработка
RegExp.prototype[@@replace]()с заменами, содержащими$',$`и строки с символами Юникода. -
Исправление ошибки: исправлена ошибка чтения одного байта в
decodeURI()иdecodeURIComponent(). -
Исправление ошибки: исправлен отслеживание области видимости аргумента.
-
Исправление ошибки: исправлено переполнение целых чисел в
Date.parse().
Изменения в njs 0.8.4
Дата выпуска: 16 апреля 2024 г.
Модули nginx:
-
Новая функция: можно установить заголовок
Serverдля исходящего заголовка. -
Улучшение: валидация аргументов URI и args в
r.subrequest(). -
Улучшение: проверка на дублирование переменных js_set.
-
Исправление ошибки: исправлен метод
clear()общего словаря без таймаута, добавленного в 0.8.3. -
Исправление ошибки: исправлен метод
r.send()общего словаря без таймаута с аргументомBuffer.
Ядро:
-
Новая функция: добавлена поддержка движка
QuickJSв командной строке. -
Исправление ошибки: исправлен
atob()с неполнымиbase64строками.
Изменения в njs 0.8.3
Дата выпуска: 07 февраля 2024 г.
Модули nginx:
-
Исправление ошибки: исправлен
Headers.set(). -
Исправление ошибки: исправлен js_set с
Bufferзначениями. -
Исправление ошибки: исправлен метод
clear()общего словаря, когда таймаут не указан. -
Исправление ошибки: исправлены статистические данные stub_status, когда js_periodic включён.
Ядро:
-
Исправление ошибки: исправлено построение с libxml2 2.12 и новее.
-
Исправление ошибки: исправлен конструктор
Dateдля переполнений и сNaNзначениями. -
Исправление ошибки: исправлено недополнение в
querystring.parse(). -
Исправление ошибки: исправлено потенциальное переполнение буфера в
String.prototype.match(). -
Исправление ошибки: исправлен разбор
for-inциклов. -
Исправление ошибки: исправлен разбор шестнадцатеричных, восьмеричных и двоичных литералов без цифр.
Изменения в njs 0.8.2
Дата выпуска: 24 октября 2023 г.
Модули nginx:
-
Новая функция: представлен объект console. Были добавлены следующие методы:
error(),info(),log(),time(),timeEnd(),warn(). -
Исправление ошибки: исправлена обработка ответа
HEADс большим Content-Length в API Fetch. -
Исправление ошибки: исправлен метод
items()общего словаря. -
Исправление ошибки: исправлен метод
delete()общего словаря.
Ядро:
-
Новая функция: расширен модуль
fs. Добавленfs.existsSync(). -
Исправление ошибки: исправлен модуль
xml. Была исправлена обработка исключений XML в методеxml.parse(). -
Исправление ошибки: исправлен
Regexp.prototype.exec()с глобальными регулярными выражениями и вводом Юникода.
Изменения в njs 0.8.1
Дата выпуска: 12 сентября 2023 г.
Модули nginx:
-
Новая функция: добавлена директива
js_periodicдля http и stream, которая позволяет указать обработчик JS для выполнения через равные промежутки времени. -
Новая функция: реализован метод
items()общего словаря. Метод возвращает все пары ключ-значение, которые не истекли. -
Исправление ошибки: исправлены методы
size()иkeys()общего словаря. -
Исправление ошибки: исправлена ошибочная ошибка в
r.internalRedirect(), добавленная в 0.8.0.
Ядро:
-
Исправление ошибки: исправлен неправильный порядок ключей в
Object.getOwnPropertyNames().
Изменения в njs 0.8.0
Дата выпуска: 06 июля 2023 г.
Модули nginx:
-
Изменение: удалён специальный режим обработки запрещённых заголовков в API Fetch, введённый в 0.7.10.
-
Изменение: удалены устаревшие с 0.5.0
r.requestBodyиr.responseBodyв модулеhttp. -
Изменение: выброс исключения в
r.internalRedirect()во время фильтрации в модулеhttp. -
Новая функция: добавлены глобальные свойства
nginx:ngx.build,ngx.conf_file_path,ngx.error_log_path,ngx.prefix,ngx.version,ngx.version_numberиngx.worker_id. -
Новая функция: добавлена директива
js_shared_dict_zoneдля http и stream, которая позволяет объявлять словарь, общий для рабочих процессов. -
Новая функция: добавлены глобальные методы и свойства
nginx.sharedдля работы с общими словарями. -
Улучшение: добавлены опции компиляции для отключения модулей njs. Например, для отключения кода, связанного с libxslt:
NJS_LIBXSLT=NO ./configure .. --add-module=/path/to/njs/module
-
Исправление ошибки: исправлен установщик
r.statusпри фильтрации в модулеhttp. -
Исправление ошибки: исправлена установка заголовка Location в модуле
http.
Ядро:
-
Изменение: нативные методы предоставляются с аргументом
retval. Это изменение нарушает совместимость с C-расширением для njs, требующим модификации кода. -
Изменение: были удалены несовместимые устаревшие методы String. Следующие методы были удалены:
String.bytesFrom(),String.prototype.fromBytes(),String.prototype.fromUTF8(),String.prototype.toBytes(),String.prototype.toUTF8(),String.prototype.toString(encoding). -
Изменение: удалена поддержка компиляции с GNU readline.
-
Функция: добавлены методы, соответствующие ES13:
Array:Array.from(),Array.prototype.toSorted(),Array.prototype.toSpliced(),Array.prototype.toReversed(). -
Функция: добавлены методы, соответствующие ES13:
TypedArray:%TypedArray%.prototype.toSorted(),%TypedArray%.prototype.toSpliced(),%TypedArray%.prototype.toReversed(). -
Функция: добавлены свойства
CryptoKeyв API WebCrypto. Были добавлены следующие свойства:algorithm,extractable,type,usages. -
Исправление ошибки: исправлена ошибка
retvalвсrypto.getRandomValues(). -
Исправление ошибки: исправлена оценка вычисляемых имён свойств с функциями-выражениями.
-
Исправление ошибки: исправлено неявное имя для функции-выражения, объявленной в массивах.
-
Исправление ошибки: исправлено разбор
for-inциклов. -
Исправление ошибки: исправлена обработка
Date.parse()с форматом ISO-8601 и часовым смещением UTC.
Изменения в njs 0.7.12
Дата выпуска: 10 апреля 2023
Модули nginx:
-
Исправление ошибки: исправлен конструктор
Headers()в API Fetch.
Ядро:
-
Функция: добавлен метод
Hash.copy()в модуль crypto. -
Функция: добавлен модуль zlib.
-
Улучшение: добавлена поддержка
export {name as default}оператора. -
Исправление ошибки: исправлен конструктор
Numberв соответствии со спецификацией.
Изменения в njs 0.7.11
Дата выпуска: 09 марта 2023
Модули nginx:
-
Исправление ошибки: добавлены недостающие ссылки с libxml2 для динамического модуля. Ошибка была введена в 0.7.10.
Ядро:
-
Функция: добавлен API XMLNode для изменения XML-документов.
-
Изменение: удалена
XML_PARSE_DTDVALIDво время разбора XML-документа из-за соображений безопасности. Проблема возникла в версии 0.7.10. При включённойXML_PARSE_DTDVALID, libxml2 анализирует и выполняет внешние сущности, присутствующие внутри XML-документа. -
Исправление ошибки: исправлена детекция
awaitв аргументах. -
Исправление ошибки: исправлена выгрузка экземпляра
Error()при отсутствии примитивного типа для свойства “name”. -
Исправление ошибки: исправлена выгрузка экземпляра массива с свойством
getter. -
Исправление ошибки: исправлена
njs_object_property()сNJS_WHITEOUTсвойствами. -
Исправление ошибки: исправлена выгрузка экземпляра
funcс “name” как геттером. -
Исправление ошибки: исправлено присоединение стека к объекту ошибки.
-
Исправление ошибки: исправлена
String.prototype.replace()с заменой, содержащей “$'”, “$`”.
Изменения в njs 0.7.10
Дата выпуска: 07 февраля 2023
Модули nginx:
-
Функция: добавлены конструкторы
Request,ResponseиHeadersв API Fetch. -
Исправление ошибки: исправлена обработка обратного вызова nginx-логгера для вызовов в основном процессе.
Ядро:
-
Функция: добавлена поддержка сигналов в командной строке.
-
Функция: добавлен модуль
xmlдля работы с XML-документами. -
Функция: расширена поддержка симметричных и асимметричных ключей в WebCrypto. В частности, добавлен формат
JWKдляimportKey(). -
Функция: расширена поддержка симметричных и асимметричных ключей в API WebCrypto. В частности, добавлен формат
JWKдляimportKey(). Также реализованыgenerateKey()иexportKey(). -
Функция: добавлено
String.prototype.replaceAll(). -
Исправление ошибки: исправлена обработка ошибок синтаксиса условных операторов
for(expr1;. -
Исправление ошибки: исправлена обработка
Object.values()иObject.entries()с внешними объектами. -
Исправление ошибки: исправлена
RegExp.prototype[@@replace]().
Изменения в njs 0.7.9
Дата выпуска: 17 ноября 2022
Модули nginx:
-
Исправление ошибки: исправлена повторная инициализация прототипа ответа
Fetch. Когда по крайней мере одна директиваjs_importбыла объявлена как в HTTP, так и в Stream,ngx.fetch()возвращал неподходящий ответ в Stream. Ошибка была введена в 0.7.7.
Ядро:
-
Исправление ошибки: исправлена
String.prototype.replace(re)еслиre.exec()возвращает массив без плоской структуры. -
Исправление ошибки: исправлена
Array.prototype.fill()когдаstartобъект меняетthis. -
Исправление ошибки: исправлено описание методов
fs.mkdir()иfs.rmdir(). -
Исправление ошибки: исправлена
%TypedArray%.prototype.set(s)когдаsэлемент изменяетthis. -
Исправление ошибки: исправлена
Array.prototype.splice(s,d)когдаdизменяет размерthisво время выполнения eval. -
Исправление ошибки: исправлен цикл
for-inс выражениями слева и справа.
Изменения в njs 0.7.8
Дата выпуска: 25 октября 2022
Модули nginx:
-
Функция: добавлена директива js_preload_object.
-
Функция: добавлено свойство
ngx.conf_prefix. -
Функция: добавлены
s.sendUpstream()иs.sendDownstream()в модуль stream. -
Функция: добавлена поддержка метода
HEADв API Fetch. -
Улучшение: улучшена поддержка обратного вызова
asyncдляs.send()в модуле stream.
Ядро:
-
Функция: добавлено свойство
nameдля объекта функции. -
Функция: добавлен объект
njs.memoryStats. -
Исправление ошибки: исправлена
String.prototype.trimEnd()с использованием строки unicode. -
Исправление ошибки: исправлена
Object.freeze()с быстрыми массивами. -
Исправление ошибки: исправлена
Object.defineProperty()с быстрыми массивами. -
Исправление ошибки: исправлен токен
asyncкак имя свойства объекта. -
Исправление ошибки: исправлена инструкция задания свойства, когда ключ изменяет базовую привязку.
-
Исправление ошибки: исправлены сложные присваивания.
-
Исправление ошибки: исправлена обработка необработанных отклонений промисов.
-
Исправление ошибки: исправлена переменная окружения process.env при наличии дублируемых переменных.
-
Исправление ошибки: исправлена детекция двойного объявления в модулях.
-
Исправление ошибки: исправлены вызовы связанных функций в соответствии со спецификацией.
-
Исправление ошибки: исправлен метка break для
ifоператора. -
Исправление ошибки: исправлены метки пустых операторов.
Изменения в njs 0.7.7
Дата выпуска: 30 августа 2022
Модули nginx:
-
Функция: расширены контексты конфигурации nginx, где можно указать директивы js.
-
HTTP: разрешены директивы js_import, js_path, js_set и js_var в контекстах
serverиlocation. Директивы js_content, js_body_filter и js_header_filter разрешены в контексте if. -
Stream: разрешены директивы js_import, js_path, js_set и js_var в контексте
server.
-
-
Функция: добавлено свойство
r.internal. -
Исправление ошибки: исправлено чтение тела ответа в API Fetch.
-
Исправление ошибки: исправлен js_fetch_timeout в stream.
-
Исправление ошибки: исправлена утечка сокета с таймаутом
0fetch.
Ядро:
-
Функция: расширенный
fsмодуль. Добавленыfs.openSync(),fs.promises.open(),fs.fstatSync(),fs.readSync(),fs.writeSync().Реализованы следующие свойства
FileHandle:fd,read(),stat(),write(),close(). -
Исправление ошибки: исправлены
parseInt(),parseFloat(),Symbol.for()без аргументов.
Изменения в njs 0.7.6
Дата выпуска: 19 июля 2022
Модули nginx:
-
Функция: улучшен объект
r.args{}. Добавлена поддержка нескольких аргументов с одинаковым ключом. Добавлена чувствительность к регистру ключей. Ключи и значения теперь декодируются по процентам. -
Исправление ошибки: исправлен метод-сеттер
r.headersOut{}для специальных заголовков.
Ядро:
-
Функция: добавлены
Symbol.for()иSymbol.keyfor(). -
Исправление ошибки: исправлены большие не десятичные литералы.
-
Исправление ошибки: исправлено обрезание аргументов Unicode в
parseInt(). -
Исправление ошибки: исправлена инструкция
breakв блокеtry-catch. -
Исправление ошибки: исправлена декларация функции
asyncв CLI.
Изменения в njs 0.7.5
Дата выпуска: 21 июня 2022
Модули nginx:
-
Изменение: адаптация к изменениям в структурах заголовков nginx.
-
Исправление ошибки: исправлены специальные геттеры
r.headersOut{}, когда значение отсутствует. -
Изменение: возвращается значение undefined вместо пустой строки для
Content-Typeпри отсутствии заголовка.
Ядро:
-
Исправление ошибки: исправлен захват исключения, брошенного ожидающей функцией.
-
Исправление ошибки: исправлена инициализация значения функции.
-
Исправление ошибки: исправлен интерпретатор, когда await завершается с ошибкой.
-
Исправление ошибки: исправлен конструктор typed-array, когда исходный массив изменяется во время итерации.
-
Исправление ошибки: исправлен
String.prototype.replace()с байтовыми строками. -
Исправление ошибки: исправлены шаблонные литералы, генерирующие байтовые строки.
-
Исправление ошибки: исправлена итерация массива с разреженными массивами.
-
Исправление ошибки: исправлено освобождение памяти при преобразовании плоского массива в медленный массив.
-
Исправление ошибки: правильная обработка
NJS_DECLINEвpromiseнативных функциях. -
Исправление ошибки: исправлена работа с объектом-подобным массиву в
Promise.all()и родственных функциях.
Изменения в njs 0.7.4
Дата выпуска: 24 мая 2022
Модули nginx:
-
Функция: добавлены расширенные директивы для настройки Fetch API. Следующие директивы были добавлены для http и stream:
-
Изменение:
r.internalRedirect()теперь принимает экранированные URI. -
Исправление ошибки: исправлено разбор Response с более чем 8 заголовками в Fetch API.
Ядро:
-
Функция: добавлено свойство
njs.version_number. -
Функция: добавлена совместимость с BoringSSL для WebCrypto API.
-
Исправление ошибки: исправлен
Array.prototype.sort()при изменении размера массива в компараторе. -
Исправление ошибки: исправлен
Array.prototype.slice()с медленным аргументомthis. -
Исправление ошибки: исправлены методы агрегирования конструктора
Promiseс объектом, подобным массиву. -
Исправление ошибки: исправлен
String.prototype.lastIndexOf()с строкой Unicode в качествеthis. -
Исправление ошибки: исправлен
JSON.parse()при предоставлении функцииreviver. -
Исправление ошибки: исправлен
Object.defineProperty()при предоставлении рекурсивного описателя. -
Исправление ошибки: исправлен
Array.prototype.fill()для typed-массивов. -
Исправление ошибки: сделана неизменяемой привязка выражения функции в соответствии со спецификациями.
-
Исправление ошибки: исправлена повторная декларация специальных свойств в
Object.defineProperty().
Изменения в njs 0.7.3
Дата выпуска: 12 апреля 2022
Ядро:
-
Функция: добавлена поддержка обратного вызова для разрешения модулей. Эта функция позволяет хост-среде управлять тем, как загружаются импортированные модули.
-
Исправление ошибки: исправлены трассировки стека при обходе импортированных пользовательских модулей.
-
Исправление ошибки: исправлен
Array.prototype.concat()когдаthisявляется медленным массивом. -
Исправление ошибки: исправлена выделение фрейма из ожидающего фрейма.
-
Исправление ошибки: исправлена выделение больших массивов литералов.
-
Исправление ошибки: исправлен интерпретатор, когда преобразование
toStringзавершается ошибкой.
Изменения в njs 0.7.2
Дата выпуска: 25 января 2022
Ядро:
-
Исправление ошибки: исправлен
Array.prototype.join()при изменении массива во время итерации. -
Исправление ошибки: исправлен
Array.prototype.slice()при изменении массива во время итерации. -
Исправление ошибки: исправлен
Array.prototype.concat()при изменении массива во время итерации. -
Исправление ошибки: исправлен
Array.prototype.reverse()при изменении массива во время итерации. -
Исправление ошибки: исправлен
Buffer.concat()с подмассивами. Спасибо Sylvain Etienne. -
Исправление ошибки: исправлена путаница типов при разрешении обещаний.
-
Исправление ошибки: исправлен
Function.prototype.apply()с большими аргументами массива. -
Исправление ошибки: исправлены рекурсивные вызовы функции
async. -
Исправление ошибки: исправлена повторная декларация функции. Ошибка была введена в 0.7.0.
Изменения в njs 0.7.1
Дата выпуска: 28 декабря 2021
Модули nginx:
-
Изменение: директива js_include, устаревшая с 0.4.0, была удалена.
-
Изменение: код, специфичный для PCRE/PCRE2, был перемещен в модули. Это гарантирует, что njs использует ту же библиотеку RegExp, что и nginx.
Ядро:
-
Исправление ошибки: исправлены
decodeURI()иdecodeURIComponent()с невалидными байтовыми строками. Ошибка была введена в 0.4.3. -
Исправление ошибки: исправлена ошибка heap-use-after-free в
awaitфрейме. Ошибка была введена в 0.7.0. -
Исправление ошибки: исправлены методы WebCrypto
sign()иverify()с OpenSSL 3.0. -
Исправление ошибки: исправлено выбрасывание исключений, когда поиск RegExp не удался. Ошибка была введена в 0.1.15.
-
Исправление ошибки: исправлен захват исключения, брошенного в
tryблоке функцииasync. Ошибка была введена в 0.7.0. -
Исправление ошибки: исправлена работа функции
asyncв синхронном контексте. Ошибка была введена в 0.7.0. -
Исправление ошибки: исправлена повторная декларация функции в CLI при включенном интерактивном режиме. Ошибка была введена в 0.6.2.
-
Исправление ошибки: исправлен оператор
typeofс объектомDataView. -
Исправление ошибки: устранена утечка информации в
Buffer.from().
Изменения в njs 0.7.0
Дата выпуска: 19 октября 2021
Модули nginx:
-
Функция: Добавлена поддержка HTTPS для Fetch API.
-
Функция: Добавлено метод
setReturnValue()для http и stream.
Ядро:
-
Функция: реализована
Async/Awaitреализация. -
Функция: добавлена реализация WebCrypto API.
-
Исправление ошибки: исправлено копирование замыканий для объявленных функций. Ошибка была введена в 0.6.0.
-
Исправление ошибки: исправлена необработанная
promiseотмена в обработчиках событий. -
Исправление ошибки: исправлен геттер Response.headers в Fetch API.
Изменения в njs 0.6.2
Дата выпуска: 31 августа 2021
Модули nginx:
-
Исправление ошибки: исправлена высокая загрузка ЦП, когда
js_filterзарегистрирован в обоих направлениях.
Ядро:
-
Функция: реализована
AggregateErrorреализация. -
Функция: добавлены оставшиеся методы конструктора
Promise. Следующие методы были добавлены:Promise.all(),Promise.allSettled(),Promise.any(),Promise.race(). -
Улучшение: удалена рекурсия из генератора кода.
-
Исправление ошибки: исправлен разбор параметров rest без привязки идентификатора.
-
Исправление ошибки: исправлен обратный вызов resolve/reject для
Promise.prototype.finally(). -
Исправление ошибки: исправлен
%TypedArray%.prototype.join()с отсоединенным буфером. -
Исправление ошибки: исправлена утечка памяти в интерактивной оболочке.
Изменения в njs 0.6.1
Дата выпуска: 29 июня 2021
-
Исправление ошибки: исправлен
RegExpBuiltinExec()с регулярными выражениями только UTF-8. Ошибка была введена в 0.4.2. -
Исправление ошибки: исправлен разбор объявления export default с выражениями без присваивания. Спасибо Artem S. Povalyukhin.
Изменения в njs 0.6.0
Дата выпуска: 15 июня 2021
Ядро:
-
Функция: добавлена поддержка объявления
letиconst. -
Функция: добавлена
RegExp.prototype[Symbol.split]. -
Функция: добавлена поддержка флага sticky для RegExp.
-
Исправление ошибки: исправлена ошибка переполнения буфера кучи в
String.prototype.lastIndexOf(). -
Исправление ошибки: исправлено
RegExp.prototype.test()в соответствии со спецификацией. -
Исправление ошибки: исправлено
String.prototype.split()в соответствии со спецификацией. -
Исправление ошибки: исправлена ошибка использования неинициализированного значения при отслеживании отклоненных промисов.
-
Исправление ошибки: исправлено
njs.dump()для объектов с циклическими ссылками.
Изменения в njs 0.5.3
Дата выпуска: 30 марта 2021 г.
Модули nginx:
Изменения в njs 0.5.2
Дата выпуска: 09 марта 2021 г.
Модули nginx:
-
Функция: добавлена директива
js_body_filter. -
Функция: введён свойство
s.statusдля объекта Сессии потока.
Ядро:
-
Функция: добавлена поддержка обратного вызова
njs.on(exit) . -
Исправление ошибки: исправлена повторная переиспользования описателя свойства для объектов, не допускающих расширения. Благодарим Артема С. Повалюхина.
-
Исправление ошибки: исправлены
Object.freeze()и аналогичные в соответствии со спецификацией. Благодарим Артема С. Повалюхина. -
Исправление ошибки: исправлена ошибка в режиме командной строки
Function(). -
Исправление ошибки: исправлена итерация
for-inзначений массива с типом. Благодарим Артема С. Повалюхина.
Изменения в njs 0.5.1
Дата выпуска: 16 февраля 2021 г.
Модули nginx:
-
Функция: введена функция
ngx.fetch(), реализующая API Fetch.Реализованы следующие свойства и методы объекта
Response:arrayBuffer(),bodyUsed,json(),headers,ok,redirect,status,statusText,text(),type,url.Примечательные ограничения: поддерживается только схема
http://, перенаправления не обрабатываются.В сотрудничестве с 洪志道 (Hong Zhi Dao).
-
Функция: добавлена директива
js_header_filter. -
Исправление ошибки: исправлена обработка буферизованных данных в фильтре тела в модуле stream.
Ядро:
-
Исправление ошибки: исправлен обход безопасного режима в конструкторе
Function. -
Исправление ошибки: исправлено
Date.prototype.toISOString()с неверными значениями даты.
Изменения в njs 0.5.0
Дата выпуска: 01 декабря 2020 г.
Модули nginx:
-
Функция: введён глобальный объект
ngx.Были добавлены следующие методы:
Были добавлены следующие свойства:
-
ngx.INFO,ngx.WARN,ngx.ERR.
-
-
Функция: добавлена поддержка объекта
Buffer, где ожидается строка. -
Функция: добавлена версия Buffer существующих свойств.
Были добавлены следующие свойства:
-
r.requestBuffer(r.requestBody),r.responseBuffer(r.responseBody),r.rawVariables(r.variables),s.rawVariables(s.variables).
Были добавлены следующие события в модуле stream:
-
upstream(загрузка),downstream(скачивание).
-
-
Улучшение: добавлены псевдонимы к существующим свойствам.
Были добавлены следующие свойства:
-
Улучшение: выброс исключения в
r.internalRedirect()для подзапроса. -
Исправление ошибки: исправлен промис
r.subrequest()с перенаправлениемerror_page. -
Исправление ошибки: исправлена обработка событий
promise.
Ядро:
-
Функция: добавлены определения
TypeScriptдля встроенных модулей. Благодарим Якуба Жирутку. -
Функция: отслеживание отклонения необработанных
promise. -
Функция: добавлена первоначальная поддержка итератора. Благодарим Артема С. Повалюхина.
-
Улучшение: переработаны определения
TypeScript. Благодарим Якуба Жирутку. -
Улучшение: добавлена забытая поддержка
Object.prototype.valueOf()вBuffer.from(). -
Исправление ошибки: исправлена ошибка использования кучи после освобождения в
JSON.parse(). -
Исправление ошибки: исправлена ошибка использования кучи после освобождения в
JSON.stringify(). -
Исправление ошибки: исправлено
JSON.stringify()для массивов, размер которых изменяется с помощью геттеров. -
Исправление ошибки: исправлено переполнение буфера кучи для
RegExp.prototype[Symbol.replace]. -
Исправление ошибки: исправлено возвращаемое значение для функций
Buffer.prototype.write*. -
Исправление ошибки: исправлена
querystring.stringify(). Благодарим Артема С. Повалюхина. -
Исправление ошибки: исправлен обработчик исключений для
Promise.prototype.finally(). -
Исправление ошибки: исправлена
querystring.parse().
Изменения в njs 0.4.4
Дата выпуска: 29 сентября 2020 г.
Модули nginx:
-
Исправление ошибки: исправлена слияние местоположений.
-
Исправление ошибки: исправлено
r.httpVersionдля HTTP/2.
Ядро:
-
Функция: добавлена поддержка числовых разделителей (ES12).
-
Функция: добавлены оставшиеся методы для
%TypedArray%.prototype. Добавлены следующие методы:every(),filter(),find(),findIndex(),forEach(),includes(),indexOf(),lastIndexOf(),map(),reduce(),reduceRight(),reverse(),some(). -
Функция: добавлены оставшиеся методы
%TypedArray%. Добавлены следующие методы:from(),of(). -
Функция: добавлен объект
DataView. -
Функция: добавлена реализация объекта
Buffer. -
Функция: добавлена поддержка
ArrayBufferвTextDecoder.prototype.decode() -
Функция: добавлена поддержка объекта
Bufferв методыcrypto. -
Функция: добавлена поддержка объекта
Bufferв методыfs. -
Изменение:
Hash.prototype.digest()иHmac.prototype.digest()теперь возвращают экземплярBufferвместо строки байтов, если кодировка не указана. -
Изменение:
fs.readFile()и аналогичные теперь возвращают экземплярBufferвместо строки байтов, если кодировка не указана. -
Исправление ошибки: исправлен обработчик свойства функции
prototypeпри установке. -
Исправление ошибки: исправлен обработчик свойства функции
constructorпри установке. -
Исправление ошибки: исправлено
String.prototype.indexOf()для строк байтов. -
Исправление ошибки: исправлено
RegExpBuiltinExec()с глобальным флагом и строками байтов. -
Исправление ошибки: исправлено
RegExp.prototype[Symbol.replace]когда значение замены — функция. -
Исправление ошибки: исправлен
TextDecoder.prototype.decode()с ненулевым смещениемTypedArray.
Изменения в njs 0.4.3
Дата выпуска: 11 августа 2020 г.
Ядро:
-
Функция: добавлен модуль
Query String. -
Функция: улучшен
fs.mkdir()для поддержки рекурсивного создания каталогов. Благодарим Артема С. Повалюхина. -
Функция: улучшен
fs.rmdir()для поддержки рекурсивного удаления каталогов. Благодарим Артема С. Повалюхина. -
Функция: введён декодер UTF-8 в соответствии со спецификацией кодирования WHATWG WHATWG.
-
Функция: добавлены реализации
TextDecoder()иTextEncoder(). -
Исправление ошибки: исправлена обработка оператора return без точки с запятой.
-
Исправление ошибки: исправлено
njs_number_to_int32()для платформ с big-endian. -
Исправление ошибки: исправлен юнит-тест на платформах с big-endian.
-
Исправление ошибки: исправлена обработка regexp-литералов с символами “
=”. -
Исправление ошибки: исправлены пре/пост-инкремент/декремент в операциях присваивания.
Изменения в njs 0.4.2
Дата выпуска: 07 июля 2020 г.
Ядро:
-
Функция: добавлена
RegExp.prototype[Symbol.replace]. -
Функция: представлен отслеживающий стек ошибок на уровне строки.
-
Функция: добавлена
%TypedArray%.prototype.sort(). -
Функция: расширен модуль
fs. Добавленыmkdir(),readdir(),rmdir()и аналогичные функции. -
Улучшение: рефакторинг парсера.
-
Исправление ошибки: исправлено описание API TypedScript для HTTP-заголовков.
-
Исправление ошибки: исправлено описание API TypedScript для типа
NjsByteString. -
Исправление ошибки: исправлено
String.prototype.repeat()в соответствии со спецификацией. -
Исправление ошибки: исправлено
String.prototype.replace()в соответствии со спецификацией. -
Исправление ошибки: исправлено разбор флагов для литералов regexp.
-
Исправление ошибки: исправлена генерация индексов для глобальных объектов в генераторе.
-
Исправление ошибки: исправлено
%TypedArray%.prototype.copyWithin()с ненулевым байтовым смещением. -
Исправление ошибки: исправлено
Array.prototype.splice()для разреженных массивов. -
Исправление ошибки: исправлено
Array.prototype.reverse()для разреженных массивов. -
Исправление ошибки: исправлено
Array.prototype.sort()для разреженных массивов.
Изменения в njs 0.4.1
Дата выпуска: 19 мая 2020 г.
Модули nginx:
-
Функция: добавлена поддержка многозначных заголовков в
r.headersIn{}. -
Функция: представлен API
raw headers:r.rawHeadersIn[]иr.rawHeadersOut[]. -
Функция: добавлено описание API на TypeScript.
Ядро:
-
Исправление ошибки: исправлено
Array.prototype.slice()для разреженных массивов.
Изменения в njs 0.4.0
Дата выпуска: 23 апреля 2020 г.
Модули nginx:
-
Функция: добавлена поддержка многозначных заголовков в
r.headersOut{}. -
Улучшение: улучшена итерация по
r.headersOut{}со специальными заголовками. -
Улучшение: улучшена итерация по
r.headersOut{}с дубликатами. -
Изменение: обработчик свойства
r.responseBodyтеперь возвращаетundefined, а не выбрасывает исключение, если тело ответа недоступно.
Ядро:
-
Функция: добавлена поддержка аргументов скрипта в командной строке.
-
Функция: преобразование внешних значений в нативные объекты JavaScript.
-
Исправление ошибки: исправлена ошибка обращения к NULL-указателю в обработчике свойства
__proto__. -
Исправление ошибки: исправлена обработка отсутствия символа новой строки в конце скрипта.
-
Исправление ошибки: исправлен конструктор
RegExp()с пустым шаблоном и ненулевыми флагами. -
Исправление ошибки: исправлена
String.prototype.replace()при возвращении функцией нестрокового значения. -
Исправление ошибки: исправлено чтение псевдофайлов в
fs.
Изменения в njs 0.3.9
Дата выпуска: 03 марта 2020 г.
Модули nginx:
-
Функция: добавлена поддержка открепленного режима для
r.subrequest(). Ответы на открепленные подзапросы игнорируются. В отличие от обычных подзапросов, открепленный подзапрос может быть создан внутри обработчика переменной.
Ядро:
-
Функция: добавлена API
promisesдля модуляfs. Благодарим Артема С. Повальюхина. -
Функция: расширен модуль
fs. Добавленыaccess(),symlink(),unlink(),realpath()и аналогичные функции. Благодарим Артема С. Повальюхина. -
Улучшение: введены более эффективные обычные массивы с точки зрения памяти.
-
Улучшение: рефакторинг лексера.
-
Исправление ошибки: исправлена сортировка родных функций в стеке отслеживания ошибок.
-
Исправление ошибки: исправлены вызовы обратных функций в модуле
fs. Благодарим Артема С. Повальюхина. -
Исправление ошибки: исправлено
Object.getOwnPropertySymbols(). -
Исправление ошибки: исправлена ошибка переполнения буфера кучи в
njs_json_append_string(). -
Исправление ошибки: исправлены
encodeURI()иdecodeURI()в соответствии со спецификацией. -
Исправление ошибки: исправлено
Number.prototype.toPrecision(). -
Исправление ошибки: исправлена обработка аргумента space в
JSON.stringify(). -
Исправление ошибки: исправлено
JSON.stringify()с объектамиNumber()иString(). -
Исправление ошибки: исправлен Unicode-эскэйп в
JSON.stringify()в соответствии со спецификацией. -
Исправление ошибки: исправлен импорт неродных модулей. Благодарим 洪志道 (Hong Zhi Dao).
-
Исправление ошибки: исправлено
njs.dump()с экземпляромDate()в контейнере.
Изменения в njs 0.3.8
Дата выпуска: 21 января 2020 г.
Модули nginx:
-
Функция: добавлена поддержка
Promiseдляr.subrequest(). Если обратная функция не предоставлена,r.subrequest()возвращает обычный объектPromise, который разрешается в объект ответа подзапроса. -
Изменение: обработчик свойства
r.parentтеперь возвращаетundefined, а не выбрасывает исключение, если родительский объект недоступен.
Ядро:
-
Функция: добавлена поддержка
Promiseв соответствии со спецификацией, без:Promise.all(),Promise.allSettled(),Promise.race(). -
Функция: добавлена первоначальная поддержка Typed-массивов. Благодарим Tiago Natel de Moura.
-
Функция: добавлена поддержка
ArrayBuffer. Благодарим Tiago Natel de Moura. -
Функция: добавлена первоначальная поддержка
Symbol. Благодарим Артема С. Повальюхина. -
Функция: добавлена поддержка внешних объектов для
JSON.stringify(). -
Функция: добавлена
Object.is(). Благодарим Артема С. Повальюхина. -
Функция: добавлена
Object.setPrototypeOf(). Благодарим Артема С. Повальюхина. -
Функция: представлен оператор нулевого слияния.
-
Исправление ошибки: исправлено
Object.getPrototypeOf()в соответствии со спецификацией. -
Исправление ошибки: исправлено
Object.prototype.valueOf()в соответствии со спецификацией. -
Исправление ошибки: исправлено
JSON.stringify()с непечатаемыми значениями и функцией replacer. -
Исправление ошибки: исправлен оператор
inв соответствии со спецификацией. -
Исправление ошибки: исправлено
Object.defineProperties()в соответствии со спецификацией. -
Исправление ошибки: исправлено
Object.create()в соответствии со спецификацией. Благодарим Артема С. Повальюхина. -
Исправление ошибки: исправлено
Number.prototype.toString(radix)при включенном fast-math. -
Исправление ошибки: исправлены свойства экземпляров
RegExp(). -
Исправление ошибки: исправлен импорт segfault. Благодарим 洪志道 (Hong Zhi Dao).
Изменения в njs 0.3.7
Дата выпуска: 19 ноября 2019 г.
Модули nginx:
-
Улучшение: рефакторинг итерации по внешним объектам.
Ядро:
-
Функция: добавлена
Object.assign(). -
Функция: добавлена
Array.prototype.copyWithin(). -
Функция: добавлена поддержка меток в
console.time(). -
Изменение: удалена
console.help()из командной строки. -
Улучшение: конструкторы и объекты верхнего уровня перемещены в глобальный объект.
-
Улучшение: проверка аргументов для скрипта конфигурации.
-
Улучшение: рефакторинг методов JSON.
-
Исправление ошибки: исправлена ошибка переполнения буфера кучи в функции
njs_array_reverse_iterator(). Были затронуты следующие функции:Array.prototype.lastIndexOf(),Array.prototype.reduceRight(). -
Исправление ошибки: исправлено слот
[[Prototype]]объектаNativeErrors. -
Исправление ошибки: исправлены свойства
NativeError.prototype.message. -
Исправление ошибки: добавлено преобразование значения
thisв объект вArray.prototype functions. -
Исправление ошибки: исправлен итератор для функций
Array.prototype.find()иArray.prototype.findIndex(). -
Исправление ошибки: исправлены
Array.prototype.includes()иArray.prototype.join()с аргументомundefined. -
Исправление ошибки: исправлено свойство
constructorобъектовHashиHmac. -
Исправление ошибки: исправлено свойство
__proto__для геттеров и сеттеров. -
Исправление ошибки: исправлен вывод строки объекта
Date. -
Исправление ошибки: исправлена обработка аргументов
NaNи-0вMath.min()иMath.max(). -
Исправление ошибки: исправлено
Math.round()в соответствии со спецификацией. -
Исправление ошибки: переопределены функции
boundв соответствии со спецификацией.
Изменения в njs 0.3.6
Дата выпуска: 22 октября 2019 г.
Модули nginx:
-
Улучшение: получение специальных заголовков из
r.headersIn{}.
Ядро:
-
Функция: добавлена поддержка
Function(). -
Функция: добавлен
Number.prototype.toFixed(). -
Функция: добавлен
Number.prototype.toPrecision(). -
Функция: добавлен
Number.prototype.toExponential(). -
Улучшение: свойство
prototypeэкземпляров функций теперь можно изменять. -
Улучшение: ограничение глубины рекурсии во время компиляции.
-
Улучшение: перемещение глобальных функций в глобальный объект.
-
Исправление ошибки: исправлена мутация прототипов для объектов-литералов.
-
Исправление ошибки: исправлен переполнение буфера кучи при парсинге литералов regexp.
-
Исправление ошибки: исправлено переполнение целых чисел при парсинге экспоненты числовых литералов.
-
Исправление ошибки: исправлен
parseFloat(). -
Исправление ошибки: исправлены функции
Array.prototypeв соответствии со спецификацией. Были исправлены следующие функции:every,includes,indexOf,filter,find,findIndex,forEach,lastIndexOf,map,pop,push,reduce,reduceRight,shift,some,unshift. -
Исправление ошибки: исправлено обработку дескрипторов доступа в
Object.freeze(). -
Исправление ошибки: исправлен
String.prototype.replace()при первом аргументе, который не является строкой. -
Исправление ошибки: исправлена проблема использования стека после области видимости в
Array.prototype.map(). -
Исправление ошибки: формат
Date.prototype.toUTCString()был выровнен с ES9. -
Исправление ошибки: исправлено переполнение буфера в
Number.prototype.toString(radix). -
Исправление ошибки: исправлен
Regexp.prototype.test()для регулярных выражений с обратными ссылками. -
Исправление ошибки: исправлен
Array.prototype.map()для объектов с несуществующими значениями. -
Исправление ошибки: исправлены
Array.prototype.pop()иshift()для разреженных объектов. -
Исправление ошибки: исправлен
Date.UTC()в соответствии со спецификацией. -
Исправление ошибки: исправлен конструктор
Date()в соответствии со спецификацией. -
Исправление ошибки: исправлен тип
Date.prototype. Благодарим Artem S. Povalyukhin. -
Исправление ошибки: исправлен
Date.prototype.setTime(). Благодарим Artem S. Povalyukhin. -
Исправление ошибки: исправлено ожидаемое количество аргументов по умолчанию для встроенных функций.
-
Исправление ошибки: исправлены свойства
callerиargumentsэкземпляра функции. Благодарим Artem S. Povalyukhin.
Изменения в njs 0.3.5
Дата выпуска: 15 августа 2019
Ядро:
-
Исправление ошибки: исправлен импорт модулей с использованием
require(). Ошибка была внесена в 0.3.4. -
Исправление ошибки: исправлен
[[SetPrototypeOf]].
Изменения в njs 0.3.4
Дата выпуска: 13 августа 2019
Ядро:
-
Функция: добавлены сокращенные методы
Objectи имена вычисленных свойств. Благодарим 洪志道 (Hong Zhi Dao) и Artem S. Povalyukhin. -
Функция: добавлена поддержка литералов getter/setter. Благодарим 洪志道 (Hong Zhi Dao) и Artem S. Povalyukhin.
-
Функция: добавлена
fs.renameSync(). -
Функция: добавлены
String.prototype.trimEnd()иString.prototype.trimStart(). -
Улучшение: добавлена поддержка анализатора памяти.
-
Улучшение: таблицы кодов Unicode обновлены до версии 12.1.
-
Улучшение: добавлена валидация UTF8 для строковых литералов.
-
Исправление ошибки: исправлено чтение файлов нулевого размера в
fs.readFileSync(). -
Исправление ошибки: расширен список разделителей пробелов в
String.prototype.trim(). -
Исправление ошибки: исправлено использование неинициализированного значения в
String.prototype.padStart(). -
Исправление ошибки: исправлен
String.prototype.replace()для$0и$&строки замены. -
Исправление ошибки: исправлен
String.prototype.replace()для строковых байтов с аргументом regex. -
Исправление ошибки: исправлена глобальная проверка в
String.prototype.replace()с аргументом regexp. -
Исправление ошибки: исправлен
Array.prototype.slice()для примитивных типов. -
Исправление ошибки: исправлено переполнение буфера кучи при импорте модуля.
-
Исправление ошибки: исправлен вывод escape-последовательностей символов UTF-8.
-
Исправление ошибки: исправлены
Object.values()иObject.entries()для общих объектов. -
Исправление ошибки: исправлен доступ к неинициализированной памяти в
String.prototype.match(). -
Исправление ошибки: исправлен
String.prototype.match()для строковых байтов с аргументом regex. -
Исправление ошибки: исправлен
Array.prototype.lastIndexOf()с неопределенными аргументами. -
Исправление ошибки: исправлен
String.prototype.substring()с пустой подстрокой. -
Исправление ошибки: исправлен недопустимый доступ к памяти в
String.prototype.substring(). -
Исправление ошибки: исправлен
String.fromCharCode()для кодовых точек больше65535иNaN. -
Исправление ошибки: исправлены
String.prototype.toLowerCase()иString.prototype.toUpperCase(). -
Исправление ошибки: исправлен конструктор
Error()без аргументов. -
Исправление ошибки: исправлен оператор
inдля значений с дескрипторами доступа. -
Исправление ошибки: исправлен
Object.defineProperty()для свойств-дескрипторов, не являющихся boolean. -
Исправление ошибки: исправлен
Error.prototype.toString()для свойств строковых UTF8. -
Исправление ошибки: исправлен
Error.prototype.toString()с нестроковыми значениями дляnameиmessage.
Изменения в njs 0.3.3
Дата выпуска: 25 июня 2019
Модули nginx:
-
Улучшение: получение специальных заголовков ответа в
r.headersOut{}. -
Улучшение: работа с неизвестными методами в
r.subrequest(). -
Улучшение: добавлена поддержка null в качестве второго аргумента
r.subrequest(). -
Исправление ошибки: исправлена обработка пустой цепочки вывода в фильтре тела потока.
Ядро:
-
Функция: добавлена поддержка getter/setter свойств в режиме выполнения. Благодарим 洪志道 (Hong Zhi Dao) и Artem S. Povalyukhin.
-
Функция: добавлен глобальный объект
process. -
Функция: большинство встроенных свойств и методов теперь можно изменять.
-
Функция: добавлена общая реализация
Array.prototype.fill(). -
Исправление ошибки: исправлено переполнение целых чисел в
String.prototype.concat(). -
Исправление ошибки: исправлена установка свойств объекта.
-
Исправление ошибки: исправлен
Array.prototype.toString(). -
Исправление ошибки: исправлен
Date.prototype.toJSON(). -
Исправление ошибки: исправлено перезаписывание свойства "constructor" встроенных прототипов.
-
Исправление ошибки: исправлена обработка неверных пар суррогатов в строках.
-
Исправление ошибки: исправлена обработка неверных пар суррогатов в строках JSON.
-
Исправление ошибки: исправлено переполнение буфера кучи в
toUpperCase()иtoLowerCase(). -
Исправление ошибки: исправлен вывод одиноких закрывающих квадратных скобок в конструкторе
RegExp(). -
Исправление ошибки: исправлена обработка символов с нулевым байтом внутри строк шаблона RegExp.
-
Исправление ошибки: исправлен
String.prototype.toBytes()для ASCII строк. -
Исправление ошибки: исправлено истинностное значение чисел JSON в
JSON.parse(). -
Исправление ошибки: исправлено использование неинициализированного значения в
njs_string_replace_join(). -
Исправление ошибки: исправлен
parseInt('-0'). Благодарим Artem S. Povalyukhin.
Изменения в njs 0.3.2
Дата выпуска: 21 мая 2019
Ядро:
-
Функция: добавлена поддержка шаблонов строк. Благодарим 洪志道 (Hong Zhi Dao) и Artem S. Povalyukhin.
-
Функция: выполнение команды из аргументов командной строки.
-
Функция: добавлена поддержка объекта RegExp
groups(ES9). -
Функция: добавлена поддержка определения функций в блоках.
-
Функция: добавлена поддержка сборки с библиотекой GNU Readline.
-
Функция: настройка
length,nameи большинства встроенных методов. -
Функция: все свойства конструкторов теперь можно настраивать.
-
Исправление ошибки: исправлен
Regexp.prototype.exec()для регулярных выражений, использующих только Unicode. -
Исправление ошибки: исправлен
njs_vm_value_dump()для пустых строковых значений. -
Исправление ошибки: исправлен конструктор RegExp для аргументов значения regexp.
-
Исправление ошибки: исправлена обработка цепочки прототипов во время итерации по объекту.
-
Исправление ошибки: исправлено переполнение в
Array.prototype.concat(). -
Исправление ошибки: исправлен расчет длины для строки UTF-8 со специальными символами.
-
Исправление ошибки: исправлен парсинг пар суррогатов, представленных как UTF-16 escape-последовательности.
-
Исправление ошибки: исправлена обработка квантификатора "*" для
String.prototype.match(). -
Исправление ошибки: исправлен конструктор
Date()с одним аргументом. -
Исправление ошибки: исправлено расширение массивов.
-
Исправление ошибки: исправлено переполнение буфера кучи в
String.prototype.replace(). -
Исправление ошибки: исправлено переполнение буфера кучи в
String.prototype.lastIndexOf(). -
Исправление ошибки: исправлен парсинг литералов regexp с экранированным обратным слэшем и обратным слэшем в квадратных скобках.
-
Исправление ошибки: исправлены литералы regexp с одинокими закрывающими скобками.
-
Исправление ошибки: исправлен доступ к неинициализированной памяти в
Object.defineProperties(). -
Исправление ошибки: исправлена обработка квантификатора "*" для
String.prototype.replace(). -
Исправление ошибки: исправлен
Array.prototype.slice()для строк байтов с недопустимым UTF8. -
Исправление ошибки: исправлен
String.prototype.split()для строк байтов с недопустимым UTF8. -
Исправление ошибки: исправлена обработка пустых блочных операторов.
Изменения в njs 0.3.1
Дата выпуска: 16 апреля 2019
Ядро:
-
Функция: добавлена поддержка стрелочных функций. Благодарим 洪志道 (Hong Zhi Dao) и Artem S. Povalyukhin.
-
Функция: добавлена
Object.getOwnPropertyNames(). Благодарим Artem S. Povalyukhin. -
Функция: добавлена
Object.getOwnPropertyDescriptors(). Благодарим Artem S. Povalyukhin. -
Функция: атрибуты доступа
__proto__экземпляровObjectтеперь изменяемы. -
Функция: добавлена поддержка shebang в CLI.
-
Функция: добавлена поддержка выполнения в модульном режиме в CLI. В модульном режиме глобальные переменные недоступны.
-
Исправление ошибки: исправлена детекция editline.
-
Исправление ошибки: исправлена
Function.prototype.bind(). Благодарим 洪志道 (Hong Zhi Dao). -
Исправление ошибки: исправлена проверка дублирования параметров для функций. Благодарим 洪志道 (Hong Zhi Dao).
-
Исправление ошибки: исправлена декларация функции с тем же именем, что и переменная. Благодарим 洪志道 (Hong Zhi Dao).
-
Улучшение: код, связанный с парсингом объектов, переменных и функций, переработан. Благодарим 洪志道 (Hong Zhi Dao).
-
Улучшение: улучшен вывод больших значений в
console.log(). -
Улучшение: улучшен вывод строк в
console.log()в соответствии со спецификацией (без экранирования и кавычек). -
Улучшение: используется ES6 версия
ToInt32(),ToUint32(),ToLength().
Изменения в njs 0.3.0
Дата выпуска: 26 марта 2019
Модули nginx:
-
Изменение: вместо пустых строк для отсутствующих свойств в следующих объектах возвращается значение undefined:
r.args{},r.headersIn{},r.headersOut{},r.variables{},s.variables{}. -
Изменение: вместо вызова исключения для
r.requestBodyпри отсутствии тела запроса возвращается значение undefined. -
Исправление ошибки: исправлена ошибка при итерировании по
r.args{}при отсутствии значения в паре "ключ-значение".
Ядро:
-
Функция: добавлена начальная поддержка ES6 модулей. Поддерживаются операторы import и export по умолчанию. Благодарим 洪志道 (Hong Zhi Dao).
-
Функция: добавлена
Object.prototype.propertyIsEnumerable(). -
Функция: добавлена информация о имени файла и имени функции в выходные данные дизассемблера.
-
Исправление ошибки: исправлены повторные объявления функций в интерактивной оболочке. Благодарим 洪志道 (Hong Zhi Dao).
-
Исправление ошибки: исправлен парсинг литералов RegExp.
-
Исправление ошибки: исправлена установка длины UTF8 строки в
fs.readFileSync(). -
Исправление ошибки: исправлена
nxt_file_dirname()для путей без компоненты каталога.
Изменения в njs 0.2.8
Дата выпуска: 26 февраля 2019
Модули nginx:
-
Изменение: удалены устаревшие свойства HTTP запроса, упомянутые в 0.2.2.
-
Функция: добавлена поддержка операции удаления в
r.headersOut{}. -
Функция: добавлена поддержка установки переменных nginx.
-
Исправление ошибки: исправлена ошибка
r.subrequest()для пустого значения тела. -
Улучшение: установка специальных заголовков ответа в
r.headersOut{}.
Ядро:
-
Функция: добавлена поддержка меток.
-
Функция: добавлен метод
setImmediate(). -
Функция: добавлена поддержка сокращённых имён свойств для литералов объектов.
-
Исправление ошибки: исправлена
Function.prototype.bind(). -
Исправление ошибки: исправлен парсинг строковых литералов, содержащих символы новой строки.
-
Исправление ошибки: исправлен номер строки при сообщении об ошибках ссылки на переменную.
-
Исправление ошибки: исправлено создание длинных UTF8 строк.
-
Исправление ошибки: исправлена установка специальных заголовков ответа в
String.prototype.split()для Unicode строк. -
Исправление ошибки: исправлен переполнение буфера кучи в
String.prototype.split(). -
Исправление ошибки: исправлена
Array.prototype.fill(). Благодарим Artem S. Povalyukhin. -
Улучшение: код, связанный с вызовом функций, переработан. Благодарим 洪志道 (Hong Zhi Dao).
-
Улучшение: код, связанный с переменными, переработан. Благодарим 洪志道 (Hong Zhi Dao).
-
Улучшение: переработан парсер. Благодарим 洪志道 (Hong Zhi Dao).
-
Улучшение: вывод имён файлов в исключениях.
Изменения в njs 0.2.7
Дата выпуска: 25 декабря 2018
Ядро:
-
Функция: синтаксис rest параметров (деструктуризация не поддерживается). Благодарим Alexander Pyshchev.
-
Функция: добавлен метод
Object.entries(). -
Функция: добавлен метод
Object.values(). -
Улучшение: переработан и упрощён генератор кода.
-
Исправление ошибки: исправлена автоматическая вставка точки с запятой.
-
Исправление ошибки: исправлено выражение присваивания из составного присваивания.
-
Исправление ошибки: исправлено сравнение строк типа Byte и UTF8.
-
Исправление ошибки: исправлен тип переменной итерации в
for-inс массивами значений. -
Исправление ошибки: исправлено построение на платформах без librt.
-
Исправление ошибки: исправлены различные ошибки.
Изменения в njs 0.2.6
Дата выпуска: 27 ноября 2018
Ядро:
-
Функция: встроенные прототипы теперь изменяемы.
-
Функция: глобальный объект теперь изменяем.
-
Функция: методы
console.time()иconsole.timeEnd(). -
Функция: разрешены повторные объявления переменных и функций.
-
Функция: расширена совместимость со спецификацией
Object.defineProperty(). -
Функция: добавлен тихий режим для CLI для обработки простых выражений из стандартного ввода.
-
Функция: добавлен компактный вид трассировок для обработки переполнений стека.
-
Улучшение: улучшен текст различных исключений.
-
Исправление ошибки: исправлено обращение с значениями замыканий.
-
Исправление ошибки: исправлен оператор равенства для различных типов значений.
-
Исправление ошибки: исправлено обращение с ключевым словом
thisв различных областях видимости. -
Исправление ошибки: исправлено обращение с не-объектными значениями в
Object.keys(). -
Исправление ошибки: исправлен парсинг инструкции throw внутри инструкции
if. -
Исправление ошибки: исправлен парсинг новой строки после инструкции throw.
-
Исправление ошибки: исправлен парсинг инструкций в инструкции if без новой строки.
-
Исправление ошибки: исправлено переполнение размера
uint32_tвnjs_array_expand(). -
Исправление ошибки: исправлен оператор
typeofдля типаobject_value. -
Исправление ошибки: исправлены различные ошибки.
Изменения в njs 0.2.5
Дата выпуска: 30 октября 2018
Модули nginx:
-
Исправление ошибки: исправлено подсчёт ожидающих событий в модуле stream.
-
Исправление ошибки: исправлена
s.off()в модуле stream. -
Исправление ошибки: исправлена обработка блоков данных в
js_filterв модуле stream. -
Исправление ошибки: исправлены геттеры http
statusиcontentTypeв модуле http. -
Исправление ошибки: исправлены геттеры http response и parent в модуле http.
Ядро:
-
Функция: добавлена поддержка объекта arguments.
-
Функция: добавлена поддержка нецелых дробей.
-
Улучшение: обработка не-массивов значений в
Array.prototype.slice(). -
Исправление ошибки: исправлен установщик
Array.prototype.length. -
Исправление ошибки: исправлена
njs_array_alloc()для длины > 2**31. -
Исправление ошибки: обработка переполнения int в
njs_array_alloc()на 32-битных архитектурах. -
Исправление ошибки: исправлено сообщение об ошибке несовпадения размера кода.
-
Исправление ошибки: исправлен оператор delete в цикле.
-
Исправление ошибки: исправлена
Object.getOwnPropertyDescriptor()для сложных объектов (унаследованных отArrayиstringзначений). -
Исправление ошибки: исправлена
Object.prototype.hasOwnProperty()для свойств, не являющихся объектами. -
Исправление ошибки: исправлены различные ошибки.
Изменения в njs 0.2.4
Дата выпуска: 18 сентября 2018
Модули nginx:
-
Изменение: модуль stream переработан.
Новые методы и свойства:
s.on(),s.off(),s.allow(),s.done(),s.decline(),s.deny().Удалены свойства объекта Stream:
s.OK,s.ABORT,s.AGAIN,s.DECLINED,s.ERROR(заменены наs.allow(),s.done(),s.deny()).s.buffer(для чтения заменён аргументом data соответствующего колбэка, для записи используйтеs.send()).s.fromUpstream(заменён колбэком для соответствующего события).s.eof(заменён наflags.last).
Ядро:
-
Функция: добавлено
Function.prototype.length. -
Функция: введён режим песочницы.
-
Улучшение: добавлены строки исключений там, где это необходимо.
-
Улучшение: улучшен текст исключения при преобразовании примитивных типов.
-
Исправление: выброс
TypeErrorпри попытках изменить замороженные свойства. -
Исправление: исправлено
Object.defineProperty()для существующих свойств. -
Исправление: учёт атрибута enumerable при итерировании циклом for in.
-
Исправление: учёт атрибута writable для обработчиков свойств.
-
Исправление: исправлена обработка исключений в аргументах функции.
-
Исправление: исправлено
Object.prototype.toStringдля различных типов значений. -
Исправление: исправлен конструктор
Object()для аргументов типа объект. -
Исправление: исправлено сравнение объектов и строк.
-
Исправление: исправлено
String.slice()для аргументов undefined. -
Исправление: исправлены различные мелкие ошибки.
Изменения в njs 0.2.3
Дата выхода: 31 июля 2018
Модули nginx:
-
Исправление: создание подзапроса из объекта
Replyвызывало ошибку сегментации. -
Исправление: получение свойства родителя основного объекта HTTP-запроса вызывало ошибку сегментации.
Ядро:
-
Функция: добавлена красивая строковая форма представления значений.
-
Функция: корректно выводятся числа с плавающей точкой.
-
Функция: корректно парсится числа с плавающей точкой.
-
Функция: метод
String.bytesFrom()(декодированиеhex,base64,base64urlв строку байтов). -
Функция: методы
String.padStart()иString.padEnd(). -
Функция: добавлена поддержка двоичных литералов.
-
Улучшение: добавлена информация об ошибке токена при парсинге чисел.
-
Улучшение: разрешены прописные
Oв восьмеричных значениях. -
Улучшение: добавлена поддержка нескольких аргументов в
console.log(). -
Исправление: исправлено применение
call()к методам внешних значений. -
Исправление: исправлен оператор сложения, применённый к объекту.
-
Исправление: исправлена обработка исключений в
njs_vm_value_to_ext_string(). -
Исправление: исправлено
Number()с булевыми, null и undefined аргументами. -
Исправление: исправлена обработка ошибок при установке нечисловых
Array.length. -
Исправление: исправлена автодополнение для глобальных объектов.
-
Исправление: исправлены различные мелкие ошибки.
Изменения в njs 0.2.2
Дата выхода: 19 июня 2018
Модули nginx:
-
Изменение: объединены HTTP
ResponseиReplyв объект HTTP-запрос. Новые членыRequest:-
req.status(res.status) -
req.parent(reply.parent) -
req.requestBody(req.body) -
req.responseBody(reply.body) -
req.headersIn(req.headers) -
req.headersOut(res.headers) -
req.sendHeader()(res.sendHeader()) -
req.send()(res.send()) -
req.finish()(res.finish()) -
req.return()(res.return())
Устаревшие члены
Request:-
req.body(используйтеreq.requestBodyилиreq.responseBody) -
req.headers(используйтеreq.headersInилиreq.headersOut) -
req.response
Устаревшие члены
Response:-
res.contentLength(используйтеreq.headersOut['Content-Length']) -
res.contentType(используйтеreq.headersOut['Content-Type'])
Устаревшие свойства будут удалены в следующих выпусках.
-
-
Функция: метод HTTP internalRedirect().
Ядро:
-
Исправление: исправлена ошибка переполнения буфера в
crypto.createHmac().
Изменения в njs 0.2.1
Дата выхода: 31 мая 2018
Модули nginx:
-
Функция: Получатель тела HTTP-запроса.
-
Улучшение: перемещение виртуальной машины njs в конфигурацию
main. -
Улучшение: улучшено ведение логов для директив js_set и js_content.
-
Улучшение: установка кода состояния по умолчанию 500 в обработчике js_content.
-
Улучшение: добавлена отладка возвращаемого кода состояния в обработчике js_content.
-
Исправление: исправлена ошибка ведения логов в js_include.
Ядро:
-
Функция: добавлена установка длины массива.
-
Улучшение: общедоступный заголовок
cleanup. njscript.hпереименован вnjs.h. -
Исправление: исправлен метод криптографии
update()после вызоваdigest(). -
Исправление: исправлено
crypto.createHmac()для ключей размером ≤ размер alg и > 64. -
Исправление: исправлено
JSON.stringify()для массивов с пустыми ячейками. -
Исправление: исправлен тип исключения для неподдерживаемых типов в
JSON.stringify(). -
Исправление: исправлена обработка неопределённых аргументов функций.
-
Исправление: исправлена обработка отсутствующего
argвObject.getOwnPropertyDescriptor(). -
Исправление: исправлена обработка свойств в
Object.getOwnPropertyDescriptor(). -
Исправление: исправлен флаг записи свойства
Array.length. -
Исправление: исправлен тип возвращаемого значения
clearTimeout(). -
Исправление: исправлено
njs_vm_external_bind(). -
Исправление: исправлены различные мелкие ошибки.
Изменения в njs 0.2.0
Дата выхода: 03 апреля 2018
-
Функция: вывод версии njs через командную строку.
-
Функция: текстовое описание исключений преобразования типов.
- Функция: методы
setTimeout()иclearTimeout(). -
Функция: преобразование строк байтов в кодировки
hex,base64,base64url. -
Функция: методы
Cryptoв стиле Node.js. -
Функция: HTTP- и потоковые методы
warn()иerror(). -
Функция: HTTP-метод
subrequest(). -
Функция: HTTP-метод
return(). -
Исправление: исправлены различные мелкие ошибки в ядре и интерактивной оболочке.
Изменения в njs 0.1.15
Дата выхода: 20 ноября 2017
-
Функция: объекты
Error,EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError. -
Функция: поддержка восьмеричных литералов.
-
Функция: методы доступа к файловой системе в стиле Node.js:
File system,fs.readFile(),fs.readFileSync(),fs.appendFile(),fs.writeFile(),fs.writeFileSync(). -
Функция: модули nginx выводят трассировку стека при возникновении исключений.
-
Исправление: исправлены различные мелкие ошибки.
Изменения в njs 0.1.14
Дата выхода: 09 октября 2017
-
Функция: Объект JSON.
-
Функция: Автодополнение на уровне объектов в интерактивной оболочке.
-
Функция: различные улучшения конфигурации.
-
Исправление: исправлены различные мелкие ошибки в ядре и интерактивной оболочке.
Изменения в njs 0.1.13
Дата выхода: 31 августа 2017
-
Функция: методы
console.log()иconsole.help()в интерактивной оболочке. -
Функция: интерактивная оболочка выводит трассировку стека при возникновении исключений.
-
Функция: интерактивная оболочка по умолчанию, если
libeditдоступна. -
Исправление: обработка больших файлов из
stdinв командном режиме. -
Исправление: улучшено обнаружение
editline.
Изменения в njs 0.1.12
Дата выхода: 08 августа 2017
-
Функция: интерактивная оболочка.
-
Исправление: в
Object.isSealed().
Изменения в njs 0.1.11
Дата выхода: 27 июня 2017
-
Функция: методы
Object.keys(),Object.prototype.hasOwnProperty(). -
Функция: методы
Object.defineProperty(),Object.defineProperties(),Object.getOwnPropertyDescriptor(). -
Функция: методы
Object.getPrototypeOf(),Object.prototype.isPrototypeOf(). -
Функция: методы
Object.preventExtensions(),Object.isExtensible(),Object.freeze(),Object.isFrozen(),Object.seal(),Object.isSealed(). -
Функция: поддержка научной записи (
3.35e10) литералов. -
Функция: поддержка шестнадцатеричных (
0x1123) литералов. -
Исправление: обработка больших индексов массива.
-
Исправление: в
parseInt()иDate.parse().
Изменения в njs 0.1.10
Дата выхода: 04 апреля 2017
-
Функция: вложенные функции и замыкания функций.
-
Функция: методы
Array.of(),Array.prototype.fill(),Array.prototype.find(),Array.prototype.findIndex(). -
Исправление: исправлены различные мелкие ошибки и ошибки сегментации.
Изменения в njs 0.1.9
Дата выхода: 01 февраля 2017
-
Исправление: глобальные переменные не инициализировались при использовании njs в nginx.
Изменения в njs 0.1.8
Дата выпуска: 24 января 2017
-
Изменение: режим
strictтеперь обязателен, переменные должны быть явно объявлены. -
Новая функция: циклы
forиfor-inтеперь поддерживают объявление переменных. -
Исправление ошибки: исправлены глобальная и функциональные области видимости.
-
Исправление ошибки: теперь цикл
for-inне отбрасывает последнее значение переменной свойства. -
Исправление ошибки: исправлены различные ошибки и ошибки сегментации.
Изменения в njs 0.1.7
Дата выпуска: 27 декабря 2016
-
Изменение: директива js_include отключена на уровне сервера и расположения.
-
Новая функция: операторы возведения в степень.
-
Исправление ошибки: исправлены различные ошибки и ошибки сегментации.
Изменения в njs 0.1.6
Дата выпуска: 13 декабря 2016
-
Изменение: директива js_set отключена на уровне сервера и расположения.
-
Новая функция: методы ES6
Math. -
Исправление ошибки: исправлены различные ошибки и ошибки сегментации.
© 2002-2021 Igor Sysoev
© 2011-2024 Nginx, Inc.
Licensed under the BSD License.
https://nginx.org/en/docs/njs/changes.html