summaryrefslogblamecommitdiffhomepage
path: root/docs/changes.xml
blob: cbe6269a2ff121e0a9bc03cf48743cae11b76b94 (plain) (tree)
1
2
3
4
5
6
7






                                           








                                                                           
















                                                         





                                        

                       





                                          
                                                                            




                       





                                                       




                                                                          





                            

                      





                                                            




                                                                             











                                                                           












                                                         
                                          
                                                

                                                         

                       
                                                                          





                               

                                                                   


         

                      






                                                                             
                                                                         





                      
                                                                           





                                                                     
                                                                 


                                                             
 






                                                                               

                      






                                                                       
                                                                      
                                                                      




                      

                                                                           


         






                                                                        


          












                                                         









                                                                           
                                                










                                                         
                                          
                                                

                                                         

                       

                                                                      


         

                       

                                                                          


         

                      

                                                                           


         

                      

                                                                    


         

                      

                                                                       


         

                      
                                                                    


         

                      

                                                                         


         

                      
                                                                       


         

                      
                                                                         


         

                      

                                                                             


         

                      

                                                                               


         






                                                                            


          



































































































































































                                                                                

                                          





                                                                           





























                                                                            





                                                  


























































































                                                                              















































































































                                                                                


                                                                           


                                                                














































                                                                              


















































































                                                                               


                                                                













































































                                                                             




















































                                                                           


















































                                                                           

























                                                         












                                                         






                                                                                





































































                                                                                



















































                                                                                

























































                                                                           




















                                                                                






















































































                                                                                






































































































                                                                             












































































































































                                                                              








































                                                                             












                                                         





                                                                    



































































































                                                                               






















































                                                                        
                                                                          











                                                                    












                                                         













































                                                                            
                                                                     





          





                                                                    































                                                                    























































































                                                                          










































































                                                                         

















































                                                                 












                                                         



                                                            

                          












































































                                                                            




































                                                                           
                                                                      















                                                            
                          












                                                         












                                                         




































                                                                             

                                                                            










                                                            
                          

























                                                                           




                                                            











                                                         
                                            
                                                










                                                         































                                                             
                                                             

























                                                             




                                                            











































                                                            
                                                                      





          

























                                                         



                                                                        









































































                                                                      












                                                         

























                                                         












                                                         






































                                                         












                                                         





                                                         

















                                          
























                                                               













                                                         
<?xml version="1.0" ?>
<!DOCTYPE change_log SYSTEM "changes.dtd" >


<change_log title="unit">


<changes apply="unit-php
                unit-python unit-python2.7
                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
                unit-python3.8 unit-python3.9
                unit-go
                unit-perl
                unit-ruby
                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13
                unit-jsc14 unit-jsc15"
         ver="1.24.0" rev="1"
         date="" time=""
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
NGINX Unit updated to 1.24.0.
</para>
</change>

</changes>


<changes apply="unit" ver="1.24.0" rev="1"
         date="" time=""
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change type="change">
<para>
PHP added to the default MIME type list.
</para>
</change>

<change type="feature">
<para>
multiple "targets" in Python applications.
</para>
</change>

<change type="feature">
<para>
a loader for automatic overriding "http" and "websocket" modules in Node.js.
</para>
</change>

<change type="feature">
<para>
ability to limit serving of static files by MIME types.
</para>
</change>

<change type="feature">
<para>
support for chrooting, rejecting symlinks, and rejecting crossing mounting
points on a per-request basis during static file serving.
</para>
</change>

<change type="feature">
<para>
compatibility with Ruby 3.0.
</para>
</change>

<change type="bugfix">
<para>
the router process could crash while closing TLS connection.
</para>
</change>

<change type="bugfix">
<para>
a segmentation fault might have occurred in the PHP module if
fastcgi_finish_request() was used with the "auto_globals_jit" option enabled.
</para>
</change>

</changes>


<changes apply="unit-php
                unit-python unit-python2.7
                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
                unit-python3.8 unit-python3.9
                unit-go
                unit-perl
                unit-ruby
                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13
                unit-jsc14 unit-jsc15"
         ver="1.23.0" rev="1"
         date="2021-03-25" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
NGINX Unit updated to 1.23.0.
</para>
</change>

</changes>


<changes apply="unit" ver="1.23.0" rev="1"
         date="2021-03-25" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change type="feature">
<para>
support for multiple certificate bundles on a listener via the Server Name
Indication (SNI) TLS extension.
</para>
</change>

<change type="feature">
<para>
"--mandir" ./configure option to specify the directory for man page
installation.
</para>
</change>

<change type="bugfix">
<para>
the router process could crash on premature TLS connection close; the bug had
appeared in 1.17.0.
</para>
</change>

<change type="bugfix">
<para>
a connection leak occurred on premature TLS connection close; the bug had
appeared in 1.6.
</para>
</change>

<change type="bugfix">
<para>
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.
</para>
</change>

<change type="bugfix">
<para>
a descriptor leak occurred in the router process when removing or
reconfiguring an application; the bug had appeared in 1.19.0.
</para>
</change>

<change type="bugfix">
<para>
persistent storage of certificates might've not worked with some filesystems in
Linux, and all uploaded certificate bundles were forgotten after restart.
</para>
</change>

<change type="bugfix">
<para>
the controller process could crash while requesting information about a
certificate with a non-DNS SAN entry.
</para>
</change>

<change type="bugfix">
<para>
the controller process could crash on manipulations with a certificate
containing a SAN and no standard name attributes in subject or issuer.
</para>
</change>

<change type="bugfix">
<para>
the Ruby module didn't respect the user locale for defaults in the Encoding
class.
</para>
</change>

<change type="bugfix">
<para>
the PHP 5 module failed to build with thread safety enabled; the bug had
appeared in 1.22.0.
</para>
</change>

</changes>


<changes apply="unit-python3.9" ver="1.22.0" rev="1"
         date="2021-02-04" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
Initial release of Python 3.9 module for NGINX Unit.
</para>
</change>

</changes>


<changes apply="unit-php
                unit-python unit-python2.7
                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
                unit-python3.8
                unit-go
                unit-perl
                unit-ruby
                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13
                unit-jsc14 unit-jsc15"
         ver="1.22.0" rev="1"
         date="2021-02-04" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
NGINX Unit updated to 1.22.0.
</para>
</change>

</changes>


<changes apply="unit" ver="1.22.0" rev="1"
         date="2021-02-04" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change type="feature">
<para>
the ServerRequest and ServerResponse objects of Node.js module are now
compliant with Stream API.
</para>
</change>

<change type="feature">
<para>
support for specifying multiple directories in the "path" option of Python
apps.
</para>
</change>

<change type="bugfix">
<para>
a memory leak occurred in the router process when serving files larger than
128K; the bug had appeared in 1.13.0.
</para>
</change>

<change type="bugfix">
<para>
apps could stop processing new requests under high load; the bug had
appeared in 1.19.0.
</para>
</change>

<change type="bugfix">
<para>
app processes could terminate unexpectedly under high load; the bug had
appeared in 1.19.0.
</para>
</change>

<change type="bugfix">
<para>
invalid HTTP responses were generated for some unusual status codes.
</para>
</change>

<change type="bugfix">
<para>
the PHP_AUTH_USER, PHP_AUTH_PW, and PHP_AUTH_DIGEST server variables were
missing in the PHP module.
</para>
</change>

<change type="bugfix">
<para>
the router process could crash with multithreaded apps under high load.
</para>
</change>

<change type="bugfix">
<para>
Ruby apps with multithreading configured could crash on start under load.
</para>
</change>

<change type="bugfix">
<para>
mount points weren't unmounted when the "mount" namespace isolation was used;
the bug had appeared in 1.21.0.
</para>
</change>

<change type="bugfix">
<para>
the router process could crash while removing or reconfiguring an app that used
WebSocket.
</para>
</change>

<change type="bugfix">
<para>
a memory leak occurring in the router process when removing or reconfiguring
an application; the bug had appeared in 1.19.0.
</para>
</change>

</changes>


<changes apply="unit-jsc15" ver="1.21.0" rev="1"
         date="2020-11-19" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
Initial release of Java 15 module for NGINX Unit.
</para>
</change>

</changes>


<changes apply="unit-jsc14" ver="1.21.0" rev="1"
         date="2020-11-19" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
Initial release of Java 14 module for NGINX Unit.
</para>
</change>

</changes>


<changes apply="unit-jsc13" ver="1.21.0" rev="1"
         date="2020-11-19" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
Initial release of Java 13 module for NGINX Unit.
</para>
</change>

</changes>


<changes apply="unit-php
                unit-python unit-python2.7
                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
                unit-python3.8
                unit-go
                unit-perl
                unit-ruby
                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
         ver="1.21.0" rev="1"
         date="2020-11-19" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
NGINX Unit updated to 1.21.0.
</para>
</change>

</changes>


<changes apply="unit" ver="1.21.0" rev="1"
         date="2020-11-19" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change type="change">
<para>
procfs is mounted by default for all languages when "rootfs" isolation is used.
</para>
</change>

<change type="change">
<para>
any characters valid according to RFC 7230 are now allowed in HTTP header field
names.
</para>
</change>

<change type="change">
<para>
HTTP header fields with underscores ("_") are now discarded from requests by
default.
</para>
</change>

<change type="feature">
<para>
optional multithreaded request processing for Java, Python, Perl, and Ruby apps.
</para>
</change>

<change type="feature">
<para>
regular expressions in route matching patterns.
</para>
</change>

<change type="feature">
<para>
compatibility with Python 3.9.
</para>
</change>

<change type="feature">
<para>
the Python module now supports ASGI 2.0 legacy applications.
</para>
</change>

<change type="feature">
<para>
the "protocol" option in Python applications aids choice between ASGI and WSGI.
</para>
</change>

<change type="feature">
<para>
the fastcgi_finish_request() PHP function that finalizes request processing and
continues code execution without holding onto the client connection.
</para>
</change>

<change type="feature">
<para>
the "discard_unsafe_fields" HTTP option that enables discarding request header
fields with irregular (but still valid) characters in the field name.
</para>
</change>

<change type="feature">
<para>
the "procfs" and "tmpfs" automount isolation options to disable automatic
mounting of eponymous filesystems.
</para>
</change>

<change type="bugfix">
<para>
the router process could crash when running Go applications under high load;
the bug had appeared in 1.19.0.
</para>
</change>

<change type="bugfix">
<para>
some language dependencies could remain mounted after using "rootfs" isolation.
</para>
</change>

<change type="bugfix">
<para>
various compatibility issues in Java applications.
</para>
</change>

<change type="bugfix">
<para>
the Java module built with the musl C library couldn't run applications that
use "rootfs" isolation.
</para>
</change>

</changes>


<changes apply="unit-php
                unit-python unit-python2.7
                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
                unit-python3.8
                unit-go
                unit-perl
                unit-ruby
                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
         ver="1.20.0" rev="1"
         date="2020-10-08" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
NGINX Unit updated to 1.20.0.
</para>
</change>

</changes>


<changes apply="unit" ver="1.20.0" rev="1"
         date="2020-10-08" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change type="change">
<para>
the PHP module is now initialized before chrooting; this enables loading all
extensions from the host system.
</para>
</change>

<change type="change">
<para>
AVIF and APNG image formats added to the default MIME type list.
</para>
</change>

<change type="change">
<para>
functional tests migrated to the pytest framework.
</para>
</change>

<change type="feature">
<para>
the Python module now fully supports applications that use the ASGI 3.0 server
interface.
</para>
</change>

<change type="feature">
<para>
the Python module now has a built-in WebSocket server implementation for
applications, compatible with the HTTP &amp; WebSocket ASGI Message Format 2.1
specification.
</para>
</change>

<change type="feature">
<para>
automatic mounting of an isolated "/tmp" file system into chrooted application
environments.
</para>
</change>

<change type="feature">
<para>
the $host variable contains a normalized "Host" request value.
</para>
</change>

<change type="feature">
<para>
the "callable" option sets Python application callable names.
</para>
</change>

<change type="feature">
<para>
compatibility with PHP 8 RC 1. Thanks to Remi Collet.
</para>
</change>

<change type="feature">
<para>
the "automount" option in the "isolation" object allows to turn off the
automatic mounting of language module dependencies.
</para>
</change>

<change type="bugfix">
<para>
"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.
</para>
</change>

<change type="bugfix">
<para>
the router process could crash during reconfiguration.
</para>
</change>

<change type="bugfix">
<para>
a memory leak occurring in the router process; the bug had appeared in 1.18.0.
</para>
</change>

<change type="bugfix">
<para>
the "!" (non-empty) pattern was matched incorrectly;
the bug had appeared in 1.19.0.
</para>
</change>

<change type="bugfix">
<para>
fixed building on platforms without sendfile() support, notably NetBSD;
the bug had appeared in 1.16.0.
</para>
</change>

</changes>


<changes apply="unit-php
                unit-python unit-python2.7
                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
                unit-python3.8
                unit-go
                unit-perl
                unit-ruby
                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
         ver="1.19.0" rev="1"
         date="2020-08-13" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
NGINX Unit updated to 1.19.0.
</para>
</change>

</changes>


<changes apply="unit" ver="1.19.0" rev="1"
         date="2020-08-13" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change type="feature">
<para>
reworked IPC between the router process and the applications to lower latencies,
increase performance, and improve scalability.
</para>
</change>

<change type="feature">
<para>
support for an arbitrary number of wildcards in route matching patterns.
</para>
</change>

<change type="feature">
<para>
chunked transfer encoding in proxy responses.
</para>
</change>

<change type="feature">
<para>
basic variables support in the "pass" option.
</para>
</change>

<change type="feature">
<para>
compatibility with PHP 8 Beta 1.
Thanks to Remi Collet.
</para>
</change>

<change type="bugfix">
<para>
the router process could crash while passing requests to an application under
high load.
</para>
</change>

<change type="bugfix">
<para>
a number of language modules failed to build on some systems;
the bug had appeared in 1.18.0.
</para>
</change>

<change type="bugfix">
<para>
time in error log messages from PHP applications could lag.
</para>
</change>

<change type="bugfix">
<para>
reconfiguration requests could hang if an application had failed to start;
the bug had appeared in 1.18.0.
</para>
</change>

<change type="bugfix">
<para>
memory leak during reconfiguration.
</para>
</change>

<change type="bugfix">
<para>
the daemon didn't start without language modules;
the bug had appeared in 1.18.0.
</para>
</change>

<change type="bugfix">
<para>
the router process could crash at exit.
</para>
</change>

<change type="bugfix">
<para>
Node.js applications could crash at exit.
</para>
</change>

<change type="bugfix">
<para>
the Ruby module could be linked against a wrong library version.
</para>
</change>

</changes>


<changes apply="unit-php
                unit-python unit-python2.7
                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
                unit-python3.8
                unit-go
                unit-perl
                unit-ruby
                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
         ver="1.18.0" rev="1"
         date="2020-05-28" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
NGINX Unit updated to 1.18.0.
</para>
</change>

</changes>


<changes apply="unit" ver="1.18.0" rev="1"
         date="2020-05-28" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change type="feature">
<para>
the "rootfs" isolation option for changing root filesystem for an application.
</para>
</change>

<change type="feature">
<para>
multiple "targets" in PHP applications.
</para>
</change>

<change type="feature">
<para>
support for percent-encoding in the "uri" and "arguments" matching options
and in the "pass" option.
</para>
</change>

</changes>


<changes apply="unit-php
                unit-python unit-python2.7
                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
                unit-python3.8
                unit-go
                unit-perl
                unit-ruby
                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
         ver="1.17.0" rev="1"
         date="2020-04-16" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
NGINX Unit updated to 1.17.0.
</para>
</change>

</changes>


<changes apply="unit" ver="1.17.0" rev="1"
         date="2020-04-16" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change type="feature">
<para>
a "return" action with optional "location" for immediate responses and external
redirection.
</para>
</change>

<change type="feature">
<para>
fractional weights support for upstream servers.
</para>
</change>

<change type="bugfix">
<para>
accidental 502 "Bad Gateway" errors might have occurred in applications under
high load.
</para>
</change>

<change type="bugfix">
<para>
memory leak in the router; the bug had appeared in 1.13.0.
</para>
</change>

<change type="bugfix">
<para>
segmentation fault might have occurred in the router process when reaching
open connections limit.
</para>
</change>

<change type="bugfix">
<para>
"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.
</para>
</change>

<change type="bugfix">
<para>
existing application processes didn't reopen the log file.
</para>
</change>

<change type="bugfix">
<para>
incompatibility with some Node.js applications.
</para>
</change>

<change type="bugfix">
<para>
broken build on DragonFly BSD; the bug had appeared in 1.16.0.
</para>
</change>

</changes>


<changes apply="unit-php
                unit-python unit-python2.7
                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
                unit-python3.8
                unit-go
                unit-perl
                unit-ruby
                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
         ver="1.16.0" rev="1"
         date="2020-03-12" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
NGINX Unit updated to 1.16.0.
</para>
</change>

</changes>


<changes apply="unit" ver="1.16.0" rev="1"
         date="2020-03-12" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change type="feature">
<para>
basic load-balancing support with round-robin.
</para>
</change>

<change type="feature">
<para>
a "fallback" option that performs an alternative action if a request can't be
served from the "share" directory.
</para>
</change>

<change type="feature">
<para>
reduced memory consumption by dumping large request bodies to disk.
</para>
</change>

<change type="feature">
<para>
stripping UTF-8 BOM and JavaScript-style comments from uploaded JSON.
</para>
</change>

<change type="bugfix">
<para>
negative address matching in router might work improperly in combination with
non-negative patterns.
</para>
</change>

<change type="bugfix">
<para>
Java Spring applications failed to run; the bug had appeared in 1.10.0.
</para>
</change>

<change type="bugfix">
<para>
PHP 7.4 was broken if it was built with thread safety enabled.
</para>
</change>

<change type="bugfix">
<para>
compatibility issues with some Python applications.
</para>
</change>

</changes>


<changes apply="unit-php
                unit-python unit-python2.7
                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
                unit-python3.8
                unit-go
                unit-perl
                unit-ruby
                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
         ver="1.15.0" rev="1"
         date="2020-02-06" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
NGINX Unit updated to 1.15.0.
</para>
</change>

</changes>


<changes apply="unit" ver="1.15.0" rev="1"
         date="2020-02-06" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change type="change">
<para>
extensions of dynamically requested PHP scripts were restricted to ".php".
</para>
</change>

<change type="feature">
<para>
compatibility with Ruby 2.7.
</para>
</change>

<change type="bugfix">
<para>
segmentation fault might have occurred in the router process with multiple
application processes under load; the bug had appeared in 1.14.0.
</para>
</change>

<change type="bugfix">
<para>
receiving request body over TLS connection might have stalled.
</para>
</change>

</changes>


<changes apply="unit-php
                unit-python unit-python2.7
                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
                unit-python3.8
                unit-go
                unit-perl
                unit-ruby
                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
         ver="1.14.0" rev="1"
         date="2019-12-26" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
NGINX Unit updated to 1.14.0.
</para>
</change>

</changes>


<changes apply="unit" ver="1.14.0" rev="1"
         date="2019-12-26" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change type="change">
<para>
the Go package import name changed to "unit.nginx.org/go".
</para>
</change>

<change type="change">
<para>
Go package now links to libunit instead of including library sources.
</para>
</change>

<change type="feature">
<para>
ability to change user and group for isolated applications when Unit daemon
runs as an unprivileged user.
</para>
</change>

<change type="feature">
<para>
request routing by source and destination addresses and ports.
</para>
</change>

<change type="bugfix">
<para>
memory bloat on large responses.
</para>
</change>

</changes>


<changes apply="unit-go1.13" ver="1.13.0" rev="1"
         date="2019-11-20" time="09:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
Initial release of Go 1.13 module for NGINX Unit.
</para>
</change>

</changes>


<changes apply="unit-go1.12" ver="1.13.0" rev="1"
         date="2019-11-20" time="09:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
Initial release of Go 1.12 module for NGINX Unit.
</para>
</change>

</changes>


<changes apply="unit-python3.8" ver="1.13.0" rev="1"
         date="2019-11-18" time="14:20:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
Initial release of Python 3.8 module for NGINX Unit.
</para>
</change>

</changes>


<changes apply="unit-php
                unit-python unit-python2.7
                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10 unit-go1.11
                unit-perl
                unit-ruby
                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
         ver="1.13.0" rev="1"
         date="2019-11-14" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
NGINX Unit updated to 1.13.0.
</para>
</change>

</changes>


<changes apply="unit" ver="1.13.0" rev="1"
         date="2019-11-14" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change type="feature">
<para>
basic support for HTTP reverse proxying.
</para>
</change>

<change type="feature">
<para>
compatibility with Python 3.8.
</para>
</change>

<change type="bugfix">
<para>
memory leak in Python application processes when the close handler was used.
</para>
</change>

<change type="bugfix">
<para>
threads in Python applications might not work correctly.
</para>
</change>

<change type="bugfix">
<para>
Ruby on Rails applications might not work on Ruby 2.6.
</para>
</change>

<change type="bugfix">
<para>
backtraces for uncaught exceptions in Python 3 might be logged with significant
delays.
</para>
</change>

<change type="bugfix">
<para>
explicit setting a namespaces isolation option to false might have enabled it.
</para>
</change>

</changes>


<changes apply="unit-php
                unit-python unit-python2.7
                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10 unit-go1.11
                unit-perl
                unit-ruby
                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
         ver="1.12.0" rev="1"
         date="2019-10-03" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
NGINX Unit updated to 1.12.0.
</para>
</change>

</changes>


<changes apply="unit" ver="1.12.0" rev="1"
         date="2019-10-03" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change type="feature">
<para>
compatibility with PHP 7.4.
</para>
</change>

<change type="bugfix">
<para>
descriptors leak on process creation; the bug had appeared in 1.11.0.
</para>
</change>

<change type="bugfix">
<para>
TLS connection might be closed prematurely while sending response.
</para>
</change>

<change type="bugfix">
<para>
segmentation fault might have occurred if an irregular file was requested.
</para>
</change>

</changes>



<changes apply="unit-php
                unit-python unit-python2.7
                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10 unit-go1.11
                unit-perl
                unit-ruby
                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
         ver="1.11.0" rev="1"
         date="2019-09-19" time="18:00:00 +0300"
         packager="Konstantin Pavlov &lt;thresh@nginx.com&gt;">

<change>
<para>
NGINX Unit updated to 1.11.0.
</para>
</change>

</changes>


<changes apply="unit" ver="1.11.0" rev="1"
         date="2019-09-19" time="18:00:00 +0300"
         packager="Konstantin Pavlov &lt;thresh@nginx.com&gt;">

<change type="feature">
<para>
basic support for serving static files.
</para>
</change>

<change type="feature">
<para>
isolation of application processes with Linux namespaces.
</para>
</change>

<change type="feature">
<para>
built-in WebSocket server implementation for Java Servlet Containers.
</para>
</change>

<change type="feature">
<para>
direct addressing of API configuration options containing slashes "/"
using URI encoding (%2F).
</para>
</change>

<change type="bugfix">
<para>
segmentation fault might have occurred in Go applications under high load.
</para>
</change>

<change type="bugfix">
<para>
WebSocket support was broken if Unit was built with some linkers other than
GNU ld (e.g. gold or LLD).
</para>
</change>

</changes>


<changes apply="unit
                unit-php
                unit-python unit-python2.7
                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10 unit-go1.11
                unit-perl
                unit-ruby
                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
         ver="1.10.0" rev="2"
         date="2019-08-23" time="12:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change type="bugfix">
<para>
missed header files added to unit development package.
</para>
</change>

</changes>


<changes apply="unit-php
                unit-python unit-python2.7
                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10 unit-go1.11
                unit-perl
                unit-ruby
                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
         ver="1.10.0" rev="1"
         date="2019-08-22" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
NGINX Unit updated to 1.10.0.
</para>
</change>

</changes>


<changes apply="unit" ver="1.10.0" rev="1"
         date="2019-08-22" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change type="change">
<para>
matching of cookies in routes made case sensitive.
</para>
</change>

<change type="change">
<para>
decreased log level of common errors when clients close connections.
</para>
</change>

<change type="change">
<para>
removed the Perl module's "--include=" ./configure option.
</para>
</change>

<change type="feature">
<para>
built-in WebSocket server implementation for Node.js module.
</para>
</change>

<change type="feature">
<para>
splitting PATH_INFO from request URI in PHP module.
</para>
</change>

<change type="feature">
<para>
request routing by scheme (HTTP or HTTPS).
</para>
</change>

<change type="feature">
<para>
support for multipart requests body in Java module.
</para>
</change>

<change type="feature">
<para>
improved API compatibility with Node.js 11.10 or later.
</para>
</change>

<change type="bugfix">
<para>
reconfiguration failed if "listeners" or "applications" objects were missing.
</para>
</change>

<change type="bugfix">
<para>
applying a large configuration might have failed.
</para>
</change>

</changes>


<changes apply="unit-go1.11" ver="1.9.0" rev="1"
         date="2019-05-30" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
Initial release of Go 1.11 module for NGINX Unit.
</para>
</change>

</changes>


<changes apply="unit-php
                unit-python unit-python2.7
                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10
                unit-perl
                unit-ruby
                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
         ver="1.9.0" rev="1"
         date="2019-05-30" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
NGINX Unit updated to 1.9.0.
</para>
</change>

</changes>


<changes apply="unit" ver="1.9.0" rev="1"
         date="2019-05-30" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change type="feature">
<para>
request routing by arguments, headers, and cookies.
</para>
</change>

<change type="feature">
<para>
route matching patterns allow a wildcard in the middle.
</para>
</change>

<change type="feature">
<para>
POST operation for appending elements to arrays in configuration.
</para>
</change>

<change type="feature">
<para>
support for changing credentials using CAP_SETUID and CAP_SETGID capabilities
on Linux without running main process as privileged user.
</para>
</change>

<change type="bugfix">
<para>
memory leak in the router process might have happened when a client
prematurely closed the connection.
</para>
</change>

<change type="bugfix">
<para>
applying a large configuration might have failed.
</para>
</change>

<change type="bugfix">
<para>
PUT and DELETE operations on array elements in configuration did not work.
</para>
</change>

<change type="bugfix">
<para>
request schema in applications did not reflect TLS connections.
</para>
</change>

<change type="bugfix">
<para>
restored compatibility with Node.js applications that use
ServerResponse._implicitHeader() function; the bug had appeared in 1.7.
</para>
</change>

<change type="bugfix">
<para>
various compatibility issues with Node.js applications.
</para>
</change>

</changes>


<changes apply="unit-jsc-common" ver="1.8.0" rev="1"
         date="2019-03-01" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
Initial release of Java common packages for NGINX Unit.
</para>
</change>

</changes>


<changes apply="unit-jsc8" ver="1.8.0" rev="1"
         date="2019-03-01" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
Initial release of Java 8 module for NGINX Unit.
</para>
</change>

</changes>


<changes apply="unit-jsc10" ver="1.8.0" rev="1"
         date="2019-03-01" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
Initial release of Java 10 module for NGINX Unit.
</para>
</change>

</changes>


<changes apply="unit-jsc11" ver="1.8.0" rev="1"
         date="2019-03-01" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
Initial release of Java 11 module for NGINX Unit.
</para>
</change>

</changes>


<changes apply="unit-php
                unit-python unit-python2.7
                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10
                unit-perl
                unit-ruby"
         ver="1.8.0" rev="1"
         date="2019-03-01" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
NGINX Unit updated to 1.8.0.
</para>
</change>

</changes>


<changes apply="unit" ver="1.8.0" rev="1"
         date="2019-03-01" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change type="change">
<para>
now three numbers are always used for versioning: major, minor,
and patch versions.
</para>
</change>

<change type="change">
<para>
now QUERY_STRING is always defined even if the request does not include
the query component.
</para>
</change>

<change type="feature">
<para>
basic internal request routing by Host, URI, and method.
</para>
</change>

<change type="feature">
<para>
experimental support for Java Servlet Containers.
</para>
</change>

<change type="bugfix">
<para>
segmentation fault might have occurred in the router process.
</para>
</change>

<change type="bugfix">
<para>
various potential memory leaks.
</para>
</change>

<change type="bugfix">
<para>
TLS connections might have stalled.
</para>
</change>

<change type="bugfix">
<para>
some Perl applications might have failed to send the response body.
</para>
</change>

<change type="bugfix">
<para>
some compilers with specific flags might have produced non-functioning builds;
the bug had appeared in 1.5.
</para>
</change>

<change type="bugfix">
<para>
Node.js package had wrong version number when installed from sources.
</para>
</change>

</changes>


<changes apply="unit-php
                unit-python unit-python2.7
                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10
                unit-perl
                unit-ruby"
         ver="1.7.1" rev="1"
         date="2019-02-07" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
NGINX Unit updated to 1.7.1.
</para>
</change>

</changes>


<changes apply="unit" ver="1.7.1" rev="1"
         date="2019-02-07" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change type="security">
<para>
a heap memory buffer overflow might have been caused in the router process by
a specially crafted request, potentially resulting in a segmentation fault or
other unspecified behavior (CVE-2019-7401).
</para>
</change>

<change type="bugfix">
<para>
install of Go module failed without prior building of Unit daemon;
the bug had appeared in 1.7.
</para>
</change>

</changes>


<changes apply="unit-python3.7" ver="1.7" rev="1"
         date="2018-12-25" time="10:30:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
Initial release of Python 3.7 module for NGINX Unit.
</para>
</change>

</changes>


<changes apply="unit-php
                unit-python unit-python2.7
                unit-python3.4 unit-python3.5 unit-python3.6
                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10
                unit-perl
                unit-ruby"
         ver="1.7" rev="1"
         date="2018-12-20" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
NGINX Unit updated to 1.7.
</para>
</change>

</changes>


<changes apply="unit" ver="1.7" rev="1"
         date="2018-12-20" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change type="change">
<para>
now rpath is set in Ruby module only if the library was not found in default
search paths; this allows to meet packaging restrictions on some systems.
</para>
</change>

<change type="bugfix">
<para>
"disable_functions" and "disable_classes" PHP options set via Control API
did not work.
</para>
</change>

<change type="bugfix">
<para>
Promises on request data in Node.js were not triggered.
</para>
</change>

<change type="bugfix">
<para>
various compatibility issues with Node.js applications.
</para>
</change>

<change type="bugfix">
<para>
a segmentation fault occurred in Node.js module if application tried to read
request body after request.end() was called.
</para>
</change>

<change type="bugfix">
<para>
a segmentation fault occurred in Node.js module if application attempted to
send header twice.
</para>
</change>

<change type="bugfix">
<para>
names of response header fields in Node.js module were erroneously treated as
case-sensitive.
</para>
</change>

<change type="bugfix">
<para>
uncatched exceptions in Node.js were not logged.
</para>
</change>

<change type="bugfix">
<para>
global install of Node.js module from sources was broken on some systems;
the bug had appeared in 1.6.
</para>
</change>

<change type="bugfix">
<para>
traceback for exceptions during initialization of Python applications might not
be logged.
</para>
</change>

<change type="bugfix">
<para>
PHP module build failed if PHP interpreter was built with thread safety
enabled.
</para>
</change>

</changes>


<changes apply="unit-php
                unit-python unit-python2.7
                unit-python3.4 unit-python3.5 unit-python3.6
                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10
                unit-perl
                unit-ruby"
         ver="1.6" rev="1"
         date="2018-11-15" time="18:00:00 +0300"
         packager="Konstantin Pavlov &lt;thresh@nginx.com&gt;">

<change>
<para>
NGINX Unit updated to 1.6.
</para>
</change>

</changes>


<changes apply="unit" ver="1.6" rev="1"
         date="2018-11-15" time="18:00:00 +0300"
         packager="Konstantin Pavlov &lt;thresh@nginx.com&gt;">

<change type="change">
<para>
"make install" now installs Node.js module as well if it was configured.
</para>
</change>

<change type="feature">
<para>
"--local" ./configure option to install Node.js module locally.
</para>
</change>

<change type="bugfix">
<para>
Node.js module might have crashed due to broken reference counting.
</para>
</change>

<change type="bugfix">
<para>
asynchronous operations in Node.js might not have worked.
</para>
</change>

<change type="bugfix">
<para>
various compatibility issues with Node.js applications.
</para>
</change>

<change type="bugfix">
<para>
"freed pointer is out of pool" alerts might have appeared in log.
</para>
</change>

<change type="bugfix">
<para>
module discovery did not work on 64-bit big-endian systems like IBM/S390x.
</para>
</change>

</changes>


<changes apply="unit-php
                unit-python unit-python2.7
                unit-python3.4 unit-python3.5 unit-python3.6
                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10
                unit-perl
                unit-ruby"
         ver="1.5" rev="1"
         date="2018-10-25" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
NGINX Unit updated to 1.5.
</para>
</change>

</changes>


<changes apply="unit" ver="1.5" rev="1"
         date="2018-10-25" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change type="change">
<para>
the "type" of application object for Go was changed to "external".
</para>
</change>

<change type="feature">
<para>
initial version of Node.js package with basic HTTP request-response support.
</para>
</change>

<change type="feature">
<para>
compatibility with LibreSSL.
</para>
</change>

<change type="feature">
<para>
--libdir and --incdir ./configure options to install libunit headers
and static library.
</para>
</change>

<change type="bugfix">
<para>
connection might be closed prematurely while sending response;
the bug had appeared in 1.3.
</para>
</change>

<change type="bugfix">
<para>
application processes might have stopped handling requests, producing
"last message send failed: Resource temporarily unavailable" alerts in log;
the bug had appeared in 1.4.
</para>
</change>

<change type="bugfix">
<para>
Go applications did not work when Unit was built with musl C library.
</para>
</change>

</changes>


<changes apply="unit-php
                unit-python unit-python2.7
                unit-python3.4 unit-python3.5 unit-python3.6
                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10
                unit-perl
                unit-ruby"
         ver="1.4" rev="2"
         date="2018-09-27" time="13:30:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change type="bugfix">
<para>
corrected instructions for launching sample application.
</para>
</change>

</changes>


<changes apply="unit" ver="1.4" rev="2"
         date="2018-09-27" time="13:30:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change type="change">
<para>
the "saveconfig" and "loadconfig" action scripts were removed.
</para>
</change>

</changes>


<changes apply="unit-php
                unit-python unit-python2.7
                unit-python3.4 unit-python3.5 unit-python3.6
                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10
                unit-perl
                unit-ruby"
         ver="1.4" rev="1"
         date="2018-09-20" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
NGINX Unit updated to 1.4.
</para>
</change>

</changes>


<changes apply="unit" ver="1.4" rev="1"
         date="2018-09-20" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change type="change">
<para>
the control API maps the configuration object only at "/config/".
</para>
</change>

<change type="feature">
<para>
TLS support for client connections.
</para>
</change>

<change type="feature">
<para>
TLS certificates storage control API.
</para>
</change>

<change type="feature">
<para>
Unit library (libunit) to streamline language module integration.
</para>
</change>

<change type="feature">
<para>
"408 Request Timeout" responses while closing HTTP keep-alive connections.
</para>
</change>

<change type="feature">
<para>
improvements in OpenBSD support.
Thanks to David Carlier.
</para>
</change>

<change type="bugfix">
<para>
a segmentation fault might have occurred after reconfiguration.
</para>
</change>

<change type="bugfix">
<para>
building on systems with non-default locale might be broken.
</para>
</change>

<change type="bugfix">
<para>
"header_read_timeout" might not work properly.
</para>
</change>

<change type="bugfix">
<para>
header fields values with non-ASCII bytes might be handled incorrectly
in Python 3 module.
</para>
</change>

</changes>


<changes apply="unit-php
                unit-python unit-python2.7
                unit-python3.4 unit-python3.5 unit-python3.6
                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10
                unit-perl
                unit-ruby"
         ver="1.3" rev="1"
         date="2018-07-13" time="18:00:00 +0300"
         packager="Konstantin Pavlov &lt;thresh@nginx.com&gt;">

<change>
<para>
NGINX Unit updated to 1.3.
</para>
</change>

</changes>


<changes apply="unit" ver="1.3" rev="1"
         date="2018-07-13" time="18:00:00 +0300"
         packager="Konstantin Pavlov &lt;thresh@nginx.com&gt;">

<change type="change">
<para>
UTF-8 characters are now allowed in request header field values.
</para>
</change>

<change type="feature">
<para>
configuration of the request body size limit.
</para>
</change>

<change type="feature">
<para>
configuration of various HTTP connection timeouts.
</para>
</change>

<change type="feature">
<para>
Ruby module now automatically uses Bundler where possible.
</para>
</change>

<change type="feature">
<para>
http.Flusher interface in Go module.
</para>
</change>

<change type="bugfix">
<para>
various issues in HTTP connection errors handling.
</para>
</change>

<change type="bugfix">
<para>
requests with body data might be handled incorrectly in PHP module.
</para>
</change>

<change type="bugfix">
<para>
individual PHP configuration options specified via control API were reset
to previous values after the first request in application process.
</para>
</change>

</changes>


<changes apply="unit-php
                unit-python unit-python2.7
                unit-python3.4 unit-python3.5 unit-python3.6
                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10
                unit-perl
                unit-ruby"
         ver="1.2" rev="1"
         date="2018-06-07" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
NGINX Unit updated to 1.2.
</para>
</change>

</changes>


<changes apply="unit" ver="1.2" rev="1"
         date="2018-06-07" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change type="feature">
<para>
configuration of environment variables for application processes.
</para>
</change>

<change type="feature">
<para>
customization of php.ini path.
</para>
</change>

<change type="feature">
<para>
setting of individual PHP configuration options.
</para>
</change>

<change type="feature">
<para>
configuration of execution arguments for Go applications.
</para>
</change>

<change type="bugfix">
<para>
keep-alive connections might hang after reconfiguration.
</para>
</change>

</changes>


<changes apply="unit-go1.10" ver="1.1" rev="1"
         date="2018-05-14" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
Initial release of Go 1.10 module for NGINX Unit.
</para>
</change>

</changes>


<changes apply="unit-php
                unit-python unit-python2.7
                unit-python3.4 unit-python3.5 unit-python3.6
                unit-go unit-go1.7 unit-go1.8 unit-go1.9
                unit-perl
                unit-ruby"
         ver="1.1" rev="1"
         date="2018-04-26" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
NGINX Unit updated to 1.1.
</para>
</change>

</changes>


<changes apply="unit" ver="1.1" rev="1"
         date="2018-04-26" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change type="bugfix">
<para>
Python applications that use the write() callable did not work.
</para>
</change>

<change type="bugfix">
<para>
virtual environments created with Python 3.3 or above might not have worked.
</para>
</change>

<change type="bugfix">
<para>
the request.Read() function in Go applications did not produce EOF
when the whole body was read.
</para>
</change>

<change type="bugfix">
<para>
a segmentation fault might have occurred while access log reopening.
</para>
</change>

<change type="bugfix">
<para>
in parsing of IPv6 control socket addresses.
</para>
</change>

<change type="bugfix">
<para>
loading of application modules was broken on OpenBSD.
</para>
</change>

<change type="bugfix">
<para>
a segmentation fault might have occurred when there were two modules
with the same type and version; the bug had appeared in 1.0.
</para>
</change>

<change type="bugfix">
<para>
alerts "freed pointer points to non-freeble page" might have appeared in log
on 32-bit platforms.
</para>
</change>

</changes>


<changes apply="unit-php
                unit-python unit-python2.7
                unit-python3.4 unit-python3.5 unit-python3.6
                unit-go unit-go1.7 unit-go1.8 unit-go1.9
                unit-perl
                unit-ruby"
         ver="1.0" rev="1"
         date="2018-04-12" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
NGINX Unit updated to 1.0.
</para>
</change>

</changes>


<changes apply="unit" ver="1.0" rev="1"
         date="2018-04-12" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change type="change">
<para>
configuration object moved into "/config/" path.
</para>
</change>

<change type="feature">
<para>
basic access logging.
</para>
</change>

<change type="bugfix">
<para>
503 error occurred if Go application did not write response header or body.
</para>
</change>

<change type="bugfix">
<para>
Ruby applications that use encoding conversions might not have worked.
</para>
</change>

<change type="bugfix">
<para>
various stability issues.
</para>
</change>

</changes>


<changes apply="unit-php
                unit-python unit-python2.7
                unit-python3.4 unit-python3.5 unit-python3.6
                unit-go unit-go1.7 unit-go1.8 unit-go1.9
                unit-perl"
         ver="0.7" rev="1"
         date="2018-03-22" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
NGINX Unit updated to 0.7.
</para>
</change>

</changes>


<changes apply="unit-ruby" ver="0.7" rev="1"
         date="2018-04-02" time="15:40:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
Initial release of Ruby module for NGINX Unit.
</para>
</change>

</changes>


<changes apply="unit" ver="0.7" rev="1"
         date="2018-03-22" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change type="feature">
<para>
Ruby application module.
</para>
</change>

<change type="bugfix">
<para>
in discovering modules.
</para>
</change>

<change type="bugfix">
<para>
various race conditions on reconfiguration and during shutting down.
</para>
</change>

<change type="bugfix">
<para>
tabs and trailing spaces were not allowed in header fields values.
</para>
</change>

<change type="bugfix">
<para>
a segmentation fault occurred in Python module if start_response() was called
outside of WSGI callable.
</para>
</change>

<change type="bugfix">
<para>
a segmentation fault might have occurred in PHP module if there was an error
while initialization.
</para>
</change>

</changes>


<changes apply="unit-php
                unit-python unit-python2.7
                unit-python3.4 unit-python3.5 unit-python3.6
                unit-go unit-go1.7 unit-go1.8 unit-go1.9
                unit-perl"
         ver="0.6" rev="1"
         date="2018-02-09" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
NGINX Unit updated to 0.6.
</para>
</change>

</changes>


<changes apply="unit" ver="0.6" rev="1"
         date="2018-02-09" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change type="bugfix">
<para>
the main process died when the "type" application option contained version;
the bug had appeared in 0.5.
</para>
</change>

</changes>


<changes apply="unit-php
                unit-python unit-python2.7
                unit-python3.4 unit-python3.5 unit-python3.6
                unit-go unit-go1.7 unit-go1.8 unit-go1.9"
         ver="0.5" rev="1"
         date="2018-02-08" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
NGINX Unit updated to 0.5.
</para>
</change>

</changes>


<changes apply="unit-perl" ver="0.5" rev="1"
         date="2018-02-08" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
Initial release of Perl module for NGINX Unit.
</para>
</change>

</changes>


<changes apply="unit" ver="0.5" rev="1"
         date="2018-02-08" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change type="change">
<para>
the "workers" application option was removed, the "processes"
application option should be used instead.
</para>
</change>

<change type="feature">
<para>
the "processes" application option with prefork and dynamic
process management support.
</para>
</change>

<change type="feature">
<para>
Perl application module.
</para>
</change>

<change type="bugfix">
<para>
in reading client request body; the bug had appeared in 0.3.
</para>
</change>

<change type="bugfix">
<para>
some Python applications might not have worked due to missing
"wsgi.errors" environ variable.
</para>
</change>

<change type="bugfix">
<para>
HTTP chunked responses might be encoded incorrectly on 32-bit
platforms.
</para>
</change>

<change type="bugfix">
<para>
infinite looping in HTTP parser.
</para>
</change>

<change type="bugfix">
<para>
segmentation fault in router.
</para>
</change>

</changes>


<changes apply="unit-php
                unit-python unit-python2.7
                unit-python3.4 unit-python3.5 unit-python3.6
                unit-go unit-go1.7 unit-go1.8 unit-go1.9"
         ver="0.4" rev="1"
         date="2018-01-15" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
NGINX Unit updated to 0.4.
</para>
</change>

</changes>


<changes apply="unit" ver="0.4" rev="1"
         date="2018-01-15" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change type="feature">
<para>
compatibility with DragonFly BSD.
</para>
</change>

<change type="feature">
<para>
"configure php --lib-static" option.
</para>
</change>

<change type="bugfix">
<para>
HTTP request body was not passed to application;
the bug had appeared in 0.3.
</para>
</change>

<change type="bugfix">
<para>
HTTP large header buffers allocation and deallocation fixed;
the bug had appeared in 0.3.
</para>
</change>

<change type="bugfix">
<para>
some PHP applications might not have worked with relative "root" path.
</para>
</change>

</changes>


<changes apply="unit-go1.9" ver="0.3" rev="1"
         date="2017-12-28" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
Initial release of Go 1.9 module for NGINX Unit.
</para>
</change>

</changes>


<changes apply="unit-python3.6" ver="0.3" rev="1"
         date="2017-12-28" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
Initial release of Python 3.6 module for NGINX Unit.
</para>
</change>

</changes>


<changes apply="unit-php
                unit-python unit-python2.7 unit-python3.4 unit-python3.5
                unit-go unit-go1.7 unit-go1.8"
         ver="0.3" rev="1"
         date="2017-12-28" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
NGINX Unit updated to 0.3.
</para>
</change>

</changes>


<changes apply="unit" ver="0.3" rev="1"
         date="2017-12-28" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change type="change">
<para>
the Go package name changed to "nginx/unit".
</para>
</change>

<change type="change">
<para>
in the "limits.timeout" application option: application start time and
time in queue now are not accounted.
</para>
</change>

<change type="feature">
<para>
the "limits.requests" application option.
</para>
</change>

<change type="feature">
<para>
application request processing latency optimization.
</para>
</change>

<change type="feature">
<para>
HTTP keep-alive connections support.
</para>
</change>

<change type="feature">
<para>
the "home" Python virtual environment configuration option.
</para>
</change>

<change type="feature">
<para>
Python atexit hook support.
</para>
</change>

<change type="feature">
<para>
various Go package improvements.
</para>
</change>

<change type="bugfix">
<para>
various crashes fixed.
</para>
</change>

</changes>


<changes apply="unit-go" ver="0.2" rev="1"
         date="2017-10-19" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
Initial release of Go module for NGINX Unit.
</para>
</change>

</changes>


<changes apply="unit-go1.7" ver="0.2" rev="1"
         date="2017-10-19" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
Initial release of Go 1.7 module for NGINX Unit.
</para>
</change>

</changes>


<changes apply="unit-go1.8" ver="0.2" rev="1"
         date="2017-10-19" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
Initial release of Go 1.8 module for NGINX Unit.
</para>
</change>

</changes>


<changes apply="unit-python" ver="0.2" rev="1"
         date="2017-10-19" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
Initial release of Python module for NGINX Unit.
</para>
</change>

</changes>


<changes apply="unit-python2.7" ver="0.2" rev="1"
         date="2017-10-19" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
Initial release of Python 2.7 module for NGINX Unit.
</para>
</change>

</changes>


<changes apply="unit-python3.4" ver="0.2" rev="1"
         date="2017-10-19" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
Initial release of Python 3.4 module for NGINX Unit.
</para>
</change>

</changes>


<changes apply="unit-python3.5" ver="0.2" rev="1"
         date="2017-10-19" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
Initial release of Python 3.5 module for NGINX Unit.
</para>
</change>

</changes>


<changes apply="unit-php" ver="0.2" rev="1"
         date="2017-10-19" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
Initial release of PHP module for NGINX Unit.
</para>
</change>

</changes>


<changes apply="unit" ver="0.2" rev="1"
         date="2017-10-19" time="18:00:00 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change type="feature">
<para>
configuration persistence.
</para>
</change>

<change type="feature">
<para>
improved handling of configuration errors.
</para>
</change>

<change type="feature">
<para>
application "timeout" property.
</para>
</change>

<change type="bugfix">
<para>
POST request for PHP were handled incorrectly.
</para>
</change>

<change type="bugfix">
<para>
the router exited abnormally if all listeners had been deleted.
</para>
</change>

<change type="bugfix">
<para>
the router crashed under load.
</para>
</change>

<change type="bugfix">
<para>
memory leak in the router.
</para>
</change>

</changes>


<changes apply="unit" ver="0.1" rev="1"
         date="2017-09-06" time="19:14:28 +0300"
         packager="Andrei Belov &lt;defan@nginx.com&gt;">

<change>
<para>
First public release.
</para>
</change>

</changes>


</change_log>