xref: /unit/CHANGES (revision 1722)
1*1722Svbart@nginx.com
2*1722Svbart@nginx.comChanges with Unit 1.21.0                                         19 Nov 2020
3*1722Svbart@nginx.com
4*1722Svbart@nginx.com    *) Change: procfs is mounted by default for all languages when "rootfs"
5*1722Svbart@nginx.com       isolation is used.
6*1722Svbart@nginx.com
7*1722Svbart@nginx.com    *) Change: any characters valid according to RFC 7230 are now allowed in
8*1722Svbart@nginx.com       HTTP header field names.
9*1722Svbart@nginx.com
10*1722Svbart@nginx.com    *) Change: HTTP header fields with underscores ("_") are now discarded
11*1722Svbart@nginx.com       from requests by default.
12*1722Svbart@nginx.com
13*1722Svbart@nginx.com    *) Feature: optional multithreaded request processing for Java, Python,
14*1722Svbart@nginx.com       Perl, and Ruby apps.
15*1722Svbart@nginx.com
16*1722Svbart@nginx.com    *) Feature: regular expressions in route matching patterns.
17*1722Svbart@nginx.com
18*1722Svbart@nginx.com    *) Feature: compatibility with Python 3.9.
19*1722Svbart@nginx.com
20*1722Svbart@nginx.com    *) Feature: the Python module now supports ASGI 2.0 legacy applications.
21*1722Svbart@nginx.com
22*1722Svbart@nginx.com    *) Feature: the "protocol" option in Python applications aids choice
23*1722Svbart@nginx.com       between ASGI and WSGI.
24*1722Svbart@nginx.com
25*1722Svbart@nginx.com    *) Feature: the fastcgi_finish_request() PHP function that finalizes
26*1722Svbart@nginx.com       request processing and continues code execution without holding onto
27*1722Svbart@nginx.com       the client connection.
28*1722Svbart@nginx.com
29*1722Svbart@nginx.com    *) Feature: the "discard_unsafe_fields" HTTP option that enables
30*1722Svbart@nginx.com       discarding request header fields with irregular (but still valid)
31*1722Svbart@nginx.com       characters in the field name.
32*1722Svbart@nginx.com
33*1722Svbart@nginx.com    *) Feature: the "procfs" and "tmpfs" automount isolation options to
34*1722Svbart@nginx.com       disable automatic mounting of eponymous filesystems.
35*1722Svbart@nginx.com
36*1722Svbart@nginx.com    *) Bugfix: the router process could crash when running Go applications
37*1722Svbart@nginx.com       under high load; the bug had appeared in 1.19.0.
38*1722Svbart@nginx.com
39*1722Svbart@nginx.com    *) Bugfix: some language dependencies could remain mounted after using
40*1722Svbart@nginx.com       "rootfs" isolation.
41*1722Svbart@nginx.com
42*1722Svbart@nginx.com    *) Bugfix: various compatibility issues in Java applications.
43*1722Svbart@nginx.com
44*1722Svbart@nginx.com    *) Bugfix: the Java module built with the musl C library couldn't run
45*1722Svbart@nginx.com       applications that use "rootfs" isolation.
46*1722Svbart@nginx.com
471640Svbart@nginx.com
481640Svbart@nginx.comChanges with Unit 1.20.0                                         08 Oct 2020
491640Svbart@nginx.com
501640Svbart@nginx.com    *) Change: the PHP module is now initialized before chrooting; this
511640Svbart@nginx.com       enables loading all extensions from the host system.
521640Svbart@nginx.com
531640Svbart@nginx.com    *) Change: AVIF and APNG image formats added to the default MIME type
541640Svbart@nginx.com       list.
551640Svbart@nginx.com
561643Svbart@nginx.com    *) Change: functional tests migrated to the pytest framework.
571643Svbart@nginx.com
581640Svbart@nginx.com    *) Feature: the Python module now fully supports applications that use
591640Svbart@nginx.com       the ASGI 3.0 server interface.
601640Svbart@nginx.com
611640Svbart@nginx.com    *) Feature: the Python module now has a built-in WebSocket server
621640Svbart@nginx.com       implementation for applications, compatible with the HTTP & WebSocket
631640Svbart@nginx.com       ASGI Message Format 2.1 specification.
641640Svbart@nginx.com
651640Svbart@nginx.com    *) Feature: automatic mounting of an isolated "/tmp" file system into
661640Svbart@nginx.com       chrooted application environments.
671640Svbart@nginx.com
681640Svbart@nginx.com    *) Feature: the $host variable contains a normalized "Host" request
691640Svbart@nginx.com       value.
701640Svbart@nginx.com
711640Svbart@nginx.com    *) Feature: the "callable" option sets Python application callable
721640Svbart@nginx.com       names.
731640Svbart@nginx.com
741640Svbart@nginx.com    *) Feature: compatibility with PHP 8 RC 1. Thanks to Remi Collet.
751640Svbart@nginx.com
761640Svbart@nginx.com    *) Feature: the "automount" option in the "isolation" object allows to
771640Svbart@nginx.com       turn off the automatic mounting of language module dependencies.
781640Svbart@nginx.com
791640Svbart@nginx.com    *) Bugfix: "pass"-ing requests to upstreams from a route was broken; the
801640Svbart@nginx.com       bug had appeared in 1.19.0. Thanks to 洪志道 (Hong Zhi Dao) for
811640Svbart@nginx.com       discovering and fixing it.
821640Svbart@nginx.com
831640Svbart@nginx.com    *) Bugfix: the router process could crash during reconfiguration.
841640Svbart@nginx.com
851640Svbart@nginx.com    *) Bugfix: a memory leak occurring in the router process; the bug had
861640Svbart@nginx.com       appeared in 1.18.0.
871640Svbart@nginx.com
881640Svbart@nginx.com    *) Bugfix: the "!" (non-empty) pattern was matched incorrectly; the bug
891640Svbart@nginx.com       had appeared in 1.19.0.
901640Svbart@nginx.com
911640Svbart@nginx.com    *) Bugfix: fixed building on platforms without sendfile() support,
921640Svbart@nginx.com       notably NetBSD; the bug had appeared in 1.16.0.
931640Svbart@nginx.com
941570Svbart@nginx.com
951570Svbart@nginx.comChanges with Unit 1.19.0                                         13 Aug 2020
961570Svbart@nginx.com
971570Svbart@nginx.com    *) Feature: reworked IPC between the router process and the applications
981570Svbart@nginx.com       to lower latencies, increase performance, and improve scalability.
991570Svbart@nginx.com
1001570Svbart@nginx.com    *) Feature: support for an arbitrary number of wildcards in route
1011570Svbart@nginx.com       matching patterns.
1021570Svbart@nginx.com
1031570Svbart@nginx.com    *) Feature: chunked transfer encoding in proxy responses.
1041570Svbart@nginx.com
1051570Svbart@nginx.com    *) Feature: basic variables support in the "pass" option.
1061570Svbart@nginx.com
1071570Svbart@nginx.com    *) Feature: compatibility with PHP 8 Beta 1. Thanks to Remi Collet.
1081570Svbart@nginx.com
1091570Svbart@nginx.com    *) Bugfix: the router process could crash while passing requests to an
1101570Svbart@nginx.com       application under high load.
1111570Svbart@nginx.com
1121570Svbart@nginx.com    *) Bugfix: a number of language modules failed to build on some systems;
1131570Svbart@nginx.com       the bug had appeared in 1.18.0.
1141570Svbart@nginx.com
1151570Svbart@nginx.com    *) Bugfix: time in error log messages from PHP applications could lag.
1161570Svbart@nginx.com
1171570Svbart@nginx.com    *) Bugfix: reconfiguration requests could hang if an application had
1181570Svbart@nginx.com       failed to start; the bug had appeared in 1.18.0.
1191570Svbart@nginx.com
1201570Svbart@nginx.com    *) Bugfix: memory leak during reconfiguration.
1211570Svbart@nginx.com
1221570Svbart@nginx.com    *) Bugfix: the daemon didn't start without language modules; the bug had
1231570Svbart@nginx.com       appeared in 1.18.0.
1241570Svbart@nginx.com
1251570Svbart@nginx.com    *) Bugfix: the router process could crash at exit.
1261570Svbart@nginx.com
1271570Svbart@nginx.com    *) Bugfix: Node.js applications could crash at exit.
1281570Svbart@nginx.com
1291570Svbart@nginx.com    *) Bugfix: the Ruby module could be linked against a wrong library
1301570Svbart@nginx.com       version.
1311570Svbart@nginx.com
1321491Svbart@nginx.com
1331491Svbart@nginx.comChanges with Unit 1.18.0                                         28 May 2020
1341491Svbart@nginx.com
1351491Svbart@nginx.com    *) Feature: the "rootfs" isolation option for changing root filesystem
1361491Svbart@nginx.com       for an application.
1371491Svbart@nginx.com
1381491Svbart@nginx.com    *) Feature: multiple "targets" in PHP applications.
1391491Svbart@nginx.com
1401491Svbart@nginx.com    *) Feature: support for percent-encoding in the "uri" and "arguments"
1411491Svbart@nginx.com       matching options and in the "pass" option.
1421491Svbart@nginx.com
1431460Svbart@nginx.com
1441460Svbart@nginx.comChanges with Unit 1.17.0                                         16 Apr 2020
1451460Svbart@nginx.com
1461460Svbart@nginx.com    *) Feature: a "return" action with optional "location" for immediate
1471460Svbart@nginx.com       responses and external redirection.
1481460Svbart@nginx.com
1491460Svbart@nginx.com    *) Feature: fractional weights support for upstream servers.
1501460Svbart@nginx.com
1511460Svbart@nginx.com    *) Bugfix: accidental 502 "Bad Gateway" errors might have occurred in
1521460Svbart@nginx.com       applications under high load.
1531460Svbart@nginx.com
1541460Svbart@nginx.com    *) Bugfix: memory leak in the router; the bug had appeared in 1.13.0.
1551460Svbart@nginx.com
1561460Svbart@nginx.com    *) Bugfix: segmentation fault might have occurred in the router process
1571460Svbart@nginx.com       when reaching open connections limit.
1581460Svbart@nginx.com
1591460Svbart@nginx.com    *) Bugfix: "close() failed (9: Bad file descriptor)" alerts might have
1601460Svbart@nginx.com       appeared in the log while processing large request bodies; the bug
1611460Svbart@nginx.com       had appeared in 1.16.0.
1621460Svbart@nginx.com
1631460Svbart@nginx.com    *) Bugfix: existing application processes didn't reopen the log file.
1641460Svbart@nginx.com
1651460Svbart@nginx.com    *) Bugfix: incompatibility with some Node.js applications.
1661460Svbart@nginx.com
1671460Svbart@nginx.com    *) Bugfix: broken build on DragonFly BSD; the bug had appeared in
1681460Svbart@nginx.com       1.16.0.
1691460Svbart@nginx.com
1701404Svbart@nginx.com
1711404Svbart@nginx.comChanges with Unit 1.16.0                                         12 Mar 2020
1721404Svbart@nginx.com
1731404Svbart@nginx.com    *) Feature: basic load-balancing support with round-robin.
1741404Svbart@nginx.com
1751404Svbart@nginx.com    *) Feature: a "fallback" option that performs an alternative action if a
1761404Svbart@nginx.com       request can't be served from the "share" directory.
1771404Svbart@nginx.com
1781404Svbart@nginx.com    *) Feature: reduced memory consumption by dumping large request bodies
1791404Svbart@nginx.com       to disk.
1801404Svbart@nginx.com
1811404Svbart@nginx.com    *) Feature: stripping UTF-8 BOM and JavaScript-style comments from
1821404Svbart@nginx.com       uploaded JSON.
1831404Svbart@nginx.com
1841404Svbart@nginx.com    *) Bugfix: negative address matching in router might work improperly in
1851404Svbart@nginx.com       combination with non-negative patterns.
1861404Svbart@nginx.com
1871404Svbart@nginx.com    *) Bugfix: Java Spring applications failed to run; the bug had appeared
1881404Svbart@nginx.com       in 1.10.0.
1891404Svbart@nginx.com
1901404Svbart@nginx.com    *) Bugfix: PHP 7.4 was broken if it was built with thread safety
1911404Svbart@nginx.com       enabled.
1921404Svbart@nginx.com
1931404Svbart@nginx.com    *) Bugfix: compatibility issues with some Python applications.
1941404Svbart@nginx.com
1951357Svbart@nginx.com
1961357Svbart@nginx.comChanges with Unit 1.15.0                                         06 Feb 2020
1971357Svbart@nginx.com
1981357Svbart@nginx.com    *) Change: extensions of dynamically requested PHP scripts were
1991357Svbart@nginx.com       restricted to ".php".
2001357Svbart@nginx.com
2011357Svbart@nginx.com    *) Feature: compatibility with Ruby 2.7.
2021357Svbart@nginx.com
2031357Svbart@nginx.com    *) Bugfix: segmentation fault might have occurred in the router process
2041357Svbart@nginx.com       with multiple application processes under load; the bug had appeared
2051357Svbart@nginx.com       in 1.14.0.
2061357Svbart@nginx.com
2071357Svbart@nginx.com    *) Bugfix: receiving request body over TLS connection might have
2081357Svbart@nginx.com       stalled.
2091357Svbart@nginx.com
2101330Svbart@nginx.com
2111330Svbart@nginx.comChanges with Unit 1.14.0                                         26 Dec 2019
2121330Svbart@nginx.com
2131330Svbart@nginx.com    *) Change: the Go package import name changed to "unit.nginx.org/go".
2141330Svbart@nginx.com
2151330Svbart@nginx.com    *) Change: Go package now links to libunit instead of including library
2161330Svbart@nginx.com       sources.
2171330Svbart@nginx.com
2181330Svbart@nginx.com    *) Feature: ability to change user and group for isolated applications
2191330Svbart@nginx.com       when Unit daemon runs as an unprivileged user.
2201330Svbart@nginx.com
2211330Svbart@nginx.com    *) Feature: request routing by source and destination addresses and
2221330Svbart@nginx.com       ports.
2231330Svbart@nginx.com
2241330Svbart@nginx.com    *) Bugfix: memory bloat on large responses.
2251330Svbart@nginx.com
2261284Svbart@nginx.com
2271284Svbart@nginx.comChanges with Unit 1.13.0                                         14 Nov 2019
2281284Svbart@nginx.com
2291284Svbart@nginx.com    *) Feature: basic support for HTTP reverse proxying.
2301284Svbart@nginx.com
2311284Svbart@nginx.com    *) Feature: compatibility with Python 3.8.
2321284Svbart@nginx.com
2331284Svbart@nginx.com    *) Bugfix: memory leak in Python application processes when the close
2341284Svbart@nginx.com       handler was used.
2351284Svbart@nginx.com
2361284Svbart@nginx.com    *) Bugfix: threads in Python applications might not work correctly.
2371284Svbart@nginx.com
2381284Svbart@nginx.com    *) Bugfix: Ruby on Rails applications might not work on Ruby 2.6.
2391284Svbart@nginx.com
2401284Svbart@nginx.com    *) Bugfix: backtraces for uncaught exceptions in Python 3 might be
2411284Svbart@nginx.com       logged with significant delays.
2421284Svbart@nginx.com
2431284Svbart@nginx.com    *) Bugfix: explicit setting a namespaces isolation option to false might
2441284Svbart@nginx.com       have enabled it.
2451284Svbart@nginx.com
2461222Svbart@nginx.com
2471222Svbart@nginx.comChanges with Unit 1.12.0                                         03 Oct 2019
2481222Svbart@nginx.com
2491222Svbart@nginx.com    *) Feature: compatibility with PHP 7.4.
2501222Svbart@nginx.com
2511222Svbart@nginx.com    *) Bugfix: descriptors leak on process creation; the bug had appeared in
2521222Svbart@nginx.com       1.11.0.
2531222Svbart@nginx.com
2541222Svbart@nginx.com    *) Bugfix: TLS connection might be closed prematurely while sending
2551222Svbart@nginx.com       response.
2561222Svbart@nginx.com
2571222Svbart@nginx.com    *) Bugfix: segmentation fault might have occurred if an irregular file
2581222Svbart@nginx.com       was requested.
2591222Svbart@nginx.com
2601185Svbart@nginx.com
2611185Svbart@nginx.comChanges with Unit 1.11.0                                         19 Sep 2019
2621185Svbart@nginx.com
2631185Svbart@nginx.com    *) Feature: basic support for serving static files.
2641185Svbart@nginx.com
2651185Svbart@nginx.com    *) Feature: isolation of application processes with Linux namespaces.
2661185Svbart@nginx.com
2671185Svbart@nginx.com    *) Feature: built-in WebSocket server implementation for Java Servlet
2681185Svbart@nginx.com       Containers.
2691185Svbart@nginx.com
2701185Svbart@nginx.com    *) Feature: direct addressing of API configuration options containing
2711185Svbart@nginx.com       slashes "/" using URI encoding (%2F).
2721185Svbart@nginx.com
2731185Svbart@nginx.com    *) Bugfix: segmentation fault might have occurred in Go applications
2741185Svbart@nginx.com       under high load.
2751185Svbart@nginx.com
2761185Svbart@nginx.com    *) Bugfix: WebSocket support was broken if Unit was built with some
2771185Svbart@nginx.com       linkers other than GNU ld (e.g. gold or LLD).
2781185Svbart@nginx.com
2791134Svbart@nginx.com
2801134Svbart@nginx.comChanges with Unit 1.10.0                                         22 Aug 2019
2811134Svbart@nginx.com
2821134Svbart@nginx.com    *) Change: matching of cookies in routes made case sensitive.
2831134Svbart@nginx.com
2841134Svbart@nginx.com    *) Change: decreased log level of common errors when clients close
2851134Svbart@nginx.com       connections.
2861134Svbart@nginx.com
2871134Svbart@nginx.com    *) Change: removed the Perl module's "--include=" ./configure option.
2881134Svbart@nginx.com
2891134Svbart@nginx.com    *) Feature: built-in WebSocket server implementation for Node.js module.
2901134Svbart@nginx.com
2911134Svbart@nginx.com    *) Feature: splitting PATH_INFO from request URI in PHP module.
2921134Svbart@nginx.com
2931134Svbart@nginx.com    *) Feature: request routing by scheme (HTTP or HTTPS).
2941134Svbart@nginx.com
2951134Svbart@nginx.com    *) Feature: support for multipart requests body in Java module.
2961134Svbart@nginx.com
2971134Svbart@nginx.com    *) Feature: improved API compatibility with Node.js 11.10 or later.
2981134Svbart@nginx.com
2991134Svbart@nginx.com    *) Bugfix: reconfiguration failed if "listeners" or "applications"
3001134Svbart@nginx.com       objects were missing.
3011134Svbart@nginx.com
3021134Svbart@nginx.com    *) Bugfix: applying a large configuration might have failed.
3031134Svbart@nginx.com
3041069Svbart@nginx.com
3051069Svbart@nginx.comChanges with Unit 1.9.0                                          30 May 2019
3061069Svbart@nginx.com
3071069Svbart@nginx.com    *) Feature: request routing by arguments, headers, and cookies.
3081069Svbart@nginx.com
3091069Svbart@nginx.com    *) Feature: route matching patterns allow a wildcard in the middle.
3101069Svbart@nginx.com
3111069Svbart@nginx.com    *) Feature: POST operation for appending elements to arrays in
3121069Svbart@nginx.com       configuration.
3131069Svbart@nginx.com
3141069Svbart@nginx.com    *) Feature: support for changing credentials using CAP_SETUID and
3151069Svbart@nginx.com       CAP_SETGID capabilities on Linux without running main process as
3161069Svbart@nginx.com       privileged user.
3171069Svbart@nginx.com
3181069Svbart@nginx.com    *) Bugfix: memory leak in the router process might have happened when a
3191069Svbart@nginx.com       client prematurely closed the connection.
3201069Svbart@nginx.com
3211069Svbart@nginx.com    *) Bugfix: applying a large configuration might have failed.
3221069Svbart@nginx.com
3231069Svbart@nginx.com    *) Bugfix: PUT and DELETE operations on array elements in configuration
3241069Svbart@nginx.com       did not work.
3251069Svbart@nginx.com
3261069Svbart@nginx.com    *) Bugfix: request schema in applications did not reflect TLS
3271069Svbart@nginx.com       connections.
3281069Svbart@nginx.com
3291069Svbart@nginx.com    *) Bugfix: restored compatibility with Node.js applications that use
3301069Svbart@nginx.com       ServerResponse._implicitHeader() function; the bug had appeared in
3311069Svbart@nginx.com       1.7.
3321069Svbart@nginx.com
3331069Svbart@nginx.com    *) Bugfix: various compatibility issues with Node.js applications.
3341069Svbart@nginx.com
335991Svbart@nginx.com
336991Svbart@nginx.comChanges with Unit 1.8.0                                          01 Mar 2019
337991Svbart@nginx.com
338991Svbart@nginx.com    *) Change: now three numbers are always used for versioning: major,
339991Svbart@nginx.com       minor, and patch versions.
340991Svbart@nginx.com
341991Svbart@nginx.com    *) Change: now QUERY_STRING is always defined even if the request does
342991Svbart@nginx.com       not include the query component.
343991Svbart@nginx.com
344991Svbart@nginx.com    *) Feature: basic internal request routing by Host, URI, and method.
345991Svbart@nginx.com
346991Svbart@nginx.com    *) Feature: experimental support for Java Servlet Containers.
347991Svbart@nginx.com
348991Svbart@nginx.com    *) Bugfix: segmentation fault might have occurred in the router process.
349991Svbart@nginx.com
350991Svbart@nginx.com    *) Bugfix: various potential memory leaks.
351991Svbart@nginx.com
352991Svbart@nginx.com    *) Bugfix: TLS connections might have stalled.
353991Svbart@nginx.com
354991Svbart@nginx.com    *) Bugfix: some Perl applications might have failed to send the response
355991Svbart@nginx.com       body.
356991Svbart@nginx.com
357991Svbart@nginx.com    *) Bugfix: some compilers with specific flags might have produced
358991Svbart@nginx.com       non-functioning builds; the bug had appeared in 1.5.
359991Svbart@nginx.com
360991Svbart@nginx.com    *) Bugfix: Node.js package had wrong version number when installed from
361991Svbart@nginx.com       sources.
362991Svbart@nginx.com
363926Svbart@nginx.com
364926Svbart@nginx.comChanges with Unit 1.7.1                                          07 Feb 2019
365926Svbart@nginx.com
366926Svbart@nginx.com    *) Security: a heap memory buffer overflow might have been caused in the
367926Svbart@nginx.com       router process by a specially crafted request, potentially resulting
368926Svbart@nginx.com       in a segmentation fault or other unspecified behavior
369926Svbart@nginx.com       (CVE-2019-7401).
370926Svbart@nginx.com
371926Svbart@nginx.com    *) Bugfix: install of Go module failed without prior building of Unit
372926Svbart@nginx.com       daemon; the bug had appeared in 1.7.
373926Svbart@nginx.com
374886Svbart@nginx.com
375886Svbart@nginx.comChanges with Unit 1.7                                            20 Dec 2018
376886Svbart@nginx.com
377886Svbart@nginx.com    *) Change: now rpath is set in Ruby module only if the library was not
378886Svbart@nginx.com       found in default search paths; this allows to meet packaging
379886Svbart@nginx.com       restrictions on some systems.
380886Svbart@nginx.com
381886Svbart@nginx.com    *) Bugfix: "disable_functions" and "disable_classes" PHP options set via
382886Svbart@nginx.com       Control API did not work.
383886Svbart@nginx.com
384886Svbart@nginx.com    *) Bugfix: Promises on request data in Node.js were not triggered.
385886Svbart@nginx.com
386886Svbart@nginx.com    *) Bugfix: various compatibility issues with Node.js applications.
387886Svbart@nginx.com
388886Svbart@nginx.com    *) Bugfix: a segmentation fault occurred in Node.js module if
389886Svbart@nginx.com       application tried to read request body after request.end() was
390886Svbart@nginx.com       called.
391886Svbart@nginx.com
392886Svbart@nginx.com    *) Bugfix: a segmentation fault occurred in Node.js module if
393886Svbart@nginx.com       application attempted to send header twice.
394886Svbart@nginx.com
395886Svbart@nginx.com    *) Bugfix: names of response header fields in Node.js module were
396886Svbart@nginx.com       erroneously treated as case-sensitive.
397886Svbart@nginx.com
398886Svbart@nginx.com    *) Bugfix: uncatched exceptions in Node.js were not logged.
399886Svbart@nginx.com
400886Svbart@nginx.com    *) Bugfix: global install of Node.js module from sources was broken on
401886Svbart@nginx.com       some systems; the bug had appeared in 1.6.
402886Svbart@nginx.com
403886Svbart@nginx.com    *) Bugfix: traceback for exceptions during initialization of Python
404886Svbart@nginx.com       applications might not be logged.
405886Svbart@nginx.com
406886Svbart@nginx.com    *) Bugfix: PHP module build failed if PHP interpreter was built with
407886Svbart@nginx.com       thread safety enabled.
408886Svbart@nginx.com
409846Svbart@nginx.com
410846Svbart@nginx.comChanges with Unit 1.6                                            15 Nov 2018
411846Svbart@nginx.com
412846Svbart@nginx.com    *) Change: "make install" now installs Node.js module as well if it was
413846Svbart@nginx.com       configured.
414846Svbart@nginx.com
415846Svbart@nginx.com    *) Feature: "--local" ./configure option to install Node.js module
416846Svbart@nginx.com       locally.
417846Svbart@nginx.com
418846Svbart@nginx.com    *) Bugfix: Node.js module might have crashed due to broken reference
419846Svbart@nginx.com       counting.
420846Svbart@nginx.com
421846Svbart@nginx.com    *) Bugfix: asynchronous operations in Node.js might not have worked.
422846Svbart@nginx.com
423846Svbart@nginx.com    *) Bugfix: various compatibility issues with Node.js applications.
424846Svbart@nginx.com
425846Svbart@nginx.com    *) Bugfix: "freed pointer is out of pool" alerts might have appeared in
426846Svbart@nginx.com       log.
427846Svbart@nginx.com
428885Svbart@nginx.com    *) Bugfix: module discovery did not work on 64-bit big-endian systems
429846Svbart@nginx.com       like IBM/S390x.
430846Svbart@nginx.com
431820Svbart@nginx.com
432820Svbart@nginx.comChanges with Unit 1.5                                            25 Oct 2018
433820Svbart@nginx.com
434820Svbart@nginx.com    *) Change: the "type" of application object for Go was changed to
435820Svbart@nginx.com       "external".
436820Svbart@nginx.com
437820Svbart@nginx.com    *) Feature: initial version of Node.js package with basic HTTP
438820Svbart@nginx.com       request-response support.
439820Svbart@nginx.com
440820Svbart@nginx.com    *) Feature: compatibility with LibreSSL.
441820Svbart@nginx.com
442820Svbart@nginx.com    *) Feature: --libdir and --incdir ./configure options to install libunit
443820Svbart@nginx.com       headers and static library.
444820Svbart@nginx.com
445820Svbart@nginx.com    *) Bugfix: connection might be closed prematurely while sending
446820Svbart@nginx.com       response; the bug had appeared in 1.3.
447820Svbart@nginx.com
448820Svbart@nginx.com    *) Bugfix: application processes might have stopped handling requests,
449820Svbart@nginx.com       producing "last message send failed: Resource temporarily
450820Svbart@nginx.com       unavailable" alerts in log; the bug had appeared in 1.4.
451820Svbart@nginx.com
452885Svbart@nginx.com    *) Bugfix: Go applications did not work when Unit was built with musl C
453820Svbart@nginx.com       library.
454820Svbart@nginx.com
455783Svbart@nginx.com
456783Svbart@nginx.comChanges with Unit 1.4                                            20 Sep 2018
457783Svbart@nginx.com
458783Svbart@nginx.com    *) Change: the control API maps the configuration object only at
459783Svbart@nginx.com       "/config/".
460783Svbart@nginx.com
461783Svbart@nginx.com    *) Feature: TLS support for client connections.
462783Svbart@nginx.com
463783Svbart@nginx.com    *) Feature: TLS certificates storage control API.
464783Svbart@nginx.com
465783Svbart@nginx.com    *) Feature: Unit library (libunit) to streamline language module
466783Svbart@nginx.com       integration.
467783Svbart@nginx.com
468783Svbart@nginx.com    *) Feature: "408 Request Timeout" responses while closing HTTP
469783Svbart@nginx.com       keep-alive connections.
470783Svbart@nginx.com
471783Svbart@nginx.com    *) Feature: improvements in OpenBSD support. Thanks to David Carlier.
472783Svbart@nginx.com
473783Svbart@nginx.com    *) Bugfix: a segmentation fault might have occurred after
474783Svbart@nginx.com       reconfiguration.
475783Svbart@nginx.com
476783Svbart@nginx.com    *) Bugfix: building on systems with non-default locale might be broken.
477783Svbart@nginx.com
478783Svbart@nginx.com    *) Bugfix: "header_read_timeout" might not work properly.
479783Svbart@nginx.com
480783Svbart@nginx.com    *) Bugfix: header fields values with non-ASCII bytes might be handled
481783Svbart@nginx.com       incorrectly in Python 3 module.
482783Svbart@nginx.com
483727Svbart@nginx.com
484727Svbart@nginx.comChanges with Unit 1.3                                            13 Jul 2018
485727Svbart@nginx.com
486727Svbart@nginx.com    *) Change: UTF-8 characters are now allowed in request header field
487727Svbart@nginx.com       values.
488727Svbart@nginx.com
489727Svbart@nginx.com    *) Feature: configuration of the request body size limit.
490727Svbart@nginx.com
491727Svbart@nginx.com    *) Feature: configuration of various HTTP connection timeouts.
492727Svbart@nginx.com
493727Svbart@nginx.com    *) Feature: Ruby module now automatically uses Bundler where possible.
494727Svbart@nginx.com
495727Svbart@nginx.com    *) Feature: http.Flusher interface in Go module.
496727Svbart@nginx.com
497727Svbart@nginx.com    *) Bugfix: various issues in HTTP connection errors handling.
498727Svbart@nginx.com
499727Svbart@nginx.com    *) Bugfix: requests with body data might be handled incorrectly in PHP
500727Svbart@nginx.com       module.
501727Svbart@nginx.com
502727Svbart@nginx.com    *) Bugfix: individual PHP configuration options specified via control
503727Svbart@nginx.com       API were reset to previous values after the first request in
504727Svbart@nginx.com       application process.
505727Svbart@nginx.com
506689Svbart@nginx.com
507689Svbart@nginx.comChanges with Unit 1.2                                            07 Jun 2018
508689Svbart@nginx.com
509689Svbart@nginx.com    *) Feature: configuration of environment variables for application
510689Svbart@nginx.com       processes.
511689Svbart@nginx.com
512689Svbart@nginx.com    *) Feature: customization of php.ini path.
513689Svbart@nginx.com
514689Svbart@nginx.com    *) Feature: setting of individual PHP configuration options.
515689Svbart@nginx.com
516689Svbart@nginx.com    *) Feature: configuration of execution arguments for Go applications.
517689Svbart@nginx.com
518689Svbart@nginx.com    *) Bugfix: keep-alive connections might hang after reconfiguration.
519689Svbart@nginx.com
520666Svbart@nginx.com
521666Svbart@nginx.comChanges with Unit 1.1                                            26 Apr 2018
522666Svbart@nginx.com
523666Svbart@nginx.com    *) Bugfix: Python applications that use the write() callable did not
524666Svbart@nginx.com       work.
525666Svbart@nginx.com
526666Svbart@nginx.com    *) Bugfix: virtual environments created with Python 3.3 or above might
527666Svbart@nginx.com       not have worked.
528666Svbart@nginx.com
529666Svbart@nginx.com    *) Bugfix: the request.Read() function in Go applications did not
530666Svbart@nginx.com       produce EOF when the whole body was read.
531666Svbart@nginx.com
532666Svbart@nginx.com    *) Bugfix: a segmentation fault might have occurred while access log
533666Svbart@nginx.com       reopening.
534666Svbart@nginx.com
535666Svbart@nginx.com    *) Bugfix: in parsing of IPv6 control socket addresses.
536666Svbart@nginx.com
537666Svbart@nginx.com    *) Bugfix: loading of application modules was broken on OpenBSD.
538666Svbart@nginx.com
539666Svbart@nginx.com    *) Bugfix: a segmentation fault might have occurred when there were two
540666Svbart@nginx.com       modules with the same type and version; the bug had appeared in 1.0.
541666Svbart@nginx.com
542666Svbart@nginx.com    *) Bugfix: alerts "freed pointer points to non-freeble page" might have
543666Svbart@nginx.com       appeared in log on 32-bit platforms.
544666Svbart@nginx.com
545639Svbart@nginx.com
546639Svbart@nginx.comChanges with Unit 1.0                                            12 Apr 2018
547639Svbart@nginx.com
548639Svbart@nginx.com    *) Change: configuration object moved into "/config/" path.
549639Svbart@nginx.com
550639Svbart@nginx.com    *) Feature: basic access logging.
551639Svbart@nginx.com
552639Svbart@nginx.com    *) Bugfix: 503 error occurred if Go application did not write response
553639Svbart@nginx.com       header or body.
554639Svbart@nginx.com
555639Svbart@nginx.com    *) Bugfix: Ruby applications that use encoding conversions might not
556663Svbart@nginx.com       have worked.
557639Svbart@nginx.com
558639Svbart@nginx.com    *) Bugfix: various stability issues.
559639Svbart@nginx.com
560586Svbart@nginx.com
561586Svbart@nginx.comChanges with Unit 0.7                                            22 Mar 2018
562586Svbart@nginx.com
563586Svbart@nginx.com    *) Feature: Ruby application module.
564586Svbart@nginx.com
565586Svbart@nginx.com    *) Bugfix: in discovering modules.
566586Svbart@nginx.com
567586Svbart@nginx.com    *) Bugfix: various race conditions on reconfiguration and during
568586Svbart@nginx.com       shutting down.
569586Svbart@nginx.com
570586Svbart@nginx.com    *) Bugfix: tabs and trailing spaces were not allowed in header fields
571586Svbart@nginx.com       values.
572586Svbart@nginx.com
573586Svbart@nginx.com    *) Bugfix: a segmentation fault occurred in Python module if
574586Svbart@nginx.com       start_response() was called outside of WSGI callable.
575586Svbart@nginx.com
576663Svbart@nginx.com    *) Bugfix: a segmentation fault might have occurred in PHP module if
577663Svbart@nginx.com       there was an error while initialization.
578586Svbart@nginx.com
579539Svbart@nginx.com
580539Svbart@nginx.comChanges with Unit 0.6                                            09 Feb 2018
581539Svbart@nginx.com
582539Svbart@nginx.com    *) Bugfix: the main process died when the "type" application option
583539Svbart@nginx.com       contained version; the bug had appeared in 0.5.
584539Svbart@nginx.com
585531Svbart@nginx.com
586531Svbart@nginx.comChanges with Unit 0.5                                            08 Feb 2018
587531Svbart@nginx.com
588531Svbart@nginx.com    *) Change: the "workers" application option was removed, the "processes"
589531Svbart@nginx.com       application option should be used instead.
590531Svbart@nginx.com
591531Svbart@nginx.com    *) Feature: the "processes" application option with prefork and dynamic
592531Svbart@nginx.com       process management support.
593531Svbart@nginx.com
594531Svbart@nginx.com    *) Feature: Perl application module.
595531Svbart@nginx.com
596531Svbart@nginx.com    *) Bugfix: in reading client request body; the bug had appeared in 0.3.
597531Svbart@nginx.com
598663Svbart@nginx.com    *) Bugfix: some Python applications might not have worked due to missing
599531Svbart@nginx.com       "wsgi.errors" environ variable.
600531Svbart@nginx.com
601531Svbart@nginx.com    *) Bugfix: HTTP chunked responses might be encoded incorrectly on 32-bit
602531Svbart@nginx.com       platforms.
603531Svbart@nginx.com
604531Svbart@nginx.com    *) Bugfix: infinite looping in HTTP parser.
605531Svbart@nginx.com
606531Svbart@nginx.com    *) Bugfix: segmentation fault in router.
607531Svbart@nginx.com
608469Sigor@sysoev.ru
609469Sigor@sysoev.ruChanges with Unit 0.4                                            15 Jan 2018
610469Sigor@sysoev.ru
611469Sigor@sysoev.ru    *) Feature: compatibility with DragonFly BSD.
612469Sigor@sysoev.ru
613469Sigor@sysoev.ru    *) Feature: "configure php --lib-static" option.
614469Sigor@sysoev.ru
615469Sigor@sysoev.ru    *) Bugfix: HTTP request body was not passed to application; the bug had
616469Sigor@sysoev.ru       appeared in 0.3.
617469Sigor@sysoev.ru
618469Sigor@sysoev.ru    *) Bugfix: HTTP large header buffers allocation and deallocation fixed;
619469Sigor@sysoev.ru       the bug had appeared in 0.3.
620469Sigor@sysoev.ru
621663Svbart@nginx.com    *) Bugfix: some PHP applications might not have worked with relative
622663Svbart@nginx.com       "root" path.
623469Sigor@sysoev.ru
624432Sigor@sysoev.ru
625432Sigor@sysoev.ruChanges with Unit 0.3                                            28 Dec 2017
626432Sigor@sysoev.ru
627432Sigor@sysoev.ru    *) Change: the Go package name changed to "nginx/unit".
628432Sigor@sysoev.ru
629432Sigor@sysoev.ru    *) Change: in the "limits.timeout" application option: application start
630432Sigor@sysoev.ru       time and time in queue now are not accounted.
631432Sigor@sysoev.ru
632432Sigor@sysoev.ru    *) Feature: the "limits.requests" application option.
633432Sigor@sysoev.ru
634432Sigor@sysoev.ru    *) Feature: application request processing latency optimization.
635432Sigor@sysoev.ru
636432Sigor@sysoev.ru    *) Feature: HTTP keep-alive connections support.
637432Sigor@sysoev.ru
638432Sigor@sysoev.ru    *) Feature: the "home" Python virtual environment configuration option.
639432Sigor@sysoev.ru
640432Sigor@sysoev.ru    *) Feature: Python atexit hook support.
641432Sigor@sysoev.ru
642432Sigor@sysoev.ru    *) Feature: various Go package improvements.
643432Sigor@sysoev.ru
644432Sigor@sysoev.ru    *) Bugfix: various crashes fixed.
645432Sigor@sysoev.ru
646286Sigor@sysoev.ru
647370Sigor@sysoev.ruChanges with Unit 0.2                                            19 Oct 2017
648370Sigor@sysoev.ru
649370Sigor@sysoev.ru    *) Feature: configuration persistence.
650370Sigor@sysoev.ru
651370Sigor@sysoev.ru    *) Feature: improved handling of configuration errors.
652370Sigor@sysoev.ru
653370Sigor@sysoev.ru    *) Feature: application "timeout" property.
654370Sigor@sysoev.ru
655370Sigor@sysoev.ru    *) Bugfix: POST request for PHP were handled incorrectly.
656370Sigor@sysoev.ru
657370Sigor@sysoev.ru    *) Bugfix: the router exited abnormally if all listeners had been
658370Sigor@sysoev.ru       deleted.
659370Sigor@sysoev.ru
660370Sigor@sysoev.ru    *) Bugfix: the router crashed under load.
661370Sigor@sysoev.ru
662370Sigor@sysoev.ru    *) Bugfix: memory leak in the router.
663370Sigor@sysoev.ru
664370Sigor@sysoev.ru
665370Sigor@sysoev.ruChanges with Unit 0.1                                            06 Sep 2017
666286Sigor@sysoev.ru
667286Sigor@sysoev.ru    *) First public release.
668286Sigor@sysoev.ru
669