Изменения
Изменения в njs 0.9.9
Дата выпуска: 19 мая 2026
Модули nginx:
-
Безопасность: в рабочем процессе могло произойти переполнение буфера в куче, когда значение директивы js_fetch_proxy содержит переменные nginx, полученные из запроса клиента (
$http_*,$arg_*,$cookie_*и т. д.), а JS-обработчик location вызывает ngx.fetch() (CVE-2026-8711). Проблема появилась в dea83189 (0.9.4). -
Добавление: добавлена директива js_access.
-
Добавление: добавлены асинхронные методы r.readRequestText(), r.readRequestArrayBuffer() и r.readRequestJSON(), считывающие тело запроса и доступные в директивах js_access и js_content.
-
Добавление: добавлен асинхронный метод r.readRequestForm(), разбирающий тело запроса, отправленное из HTML-формы (
application/x-www-form-urlencodedиmultipart/form-data), и возвращающий структурированный объект доступа. Метод доступен в директивах js_access и js_content. -
Добавление: добавлен метод jsVarNames(). Метод возвращает имена переменных, объявленных с помощью js_var.
Ядро:
-
Исправление: исправлен порядок вычисления аргументов вызова с побочными эффектами. Ранее более ранний аргумент мог наблюдать мутацию более позднего аргумента, например
f(a, a = 2)передавал2в качестве обоих аргументов. Проблема появилась в fd5e523f (0.9.7).
Изменения в njs 0.9.8
Дата выпуска: 23 апреля 2026
Модули nginx:
Изменения в njs 0.9.7
Дата выпуска: 21 апреля 2026
Модули nginx:
-
Добавление: улучшена стратегия вытеснения элементов разделяемого словаря.
-
Добавление: добавлен метод ttl() для разделяемых словарей.
-
Исправление: удалено ложное уведомление в логе
js vm init, возникавшее при парсинге конфигурации. -
Исправление: удалено устаревание элементов разделяемого словаря из путей выполнения с блокировкой на чтение.
-
Исправление: исправлено двойное освобождение памяти при обновлении разделяемого словаря с вытеснением.
-
Исправление: исправлен сброс TTL отдельной записи при вызовах incr().
Ядро:
-
Добавление: добавлена поддержка Ed25519 и X25519 для WebCrypto.
-
Добавление: добавлена поддержка wrapKey() и unwrapKey() для WebCrypto.
-
Добавление: добавлен crypto.randomUUID().
-
Добавление: разрешены выражения
awaitв тегированных шаблонах и в качестве аргументов вызова. -
Улучшение: осуществлен переход на OpenSSL EVP для хеширования во встроенном модуле crypto.
-
Исправление: исправлено вычисление аргументов вызова.
Изменения в njs 0.9.6
Дата выпуска: 3 марта 2026
Модули nginx:
-
Исправление: исправлено усечение поля expire в файлах состояния разделяемого словаря. Временные метки в миллисекундах автоматически усекались до 10 цифр, из-за чего восстановленные записи при перезапуске считались просроченными.
-
Исправление: подавлено сообщение slab log_nomem для зон разделяемого словаря с включенным evict. При включенном evict ошибки выделения памяти ожидаемы и обрабатываются путем вытеснения старых записей.
-
Исправление: исправлен стек вызовов для исключений ngx.fetch() для движка qjs.
Ядро:
-
Добавление: добавлена поддержка опциональных цепочек.
-
Добавление: добавлен оператор присваивания с null-слиянием (
??=). -
Добавление: добавлены операторы логического присваивания (
||=и&&=). -
Улучшение: вывод
SyntaxErrorприведен в соответствие с другими JS-движками. Ранее имя файла являлось частью сообщения об ошибке. Теперь оно выводится как свойство «stack». -
Улучшение: улучшены трассировки
Error.stack. Стеки вызовов теперь присоединяются в конструкторах ошибок. ПроизводительностьError.stackувеличена примерно в 100 раз. -
Исправление: исправлено повреждение карты смещений строк в хеш-таблице значений областей видимости. Проблема приводила к аварийному завершению работы (SEGV/SIGBUS) для многобайтовых строковых констант UTF-8 длиной более 32 символов при обращении к символу по индексу >= 32 (например, через
.replace()или квадратные скобки). Проблема появилась в e7caa46d (0.9.5). -
Исправление: исправлено переполнение буфера в куче в хеш-таблице атомов, вызывавшееся
Symbol(). -
Исправление: исправлен сбой в WebCrypto importKey() при несоответствии типа ключа JWK.
-
Исправление: исправлено определение интерактивного режима при передаче stdin через конвейер.
-
Исправление: исправлена сборка на MacOS.
-
Исправление: исправлена совместимость макроса PTR с более новыми версиями библиотеки BFD.
-
Исправление: auto/cc: используется переносимый
command -vвместоwhich. Спасибо Зурабу Квачадзе.
Изменения в njs 0.9.5
Дата выпуска: 13 января 2026
Модули nginx:
-
Добавление: добавлена поддержка нативных модулей для движка qjs для http и stream.
-
Исправление: исправлена работа js_body_filter с несколькими фрагментами данных для движка qjs.
-
Исправление: исправлено наследование
buffer_typeв блоках if для js_body_filter. Ранее при использованииjs_body_filterвнутри блока if параметр data получал типBufferвместо ожидаемого типаString. -
Исправление: исправлена работа js_body_filter, когда данные находятся не в памяти. Ранее, если данные бэкенда доставлялись из кеша nginx,
js_body_filterне мог корректно их обработать. -
Исправление: улучшена обработка ошибок в r.subrequest(). Исправлена проблема потери события записи, когда njs-обработчик, выполняющий
r.subrequest(), вызывается из lua-обработчика в качестве подзапроса.
Ядро:
-
Исправление: исправлен объект
XMLAttr. Указатель наxmlAttrмог стать недействительным при модификации родительскогоXMLNode. -
Исправление: исправлено обновление
XMLNode. -
Исправление: исправлен
ArrayBufferс отсоединенными буферами. -
Исправление: добавлены отсутствующие проверки отсоединенных массивов.
-
Исправление: исправлена функция fs.mkdir() и связанные функции.
-
Исправление: исправлено восстановление пути в fs.mkdir() и связанных функциях при ошибке.
-
Исправление: исправлена пропущенная проверка выделения памяти в коде промисов.
Изменения в njs 0.9.4
Дата выпуска: 28 октября 2025
Модули nginx:
-
Добавление: добавлена поддержка прямого HTTP-проксирования для API ngx.fetch().
Ядро:
-
Исправление: исправлен r.subrequest() к location с JS-обработчиком для QuickJS. Ошибка стала проявляться после bellard/quickjs@42eb2795.
Изменения в njs 0.9.3
Дата выпуска: 07 октября 2025
Модули nginx:
-
Исправление: исправлена ошибка heap-use-after-free при загрузке модуля.
-
Исправление: исправлена ошибка heap-use-after-free в обработчике
js_set, используемом в фазе логирования. Проблема появилась в 04f6dfb (0.9.2).
Изменения в njs 0.9.2
Дата выпуска: 23 сентября 2025
Модули nginx:
-
Добавление: добавлена поддержка HTTP keepalive для API
ngx.fetch(). -
Улучшение: добавлена проверка на этапе конфигурации, когда директива
js_importне указана для http или stream. -
Исправление: исправлено объединение директив
js_pathдля http и stream. -
Исправление: исправлена сборка, когда модули ngx_http_ssl_module и ngx_stream_ssl_module недоступны.
Ядро:
-
Изменение: размер стека по умолчанию для виртуальной машины njs увеличен до 160k.
-
Добавление: добавлен API
njs.on('exit')для движка qjs. -
Улучшение: оптимизировано потребление памяти при потоковой передаче в qjs.
-
Исправление: исправлена сборка движка qjs с помощью clang 19.
-
Исправление: исправлена сборка с помощью GCC 15 и уровнем оптимизации O3.
Изменения в njs 0.9.1
Дата выпуска: 10 июля 2025
Модули nginx:
-
Добавление: добавлен файл состояния для разделяемого словаря.
-
Исправление: исправлена обработка заголовка Content-Length при передаче тела запроса в Fetch API.
-
Исправление: исправлена работа движка qjs после bellard/quickjs@458c34d2.
-
Исправление: исправлено разыменование NULL-указателя при обработке заголовков
If-MatchиIf-Unmodified-Since.
Ядро:
-
Добавление: добавлена поддержка ECDH для WebCrypto.
-
Улучшение: снижено потребление памяти хеш-таблицей объектов. Новая хеш-таблица использует на 42% меньше памяти на элемент.
-
Улучшение: снижено потребление памяти при конкатенации чисел и строк.
-
Улучшение: снижено потребление памяти
String.prototype.concat()со скалярными значениями. -
Исправление: исправлена ошибка сегментации в
njs_property_query(). Проблема появилась в b28e50b1 (0.9.0). -
Исправление: исправлена инъекция шаблона в конструкторе Function.
-
Исправление: исправлена компиляция GCC с уровнем оптимизации O3.
-
Исправление: исправлено предупреждение
constant is too largeдля 'long' на MIPS-mabi=n32. -
Исправление: исправлена компиляция с GCC 4.1.
-
Исправление: исправлен
%TypedArray%.from(), когда буфер отсоединен отображателем. -
Исправление: исправлен
%TypedArray%.prototype.slice()с перекрывающимися буферами. -
Исправление: исправлена обработка отсоединенных буферов для типизированных массивов.
-
Исправление: исправлено сохранение фрейма для асинхронных функций с замыканиями.
-
Исправление: исправлена компиляция регулярных выражений с шаблонами, содержащими экранированные символы «[».
Изменения в njs 0.9.0
Дата выпуска: 06 мая 2025
Ядро:
-
Добавление: переработана обработка встроенных строк, символов и малых целых чисел. Увеличение производительности (бенчмарк arewefastyet/benchmarks/v8-v7):
-
Richards: +57% (631 → 989)
-
Crypto: +7% (1445 → 1551)
-
RayTrace: +37% (562 → 772)
-
NavierStokes: +20% (2062 → 2465)
-
Общий результат: +29% (1014 → 1307)
-
-
Исправление: исправлена обработка значений undefined захваченной группы в
RegExp.prototype[Symbol.split](). -
Исправление: исправлена ошибка сборки
GCC 15с-Wunterminated-string-initialization.
Изменения в njs 0.8.10
Дата выпуска: 08 апреля 2025
Модули nginx:
-
Добавление: чтение
r.requestTextилиr.requestBufferиз временного файла. Ранее при обращении кr.requestTextилиr.requestBufferвозникало исключение, если размер тела запроса клиента превышалclient_body_buffer_size. -
Улучшение: улучшены сообщения о необработанных отклонениях промисов.
-
Исправление: повреждение имён при обработке переменных и заголовков.
-
Исправление: метод
incr()разделяемого словаря с пустым аргументом init для движка QuickJS. -
Исправление: приём заголовков ответа с символами подчёркивания в Fetch API.
Ядро:
-
Изменение: исправлен
serializeToString(). РанееserializeToString()былexclusiveC14n(), который возвращал строку вместо Buffer. Согласно опубликованной документации, это должен бытьc14n(). -
Добавление:
TextEncoderиTextDecoderдля движка QuickJS. -
Добавление: модуль
querystringдля движка QuickJS. -
Добавление: поддержка библиотеки
QuickJS-NG. -
Исправление:
Buffer.concat()с одним аргументом в QuickJS. -
Исправление: добавлена пропущенная синтаксическая ошибка для
awaitв шаблонном литерале. -
Исправление: форматирование строк, не оканчивающихся на ноль (non-NULL terminated), в исключениях для движка QuickJS.
-
Исправление: совместимость с недавними изменениями в QuickJS и
QuickJS-NG.
Изменения в njs 0.8.9
Дата выпуска: 14 января 2025
Модули nginx:
-
Исправление: устранено создание лишней виртуальной машины (VM) для каждого server. Ранее, если директива
js_importобъявлялась в блоках http или stream, для каждого блока server создавался отдельный экземпляр VM. В этом не было необходимости, и это приводило к повышенному расходу памяти в конфигурациях с большим количеством блоков server. Проблема появилась в 0.8.6 и была частично исправлена только для блоков location в 0.8.7.
Ядро:
Изменения в njs 0.8.8
Дата выпуска: 10 декабря 2024
Модули nginx:
-
Добавление: реализован разделяемый словарь для движка QuickJS.
-
Улучшение: произведён рефакторинг js_preload_object.
-
Исправление: вывод с ограничением скорости (limit rated output).
-
Исправление: оптимизировано использование SSL-контекстов для директивы js_fetch_trusted_certificate.
Ядро:
-
Добавление: реализован объект process для движка QuickJS.
-
Добавление: реализован метод process.kill().
-
Исправление: тесты XML с libxml2 2.13 и выше.
-
Исправление: разрешение промисов при наследовании Promise.
-
Исправление: абсолютная область видимости в клонированных виртуальных машинах.
Изменения в njs 0.8.7
Дата выпуска: 22 октября 2024
Модули nginx:
-
Исправление: устранено лишнее создание виртуальных машин. Ранее njs потреблял память пропорционально количеству блоков location в nginx. Проблема появилась в 0.8.6.
-
Улучшение: добавлена строгая проверка синтаксиса для js_body_filter.
-
Улучшение: улучшены сообщения об ошибках при сбое загрузки модулей.
Ядро:
-
Добавление: реализован
fs.readlinkSync(). -
Улучшение: реализована ленивая символизация стека.
-
Исправление: переполнение буфера в куче (heap-buffer-overflow) в
Buffer.prototype.indexOf(). Проблема появилась в 0.8.6. -
Исправление:
Buffer.prototype.lastIndexOf()при указании `from`.
Изменения в njs 0.8.6
Дата выпуска: 2 октября 2024
Модули nginx:
-
Добавление: представлен движок QuickJS.
-
Добавление: необязательный флаг
nocacheдля директивыjs_setв http и stream. Спасибо Thomas P. -
Добавление: переменные групп захвата (capture group variables) в модуле HTTP. Спасибо Thomas P.
Ядро:
-
Добавление: модуль
Bufferдля движка QuickJS. -
Исправление: обработка пустого помеченного оператора в функции.
-
Исправление: обработка конструктора
Functionпри вызове без аргументов. -
Исправление:
Buffer.prototype.writeInt8()и связанные методы. -
Исправление:
Buffer.prototype.writeFloat()и связанные методы. -
Исправление:
Buffer.prototype.lastIndexOf(). -
Исправление:
Buffer.prototype.write(). -
Исправление: предупреждения maybe-uninitialized при создании ошибок.
-
Исправление: инициализация
ctx.codepointпри декодировании UTF-8. -
Исправление: инициализация
lengthвArray.prototype.pop(). -
Исправление: обработка аргумента
encodeвfs.readdir()иfs.realpath().
Изменения в njs 0.8.5
Дата выпуска: 25 июня 2024
Модули nginx:
-
Изменение: байты, недопустимые в кодировке UTF-8, заменяются на символ замены в:
-
r.variables.var,r.requestText,r.responseText,s.variables.var, -
аргументе
dataобратного вызоваs.on()с типами событийuploadилиdownload, -
аргументе
dataдирективыjs_body_filter.
При работе с бинарными данными используйте:
-
r.rawVariables.var,r.requestBuffer,r.responseBuffer,s.rawVariables.var, -
тип события
upstreamилиdownstreamдляs.on(), -
buffer_type=bufferдляjs_body_filter.
-
-
Добавление: аргумент
timeoutдля методовadd(),set()иincr()разделяемого словаря. -
Исправление: проверка повторяющихся переменных
js_set. -
Исправление: заголовок запроса
Hostпри нестандартном порте. -
Исправление: обработка тела запроса нулевой длины в
ngx.fetch()иr.subrequest(). -
Исправление: переполнение буфера в куче (heap-buffer-overflow) в
Headers.get(). -
Исправление: обработка ошибок в
r.subrequest().
Ядро:
-
Добавление: добавлен модуль
zlibдля движкаQuickJS. -
Исправление:
zlib.inflate(). -
Исправление:
String.prototype.replaceAll()с аргументом нулевой длины. -
Исправление: обработка
retvalпосле исключения вArray.prototype.toSpliced(),Array.prototype.toReversed(),Array.prototype.toSorted(). -
Исправление:
RegExp.prototype[@@replace]()со строками замены, содержащими$',$`и строки с символами Юникода. -
Исправление: чтение лишнего байта (one-byte overread) в
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в CLI. -
Исправление:
atob()со строкамиbase64без заполнения.
Изменения в njs 0.8.3
Дата выпуска: 7 февраля 2024
Модули nginx:
-
Исправление:
Headers.set(). -
Исправление: js_set со значениями
Buffer. -
Исправление: метод
clear()разделяемого словаря, когда таймаут не указан. -
Исправление: статистика stub_status при включённой директиве js_periodic.
Ядро:
-
Исправление: сборка с libxml2 2.12 и выше.
-
Исправление: конструктор
Dateпри переполнениях и со значениямиNaN. -
Исправление: потеря точности (underflow) в
querystring.parse(). -
Исправление: возможное чтение за пределами буфера в
String.prototype.match(). -
Исправление: парсинг циклов
for-in. -
Исправление: парсинг шестнадцатеричных, восьмеричных и двоичных литералов без цифр.
Изменения в njs 0.8.2
Дата выпуска: 24 октября 2023
Модули nginx:
-
Добавление: представлен объект console. Были добавлены следующие методы:
error(),info(),log(),time(),timeEnd(),warn(). -
Исправление: обработка ответа
HEADс большим Content-Length в Fetch API. -
Исправление: метод
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:
-
Изменение: удалена специальная обработка запрещённых заголовков в Fetch API, появившаяся в 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в WebCrypto API. Были добавлены следующие свойства:algorithm,extractable,type,usages. -
Исправление: исправлен
retvalметодасrypto.getRandomValues(). -
Исправление: исправлено вычисление вычисляемых имён свойств с функциональными выражениями.
-
Исправление: исправлено неявное имя для функционального выражения, объявленного в массивах.
-
Исправление: исправлен разбор циклов
for-in. -
Исправление: исправлен
Date.parse()с форматом ISO-8601 и смещением по времени UTC.
Изменения в njs 0.7.12
Дата выпуска: 10 апреля 2023
Модули nginx:
-
Исправление: исправлен конструктор
Headers()в Fetch API.
Ядро:
-
Добавление: добавлен метод
Hash.copy()в модуле crypto. -
Добавление: добавлен модуль zlib.
-
Улучшение: добавлена поддержка инструкции
export {name as default}. -
Исправление: исправлен конструктор
Numberв соответствии со спецификацией.
Изменения в njs 0.7.11
Дата выпуска: 09 марта 2023
Модули nginx:
-
Исправление: добавлена отсутствовавшая линковка с libxml2 для динамического модуля. Ошибка появилась в 0.7.10.
Ядро:
-
Добавление: добавлен XMLNode API для модификации 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в Fetch API. -
Исправление: исправлен callback логгера nginx для вызовов в мастер-процессе.
Ядро:
-
Добавление: добавлена поддержка сигналов в CLI.
-
Добавление: добавлен модуль
xmlдля работы с XML-документами. -
Добавление: расширена поддержка симметричных и асимметричных ключей в WebCrypto. В частности, добавлен формат
JWKдляimportKey(). -
Добавление: расширена поддержка симметричных и асимметричных ключей в WebCrypto API. В частности, добавлен формат
JWKдляimportKey(). Также реализованыgenerateKey()иexportKey(). -
Добавление: добавлено
String.prototype.replaceAll(). -
Исправление: исправлена обработка синтаксических ошибок в условиях
for(expr1;. -
Исправление:
Object.values()иObject.entries()с внешними объектами. -
Исправление: исправлен
RegExp.prototype[@@replace]().
Изменения в njs 0.7.9
Дата выпуска: 17 ноября 2022
Модули nginx:
-
Исправление: исправлена повторная инициализация прототипа Response в
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в Fetch API. -
Улучшение: улучшена поддержка callback-функции
asyncдляs.send()в модуле stream.
Ядро:
-
Добавление: добавлено свойство экземпляра
nameдля объекта функции. -
Добавление: добавлен объект
njs.memoryStats. -
Исправление: исправлен
String.prototype.trimEnd()со строкой Юникода. -
Исправление: исправлен
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. -
Исправление: исправлено чтение тела ответа в Fetch API.
-
Исправление: исправлен js_fetch_timeout в модуле stream.
-
Исправление: исправлена утечка сокета при таймауте fetch
0.
Ядро:
-
Добавление: расширен модуль
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{}. Добавлена поддержка нескольких аргументов с одинаковым ключом. Добавлена чувствительность к регистру для ключей. Ключи и значения теперь декодируются из percent-encoding. -
Исправление: исправлен сеттер
r.headersOut{}для специальных заголовков.
Ядро:
-
Добавление: добавлены
Symbol.for()иSymbol.keyfor(). -
Добавление: добавлены
atob()иbtoa()из спецификации WHATWG. -
Исправление: исправлены большие недесятичные литералы.
-
Исправление: исправлено удаление пробельных символов в Unicode-аргументах в
parseInt(). -
Исправление: исправлена инструкция
breakв блокеtry-catch. -
Исправление: исправлено объявление функции
asyncв CLI.
Изменения в njs 0.7.5
Дата выпуска: 21 июня 2022
Модули nginx:
-
Изменение: адаптация к изменениям в структурах заголовков nginx.
-
Исправление: исправлены специальные геттеры
r.headersOut{}при отсутствии значения. -
Изменение: возвращается значение undefined вместо пустой строки для
Content-Typeпри отсутствии заголовка.
Ядро:
-
Исправление: исправлен перехват исключения, выброшенного из ожидаемой (awaited) функции.
-
Исправление: исправлена инициализация значения функции.
-
Исправление: исправлена работа интерпретатора при сбое await.
-
Исправление: исправлен конструктор типизированного массива при изменении исходного массива во время итерации.
-
Исправление: исправлен
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()для типизированных массивов. -
Исправление: привязка функционального выражения сделана неизменяемой в соответствии со спецификацией.
-
Исправление: исправлено переопределение специальных свойств в
Object.defineProperty().
Изменения в njs 0.7.3
Дата выпуска: 12 апреля 2022
Ядро:
-
Добавление: добавлена поддержка callback-функции разрешения модулей (module resolution callback). Это позволяет хост-среде контролировать способ загрузки импортируемых модулей.
-
Исправление: исправлены трассировки стека (backtraces) при обходе импортированных пользовательских модулей.
-
Исправление: исправлен
Array.prototype.concat(), когдаthisявляется медленным массивом. -
Исправление: исправлено выделение фрейма из ожидаемого (awaited) фрейма.
-
Исправление: исправлено выделение памяти для больших литералов массивов.
-
Исправление: исправлена работа интерпретатора при сбое преобразования
toString.
Изменения в njs 0.7.2
Дата выпуска: 25 января 2022
Ядро:
-
Исправление: исправлен
Array.prototype.join()при изменении массива во время итерации. -
Исправление: исправлен
Array.prototype.slice()при изменении массива во время итерации. -
Исправление: исправлен
Array.prototype.concat()при изменении массива во время итерации. -
Исправление: исправлен
Array.prototype.reverse()при изменении массива во время итерации. -
Исправление: исправлен
Buffer.concat()с подмассивами. Спасибо Sylvain Etienne. -
Исправление: исправлена ошибка несоответствия типов (type confusion) при разрешении промисов.
-
Исправление: исправлен
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:
Ядро:
-
Добавление: представлена реализация
Async/Await. -
Добавление: добавлена реализация WebCrypto API.
-
Исправление: исправлено копирование замыканий для объявленных функций. Ошибка появилась в 0.6.0.
-
Исправление: исправлено необработанное отклонение (rejection)
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-параметра без идентификатора связывания.
-
Исправление: исправлен callback 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.
-
Исправление: исправлено переполнение буфера в куче (heap-buffer-overflow) в
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для объекта сессии Stream.
Ядро:
-
Добавление: добавлена поддержка callback-функций
njs.on(exit). -
Исправление: исправлено повторное использование дескриптора свойства для нерасширяемых объектов. Спасибо Artem S. Povalyukhin.
-
Исправление: исправлены
Object.freeze()и связанные методы в соответствии со спецификацией. Спасибо Artem S. Povalyukhin. -
Исправление: исправлен
Function()в режиме CLI. -
Исправление: исправлена итерация по значениям типизированных массивов с помощью
for-in. Спасибо Artem S. Povalyukhin.
Изменения в njs 0.5.1
Дата выпуска: 16 февраля 2021
Модули nginx:
-
Добавление: представлен метод
ngx.fetch(), реализующий Fetch API.Реализованы следующие свойства и методы объекта
Response:arrayBuffer(),bodyUsed,json(),headers,ok,redirect,status,statusText,text(),type,url.Основные ограничения: поддерживается только схема
http://, перенаправления не обрабатываются.В сотрудничестве с 洪志道 (Hong Zhi Dao).
-
Добавление: добавлена директива
js_header_filter. -
Исправление: исправлена обработка буферизованных данных в фильтре тела в модуле stream.
Ядро:
-
Исправление: исправлен обход безопасного режима (safe mode) в конструкторе
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(upload),downstream(download).
-
-
Улучшение: добавлены псевдонимы для существующих свойств.
Добавлены следующие свойства:
-
Улучшение: генерация исключения в
r.internalRedirect()для подзапроса. -
Исправление: исправлен промис
r.subrequest()при перенаправлении с помощьюerror_page. -
Исправление: исправлена обработка событий
promise.
Ядро:
-
Добавление: добавлены определения
TypeScriptдля встроенных модулей. Спасибо Jakub Jirutka. -
Добавление: отслеживание необработанных отклонений
promise. -
Добавление: добавлена начальная поддержка итераторов. Спасибо Artem S. Povalyukhin.
-
Улучшение: рефакторинг определений
TypeScript. Спасибо Jakub Jirutka. -
Улучшение: добавлена забытая поддержка
Object.prototype.valueOf()вBuffer.from(). -
Исправление: исправлена ошибка heap-use-after-free в
JSON.parse(). -
Исправление: исправлена ошибка heap-use-after-free в
JSON.stringify(). -
Исправление: исправлен
JSON.stringify()для массивов, размер которых изменяется через геттеры. -
Исправление: исправлена ошибка heap-buffer-overflow для
RegExp.prototype[Symbol.replace]. -
Исправление: исправлено возвращаемое значение для функций
Buffer.prototype.write*. -
Исправление: исправлен
querystring.stringify(). Спасибо Artem S. Povalyukhin. -
Исправление: исправлен обработчик catch для
Promise.prototype.finally(). -
Исправление: исправлен
querystring.parse().
Изменения в njs 0.4.4
Дата выпуска: 29 сентября 2020
Модули nginx:
-
Исправление: исправлено объединение location.
-
Исправление: исправлен
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()для поддержки рекурсивного создания каталогов. Спасибо Artem S. Povalyukhin. -
Добавление: улучшен метод
fs.rmdir()для поддержки рекурсивного удаления каталогов. Спасибо Artem S. Povalyukhin. -
Добавление: представлен декодер UTF-8 в соответствии со спецификацией кодирования WHATWG.
-
Добавление: добавлена реализация
TextDecoder()иTextEncoder(). -
Исправление: исправлен разбор оператора return без точки с запятой.
-
Исправление: исправлен
njs_number_to_int32()для платформ с прямым порядком байтов (big-endian). -
Исправление: исправлен модульный тест на платформах с прямым порядком байтов (big-endian).
-
Исправление: исправлен разбор литералов регулярных выражений с символами «
=». -
Исправление: исправлены пре/пост-инкремент/декремент в операциях присваивания.
Изменения в njs 0.4.2
Дата выпуска: 07 июля 2020
Ядро:
-
Добавление: добавлен
RegExp.prototype[Symbol.replace]. -
Добавление: представлена трассировка стека с точностью до строки.
-
Добавление: добавлен
%TypedArray%.prototype.sort(). -
Добавление: расширен модуль
fs. Добавленыmkdir(),readdir(),rmdir()и подобные функции. -
Улучшение: рефакторинг парсера.
-
Исправление: исправлено описание TypeScript API для HTTP-заголовков.
-
Исправление: исправлено описание TypeScript API для типа
NjsByteString. -
Исправление: исправлен
String.prototype.repeat()в соответствии со спецификацией. -
Исправление: исправлен
String.prototype.replace()в соответствии со спецификацией. -
Исправление: исправлен разбор флагов для литералов регулярных выражений.
-
Исправление: исправлена генерация индексов для глобальных объектов в генераторе.
-
Исправление: исправлен
%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{}. -
Добавление: добавлена директива
js_importдля http и stream. -
Улучшение: улучшен обход
r.headersOut{}со специальными заголовками. -
Улучшение: улучшен обход
r.headersOut{}с дубликатами. -
Изменение: теперь обработчик свойства
r.responseBodyвозвращаетundefinedвместо генерации исключения, если тело ответа недоступно.
Ядро:
-
Добавление: добавлена поддержка аргументов скрипта в CLI.
-
Добавление: преобразование внешних значений в нативные объекты JS.
-
Исправление: исправлено разыменование NULL-указателя в обработчике свойства
__proto__. -
Исправление: исправлена обработка отсутствия символа новой строки в конце скрипта.
-
Исправление: исправлен конструктор
RegExp()с пустым шаблоном и непустыми флагами. -
Исправление: исправлен
String.prototype.replace(), когда функция возвращает не строку. -
Исправление: исправлено чтение псевдофайлов в
fs.
Изменения в njs 0.3.9
Дата выпуска: 03 марта 2020
Модули nginx:
-
Добавление: добавлен автономный режим для
r.subrequest(). Ответы на автономные подзапросы игнорируются. В отличие от обычных подзапросов, автономный подзапрос можно создать внутри обработчика переменной.
Ядро:
-
Добавление: добавлен API
promisesдля модуляfs. Спасибо Artem S. Povalyukhin. -
Добавление: расширен модуль
fs. Добавленыaccess(),symlink(),unlink(),realpath()и подобные функции. Спасибо Artem S. Povalyukhin. -
Улучшение: представлены эффективные по памяти обычные массивы.
-
Улучшение: рефакторинг лексера.
-
Исправление: исправлено сопоставление нативных функций в трассировках стека.
-
Исправление: исправлен вызов обратных вызовов в модуле
fs. Спасибо Artem S. Povalyukhin. -
Исправление: исправлен
Object.getOwnPropertySymbols(). -
Исправление: исправлена ошибка heap-buffer-overflow в
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-arrays). Спасибо Tiago Natel de Moura.
-
Возможность: добавлена поддержка
ArrayBuffer. Спасибо Tiago Natel de Moura. -
Возможность: добавлена начальная поддержка
Symbol. Спасибо Артему С. Повалюхину. -
Возможность: добавлена поддержка внешних объектов для
JSON.stringify(). -
Возможность: добавлен
Object.is(). Спасибо Артему С. Повалюхину. -
Возможность: добавлен
Object.setPrototypeOf(). Спасибо Артему С. Повалюхину. -
Возможность: добавлен оператор нулевого слияния (nullish coalescing).
-
Исправление: исправлен
Object.getPrototypeOf()в соответствии со спецификацией. -
Исправление: исправлен
Object.prototype.valueOf()в соответствии со спецификацией. -
Исправление: исправлен
JSON.stringify()с непечатаемыми значениями и функцией замены (replacer). -
Исправление: исправлен оператор
inв соответствии со спецификацией. -
Исправление: исправлен
Object.defineProperties()в соответствии со спецификацией. -
Исправление: исправлен
Object.create()в соответствии со спецификацией. Спасибо Артему С. Повалюхину. -
Исправление: исправлен
Number.prototype.toString(radix)при включенном fast-math. -
Исправление: исправлены свойства экземпляра
RegExp(). -
Исправление: исправлена ошибка сегментации при импорте. Спасибо 洪志道 (Hong Zhi Dao).
Изменения в njs 0.3.7
Дата выпуска: 19 ноября 2019
Модули nginx:
-
Улучшение: переработана итерация по внешним объектам.
Ядро:
-
Возможность: добавлен
Object.assign(). -
Возможность: добавлен
Array.prototype.copyWithin(). -
Возможность: добавлена поддержка меток в
console.time(). -
Изменение: удален
console.help()из CLI. -
Улучшение: конструкторы и объекты верхнего уровня перемещены в глобальный объект.
-
Улучшение: валидация аргументов для скрипта configure.
-
Улучшение: переработаны методы JSON.
-
Исправление: исправлено переполнение буфера кучи (heap-buffer-overflow) в функции
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экземпляров функций сделано доступным для записи. -
Улучшение: ограничение глубины рекурсии во время компиляции.
-
Улучшение: перемещение глобальных функций в глобальный объект.
-
Исправление: исправлена мутация прототипа для объектных литералов.
-
Исправление: исправлено переполнение буфера кучи (heap-buffer-overflow) при разборе литералов регулярных выражений.
-
Исправление: исправлено переполнение целых чисел (integer-overflow) при разборе экспоненты числовых литералов.
-
Исправление: исправлен
parseFloat(). -
Исправление: исправлены функции
Array.prototypeв соответствии со спецификацией. Были исправлены следующие функции:every,includes,indexOf,filter,find,findIndex,forEach,lastIndexOf,map,pop,push,reduce,reduceRight,shift,some,unshift. -
Исправление: исправлена обработка дескрипторов доступа в
Object.freeze(). -
Исправление: исправлен
String.prototype.replace(), когда первый аргумент не является строкой. -
Исправление: исправлена ошибка stack-use-after-scope в
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. Спасибо Артему С. Повалюхину. -
Исправление: исправлен
Date.prototype.setTime(). Спасибо Артему С. Повалюхину. -
Исправление: исправлено количество аргументов по умолчанию, ожидаемое встроенными функциями.
-
Исправление: исправлены свойства
callerиargumentsэкземпляра функции. Спасибо Артему С. Повалюхину.
Изменения в njs 0.3.5
Дата выпуска: 15 августа 2019
Ядро:
-
Исправление: исправлен импорт модулей с использованием
require(). Ошибка появилась в 0.3.4. -
Исправление: исправлен
[[SetPrototypeOf]].
Изменения в njs 0.3.4
Дата выпуска: 13 августа 2019
Ядро:
-
Возможность: добавлены сокращенные методы
Objectи вычисляемые имена свойств. Спасибо 洪志道 (Hong Zhi Dao) и Артему С. Повалюхину. -
Возможность: добавлена поддержка литералов геттеров/сеттеров. Спасибо 洪志道 (Hong Zhi Dao) и Артему С. Повалюхину.
-
Возможность: добавлен
fs.renameSync(). -
Возможность: добавлены
String.prototype.trimEnd()иString.prototype.trimStart(). -
Улучшение: добавлена поддержка memory-sanitizer.
-
Улучшение: таблицы регистра символов Unicode обновлены до версии 12.1.
-
Улучшение: добавлена валидация UTF8 для строковых литералов.
-
Исправление: исправлено чтение файлов нулевого размера в
fs.readFileSync(). -
Исправление: расширен список пробельных символов в
String.prototype.trim(). -
Исправление: исправлено использование неинициализированного значения в
String.prototype.padStart(). -
Исправление: исправлен
String.prototype.replace()для строк замены$0и$&. -
Исправление: исправлен
String.prototype.replace()для байтовых строк с аргументом-регулярным выражением. -
Исправление: исправлено глобальное сопоставление в
String.prototype.replace()с аргументом-регулярным выражением. -
Исправление: исправлен
Array.prototype.slice()для примитивных типов. -
Исправление: исправлено переполнение буфера кучи (heap-buffer-overflow) при импорте модуля.
-
Исправление: исправлено экранирование символов UTF-8.
-
Исправление: исправлены
Object.values()иObject.entries()для разделяемых объектов. -
Исправление: исправлен доступ к неинициализированной памяти в
String.prototype.match(). -
Исправление: исправлен
String.prototype.match()для байтовых строк с аргументом-регулярным выражением. -
Исправление: исправлен
Array.prototype.lastIndexOf()с неопределенными (undefined) аргументами. -
Исправление: исправлен
String.prototype.substring()с пустой подстрокой. -
Исправление: исправлен недопустимый доступ к памяти в
String.prototype.substring(). -
Исправление: исправлен
String.fromCharCode()для кодовых точек больше65535иNaN. -
Исправление: исправлены
String.prototype.toLowerCase()иString.prototype.toUpperCase(). -
Исправление: исправлен конструктор
Error()без аргументов. -
Исправление: исправлен оператор
inдля значений с дескрипторами доступа. -
Исправление: исправлен
Object.defineProperty()для небулевых свойств дескриптора. -
Исправление: исправлен
Error.prototype.toString()со свойствами со строками UTF8. -
Исправление: исправлен
Error.prototype.toString()с нестроковыми значениями дляnameиmessage.
Изменения в njs 0.3.3
Дата выпуска: 25 июня 2019
Модули nginx:
-
Улучшение: получение специальных заголовков ответа в
r.headersOut{}. -
Улучшение: работа с неизвестными методами в
r.subrequest(). -
Улучшение: добавлена поддержка null в качестве второго аргумента
r.subrequest(). -
Исправление: исправлена обработка пустой цепочки вывода в фильтре тела потока.
Ядро:
-
Возможность: добавлена поддержка геттеров/сеттеров свойств во время выполнения. Спасибо 洪志道 (Hong Zhi Dao) и Артему С. Повалюхину.
-
Возможность: добавлен глобальный объект
process. -
Возможность: большинство встроенных свойств и методов сделаны доступными для записи.
-
Возможность: добавлена обобщенная реализация
Array.prototype.fill(). -
Исправление: исправлено переполнение целых чисел (integer-overflow) в
String.prototype.concat(). -
Исправление: исправлена установка свойств объектов.
-
Исправление: исправлен
Array.prototype.toString(). -
Исправление: исправлен
Date.prototype.toJSON(). -
Исправление: исправлена перезапись свойства «constructor» встроенных прототипов.
-
Исправление: исправлена обработка недопустимых суррогатных пар в строках.
-
Исправление: исправлена обработка недопустимых суррогатных пар в строках JSON.
-
Исправление: исправлено переполнение буфера кучи (heap-buffer-overflow) в
toUpperCase()иtoLowerCase(). -
Исправление: исправлено экранирование одиночных закрывающих квадратных скобок в конструкторе
RegExp(). -
Исправление: исправлена обработка символов нулевого байта внутри строк шаблонов RegExp.
-
Исправление: исправлен
String.prototype.toBytes()для строк ASCII. -
Исправление: исправлено логическое значение (truth value) чисел JSON в
JSON.parse(). -
Исправление: исправлено использование неинициализированного значения (use-of-uninitialized-value) в
njs_string_replace_join(). -
Исправление: исправлен
parseInt('-0'). Спасибо Артему С. Повалюхину.
Изменения в njs 0.3.2
Дата выпуска: 21 мая 2019
Ядро:
-
Возможность: добавлена поддержка шаблонных литералов. Спасибо 洪志道 (Hong Zhi Dao) и Артему С. Повалюхину.
-
Возможность: выполнение команды из аргументов командной строки.
-
Возможность: добавлена поддержка объекта RegExp
groups(ES9). -
Возможность: добавлена поддержка определений функций с блочной областью видимости.
-
Возможность: добавлена поддержка сборки с библиотекой GNU Readline.
-
Возможность: свойства
length,nameи большинство встроенных методов сделаны настраиваемыми (configurable). -
Возможность: все свойства конструктора сделаны настраиваемыми (configurable).
-
Исправление: исправлен
Regexp.prototype.exec()для регулярных выражений только с поддержкой Unicode. -
Исправление: исправлен
njs_vm_value_dump()для пустых строковых значений. -
Исправление: исправлен конструктор RegExp для аргументов со значением регулярного выражения.
-
Исправление: исправлен обход цепочки прототипов при итерации по объекту.
-
Исправление: исправлено переполнение в
Array.prototype.concat(). -
Исправление: исправлено вычисление длины для строки UTF-8 с экранированными символами.
-
Исправление: исправлен разбор суррогатной пары, представленной в виде escape-последовательностей UTF-16.
-
Исправление: исправлена обработка квантификатора «*» для
String.prototype.match(). -
Исправление: исправлен конструктор
Date()с одним аргументом. -
Исправление: исправлено расширение массивов.
-
Исправление: исправлено переполнение буфера кучи (heap-buffer-overflow) в
String.prototype.replace(). -
Исправление: исправлено переполнение буфера кучи (heap-buffer-overflow) в
String.prototype.lastIndexOf(). -
Исправление: исправлен разбор литералов регулярных выражений с экранированным обратным слэшем и обратным слэшем в квадратных скобках.
-
Исправление: исправлены литералы регулярных выражений с одиночными закрывающими скобками.
-
Исправление: исправлен доступ к неинициализированной памяти (uninitialized-memory-access) в
Object.defineProperties(). -
Исправление: исправлена обработка квантификатора «*» для
String.prototype.replace(). -
Исправление: исправлен
Array.prototype.slice()для байтовых строк с недопустимым UTF8. -
Исправление: исправлен
String.prototype.split()для байтовых строк с недопустимым UTF8. -
Исправление: исправлена обработка пустых блочных инструкций.
Изменения в njs 0.3.1
Дата выпуска: 16 апреля 2019
Ядро:
-
Добавление: добавлена поддержка стрелочных функций. Спасибо 洪志道 (Hong Zhi Dao) и Артему С. Повалюхину.
-
Добавление: добавлен
Object.getOwnPropertyNames(). Спасибо Артему С. Повалюхину. -
Добавление: добавлен
Object.getOwnPropertyDescriptors(). Спасибо Артему С. Повалюхину. -
Добавление: дескриптор аксессора
__proto__у экземпляровObjectтеперь является изменяемым. -
Добавление: добавлена поддержка shebang в CLI.
-
Добавление: добавлена поддержка выполнения в режиме модуля в CLI. В глобальном режиме модуля this недоступен.
-
Исправление: исправлено определение 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{}. -
Изменение: возврат значения undefined вместо выброса исключения для
r.requestBody, когда тело запроса недоступно. -
Исправление: исправлен сбой при итерации по
r.args{}, когда в паре «ключ-значение» отсутствовало значение.
Ядро:
-
Добавление: добавлена начальная поддержка модулей ES6. Поддерживаются инструкции импорта по умолчанию и экспорта по умолчанию. Спасибо 洪志道 (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, удалены.
-
Добавление: добавлена поддержка операции delete в
r.headersOut{}. -
Добавление: добавлена поддержка установки переменных nginx.
-
Исправление: исправлен
r.subrequest()для пустого значения тела. -
Улучшение: установка специальных заголовков ответа в
r.headersOut{}.
Ядро:
-
Добавление: добавлена поддержка меток.
-
Добавление: добавлен метод
setImmediate(). -
Добавление: добавлена поддержка сокращенных имен свойств для литералов Object.
-
Исправление: исправлен
Function.prototype.bind(). -
Исправление: исправлен парсинг строковых литералов, содержащих символы перевода строки.
-
Исправление: исправлен номер строки при сообщении об ошибках ссылки на переменные.
-
Исправление: исправлено создание длинных строк UTF8.
-
Исправление: исправлена установка специальных заголовков ответа в
String.prototype.split()для строк Unicode. -
Исправление: исправлено переполнение буфера кучи в
String.prototype.split(). -
Исправление: исправлен
Array.prototype.fill(). Спасибо Артему С. Повалюхину. -
Улучшение: код, связанный с вызовом функций, подвергся рефакторингу. Спасибо 洪志道 (Hong Zhi Dao).
-
Улучшение: код, связанный с переменными, подвергся рефакторингу. Спасибо 洪志道 (Hong Zhi Dao).
-
Улучшение: парсер подвергся рефакторингу. Спасибо 洪志道 (Hong Zhi Dao).
-
Улучшение: вывод имен файлов в исключениях.
Изменения в njs 0.2.7
Дата выпуска: 25 декабря 2018
Ядро:
-
Добавление: синтаксис rest-параметров (деструктуризация не поддерживается). Спасибо Александру Пыщеву.
-
Добавление: добавлен метод
Object.entries(). -
Добавление: добавлен метод
Object.values(). -
Улучшение: генератор кода переработан и упрощен.
-
Исправление: исправлена автоматическая вставка точки с запятой.
-
Исправление: исправлено выражение присваивания из составного присваивания.
-
Исправление: исправлено сравнение байтовых строк и строк UTF8.
-
Исправление: исправлен тип переменной итерации в
for-inсо значениями массивов. -
Исправление: исправлена сборка на платформах без librt.
-
Исправление: устранены различные ошибки.
Изменения в njs 0.2.6
Дата выпуска: 27 ноября 2018
Ядро:
-
Добавление: встроенные прототипы теперь изменяемы.
-
Добавление: глобальный объект теперь изменяем.
-
Добавление: методы
console.time()иconsole.timeEnd(). -
Добавление: разрешено повторное объявление переменных и функций.
-
Добавление: расширено соответствие спецификации
Object.defineProperty(). -
Добавление: добавлен тихий режим для CLI для обработки простых выражений из stdin.
-
Добавление: представлена компактная форма трассировки стека для обработки переполнений стека.
-
Улучшение: улучшены формулировки для различных исключений.
-
Исправление: исправлена обработка значений замыканий.
-
Исправление: исправлен оператор равенства для различных типов значений.
-
Исправление: исправлена обработка ключевого слова
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 и родительского запроса в модуле http.
Ядро:
-
Добавление: поддержка объекта arguments.
-
Добавление: поддержка нецелых дробных чисел.
-
Улучшение: обработка значений, не являющихся массивами, в
Array.prototype.slice(). -
Исправление: исправлен сеттер
Array.prototype.length -
Исправление: исправлен
njs_array_alloc()для длины > 2**31. -
Исправление: обработка целочисленного переполнения в
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. -
Добавление: представлен режим изолированной среды (sandboxing).
-
Улучшение: добавлены строки исключений там, где это необходимо.
-
Улучшение: улучшены формулировки для исключений приведения примитивных типов.
-
Исправление: выбрасывание
TypeErrorпри попытках изменить замороженные свойства. -
Исправление: исправлен
Object.defineProperty()для существующих свойств. -
Исправление: учет атрибута enumerable при итерации с помощью for in.
-
Исправление: учет атрибута writable для обработчиков свойств.
-
Исправление: исправлена обработка исключений в аргументах функции.
-
Исправление: исправлен
Object.prototype.toStringдля различных типов значений. -
Исправление: исправлен конструктор
Object()для аргументов объектных типов. -
Исправление: исправлено сравнение объектов и строк.
-
Исправление: исправлен
String.slice()для аргументов undefined. -
Исправление: устранены различные ошибки.
Изменения в njs 0.2.3
Дата выпуска: 31 июля 2018
Модули nginx:
-
Исправление: создание подзапроса из объекта
Replyвызывало ошибку сегментации. -
Исправление: получение свойства parent основного объекта HTTP Request вызывало ошибку сегментации.
Ядро:
-
Добавление: добавлено понятное строковое представление (pretty print) для значений.
-
Добавление: корректный вывод чисел с плавающей точкой.
-
Добавление: корректный парсинг чисел с плавающей точкой.
-
Добавление: метод
String.bytesFrom()(декодированиеhex,base64,base64urlв байтовую строку). -
Добавление: методы
String.padStart()иString.padEnd(). -
Добавление: добавлена поддержка двоичных литералов.
-
Улучшение: добавлена информация о недопустимой лексеме при парсинге чисел.
-
Улучшение: разрешен верхний регистр для
Oв значениях восьмеричных литералов. -
Улучшение: добавлена поддержка нескольких аргументов в
console.log(). -
Исправление: исправлено применение
call()к методам внешних значений. -
Исправление: исправлен оператор сложения, применяемый к объекту.
-
Исправление: исправлена обработка исключений в
njs_vm_value_to_ext_string(). -
Исправление: исправлен
Number()с аргументами boolean, null и undefined. -
Исправление: исправлена обработка ошибок при установке нечислового
Array.length. -
Исправление: исправлено автодополнение для глобальных объектов.
-
Исправление: устранены различные ошибки.
Изменения в njs 0.2.2
Дата выпуска: 19 июня 2018
Модули nginx:
-
Изменение: свойства HTTP
ResponseиReplyобъединены в HTTP Request. Новые элементы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()для ключей с размером <= размер алгоритма и > 64. -
Исправление: исправлен
JSON.stringify()для массивов с пустыми ячейками. -
Исправление: исправлен тип исключения для неподдерживаемых типов в
JSON.stringify(). -
Исправление: исправлена обработка неопределённых аргументов функций.
-
Исправление: исправлена обработка отсутствующего
argдляObject.getOwnPropertyDescriptor(). -
Исправление: исправлена обработка свойств в
Object.getOwnPropertyDescriptor(). -
Исправление: исправлен флаг доступности для записи свойства
Array.length. -
Исправление: исправлен тип возвращаемого значения
clearTimeout(). -
Исправление: исправлен
njs_vm_external_bind(). -
Исправление: исправлены различные ошибки.
Изменения в njs 0.2.0
Дата выпуска: 03 апреля 2018
-
Добавление: вывод версии njs через CLI.
-
Добавление: текстовое описание для исключений преобразования типов.
- Добавление: методы
setTimeout()иclearTimeout(). -
Добавление: кодировки
hex,base64,base64urlдля байтовых строк. -
Добавление: методы
Cryptoв стиле Node.js. -
Добавление: методы
warn()иerror()для HTTP и stream. -
Добавление: метод HTTP
subrequest(). -
Добавление: метод HTTP
return(). -
Исправление: исправлены различные ошибки в ядре и интерактивной оболочке.
Изменения в njs 0.1.15
Дата выпуска: 20 ноября 2017
-
Добавление: объекты
Error,EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError. -
Добавление: поддержка восьмеричных литералов.
-
Добавление: методы доступа к
File systemв стиле Node.js:fs.readFile(),fs.readFileSync(),fs.appendFile(),fs.appendFileSync(),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 запрещена на уровнях server и location.
-
Добавление: операторы возведения в степень.
-
Исправление: исправлены различные ошибки и ошибки сегментации.
Изменения в njs 0.1.6
Дата выпуска: 13 декабря 2016
-
Изменение: директива js_set запрещена на уровнях server и location.
-
Добавление: методы
Mathстандарта ES6. -
Исправление: исправлены различные ошибки и ошибки сегментации.
© 2002-2021 Igor Sysoev
© 2011-2026 Nginx, Inc.
Licensed under the BSD License.
https://nginx.org/en/docs/njs/changes.html