# changelog

author: Konstantin Pavlov <thresh@nginx.com> - 1.11.0-1.fc32.ngx
changelog:
  - Feature: basic support for serving static files.
  - Feature: isolation of application processes with Linux namespaces.
  - Feature: built-in WebSocket server implementation for Java Servlet
    Containers.
  - Feature: direct addressing of API configuration options containing slashes
    "/" using URI encoding (%2F).
  - Bugfix: segmentation fault might have occurred in Go applications under
    high load.
  - Bugfix: WebSocket support was broken if Unit was built with some linkers
    other than GNU ld (e.g. gold or LLD).


author: Andrei Belov <defan@nginx.com> - 1.12.0-1.fc32.ngx
changelog:
  - Feature: compatibility with PHP 7.4.
  - Bugfix: descriptors leak on process creation; the bug had appeared in
    1.11.0.
  - Bugfix: TLS connection might be closed prematurely while sending response.
  - Bugfix: segmentation fault might have occurred if an irregular file was
    requested.


author: Andrei Belov <defan@nginx.com> - 1.13.0-1.fc32.ngx
changelog:
  - Feature: basic support for HTTP reverse proxying.
  - Feature: compatibility with Python 3.8.
  - Bugfix: memory leak in Python application processes when the close handler
    was used.
  - Bugfix: threads in Python applications might not work correctly.
  - Bugfix: Ruby on Rails applications might not work on Ruby 2.6.
  - Bugfix: backtraces for uncaught exceptions in Python 3 might be logged
    with significant delays.
  - Bugfix: explicit setting a namespaces isolation option to false might have
    enabled it.


author: Andrei Belov <defan@nginx.com> - 1.14.0-1.fc32.ngx
changelog:
  - Change: the Go package import name changed to "unit.nginx.org/go".
  - Change: Go package now links to libunit instead of including library
    sources.
  - Feature: ability to change user and group for isolated applications when
    Unit daemon runs as an unprivileged user.
  - Feature: request routing by source and destination addresses and ports.
  - Bugfix: memory bloat on large responses.


author: Andrei Belov <defan@nginx.com> - 1.15.0-1.fc32.ngx
changelog:
  - Change: extensions of dynamically requested PHP scripts were restricted to
    ".php".
  - Feature: compatibility with Ruby 2.7.
  - Bugfix: segmentation fault might have occurred in the router process with
    multiple application processes under load; the bug had appeared in 1.14.0.
  - Bugfix: receiving request body over TLS connection might have stalled.


author: Andrei Belov <defan@nginx.com> - 1.16.0-1.fc32.ngx
changelog:
  - Feature: basic load-balancing support with round-robin.
  - Feature: a "fallback" option that performs an alternative action if a
    request can't be served from the "share" directory.
  - Feature: reduced memory consumption by dumping large request bodies to
    disk.
  - Feature: stripping UTF-8 BOM and JavaScript-style comments from uploaded
    JSON.
  - Bugfix: negative address matching in router might work improperly in
    combination with non-negative patterns.
  - Bugfix: Java Spring applications failed to run; the bug had appeared in
    1.10.0.
  - Bugfix: PHP 7.4 was broken if it was built with thread safety enabled.
  - Bugfix: compatibility issues with some Python applications.


author: Andrei Belov <defan@nginx.com> - 1.17.0-1.fc32.ngx
changelog:
  - Feature: a "return" action with optional "location" for immediate
    responses and external redirection.
  - Feature: fractional weights support for upstream servers.
  - Bugfix: accidental 502 "Bad Gateway" errors might have occurred in
    applications under high load.
  - Bugfix: memory leak in the router; the bug had appeared in 1.13.0.
  - Bugfix: segmentation fault might have occurred in the router process when
    reaching open connections limit.
  - Bugfix: "close() failed (9: Bad file descriptor)" alerts might have
    appeared in the log while processing large request bodies; the bug had
    appeared in 1.16.0.
  - Bugfix: existing application processes didn't reopen the log file.
  - Bugfix: incompatibility with some Node.js applications.
  - Bugfix: broken build on DragonFly BSD; the bug had appeared in 1.16.0.


author: Andrei Belov <defan@nginx.com> - 1.18.0-1.fc32.ngx
changelog:
  - Feature: the "rootfs" isolation option for changing root filesystem for an
    application.
  - Feature: multiple "targets" in PHP applications.
  - Feature: support for percent-encoding in the "uri" and "arguments"
    matching options and in the "pass" option.


author: Andrei Belov <defan@nginx.com> - 1.19.0-1.fc32.ngx
changelog:
  - Feature: reworked IPC between the router process and the applications to
    lower latencies, increase performance, and improve scalability.
  - Feature: support for an arbitrary number of wildcards in route matching
    patterns.
  - Feature: chunked transfer encoding in proxy responses.
  - Feature: basic variables support in the "pass" option.
  - Feature: compatibility with PHP 8 Beta 1. Thanks to Remi Collet.
  - Bugfix: the router process could crash while passing requests to an
    application under high load.
  - Bugfix: a number of language modules failed to build on some systems; the
    bug had appeared in 1.18.0.
  - Bugfix: time in error log messages from PHP applications could lag.
  - Bugfix: reconfiguration requests could hang if an application had failed
    to start; the bug had appeared in 1.18.0.
  - Bugfix: memory leak during reconfiguration.
  - Bugfix: the daemon didn't start without language modules; the bug had
    appeared in 1.18.0.
  - Bugfix: the router process could crash at exit.
  - Bugfix: Node.js applications could crash at exit.
  - Bugfix: the Ruby module could be linked against a wrong library version.


author: Andrei Belov <defan@nginx.com> - 1.20.0-1.fc32.ngx
changelog:
  - Change: the PHP module is now initialized before chrooting; this enables
    loading all extensions from the host system.
  - Change: AVIF and APNG image formats added to the default MIME type list.
  - Change: functional tests migrated to the pytest framework.
  - Feature: the Python module now fully supports applications that use the
    ASGI 3.0 server interface.
  - Feature: the Python module now has a built-in WebSocket server
    implementation for applications, compatible with the HTTP & WebSocket ASGI
    Message Format 2.1 specification.
  - Feature: automatic mounting of an isolated "/tmp" file system into
    chrooted application environments.
  - Feature: the $host variable contains a normalized "Host" request value.
  - Feature: the "callable" option sets Python application callable names.
  - Feature: compatibility with PHP 8 RC 1. Thanks to Remi Collet.
  - Feature: the "automount" option in the "isolation" object allows to turn
    off the automatic mounting of language module dependencies.
  - Bugfix: "pass"-ing requests to upstreams from a route was broken; the bug
    had appeared in 1.19.0. Thanks to 洪志道 (Hong Zhi Dao) for discovering and
    fixing it.
  - Bugfix: the router process could crash during reconfiguration.
  - Bugfix: a memory leak occurring in the router process; the bug had
    appeared in 1.18.0.
  - Bugfix: the "!" (non-empty) pattern was matched incorrectly; the bug had
    appeared in 1.19.0.
  - Bugfix: fixed building on platforms without sendfile() support, notably
    NetBSD; the bug had appeared in 1.16.0.


author: Andrei Belov <defan@nginx.com> - 1.21.0-1.fc32.ngx
changelog:
  - Change: procfs is mounted by default for all languages when "rootfs"
    isolation is used.
  - Change: any characters valid according to RFC 7230 are now allowed in HTTP
    header field names.
  - Change: HTTP header fields with underscores ("_") are now discarded from
    requests by default.
  - Feature: optional multithreaded request processing for Java, Python, Perl,
    and Ruby apps.
  - Feature: regular expressions in route matching patterns.
  - Feature: compatibility with Python 3.9.
  - Feature: the Python module now supports ASGI 2.0 legacy applications.
  - Feature: the "protocol" option in Python applications aids choice between
    ASGI and WSGI.
  - Feature: the fastcgi_finish_request() PHP function that finalizes request
    processing and continues code execution without holding onto the client
    connection.
  - Feature: the "discard_unsafe_fields" HTTP option that enables discarding
    request header fields with irregular (but still valid) characters in the
    field name.
  - Feature: the "procfs" and "tmpfs" automount isolation options to disable
    automatic mounting of eponymous filesystems.
  - Bugfix: the router process could crash when running Go applications under
    high load; the bug had appeared in 1.19.0.
  - Bugfix: some language dependencies could remain mounted after using
    "rootfs" isolation.
  - Bugfix: various compatibility issues in Java applications.
  - Bugfix: the Java module built with the musl C library couldn't run
    applications that use "rootfs" isolation.


author: Andrei Belov <defan@nginx.com> - 1.22.0-1.fc32.ngx
changelog:
  - Feature: the ServerRequest and ServerResponse objects of Node.js module
    are now compliant with Stream API.
  - Feature: support for specifying multiple directories in the "path" option
    of Python apps.
  - Bugfix: a memory leak occurred in the router process when serving files
    larger than 128K; the bug had appeared in 1.13.0.
  - Bugfix: apps could stop processing new requests under high load; the bug
    had appeared in 1.19.0.
  - Bugfix: app processes could terminate unexpectedly under high load; the
    bug had appeared in 1.19.0.
  - Bugfix: invalid HTTP responses were generated for some unusual status
    codes.
  - Bugfix: the PHP_AUTH_USER, PHP_AUTH_PW, and PHP_AUTH_DIGEST server
    variables were missing in the PHP module.
  - Bugfix: the router process could crash with multithreaded apps under high
    load.
  - Bugfix: Ruby apps with multithreading configured could crash on start
    under load.
  - Bugfix: mount points weren't unmounted when the "mount" namespace
    isolation was used; the bug had appeared in 1.21.0.
  - Bugfix: the router process could crash while removing or reconfiguring an
    app that used WebSocket.
  - Bugfix: a memory leak occurring in the router process when removing or
    reconfiguring an application; the bug had appeared in 1.19.0.


author: Andrei Belov <defan@nginx.com> - 1.23.0-1.fc32.ngx
changelog:
  - Feature: support for multiple certificate bundles on a listener via the
    Server Name Indication (SNI) TLS extension.
  - Feature: "--mandir" ./configure option to specify the directory for man
    page installation.
  - Bugfix: the router process could crash on premature TLS connection close;
    the bug had appeared in 1.17.0.
  - Bugfix: a connection leak occurred on premature TLS connection close; the
    bug had appeared in 1.6.
  - Bugfix: a descriptor and memory leak occurred in the router process when
    processing small WebSocket frames from a client; the bug had appeared in
    1.19.0.
  - Bugfix: a descriptor leak occurred in the router process when removing or
    reconfiguring an application; the bug had appeared in 1.19.0.
  - Bugfix: persistent storage of certificates might've not worked with some
    filesystems in Linux, and all uploaded certificate bundles were forgotten
    after restart.
  - Bugfix: the controller process could crash while requesting information
    about a certificate with a non-DNS SAN entry.
  - Bugfix: the controller process could crash on manipulations with a
    certificate containing a SAN and no standard name attributes in subject or
    issuer.
  - Bugfix: the Ruby module didn't respect the user locale for defaults in the
    Encoding class.
  - Bugfix: the PHP 5 module failed to build with thread safety enabled; the
    bug had appeared in 1.22.0.


