Spec-Zone.ru › nginx

Изменения

Изменения в 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.

  • Исправление ошибки: исправлена утечка сокета с таймаутом 0 fetch.

Ядро:

  • Функция: расширенный 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().

  • Функция: добавлены atob() и btoa() из спецификации WHATWG.

  • Исправление ошибки: исправлены большие не десятичные литералы.

  • Исправление ошибки: исправлено обрезание аргументов 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:

    • js_fetch_timeout,

    • js_fetch_verify,

    • js_fetch_buffer_size,

    • js_fetch_max_response_buffer_size.

  • Изменение: 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:

  • Функция: добавлена директива js_var для http и stream.

Изменения в 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.log(level, message)

    Были добавлены следующие свойства:

    • 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.requestText (r.requestBody), r.responseText (r.responseBody).

  • Улучшение: выброс исключения в 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{}.

  • Функция: добавлена директива js_import для http и stream.

  • Улучшение: улучшена итерация по 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:

  • Функция: добавлена директива js_path для http и stream.

  • Изменение: вместо пустых строк для отсутствующих свойств в следующих объектах возвращается значение 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API