# changelog

author: Andrei Belov <defan@nginx.com> - 15-1.el8.ngx
changelog:
  - Based on nginx/1.13.10 mainline version.
  - Feature: the ngx_http_grpc_module, providing gRPC proxy support.
  - Feature: HTTP/2 server push support; the "http2_push" and
    "http2_push_preload" directives.
  - Feature: the ngx_stream_zone_sync_module, providing shared zones
    synchronization between NGINX Plus nodes, currently supported for sticky
    sessions.
  - Feature: the "escape=none" parameter of the "log_format" directive, used
    to completely disable any escaping in access log.
  - Feature: the ngx_stream_ssl_preread_module can now extract list of
    protocols advertised by the client through ALPN (the
    $ssl_preread_alpn_protocols variable).
  - Change: it is no longer required to run nginx under superuser when using
    the "proxy_bind" directive with the "transparent" parameter on Linux, as
    worker processes now inherit the CAP_NET_RAW capability from the master
    process.
  - Feature: the "auth_jwt_leeway" directive, used to configure a leeway to
    account for clock skew when verifying "exp" and "nbf" claims, as per RFC
    7519.
  - Feature: the $upstream_queue_time variable.
  - Feature: status dashboard (v2) updated.


author: Andrei Belov <defan@nginx.com> - 15-2.el8.ngx
changelog:
  - Bugfix: dynamic modules compatibility between nginx-plus-15_1 and
    nginx/FOSS 1.13.10 was broken.
  - Bugfix: in status dashboard (v2).


author: Andrei Belov <defan@nginx.com> - 16-1.el8.ngx
changelog:
  - Based on nginx/1.15.2 mainline version.
  - Change: IMPORTANT: the status and upstream_conf modules deprecated since
    NGINX Plus R13 were finally removed in favor to the API module.
    Legacy status dashboard was also removed from packages.
  - Feature: shared zones synchronization extended to support keyval and
    limit_req modules.
  - Feature: key-value pairs can now be expired after configured timeout.
  - Feature: random with two choices load balancing algorithm.
  - Feature: UDP load balancing extended to support multiple incoming
    datagrams from a client within a single session, thus allowing to
    proxy/load balance of more complex applications.
  - Feature: the "proxy_protocol" parameter of the "listen" directive now
    supports the PROXY protocol version 2.
  - Feature: the $ssl_preread_protocol variable in the
    ngx_stream_ssl_preread_module.


author: Andrei Belov <defan@nginx.com> - 16-2.el8.ngx
changelog:
  - Bugfix: in the ngx_http_v2_module.
  - Bugfix: in the ngx_http_grpc_module.
  - Bugfix: in the ngx_http_mp4_module.
  - Bugfix: in the ngx_http_hls_module.


author: Andrei Belov <defan@nginx.com> - 17-1.el8.ngx
changelog:
  - Feature: the "ssl_early_data" directive used to enable TLS v1.3 0-RTT
    data.
    The "$ssl_early_data" variable introduced to protect against replay
    attacks at the application layer.
  - Feature: the "delay" parameter of the "limit_req" directive.
  - Feature: the "auth_jwt_key_request" directive used to retrieve JWK file
    from a subrequest.
  - Feature: the "Ed25519" and "Ed448" cryptographic algorithms introduced in
    JWT authorization module.
  - Feature: the "proxy_socket_keepalive", "fastcgi_socket_keepalive",
    "grpc_socket_keepalive", "memcached_socket_keepalive",
    "scgi_socket_keepalive", and "uwsgi_socket_keepalive" directives.
  - Feature: the "keepalive_timeout" and "keepalive_requests" directives in
    the "upstream" block.
  - Feature: the "proxy_requests" directive in stream module.
  - Bugfix: in the $upstream_connect_time, $upstream_header_time,
    $upstream_queue_time, $upstream_response_time variables.
  - Change: the logging level of the "no suitable key share" and "no suitable
    signature algorithm" SSL errors has been lowered from "crit" to "info".


author: Andrei Belov <defan@nginx.com> - 18-1.el8.ngx
changelog:
  - Feature: variables support in the "ssl_certificate" and
    "ssl_certificate_key" directives.
  - Feature: loading of SSL certificates and secret keys from variables.
  - Feature: active health checks extended with additional logic of verifying
    arbitrary variables (the "require" parameter of the "match" directive).
  - Feature: clustering enhancement - a single zone_sync configuration can now
    be used for all instances in a cluster with the help of wildcard support
    in the "listen" directive.
  - Change: when using a hostname in the "listen" directive nginx now creates
    listening sockets for all addresses the hostname resolves to (previously,
    only the first address was used).
  - Feature: port ranges in the "listen" directive.
  - Feature: in stream proxy, added an ability to explicitly close existing
    connections to the particular upstream server after it was removed from
    the group due to health check failure, API call, or re-resolve action (the
    "proxy_session_drop" directive).
  - Feature: the $upstream_bytes_sent variable.


author: Konstantin Pavlov <thresh@nginx.com> - 18-2.el8.ngx
changelog:
  - Security: when using HTTP/2 a client might cause excessive memory
    consumption and CPU usage (CVE-2019-9511, CVE-2019-9513, CVE-2019-9516).


author: Andrei Belov <defan@nginx.com> - 19-1.el8.ngx
changelog:
  - Feature: metrics provided by the "status_zone" directive can be collected
    per location.
  - Feature: added a set of metrics related to DNS resolver functionality (the
    "status_zone" parameter of the "resolver" directive).
  - Feature: the "limit_req_dry_run" directive provides a way of testing
    request limiting configuration without actually blocking excessive
    requests.
  - Feature: key-value storage now has optimized mode for storing IP addresses
    in CIDR notation (the "type" parameter of the "keyval_zone" directive).
  - Feature: each key-value pair can now have its own custom expiration timer,
    either set at creation time for new entry, or modified for existing entry.
  - Feature: variables support in the "limit_rate" and "limit_rate_after"
    directives.
  - Feature: variables support in the "proxy_upload_rate" and
    "proxy_download_rate" directives in the stream module.
  - Feature: updated status dashboard with new visualizations for per-location
    statistic, resolver metrics, and zone sync status.


author: Andrei Belov <defan@nginx.com> - 20-1.el8.ngx
changelog:
  - Feature: key-value storage: support for matching a key based on a
    substring (the "type" parameter of the "keyval_zone" directive was
    extended with the "prefix" option).
  - Feature: DNS resolvers can now be specified in upstream context.
  - Feature: rate limiting: the $limit_req_status variable keeps the result of
    limiting a request processing rate. Corresponding metrics are available
    through the "/http/limit_reqs/" endpoint in the API module.
  - Feature: connection limiting: the "limit_conn_dry_run" directive. The
    $limit_conn_status variable keeps the result of limiting a number of
    connections. Correponding metrics are available through the
    "/http/limit_conns/" endpoint in the API module.
  - Feature: the $proxy_protocol_server_addr and $proxy_protocol_server_port
    variables.


author: Andrei Belov <defan@nginx.com> - 21-1.el8.ngx
changelog:
  - Based on nginx/1.17.9 mainline version.
  - Feature: The grpc_pass directive can now contain variables.


author: Andrei Belov <defan@nginx.com> - 16+3.0-1.el8.ngx
changelog:
  - Base version updated to 1.15.2-1 (nginx-plus-r16).
  - Change: module version updated to 3.0.
  - Feature: support relative path to database in geoip2.
  - Feature: retrieve metadata about the database.
  - Feature: auto reload the database if it has changed.


author: Andrei Belov <defan@nginx.com> - 16+3.0-2.el8.ngx
changelog:
  - Bugfix: unwanted auto-reload of MaxMind database might occur even if there
    was no "auto_reload" parameter specified in configuration.
  - Bugfix: a segmentation fault might occur in a worker process on
    auto-reloading MaxMind database.


author: Andrei Belov <defan@nginx.com> - 18+0.3.2-1.el8.ngx
changelog:
  - Change: njs module updated to 0.3.2.
  - Feature: added support for template literals.
  - Feature: executing command from command line arguments.
  - Feature: added support for RegExp "groups" object (ES9).
  - Feature: added block scoped function definitions support.
  - Feature: added support for building with GNU Readline library.
  - Feature: made configurable "length", "name", and most of built-in methods.
  - Feature: made all constructor properties configurable.
  - Bugfix: fixed Regexp.prototype.exec() for Unicode-only regexps.
  - Bugfix: fixed njs_vm_value_dump() for empty string values.
  - Bugfix: fixed RegExp constructor for regexp value arguments.
  - Bugfix: fixed walking over prototypes chain during iteration over an
    object.
  - Bugfix: fixed overflow in Array.prototype.concat().
  - Bugfix: fixed length calculation for UTF-8 string with escape characters.
  - Bugfix: fixed parsing surrogate pair presents as UTF-16 escape sequences.
  - Bugfix: fixed processing asterisk quantifier for String.prototype.match().
  - Bugfix: fixed Date() constructor with one argument.
  - Bugfix: fixed arrays expansion.
  - Bugfix: fixed heap-buffer-overflow in String.prototype.replace().
  - Bugfix: fixed heap-buffer-overflow in String.prototype.lastIndexOf().
  - Bugfix: fixed regexp literals parsing with escaped backslash and backslash
    in square brackets.
  - Bugfix: fixed regexp literals with lone closing brackets.
  - Bugfix: fixed uninitialized-memory-access in Object.defineProperties().
  - Bugfix: fixed processing "*" quantifier for String.prototype.replace().
  - Bugfix: fixed Array.prototype.slice() for UTF8-invalid byte strings.
  - Bugfix: fixed String.prototype.split() for UTF8-invalid byte strings.
  - Bugfix: fixed handling of empty block statements.


author: Andrei Belov <defan@nginx.com> - 18+0.3.3-1.el8.ngx
changelog:
  - Change: njs module updated to 0.3.3.
  - Improvement: getting of special response headers in headersOut.
  - Improvement: working with unknown methods in subrequest().
  - Improvement: added support for null as a second argument of
    r.subrequest().
  - Bugfix: fixed processing empty output chain in stream body filter.
  - Feature: added runtime support for property getter/setter.
  - Feature: added "process" global object.
  - Feature: writable most of built-in properties and methods.
  - Feature: added generic implementation of Array.prototype.fill().
  - Bugfix: fixed integer-overflow in String.prototype.concat().
  - Bugfix: fixed setting of object properties.
  - Bugfix: fixed Array.prototype.toString().
  - Bugfix: fixed Date.prototype.toJSON().
  - Bugfix: fixed overwriting "constructor" property of built-in prototypes.
  - Bugfix: fixed processing of invalid surrogate pairs in strings.
  - Bugfix: fixed processing of invalid surrogate pairs in JSON strings.
  - Bugfix: fixed heap-buffer-overflow in toUpperCase() and toLowerCase().
  - Bugfix: fixed escaping lone closing square brackets in RegExp()
    constructor.
  - Bugfix: fixed String.prototype.toBytes() for ASCII strings.
  - Bugfix: fixed handling zero byte characters inside RegExp pattern strings.
  - Bugfix: fixed String.prototype.toBytes() for ASCII strings.
  - Bugfix: fixed truth value of JSON numbers in JSON.parse().
  - Bugfix: fixed use-of-uninitialized-value in njs_string_replace_join().
  - Bugfix: fixed parseInt('-0').


author: Andrei Belov <defan@nginx.com> - 18+0.3.4-1.el8.ngx
changelog:
  - Change: njs module updated to 0.3.4.
  - Feature: added Object shorthand methods and computed property names.
  - Feature: added getter/setter literal support.
  - Feature: added fs.renameSync().
  - Feature: added String.prototype.trimStart() and
    String.prototype.trimEnd().
  - Improvement: added memory-sanitizer support.
  - Improvement: Unicode case tables updated to version 12.1.
  - Improvement: added UTF8 validation for string literals.
  - Bugfix: fixed reading files with zero size in fs.readFileSync().
  - Bugfix: extended the list of space separators in String.prototype.trim().
  - Bugfix: fixed using of uninitialized value in String.prototype.padStart().
  - Bugfix: fixed String.prototype.replace() for '$0' and '$&' replacement
    string.
  - Bugfix: fixed String.prototype.replace() for byte strings with regex
    argument.
  - Bugfix: fixed global match in String.prototype.replace() with regexp
    argument.
  - Bugfix: fixed Array.prototype.slice() for primitive types.
  - Bugfix: fixed heap-buffer-overflow while importing module.
  - Bugfix: fixed UTF-8 character escaping.
  - Bugfix: fixed Object.values() and Object.entries() for shared objects.
  - Bugfix: fixed uninitialized memory access in String.prototype.match().
  - Bugfix: fixed String.prototype.match() for byte strings with regex
    argument.
  - Bugfix: fixed Array.prototype.lastIndexOf() with undefined arguments.
  - Bugfix: fixed String.prototype.substring() with empty substring.
  - Bugfix: fixed invalid memory access in String.prototype.substring().
  - Bugfix: fixed String.fromCharCode() for code points > 65535 and NaN.
  - Bugfix: fixed String.prototype.toLowerCase() and
    String.prototype.toUpperCase().
  - Bugfix: fixed Error() constructor with no arguments.
  - Bugfix: fixed "in" operator for values with accessor descriptors.
  - Bugfix: fixed Object.defineProperty() for non-boolean descriptor props.
  - Bugfix: fixed Error.prototype.toString() with UTF8 string properties.
  - Bugfix: fixed Error.prototype.toString() with non-string values for "name"
    and "message".


author: Andrei Belov <defan@nginx.com> - 18+0.3.5-1.el8.ngx
changelog:
  - Change: njs module updated to 0.3.4.
  - Bugfix: fixed module importing using require(). The bug was introduced in
    0.3.4.
  - Bugfix: fixed [[SetPrototypeOf]].


author: Andrei Belov <defan@nginx.com> - 19+0.3.6-1.el8.ngx
changelog:
  - Change: njs module updated to 0.3.6.
  - Improvement: getting special headers from r.headersIn.
  - Feature: added new Function() support.
  - Feature: added Number.prototype.toFixed().
  - Feature: added Number.prototype.toPrecision().
  - Feature: added Number.prototype.toExponential().
  - Improvement: making "prototype" property of function instances writable.
  - Improvement: limiting recursion depth while compiling.
  - Improvement: moving global functions to the global object.
  - Bugfix: fixed prototype mutation for object literals.
  - Bugfix: fixed heap-buffer-overflow while parsing regexp literals.
  - Bugfix: fixed integer-overflow while parsing exponent of number literals.
  - Bugfix: fixed parseFloat().
  - Bugfix: fixed Array.prototype functions according to the specification.
    The following functions were fixed: every, includes, indexOf, filter,
    find, findIndex, forEach, lastIndexOf, map, pop, push, reduce,
    reduceRight, shift, some, unshift.
  - Bugfix: fixed handing of accessor descriptors in Object.freeze().
  - Bugfix: fixed String.prototype.replace() when first argument is not a
    string.
  - Bugfix: fixed stack-use-after-scope in Array.prototype.map().
  - Bugfix: Date.prototype.toUTCString() format was aligned to ES9.
  - Bugfix: fixed buffer overflow in Number.prototype.toString(radix).
  - Bugfix: fixed Regexp.prototype.test() for regexps with backreferences.
  - Bugfix: fixed Array.prototype.map() for objects with nonexistent values.
  - Bugfix: fixed Array.prototype.pop() and shift() for sparse objects.
  - Bugfix: fixed Date.UTC() according to the specification.
  - Bugfix: fixed Date() constructor according to the specification.
  - Bugfix: fixed type of Date.prototype.
  - Bugfix: fixed Date.prototype.setTime().
  - Bugfix: fixed default number of arguments expected by built-in functions.
  - Bugfix: fixed "caller" and "arguments" properties of a function instance.


author: Andrei Belov <defan@nginx.com> - 19+0.3.7-1.el8.ngx
changelog:
  - Change: njs module updated to 0.3.7.
  - Improvement: refactored iteration over external objects.
  - Feature: added Object.assign().
  - Feature: added Array.prototype.copyWithin().
  - Feature: added support for labels in console.time().
  - Change: removed console.help() from CLI.
  - Improvement: moved constructors and top-level objects to global object.
  - Improvement: arguments validation for configure script.
  - Improvement: refactored JSON methods.
  - Bugfix: fixed heap-buffer-overflow in njs_array_reverse_iterator()
    function. The following functions were affected:
    Array.prototype.lastIndexOf(), Array.prototype.reduceRight().
  - Bugfix: fixed [[Prototype]] slot of NativeErrors.
  - Bugfix: fixed NativeError.prototype.message properties.
  - Bugfix: added conversion of "this" value to object in Array.prototype
    functions.
  - Bugfix: fixed iterator for Array.prototype.find() and
    Array.prototype.findIndex() functions.
  - Bugfix: fixed Array.prototype.includes() and Array.prototype.join() with
    "undefined" argument.
  - Bugfix: fixed "constructor" property of "Hash" and "Hmac" objects.
  - Bugfix: fixed "__proto__" property of getters and setters.
  - Bugfix: fixed "Date" object string formatting.
  - Bugfix: fixed handling of NaN and -0 arguments in Math.min() and
    Math.max().
  - Bugfix: fixed Math.round() according to the specification.
  - Bugfix: reimplemented "bound" functions according to the specification.


author: Andrei Belov <defan@nginx.com> - 20+0.3.8-1.el8.ngx
changelog:
  - Change: njs module updated to 0.3.8.
  - Feature: added Promise support for r.subrequest(). If callback is not
    provided r.subrequest() returns an ordinary Promise object that resolves
    to subrequest response object.
  - Change: r.parent property handler now returns "undefined" instead of
    throwing exception if parent object is not available.
  - Feature: added Promise support. Implemented according to the specification
    without: Promise.all(), Promise.allSettled(), Promise.race().
  - Feature: added initial Typed-arrays support.
  - Feature: added ArrayBuffer support.
  - Feature: added initial Symbol support.
  - Feature: added externals supopor for JSON.stringify().
  - Feature: added Object.is().
  - Feature: added Object.setPrototypeOf().
  - Feature: introduced nullish coalescing operator.
  - Bugfix: fixed Object.getPrototypeOf() according to the specification.
  - Bugfix: fixed Object.prototype.valueOf() according to the specification.
  - Bugfix: fixed JSON.stringify() with unprintable values and replacer
    function.
  - Bugfix: fixed operator "in" according to the specification.
  - Bugfix: fixed Object.defineProperties() according to the specification.
  - Bugfix: fixed Object.create() according to the specification.
  - Bugfix: fixed Number.prototype.toString(radix) when fast-math is enabled.
  - Bugfix: fixed RegExp() instance properties.
  - Bugfix: fixed import segfault.


author: Andrei Belov <defan@nginx.com> - 21+0.3.9-1.el8.ngx
changelog:
  - Base version updated to 1.17.9-1 (nginx-plus-r21).
  - Feature: added detached mode for r.subrequest(). Responses to detached
    subrequests are ignored. Unlike ordinary subrequests, a detached
    subrequest can be created inside a variable handler.
  - Feature: Feature: added promises API for "fs" module. Thanks to Artem S.
    Povalyukhin.
  - Feature: extended "fs" module. Added access(), symlink(), unlink(),
    realpath() and friends. Thanks to Artem S. Povalyukhin.
  - Improvement: introduced memory-efficient ordinary arrays.
  - Improvement: lexer refactoring.
  - Bugfix: fixed matching of native functions in backtraces.
  - Bugfix: fixed callback invocations in "fs" module. Thanks to Artem S.
    Povalyukhin.
  - Bugfix: fixed Object.getOwnPropertySymbols().
  - Bugfix: fixed heap-buffer-overflow in njs_json_append_string().
  - Bugfix: fixed encodeURI() and decodeURI() according to the specification.
  - Bugfix: fixed Number.prototype.toPrecision().
  - Bugfix: fixed handling of space argument in JSON.stringify().
  - Bugfix: fixed JSON.stringify() with Number() and String() objects.
  - Bugfix: fixed Unicode Escaping in JSON.stringify() according to
    specification.
  - Bugfix: fixed non-native module importing. Thanks to 洪志道 (Hong Zhi Dao).
  - Bugfix: fixed non-native module importing. Thanks to 洪志道 (Hong Zhi Dao).
  - Bugfix: fixed njs.dump() with the Date() instance in a container.


author: Igor Ippolitov <iippolitov@nginx.com> - 21+0.4.0-1.el8.ngx
changelog:
  - Change: njs module updated to 0.4.0.
  - Feature: added support for multi-value headers in r.headersOut.
  - Feature: added js_import directive for http and stream.
  - Improvement: iteration over r.headersOut with special headers.
  - Improvement: iteration over r.headersOut with duplicates.
  - Change: r.responseBody property handler now returns "undefined" instead of
    throwing an exception if response body is not available.
  - Feature: added script arguments support in CLI.
  - Feature: converting externals values to native js objects.
  - Bugfix: fixed NULL-pointer dereference in "__proto__" property handler.
  - Bugfix: fixed handling of no-newline at the end of the script.
  - Bugfix: fixed RegExp() constructor with empty pattern and non-empty flags.
  - Bugfix: fixed String.prototype.replace() when function returns non-string.
  - Bugfix: fixed reading of pseudofiles in "fs".


author: Andrei Belov <defan@nginx.com> - 19+1.2.0-1.el8.ngx
changelog:
  - Updated to 1.2.0.
  - Feature: stream keyval support.
  - Feature: metrics for zone_sync, nginx, processes, slabs, caches.
  - Feature: an ability to disable certain metrics at particular endpoints.


