xref: /unit/docs/changes.xml (revision 2081:c68e6afffb84)
1<?xml version="1.0" ?>
2<!DOCTYPE change_log SYSTEM "changes.dtd" >
3
4
5<change_log title="unit">
6
7
8<changes apply="unit-php
9                unit-python unit-python2.7
10                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
11                unit-python3.8 unit-python3.9 unit-python3.10
12                unit-go
13                unit-perl
14                unit-ruby
15                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13
16                unit-jsc14 unit-jsc15 unit-jsc16 unit-jsc17 unit-jsc18"
17         ver="1.27.0" rev="1"
18         date="" time=""
19         packager="Andrei Belov &lt;defan@nginx.com&gt;">
20
21<change>
22<para>
23NGINX Unit updated to 1.27.0.
24</para>
25</change>
26
27</changes>
28
29
30<changes apply="unit" ver="1.27.0" rev="1"
31         date="" time=""
32         packager="Andrei Belov &lt;defan@nginx.com&gt;">
33
34<change type="feature">
35<para>
36variables support in the "location" option of the "return" action.
37</para>
38</change>
39
40<change type="feature">
41<para>
42compatibility with GCC 12.
43</para>
44</change>
45
46<change type="bugfix">
47<para>
48the controller process could crash when a chain with more than 4
49certificates was uploaded.
50</para>
51</change>
52
53<change type="bugfix">
54<para>
55some Perl applications failed to process the request body, notably with Plack.
56</para>
57</change>
58
59<change type="bugfix">
60<para>
61some Spring Boot applications failed to start, notably with Grails.
62</para>
63</change>
64
65<change type="bugfix">
66<para>
67incorrect Python protocol auto detection (ASGI or WSGI) for native callable
68object, notably with Falcon.
69</para>
70</change>
71
72</changes>
73
74
75<changes apply="unit-php
76                unit-python unit-python2.7
77                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
78                unit-python3.8 unit-python3.9 unit-python3.10
79                unit-go
80                unit-perl
81                unit-ruby
82                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13
83                unit-jsc14 unit-jsc15 unit-jsc16 unit-jsc17 unit-jsc18"
84         ver="1.26.1" rev="1"
85         date="2021-12-02" time="18:00:00 +0300"
86         packager="Andrei Belov &lt;defan@nginx.com&gt;">
87
88<change>
89<para>
90NGINX Unit updated to 1.26.1.
91</para>
92</change>
93
94</changes>
95
96
97<changes apply="unit" ver="1.26.1" rev="1"
98         date="2021-12-02" time="18:00:00 +0300"
99         packager="Andrei Belov &lt;defan@nginx.com&gt;">
100
101<change type="bugfix">
102<para>
103occasionally, the Unit daemon was unable to fully terminate; the bug had
104appeared in 1.26.0.
105</para>
106</change>
107
108<change type="bugfix">
109<para>
110a prototype process could crash on an application process exit; the bug had
111appeared in 1.26.0.
112</para>
113</change>
114
115<change type="bugfix">
116<para>
117the router process crashed on reconfiguration if "access_log" was configured
118without listeners.
119</para>
120</change>
121
122<change type="bugfix">
123<para>
124a segmentation fault occurred in the PHP module if chdir() or
125fastcgi_finish_request() was called in the OPcache preloading script.
126</para>
127</change>
128
129<change type="bugfix">
130<para>
131fatal errors on DragonFly BSD; the bug had appeared in 1.26.0.
132</para>
133</change>
134
135</changes>
136
137
138<changes apply="unit-jsc18" ver="1.26.0" rev="1"
139         date="2021-11-18" time="18:00:00 +0300"
140         packager="Andrei Belov &lt;defan@nginx.com&gt;">
141
142<change>
143<para>
144Initial release of Java 18 module for NGINX Unit.
145</para>
146</change>
147
148</changes>
149
150
151<changes apply="unit-python3.10" ver="1.26.0" rev="1"
152         date="2021-11-18" time="18:00:00 +0300"
153         packager="Andrei Belov &lt;defan@nginx.com&gt;">
154
155<change>
156<para>
157Initial release of Python 3.10 module for NGINX Unit.
158</para>
159</change>
160
161</changes>
162
163
164<changes apply="unit-php
165                unit-python unit-python2.7
166                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
167                unit-python3.8 unit-python3.9
168                unit-go
169                unit-perl
170                unit-ruby
171                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13
172                unit-jsc14 unit-jsc15 unit-jsc16 unit-jsc17"
173         ver="1.26.0" rev="1"
174         date="2021-11-18" time="18:00:00 +0300"
175         packager="Andrei Belov &lt;defan@nginx.com&gt;">
176
177<change>
178<para>
179NGINX Unit updated to 1.26.0.
180</para>
181</change>
182
183</changes>
184
185
186<changes apply="unit" ver="1.26.0" rev="1"
187         date="2021-11-18" time="18:00:00 +0300"
188         packager="Andrei Belov &lt;defan@nginx.com&gt;">
189
190<change type="change">
191<para>
192the "share" option now specifies the entire path to the files it serves,
193rather than a document root directory to be prepended to the request URI.
194</para>
195</change>
196
197<change type="feature">
198<para>
199automatic adjustment of existing configurations to the new "share" behavior
200when updating from previous versions.
201</para>
202</change>
203
204<change type="feature">
205<para>
206variables support in the "share" option.
207</para>
208</change>
209
210<change type="feature">
211<para>
212multiple paths in the "share" option.
213</para>
214</change>
215
216<change type="feature">
217<para>
218variables support in the "chroot" option.
219</para>
220</change>
221
222<change type="feature">
223<para>
224PHP opcache is shared between application processes.
225</para>
226</change>
227
228<change type="feature">
229<para>
230request routing by the query string.
231</para>
232</change>
233
234<change type="bugfix">
235<para>
236the router and app processes could crash when the requests limit was reached
237by asynchronous or multithreaded apps.
238</para>
239</change>
240
241<change type="bugfix">
242<para>
243established WebSocket connections could stop reading frames from the client
244after the corresponding listener had been reconfigured.
245</para>
246</change>
247
248<change type="bugfix">
249<para>
250fixed building with glibc 2.34, notably Fedora 35.
251</para>
252</change>
253
254</changes>
255
256
257<changes apply="unit-php
258                unit-python unit-python2.7
259                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
260                unit-python3.8 unit-python3.9
261                unit-go
262                unit-perl
263                unit-ruby
264                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13
265                unit-jsc14 unit-jsc15 unit-jsc16 unit-jsc17"
266         ver="1.25.0" rev="1"
267         date="2021-08-19" time="18:00:00 +0300"
268         packager="Andrei Belov &lt;defan@nginx.com&gt;">
269
270<change>
271<para>
272NGINX Unit updated to 1.25.0.
273</para>
274</change>
275
276</changes>
277
278
279<changes apply="unit" ver="1.25.0" rev="1"
280         date="2021-08-19" time="18:00:00 +0300"
281         packager="Andrei Belov &lt;defan@nginx.com&gt;">
282
283<change type="feature">
284<para>
285client IP address replacement from a specified HTTP header field.
286</para>
287</change>
288
289<change type="feature">
290<para>
291TLS sessions cache.
292</para>
293</change>
294
295<change type="feature">
296<para>
297TLS session tickets.
298</para>
299</change>
300
301<change type="feature">
302<para>
303application restart control.
304</para>
305</change>
306
307<change type="feature">
308<para>
309process and thread lifecycle hooks in Ruby.
310</para>
311</change>
312
313<change type="bugfix">
314<para>
315the router process could crash on TLS connection open when multiple listeners
316with TLS certificates were configured; the bug had appeared in 1.23.0.
317</para>
318</change>
319
320<change type="bugfix">
321<para>
322TLS connections were rejected for configurations with multiple certificate
323bundles in a listener if the client did not use SNI.
324</para>
325</change>
326
327<change type="bugfix">
328<para>
329the router process could crash with frequent multithreaded application
330reconfiguration.
331</para>
332</change>
333
334<change type="bugfix">
335<para>
336compatibility issues with some Python ASGI apps, notably based on the Starlette
337framework.
338</para>
339</change>
340
341<change type="bugfix">
342<para>
343a descriptor and memory leak occurred in the router process when an app process
344stopped or crashed.
345</para>
346</change>
347
348<change type="bugfix">
349<para>
350the controller or router process could crash if the configuration contained
351a full-form IPv6 in a listener address.
352</para>
353</change>
354
355<change type="bugfix">
356<para>
357the router process crashed when a request was passed to an empty "routes"
358or "upstreams" using a variable "pass" option.
359</para>
360</change>
361
362<change type="bugfix">
363<para>
364the router process crashed while matching a request to an empty array of source
365or destination address patterns.
366</para>
367</change>
368
369</changes>
370
371
372<changes apply="unit-jsc17" ver="1.24.0" rev="1"
373         date="2021-05-27" time="18:00:00 +0300"
374         packager="Andrei Belov &lt;defan@nginx.com&gt;">
375
376<change>
377<para>
378Initial release of Java 17 module for NGINX Unit.
379</para>
380</change>
381
382</changes>
383
384
385<changes apply="unit-jsc16" ver="1.24.0" rev="1"
386         date="2021-05-27" time="18:00:00 +0300"
387         packager="Andrei Belov &lt;defan@nginx.com&gt;">
388
389<change>
390<para>
391Initial release of Java 16 module for NGINX Unit.
392</para>
393</change>
394
395</changes>
396
397
398<changes apply="unit-php
399                unit-python unit-python2.7
400                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
401                unit-python3.8 unit-python3.9
402                unit-go
403                unit-perl
404                unit-ruby
405                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13
406                unit-jsc14 unit-jsc15"
407         ver="1.24.0" rev="1"
408         date="2021-05-27" time="18:00:00 +0300"
409         packager="Andrei Belov &lt;defan@nginx.com&gt;">
410
411<change>
412<para>
413NGINX Unit updated to 1.24.0.
414</para>
415</change>
416
417</changes>
418
419
420<changes apply="unit" ver="1.24.0" rev="1"
421         date="2021-05-27" time="18:00:00 +0300"
422         packager="Andrei Belov &lt;defan@nginx.com&gt;">
423
424<change type="change">
425<para>
426PHP added to the default MIME type list.
427</para>
428</change>
429
430<change type="feature">
431<para>
432arbitrary configuration of TLS connections via OpenSSL commands.
433</para>
434</change>
435
436<change type="feature">
437<para>
438the ability to limit static file serving by MIME types.
439</para>
440</change>
441
442<change type="feature">
443<para>
444support for chrooting, rejecting symlinks, and rejecting mount
445point traversal on a per-request basis when serving static files.
446</para>
447</change>
448
449<change type="feature">
450<para>
451a loader for automatically overriding the "http" and "websocket" modules in
452Node.js.
453</para>
454</change>
455
456<change type="feature">
457<para>
458multiple "targets" in Python applications.
459</para>
460</change>
461
462<change type="feature">
463<para>
464compatibility with Ruby 3.0.
465</para>
466</change>
467
468<change type="bugfix">
469<para>
470the router process could crash while closing a TLS connection.
471</para>
472</change>
473
474<change type="bugfix">
475<para>
476a segmentation fault might have occurred in the PHP module if
477fastcgi_finish_request() was used with the "auto_globals_jit" option enabled.
478</para>
479</change>
480
481</changes>
482
483
484<changes apply="unit-php
485                unit-python unit-python2.7
486                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
487                unit-python3.8 unit-python3.9
488                unit-go
489                unit-perl
490                unit-ruby
491                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13
492                unit-jsc14 unit-jsc15"
493         ver="1.23.0" rev="1"
494         date="2021-03-25" time="18:00:00 +0300"
495         packager="Andrei Belov &lt;defan@nginx.com&gt;">
496
497<change>
498<para>
499NGINX Unit updated to 1.23.0.
500</para>
501</change>
502
503</changes>
504
505
506<changes apply="unit" ver="1.23.0" rev="1"
507         date="2021-03-25" time="18:00:00 +0300"
508         packager="Andrei Belov &lt;defan@nginx.com&gt;">
509
510<change type="feature">
511<para>
512support for multiple certificate bundles on a listener via the Server Name
513Indication (SNI) TLS extension.
514</para>
515</change>
516
517<change type="feature">
518<para>
519"--mandir" ./configure option to specify the directory for man page
520installation.
521</para>
522</change>
523
524<change type="bugfix">
525<para>
526the router process could crash on premature TLS connection close; the bug had
527appeared in 1.17.0.
528</para>
529</change>
530
531<change type="bugfix">
532<para>
533a connection leak occurred on premature TLS connection close; the bug had
534appeared in 1.6.
535</para>
536</change>
537
538<change type="bugfix">
539<para>
540a descriptor and memory leak occurred in the router process when processing
541small WebSocket frames from a client; the bug had appeared in 1.19.0.
542</para>
543</change>
544
545<change type="bugfix">
546<para>
547a descriptor leak occurred in the router process when removing or
548reconfiguring an application; the bug had appeared in 1.19.0.
549</para>
550</change>
551
552<change type="bugfix">
553<para>
554persistent storage of certificates might've not worked with some filesystems in
555Linux, and all uploaded certificate bundles were forgotten after restart.
556</para>
557</change>
558
559<change type="bugfix">
560<para>
561the controller process could crash while requesting information about a
562certificate with a non-DNS SAN entry.
563</para>
564</change>
565
566<change type="bugfix">
567<para>
568the controller process could crash on manipulations with a certificate
569containing a SAN and no standard name attributes in subject or issuer.
570</para>
571</change>
572
573<change type="bugfix">
574<para>
575the Ruby module didn't respect the user locale for defaults in the Encoding
576class.
577</para>
578</change>
579
580<change type="bugfix">
581<para>
582the PHP 5 module failed to build with thread safety enabled; the bug had
583appeared in 1.22.0.
584</para>
585</change>
586
587</changes>
588
589
590<changes apply="unit-python3.9" ver="1.22.0" rev="1"
591         date="2021-02-04" time="18:00:00 +0300"
592         packager="Andrei Belov &lt;defan@nginx.com&gt;">
593
594<change>
595<para>
596Initial release of Python 3.9 module for NGINX Unit.
597</para>
598</change>
599
600</changes>
601
602
603<changes apply="unit-php
604                unit-python unit-python2.7
605                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
606                unit-python3.8
607                unit-go
608                unit-perl
609                unit-ruby
610                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13
611                unit-jsc14 unit-jsc15"
612         ver="1.22.0" rev="1"
613         date="2021-02-04" time="18:00:00 +0300"
614         packager="Andrei Belov &lt;defan@nginx.com&gt;">
615
616<change>
617<para>
618NGINX Unit updated to 1.22.0.
619</para>
620</change>
621
622</changes>
623
624
625<changes apply="unit" ver="1.22.0" rev="1"
626         date="2021-02-04" time="18:00:00 +0300"
627         packager="Andrei Belov &lt;defan@nginx.com&gt;">
628
629<change type="feature">
630<para>
631the ServerRequest and ServerResponse objects of Node.js module are now
632compliant with Stream API.
633</para>
634</change>
635
636<change type="feature">
637<para>
638support for specifying multiple directories in the "path" option of Python
639apps.
640</para>
641</change>
642
643<change type="bugfix">
644<para>
645a memory leak occurred in the router process when serving files larger than
646128K; the bug had appeared in 1.13.0.
647</para>
648</change>
649
650<change type="bugfix">
651<para>
652apps could stop processing new requests under high load; the bug had
653appeared in 1.19.0.
654</para>
655</change>
656
657<change type="bugfix">
658<para>
659app processes could terminate unexpectedly under high load; the bug had
660appeared in 1.19.0.
661</para>
662</change>
663
664<change type="bugfix">
665<para>
666invalid HTTP responses were generated for some unusual status codes.
667</para>
668</change>
669
670<change type="bugfix">
671<para>
672the PHP_AUTH_USER, PHP_AUTH_PW, and PHP_AUTH_DIGEST server variables were
673missing in the PHP module.
674</para>
675</change>
676
677<change type="bugfix">
678<para>
679the router process could crash with multithreaded apps under high load.
680</para>
681</change>
682
683<change type="bugfix">
684<para>
685Ruby apps with multithreading configured could crash on start under load.
686</para>
687</change>
688
689<change type="bugfix">
690<para>
691mount points weren't unmounted when the "mount" namespace isolation was used;
692the bug had appeared in 1.21.0.
693</para>
694</change>
695
696<change type="bugfix">
697<para>
698the router process could crash while removing or reconfiguring an app that used
699WebSocket.
700</para>
701</change>
702
703<change type="bugfix">
704<para>
705a memory leak occurring in the router process when removing or reconfiguring
706an application; the bug had appeared in 1.19.0.
707</para>
708</change>
709
710</changes>
711
712
713<changes apply="unit-jsc15" ver="1.21.0" rev="1"
714         date="2020-11-19" time="18:00:00 +0300"
715         packager="Andrei Belov &lt;defan@nginx.com&gt;">
716
717<change>
718<para>
719Initial release of Java 15 module for NGINX Unit.
720</para>
721</change>
722
723</changes>
724
725
726<changes apply="unit-jsc14" ver="1.21.0" rev="1"
727         date="2020-11-19" time="18:00:00 +0300"
728         packager="Andrei Belov &lt;defan@nginx.com&gt;">
729
730<change>
731<para>
732Initial release of Java 14 module for NGINX Unit.
733</para>
734</change>
735
736</changes>
737
738
739<changes apply="unit-jsc13" ver="1.21.0" rev="1"
740         date="2020-11-19" time="18:00:00 +0300"
741         packager="Andrei Belov &lt;defan@nginx.com&gt;">
742
743<change>
744<para>
745Initial release of Java 13 module for NGINX Unit.
746</para>
747</change>
748
749</changes>
750
751
752<changes apply="unit-php
753                unit-python unit-python2.7
754                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
755                unit-python3.8
756                unit-go
757                unit-perl
758                unit-ruby
759                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
760         ver="1.21.0" rev="1"
761         date="2020-11-19" time="18:00:00 +0300"
762         packager="Andrei Belov &lt;defan@nginx.com&gt;">
763
764<change>
765<para>
766NGINX Unit updated to 1.21.0.
767</para>
768</change>
769
770</changes>
771
772
773<changes apply="unit" ver="1.21.0" rev="1"
774         date="2020-11-19" time="18:00:00 +0300"
775         packager="Andrei Belov &lt;defan@nginx.com&gt;">
776
777<change type="change">
778<para>
779procfs is mounted by default for all languages when "rootfs" isolation is used.
780</para>
781</change>
782
783<change type="change">
784<para>
785any characters valid according to RFC 7230 are now allowed in HTTP header field
786names.
787</para>
788</change>
789
790<change type="change">
791<para>
792HTTP header fields with underscores ("_") are now discarded from requests by
793default.
794</para>
795</change>
796
797<change type="feature">
798<para>
799optional multithreaded request processing for Java, Python, Perl, and Ruby apps.
800</para>
801</change>
802
803<change type="feature">
804<para>
805regular expressions in route matching patterns.
806</para>
807</change>
808
809<change type="feature">
810<para>
811compatibility with Python 3.9.
812</para>
813</change>
814
815<change type="feature">
816<para>
817the Python module now supports ASGI 2.0 legacy applications.
818</para>
819</change>
820
821<change type="feature">
822<para>
823the "protocol" option in Python applications aids choice between ASGI and WSGI.
824</para>
825</change>
826
827<change type="feature">
828<para>
829the fastcgi_finish_request() PHP function that finalizes request processing and
830continues code execution without holding onto the client connection.
831</para>
832</change>
833
834<change type="feature">
835<para>
836the "discard_unsafe_fields" HTTP option that enables discarding request header
837fields with irregular (but still valid) characters in the field name.
838</para>
839</change>
840
841<change type="feature">
842<para>
843the "procfs" and "tmpfs" automount isolation options to disable automatic
844mounting of eponymous filesystems.
845</para>
846</change>
847
848<change type="bugfix">
849<para>
850the router process could crash when running Go applications under high load;
851the bug had appeared in 1.19.0.
852</para>
853</change>
854
855<change type="bugfix">
856<para>
857some language dependencies could remain mounted after using "rootfs" isolation.
858</para>
859</change>
860
861<change type="bugfix">
862<para>
863various compatibility issues in Java applications.
864</para>
865</change>
866
867<change type="bugfix">
868<para>
869the Java module built with the musl C library couldn't run applications that
870use "rootfs" isolation.
871</para>
872</change>
873
874</changes>
875
876
877<changes apply="unit-php
878                unit-python unit-python2.7
879                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
880                unit-python3.8
881                unit-go
882                unit-perl
883                unit-ruby
884                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
885         ver="1.20.0" rev="1"
886         date="2020-10-08" time="18:00:00 +0300"
887         packager="Andrei Belov &lt;defan@nginx.com&gt;">
888
889<change>
890<para>
891NGINX Unit updated to 1.20.0.
892</para>
893</change>
894
895</changes>
896
897
898<changes apply="unit" ver="1.20.0" rev="1"
899         date="2020-10-08" time="18:00:00 +0300"
900         packager="Andrei Belov &lt;defan@nginx.com&gt;">
901
902<change type="change">
903<para>
904the PHP module is now initialized before chrooting; this enables loading all
905extensions from the host system.
906</para>
907</change>
908
909<change type="change">
910<para>
911AVIF and APNG image formats added to the default MIME type list.
912</para>
913</change>
914
915<change type="change">
916<para>
917functional tests migrated to the pytest framework.
918</para>
919</change>
920
921<change type="feature">
922<para>
923the Python module now fully supports applications that use the ASGI 3.0 server
924interface.
925</para>
926</change>
927
928<change type="feature">
929<para>
930the Python module now has a built-in WebSocket server implementation for
931applications, compatible with the HTTP &amp; WebSocket ASGI Message Format 2.1
932specification.
933</para>
934</change>
935
936<change type="feature">
937<para>
938automatic mounting of an isolated "/tmp" file system into chrooted application
939environments.
940</para>
941</change>
942
943<change type="feature">
944<para>
945the $host variable contains a normalized "Host" request value.
946</para>
947</change>
948
949<change type="feature">
950<para>
951the "callable" option sets Python application callable names.
952</para>
953</change>
954
955<change type="feature">
956<para>
957compatibility with PHP 8 RC 1. Thanks to Remi Collet.
958</para>
959</change>
960
961<change type="feature">
962<para>
963the "automount" option in the "isolation" object allows to turn off the
964automatic mounting of language module dependencies.
965</para>
966</change>
967
968<change type="bugfix">
969<para>
970"pass"-ing requests to upstreams from a route was broken; the bug had appeared
971in 1.19.0.  Thanks to 洪志道 (Hong Zhi Dao) for discovering and fixing it.
972</para>
973</change>
974
975<change type="bugfix">
976<para>
977the router process could crash during reconfiguration.
978</para>
979</change>
980
981<change type="bugfix">
982<para>
983a memory leak occurring in the router process; the bug had appeared in 1.18.0.
984</para>
985</change>
986
987<change type="bugfix">
988<para>
989the "!" (non-empty) pattern was matched incorrectly;
990the bug had appeared in 1.19.0.
991</para>
992</change>
993
994<change type="bugfix">
995<para>
996fixed building on platforms without sendfile() support, notably NetBSD;
997the bug had appeared in 1.16.0.
998</para>
999</change>
1000
1001</changes>
1002
1003
1004<changes apply="unit-php
1005                unit-python unit-python2.7
1006                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
1007                unit-python3.8
1008                unit-go
1009                unit-perl
1010                unit-ruby
1011                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
1012         ver="1.19.0" rev="1"
1013         date="2020-08-13" time="18:00:00 +0300"
1014         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1015
1016<change>
1017<para>
1018NGINX Unit updated to 1.19.0.
1019</para>
1020</change>
1021
1022</changes>
1023
1024
1025<changes apply="unit" ver="1.19.0" rev="1"
1026         date="2020-08-13" time="18:00:00 +0300"
1027         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1028
1029<change type="feature">
1030<para>
1031reworked IPC between the router process and the applications to lower latencies,
1032increase performance, and improve scalability.
1033</para>
1034</change>
1035
1036<change type="feature">
1037<para>
1038support for an arbitrary number of wildcards in route matching patterns.
1039</para>
1040</change>
1041
1042<change type="feature">
1043<para>
1044chunked transfer encoding in proxy responses.
1045</para>
1046</change>
1047
1048<change type="feature">
1049<para>
1050basic variables support in the "pass" option.
1051</para>
1052</change>
1053
1054<change type="feature">
1055<para>
1056compatibility with PHP 8 Beta 1.
1057Thanks to Remi Collet.
1058</para>
1059</change>
1060
1061<change type="bugfix">
1062<para>
1063the router process could crash while passing requests to an application under
1064high load.
1065</para>
1066</change>
1067
1068<change type="bugfix">
1069<para>
1070a number of language modules failed to build on some systems;
1071the bug had appeared in 1.18.0.
1072</para>
1073</change>
1074
1075<change type="bugfix">
1076<para>
1077time in error log messages from PHP applications could lag.
1078</para>
1079</change>
1080
1081<change type="bugfix">
1082<para>
1083reconfiguration requests could hang if an application had failed to start;
1084the bug had appeared in 1.18.0.
1085</para>
1086</change>
1087
1088<change type="bugfix">
1089<para>
1090memory leak during reconfiguration.
1091</para>
1092</change>
1093
1094<change type="bugfix">
1095<para>
1096the daemon didn't start without language modules;
1097the bug had appeared in 1.18.0.
1098</para>
1099</change>
1100
1101<change type="bugfix">
1102<para>
1103the router process could crash at exit.
1104</para>
1105</change>
1106
1107<change type="bugfix">
1108<para>
1109Node.js applications could crash at exit.
1110</para>
1111</change>
1112
1113<change type="bugfix">
1114<para>
1115the Ruby module could be linked against a wrong library version.
1116</para>
1117</change>
1118
1119</changes>
1120
1121
1122<changes apply="unit-php
1123                unit-python unit-python2.7
1124                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
1125                unit-python3.8
1126                unit-go
1127                unit-perl
1128                unit-ruby
1129                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
1130         ver="1.18.0" rev="1"
1131         date="2020-05-28" time="18:00:00 +0300"
1132         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1133
1134<change>
1135<para>
1136NGINX Unit updated to 1.18.0.
1137</para>
1138</change>
1139
1140</changes>
1141
1142
1143<changes apply="unit" ver="1.18.0" rev="1"
1144         date="2020-05-28" time="18:00:00 +0300"
1145         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1146
1147<change type="feature">
1148<para>
1149the "rootfs" isolation option for changing root filesystem for an application.
1150</para>
1151</change>
1152
1153<change type="feature">
1154<para>
1155multiple "targets" in PHP applications.
1156</para>
1157</change>
1158
1159<change type="feature">
1160<para>
1161support for percent-encoding in the "uri" and "arguments" matching options
1162and in the "pass" option.
1163</para>
1164</change>
1165
1166</changes>
1167
1168
1169<changes apply="unit-php
1170                unit-python unit-python2.7
1171                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
1172                unit-python3.8
1173                unit-go
1174                unit-perl
1175                unit-ruby
1176                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
1177         ver="1.17.0" rev="1"
1178         date="2020-04-16" time="18:00:00 +0300"
1179         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1180
1181<change>
1182<para>
1183NGINX Unit updated to 1.17.0.
1184</para>
1185</change>
1186
1187</changes>
1188
1189
1190<changes apply="unit" ver="1.17.0" rev="1"
1191         date="2020-04-16" time="18:00:00 +0300"
1192         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1193
1194<change type="feature">
1195<para>
1196a "return" action with optional "location" for immediate responses and external
1197redirection.
1198</para>
1199</change>
1200
1201<change type="feature">
1202<para>
1203fractional weights support for upstream servers.
1204</para>
1205</change>
1206
1207<change type="bugfix">
1208<para>
1209accidental 502 "Bad Gateway" errors might have occurred in applications under
1210high load.
1211</para>
1212</change>
1213
1214<change type="bugfix">
1215<para>
1216memory leak in the router; the bug had appeared in 1.13.0.
1217</para>
1218</change>
1219
1220<change type="bugfix">
1221<para>
1222segmentation fault might have occurred in the router process when reaching
1223open connections limit.
1224</para>
1225</change>
1226
1227<change type="bugfix">
1228<para>
1229"close() failed (9: Bad file descriptor)" alerts might have appeared in the log
1230while processing large request bodies; the bug had appeared in 1.16.0.
1231</para>
1232</change>
1233
1234<change type="bugfix">
1235<para>
1236existing application processes didn't reopen the log file.
1237</para>
1238</change>
1239
1240<change type="bugfix">
1241<para>
1242incompatibility with some Node.js applications.
1243</para>
1244</change>
1245
1246<change type="bugfix">
1247<para>
1248broken build on DragonFly BSD; the bug had appeared in 1.16.0.
1249</para>
1250</change>
1251
1252</changes>
1253
1254
1255<changes apply="unit-php
1256                unit-python unit-python2.7
1257                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
1258                unit-python3.8
1259                unit-go
1260                unit-perl
1261                unit-ruby
1262                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
1263         ver="1.16.0" rev="1"
1264         date="2020-03-12" time="18:00:00 +0300"
1265         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1266
1267<change>
1268<para>
1269NGINX Unit updated to 1.16.0.
1270</para>
1271</change>
1272
1273</changes>
1274
1275
1276<changes apply="unit" ver="1.16.0" rev="1"
1277         date="2020-03-12" time="18:00:00 +0300"
1278         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1279
1280<change type="feature">
1281<para>
1282basic load-balancing support with round-robin.
1283</para>
1284</change>
1285
1286<change type="feature">
1287<para>
1288a "fallback" option that performs an alternative action if a request can't be
1289served from the "share" directory.
1290</para>
1291</change>
1292
1293<change type="feature">
1294<para>
1295reduced memory consumption by dumping large request bodies to disk.
1296</para>
1297</change>
1298
1299<change type="feature">
1300<para>
1301stripping UTF-8 BOM and JavaScript-style comments from uploaded JSON.
1302</para>
1303</change>
1304
1305<change type="bugfix">
1306<para>
1307negative address matching in router might work improperly in combination with
1308non-negative patterns.
1309</para>
1310</change>
1311
1312<change type="bugfix">
1313<para>
1314Java Spring applications failed to run; the bug had appeared in 1.10.0.
1315</para>
1316</change>
1317
1318<change type="bugfix">
1319<para>
1320PHP 7.4 was broken if it was built with thread safety enabled.
1321</para>
1322</change>
1323
1324<change type="bugfix">
1325<para>
1326compatibility issues with some Python applications.
1327</para>
1328</change>
1329
1330</changes>
1331
1332
1333<changes apply="unit-php
1334                unit-python unit-python2.7
1335                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
1336                unit-python3.8
1337                unit-go
1338                unit-perl
1339                unit-ruby
1340                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
1341         ver="1.15.0" rev="1"
1342         date="2020-02-06" time="18:00:00 +0300"
1343         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1344
1345<change>
1346<para>
1347NGINX Unit updated to 1.15.0.
1348</para>
1349</change>
1350
1351</changes>
1352
1353
1354<changes apply="unit" ver="1.15.0" rev="1"
1355         date="2020-02-06" time="18:00:00 +0300"
1356         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1357
1358<change type="change">
1359<para>
1360extensions of dynamically requested PHP scripts were restricted to ".php".
1361</para>
1362</change>
1363
1364<change type="feature">
1365<para>
1366compatibility with Ruby 2.7.
1367</para>
1368</change>
1369
1370<change type="bugfix">
1371<para>
1372segmentation fault might have occurred in the router process with multiple
1373application processes under load; the bug had appeared in 1.14.0.
1374</para>
1375</change>
1376
1377<change type="bugfix">
1378<para>
1379receiving request body over TLS connection might have stalled.
1380</para>
1381</change>
1382
1383</changes>
1384
1385
1386<changes apply="unit-php
1387                unit-python unit-python2.7
1388                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
1389                unit-python3.8
1390                unit-go
1391                unit-perl
1392                unit-ruby
1393                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
1394         ver="1.14.0" rev="1"
1395         date="2019-12-26" time="18:00:00 +0300"
1396         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1397
1398<change>
1399<para>
1400NGINX Unit updated to 1.14.0.
1401</para>
1402</change>
1403
1404</changes>
1405
1406
1407<changes apply="unit" ver="1.14.0" rev="1"
1408         date="2019-12-26" time="18:00:00 +0300"
1409         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1410
1411<change type="change">
1412<para>
1413the Go package import name changed to "unit.nginx.org/go".
1414</para>
1415</change>
1416
1417<change type="change">
1418<para>
1419Go package now links to libunit instead of including library sources.
1420</para>
1421</change>
1422
1423<change type="feature">
1424<para>
1425ability to change user and group for isolated applications when Unit daemon
1426runs as an unprivileged user.
1427</para>
1428</change>
1429
1430<change type="feature">
1431<para>
1432request routing by source and destination addresses and ports.
1433</para>
1434</change>
1435
1436<change type="bugfix">
1437<para>
1438memory bloat on large responses.
1439</para>
1440</change>
1441
1442</changes>
1443
1444
1445<changes apply="unit-go1.13" ver="1.13.0" rev="1"
1446         date="2019-11-20" time="09:00:00 +0300"
1447         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1448
1449<change>
1450<para>
1451Initial release of Go 1.13 module for NGINX Unit.
1452</para>
1453</change>
1454
1455</changes>
1456
1457
1458<changes apply="unit-go1.12" ver="1.13.0" rev="1"
1459         date="2019-11-20" time="09:00:00 +0300"
1460         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1461
1462<change>
1463<para>
1464Initial release of Go 1.12 module for NGINX Unit.
1465</para>
1466</change>
1467
1468</changes>
1469
1470
1471<changes apply="unit-python3.8" ver="1.13.0" rev="1"
1472         date="2019-11-18" time="14:20:00 +0300"
1473         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1474
1475<change>
1476<para>
1477Initial release of Python 3.8 module for NGINX Unit.
1478</para>
1479</change>
1480
1481</changes>
1482
1483
1484<changes apply="unit-php
1485                unit-python unit-python2.7
1486                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
1487                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10 unit-go1.11
1488                unit-perl
1489                unit-ruby
1490                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
1491         ver="1.13.0" rev="1"
1492         date="2019-11-14" time="18:00:00 +0300"
1493         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1494
1495<change>
1496<para>
1497NGINX Unit updated to 1.13.0.
1498</para>
1499</change>
1500
1501</changes>
1502
1503
1504<changes apply="unit" ver="1.13.0" rev="1"
1505         date="2019-11-14" time="18:00:00 +0300"
1506         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1507
1508<change type="feature">
1509<para>
1510basic support for HTTP reverse proxying.
1511</para>
1512</change>
1513
1514<change type="feature">
1515<para>
1516compatibility with Python 3.8.
1517</para>
1518</change>
1519
1520<change type="bugfix">
1521<para>
1522memory leak in Python application processes when the close handler was used.
1523</para>
1524</change>
1525
1526<change type="bugfix">
1527<para>
1528threads in Python applications might not work correctly.
1529</para>
1530</change>
1531
1532<change type="bugfix">
1533<para>
1534Ruby on Rails applications might not work on Ruby 2.6.
1535</para>
1536</change>
1537
1538<change type="bugfix">
1539<para>
1540backtraces for uncaught exceptions in Python 3 might be logged with significant
1541delays.
1542</para>
1543</change>
1544
1545<change type="bugfix">
1546<para>
1547explicit setting a namespaces isolation option to false might have enabled it.
1548</para>
1549</change>
1550
1551</changes>
1552
1553
1554<changes apply="unit-php
1555                unit-python unit-python2.7
1556                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
1557                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10 unit-go1.11
1558                unit-perl
1559                unit-ruby
1560                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
1561         ver="1.12.0" rev="1"
1562         date="2019-10-03" time="18:00:00 +0300"
1563         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1564
1565<change>
1566<para>
1567NGINX Unit updated to 1.12.0.
1568</para>
1569</change>
1570
1571</changes>
1572
1573
1574<changes apply="unit" ver="1.12.0" rev="1"
1575         date="2019-10-03" time="18:00:00 +0300"
1576         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1577
1578<change type="feature">
1579<para>
1580compatibility with PHP 7.4.
1581</para>
1582</change>
1583
1584<change type="bugfix">
1585<para>
1586descriptors leak on process creation; the bug had appeared in 1.11.0.
1587</para>
1588</change>
1589
1590<change type="bugfix">
1591<para>
1592TLS connection might be closed prematurely while sending response.
1593</para>
1594</change>
1595
1596<change type="bugfix">
1597<para>
1598segmentation fault might have occurred if an irregular file was requested.
1599</para>
1600</change>
1601
1602</changes>
1603
1604
1605
1606<changes apply="unit-php
1607                unit-python unit-python2.7
1608                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
1609                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10 unit-go1.11
1610                unit-perl
1611                unit-ruby
1612                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
1613         ver="1.11.0" rev="1"
1614         date="2019-09-19" time="18:00:00 +0300"
1615         packager="Konstantin Pavlov &lt;thresh@nginx.com&gt;">
1616
1617<change>
1618<para>
1619NGINX Unit updated to 1.11.0.
1620</para>
1621</change>
1622
1623</changes>
1624
1625
1626<changes apply="unit" ver="1.11.0" rev="1"
1627         date="2019-09-19" time="18:00:00 +0300"
1628         packager="Konstantin Pavlov &lt;thresh@nginx.com&gt;">
1629
1630<change type="feature">
1631<para>
1632basic support for serving static files.
1633</para>
1634</change>
1635
1636<change type="feature">
1637<para>
1638isolation of application processes with Linux namespaces.
1639</para>
1640</change>
1641
1642<change type="feature">
1643<para>
1644built-in WebSocket server implementation for Java Servlet Containers.
1645</para>
1646</change>
1647
1648<change type="feature">
1649<para>
1650direct addressing of API configuration options containing slashes "/"
1651using URI encoding (%2F).
1652</para>
1653</change>
1654
1655<change type="bugfix">
1656<para>
1657segmentation fault might have occurred in Go applications under high load.
1658</para>
1659</change>
1660
1661<change type="bugfix">
1662<para>
1663WebSocket support was broken if Unit was built with some linkers other than
1664GNU ld (e.g. gold or LLD).
1665</para>
1666</change>
1667
1668</changes>
1669
1670
1671<changes apply="unit
1672                unit-php
1673                unit-python unit-python2.7
1674                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
1675                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10 unit-go1.11
1676                unit-perl
1677                unit-ruby
1678                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
1679         ver="1.10.0" rev="2"
1680         date="2019-08-23" time="12:00:00 +0300"
1681         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1682
1683<change type="bugfix">
1684<para>
1685missed header files added to unit development package.
1686</para>
1687</change>
1688
1689</changes>
1690
1691
1692<changes apply="unit-php
1693                unit-python unit-python2.7
1694                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
1695                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10 unit-go1.11
1696                unit-perl
1697                unit-ruby
1698                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
1699         ver="1.10.0" rev="1"
1700         date="2019-08-22" time="18:00:00 +0300"
1701         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1702
1703<change>
1704<para>
1705NGINX Unit updated to 1.10.0.
1706</para>
1707</change>
1708
1709</changes>
1710
1711
1712<changes apply="unit" ver="1.10.0" rev="1"
1713         date="2019-08-22" time="18:00:00 +0300"
1714         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1715
1716<change type="change">
1717<para>
1718matching of cookies in routes made case sensitive.
1719</para>
1720</change>
1721
1722<change type="change">
1723<para>
1724decreased log level of common errors when clients close connections.
1725</para>
1726</change>
1727
1728<change type="change">
1729<para>
1730removed the Perl module's "--include=" ./configure option.
1731</para>
1732</change>
1733
1734<change type="feature">
1735<para>
1736built-in WebSocket server implementation for Node.js module.
1737</para>
1738</change>
1739
1740<change type="feature">
1741<para>
1742splitting PATH_INFO from request URI in PHP module.
1743</para>
1744</change>
1745
1746<change type="feature">
1747<para>
1748request routing by scheme (HTTP or HTTPS).
1749</para>
1750</change>
1751
1752<change type="feature">
1753<para>
1754support for multipart requests body in Java module.
1755</para>
1756</change>
1757
1758<change type="feature">
1759<para>
1760improved API compatibility with Node.js 11.10 or later.
1761</para>
1762</change>
1763
1764<change type="bugfix">
1765<para>
1766reconfiguration failed if "listeners" or "applications" objects were missing.
1767</para>
1768</change>
1769
1770<change type="bugfix">
1771<para>
1772applying a large configuration might have failed.
1773</para>
1774</change>
1775
1776</changes>
1777
1778
1779<changes apply="unit-go1.11" ver="1.9.0" rev="1"
1780         date="2019-05-30" time="18:00:00 +0300"
1781         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1782
1783<change>
1784<para>
1785Initial release of Go 1.11 module for NGINX Unit.
1786</para>
1787</change>
1788
1789</changes>
1790
1791
1792<changes apply="unit-php
1793                unit-python unit-python2.7
1794                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
1795                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10
1796                unit-perl
1797                unit-ruby
1798                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
1799         ver="1.9.0" rev="1"
1800         date="2019-05-30" time="18:00:00 +0300"
1801         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1802
1803<change>
1804<para>
1805NGINX Unit updated to 1.9.0.
1806</para>
1807</change>
1808
1809</changes>
1810
1811
1812<changes apply="unit" ver="1.9.0" rev="1"
1813         date="2019-05-30" time="18:00:00 +0300"
1814         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1815
1816<change type="feature">
1817<para>
1818request routing by arguments, headers, and cookies.
1819</para>
1820</change>
1821
1822<change type="feature">
1823<para>
1824route matching patterns allow a wildcard in the middle.
1825</para>
1826</change>
1827
1828<change type="feature">
1829<para>
1830POST operation for appending elements to arrays in configuration.
1831</para>
1832</change>
1833
1834<change type="feature">
1835<para>
1836support for changing credentials using CAP_SETUID and CAP_SETGID capabilities
1837on Linux without running main process as privileged user.
1838</para>
1839</change>
1840
1841<change type="bugfix">
1842<para>
1843memory leak in the router process might have happened when a client
1844prematurely closed the connection.
1845</para>
1846</change>
1847
1848<change type="bugfix">
1849<para>
1850applying a large configuration might have failed.
1851</para>
1852</change>
1853
1854<change type="bugfix">
1855<para>
1856PUT and DELETE operations on array elements in configuration did not work.
1857</para>
1858</change>
1859
1860<change type="bugfix">
1861<para>
1862request schema in applications did not reflect TLS connections.
1863</para>
1864</change>
1865
1866<change type="bugfix">
1867<para>
1868restored compatibility with Node.js applications that use
1869ServerResponse._implicitHeader() function; the bug had appeared in 1.7.
1870</para>
1871</change>
1872
1873<change type="bugfix">
1874<para>
1875various compatibility issues with Node.js applications.
1876</para>
1877</change>
1878
1879</changes>
1880
1881
1882<changes apply="unit-jsc-common" ver="1.8.0" rev="1"
1883         date="2019-03-01" time="18:00:00 +0300"
1884         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1885
1886<change>
1887<para>
1888Initial release of Java common packages for NGINX Unit.
1889</para>
1890</change>
1891
1892</changes>
1893
1894
1895<changes apply="unit-jsc8" ver="1.8.0" rev="1"
1896         date="2019-03-01" time="18:00:00 +0300"
1897         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1898
1899<change>
1900<para>
1901Initial release of Java 8 module for NGINX Unit.
1902</para>
1903</change>
1904
1905</changes>
1906
1907
1908<changes apply="unit-jsc10" ver="1.8.0" rev="1"
1909         date="2019-03-01" time="18:00:00 +0300"
1910         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1911
1912<change>
1913<para>
1914Initial release of Java 10 module for NGINX Unit.
1915</para>
1916</change>
1917
1918</changes>
1919
1920
1921<changes apply="unit-jsc11" ver="1.8.0" rev="1"
1922         date="2019-03-01" time="18:00:00 +0300"
1923         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1924
1925<change>
1926<para>
1927Initial release of Java 11 module for NGINX Unit.
1928</para>
1929</change>
1930
1931</changes>
1932
1933
1934<changes apply="unit-php
1935                unit-python unit-python2.7
1936                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
1937                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10
1938                unit-perl
1939                unit-ruby"
1940         ver="1.8.0" rev="1"
1941         date="2019-03-01" time="18:00:00 +0300"
1942         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1943
1944<change>
1945<para>
1946NGINX Unit updated to 1.8.0.
1947</para>
1948</change>
1949
1950</changes>
1951
1952
1953<changes apply="unit" ver="1.8.0" rev="1"
1954         date="2019-03-01" time="18:00:00 +0300"
1955         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1956
1957<change type="change">
1958<para>
1959now three numbers are always used for versioning: major, minor,
1960and patch versions.
1961</para>
1962</change>
1963
1964<change type="change">
1965<para>
1966now QUERY_STRING is always defined even if the request does not include
1967the query component.
1968</para>
1969</change>
1970
1971<change type="feature">
1972<para>
1973basic internal request routing by Host, URI, and method.
1974</para>
1975</change>
1976
1977<change type="feature">
1978<para>
1979experimental support for Java Servlet Containers.
1980</para>
1981</change>
1982
1983<change type="bugfix">
1984<para>
1985segmentation fault might have occurred in the router process.
1986</para>
1987</change>
1988
1989<change type="bugfix">
1990<para>
1991various potential memory leaks.
1992</para>
1993</change>
1994
1995<change type="bugfix">
1996<para>
1997TLS connections might have stalled.
1998</para>
1999</change>
2000
2001<change type="bugfix">
2002<para>
2003some Perl applications might have failed to send the response body.
2004</para>
2005</change>
2006
2007<change type="bugfix">
2008<para>
2009some compilers with specific flags might have produced non-functioning builds;
2010the bug had appeared in 1.5.
2011</para>
2012</change>
2013
2014<change type="bugfix">
2015<para>
2016Node.js package had wrong version number when installed from sources.
2017</para>
2018</change>
2019
2020</changes>
2021
2022
2023<changes apply="unit-php
2024                unit-python unit-python2.7
2025                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
2026                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10
2027                unit-perl
2028                unit-ruby"
2029         ver="1.7.1" rev="1"
2030         date="2019-02-07" time="18:00:00 +0300"
2031         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2032
2033<change>
2034<para>
2035NGINX Unit updated to 1.7.1.
2036</para>
2037</change>
2038
2039</changes>
2040
2041
2042<changes apply="unit" ver="1.7.1" rev="1"
2043         date="2019-02-07" time="18:00:00 +0300"
2044         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2045
2046<change type="security">
2047<para>
2048a heap memory buffer overflow might have been caused in the router process by
2049a specially crafted request, potentially resulting in a segmentation fault or
2050other unspecified behavior (CVE-2019-7401).
2051</para>
2052</change>
2053
2054<change type="bugfix">
2055<para>
2056install of Go module failed without prior building of Unit daemon;
2057the bug had appeared in 1.7.
2058</para>
2059</change>
2060
2061</changes>
2062
2063
2064<changes apply="unit-python3.7" ver="1.7" rev="1"
2065         date="2018-12-25" time="10:30:00 +0300"
2066         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2067
2068<change>
2069<para>
2070Initial release of Python 3.7 module for NGINX Unit.
2071</para>
2072</change>
2073
2074</changes>
2075
2076
2077<changes apply="unit-php
2078                unit-python unit-python2.7
2079                unit-python3.4 unit-python3.5 unit-python3.6
2080                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10
2081                unit-perl
2082                unit-ruby"
2083         ver="1.7" rev="1"
2084         date="2018-12-20" time="18:00:00 +0300"
2085         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2086
2087<change>
2088<para>
2089NGINX Unit updated to 1.7.
2090</para>
2091</change>
2092
2093</changes>
2094
2095
2096<changes apply="unit" ver="1.7" rev="1"
2097         date="2018-12-20" time="18:00:00 +0300"
2098         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2099
2100<change type="change">
2101<para>
2102now rpath is set in Ruby module only if the library was not found in default
2103search paths; this allows to meet packaging restrictions on some systems.
2104</para>
2105</change>
2106
2107<change type="bugfix">
2108<para>
2109"disable_functions" and "disable_classes" PHP options set via Control API
2110did not work.
2111</para>
2112</change>
2113
2114<change type="bugfix">
2115<para>
2116Promises on request data in Node.js were not triggered.
2117</para>
2118</change>
2119
2120<change type="bugfix">
2121<para>
2122various compatibility issues with Node.js applications.
2123</para>
2124</change>
2125
2126<change type="bugfix">
2127<para>
2128a segmentation fault occurred in Node.js module if application tried to read
2129request body after request.end() was called.
2130</para>
2131</change>
2132
2133<change type="bugfix">
2134<para>
2135a segmentation fault occurred in Node.js module if application attempted to
2136send header twice.
2137</para>
2138</change>
2139
2140<change type="bugfix">
2141<para>
2142names of response header fields in Node.js module were erroneously treated as
2143case-sensitive.
2144</para>
2145</change>
2146
2147<change type="bugfix">
2148<para>
2149uncatched exceptions in Node.js were not logged.
2150</para>
2151</change>
2152
2153<change type="bugfix">
2154<para>
2155global install of Node.js module from sources was broken on some systems;
2156the bug had appeared in 1.6.
2157</para>
2158</change>
2159
2160<change type="bugfix">
2161<para>
2162traceback for exceptions during initialization of Python applications might not
2163be logged.
2164</para>
2165</change>
2166
2167<change type="bugfix">
2168<para>
2169PHP module build failed if PHP interpreter was built with thread safety
2170enabled.
2171</para>
2172</change>
2173
2174</changes>
2175
2176
2177<changes apply="unit-php
2178                unit-python unit-python2.7
2179                unit-python3.4 unit-python3.5 unit-python3.6
2180                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10
2181                unit-perl
2182                unit-ruby"
2183         ver="1.6" rev="1"
2184         date="2018-11-15" time="18:00:00 +0300"
2185         packager="Konstantin Pavlov &lt;thresh@nginx.com&gt;">
2186
2187<change>
2188<para>
2189NGINX Unit updated to 1.6.
2190</para>
2191</change>
2192
2193</changes>
2194
2195
2196<changes apply="unit" ver="1.6" rev="1"
2197         date="2018-11-15" time="18:00:00 +0300"
2198         packager="Konstantin Pavlov &lt;thresh@nginx.com&gt;">
2199
2200<change type="change">
2201<para>
2202"make install" now installs Node.js module as well if it was configured.
2203</para>
2204</change>
2205
2206<change type="feature">
2207<para>
2208"--local" ./configure option to install Node.js module locally.
2209</para>
2210</change>
2211
2212<change type="bugfix">
2213<para>
2214Node.js module might have crashed due to broken reference counting.
2215</para>
2216</change>
2217
2218<change type="bugfix">
2219<para>
2220asynchronous operations in Node.js might not have worked.
2221</para>
2222</change>
2223
2224<change type="bugfix">
2225<para>
2226various compatibility issues with Node.js applications.
2227</para>
2228</change>
2229
2230<change type="bugfix">
2231<para>
2232"freed pointer is out of pool" alerts might have appeared in log.
2233</para>
2234</change>
2235
2236<change type="bugfix">
2237<para>
2238module discovery did not work on 64-bit big-endian systems like IBM/S390x.
2239</para>
2240</change>
2241
2242</changes>
2243
2244
2245<changes apply="unit-php
2246                unit-python unit-python2.7
2247                unit-python3.4 unit-python3.5 unit-python3.6
2248                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10
2249                unit-perl
2250                unit-ruby"
2251         ver="1.5" rev="1"
2252         date="2018-10-25" time="18:00:00 +0300"
2253         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2254
2255<change>
2256<para>
2257NGINX Unit updated to 1.5.
2258</para>
2259</change>
2260
2261</changes>
2262
2263
2264<changes apply="unit" ver="1.5" rev="1"
2265         date="2018-10-25" time="18:00:00 +0300"
2266         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2267
2268<change type="change">
2269<para>
2270the "type" of application object for Go was changed to "external".
2271</para>
2272</change>
2273
2274<change type="feature">
2275<para>
2276initial version of Node.js package with basic HTTP request-response support.
2277</para>
2278</change>
2279
2280<change type="feature">
2281<para>
2282compatibility with LibreSSL.
2283</para>
2284</change>
2285
2286<change type="feature">
2287<para>
2288--libdir and --incdir ./configure options to install libunit headers
2289and static library.
2290</para>
2291</change>
2292
2293<change type="bugfix">
2294<para>
2295connection might be closed prematurely while sending response;
2296the bug had appeared in 1.3.
2297</para>
2298</change>
2299
2300<change type="bugfix">
2301<para>
2302application processes might have stopped handling requests, producing
2303"last message send failed: Resource temporarily unavailable" alerts in log;
2304the bug had appeared in 1.4.
2305</para>
2306</change>
2307
2308<change type="bugfix">
2309<para>
2310Go applications did not work when Unit was built with musl C library.
2311</para>
2312</change>
2313
2314</changes>
2315
2316
2317<changes apply="unit-php
2318                unit-python unit-python2.7
2319                unit-python3.4 unit-python3.5 unit-python3.6
2320                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10
2321                unit-perl
2322                unit-ruby"
2323         ver="1.4" rev="2"
2324         date="2018-09-27" time="13:30:00 +0300"
2325         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2326
2327<change type="bugfix">
2328<para>
2329corrected instructions for launching sample application.
2330</para>
2331</change>
2332
2333</changes>
2334
2335
2336<changes apply="unit" ver="1.4" rev="2"
2337         date="2018-09-27" time="13:30:00 +0300"
2338         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2339
2340<change type="change">
2341<para>
2342the "saveconfig" and "loadconfig" action scripts were removed.
2343</para>
2344</change>
2345
2346</changes>
2347
2348
2349<changes apply="unit-php
2350                unit-python unit-python2.7
2351                unit-python3.4 unit-python3.5 unit-python3.6
2352                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10
2353                unit-perl
2354                unit-ruby"
2355         ver="1.4" rev="1"
2356         date="2018-09-20" time="18:00:00 +0300"
2357         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2358
2359<change>
2360<para>
2361NGINX Unit updated to 1.4.
2362</para>
2363</change>
2364
2365</changes>
2366
2367
2368<changes apply="unit" ver="1.4" rev="1"
2369         date="2018-09-20" time="18:00:00 +0300"
2370         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2371
2372<change type="change">
2373<para>
2374the control API maps the configuration object only at "/config/".
2375</para>
2376</change>
2377
2378<change type="feature">
2379<para>
2380TLS support for client connections.
2381</para>
2382</change>
2383
2384<change type="feature">
2385<para>
2386TLS certificates storage control API.
2387</para>
2388</change>
2389
2390<change type="feature">
2391<para>
2392Unit library (libunit) to streamline language module integration.
2393</para>
2394</change>
2395
2396<change type="feature">
2397<para>
2398"408 Request Timeout" responses while closing HTTP keep-alive connections.
2399</para>
2400</change>
2401
2402<change type="feature">
2403<para>
2404improvements in OpenBSD support.
2405Thanks to David Carlier.
2406</para>
2407</change>
2408
2409<change type="bugfix">
2410<para>
2411a segmentation fault might have occurred after reconfiguration.
2412</para>
2413</change>
2414
2415<change type="bugfix">
2416<para>
2417building on systems with non-default locale might be broken.
2418</para>
2419</change>
2420
2421<change type="bugfix">
2422<para>
2423"header_read_timeout" might not work properly.
2424</para>
2425</change>
2426
2427<change type="bugfix">
2428<para>
2429header fields values with non-ASCII bytes might be handled incorrectly
2430in Python 3 module.
2431</para>
2432</change>
2433
2434</changes>
2435
2436
2437<changes apply="unit-php
2438                unit-python unit-python2.7
2439                unit-python3.4 unit-python3.5 unit-python3.6
2440                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10
2441                unit-perl
2442                unit-ruby"
2443         ver="1.3" rev="1"
2444         date="2018-07-13" time="18:00:00 +0300"
2445         packager="Konstantin Pavlov &lt;thresh@nginx.com&gt;">
2446
2447<change>
2448<para>
2449NGINX Unit updated to 1.3.
2450</para>
2451</change>
2452
2453</changes>
2454
2455
2456<changes apply="unit" ver="1.3" rev="1"
2457         date="2018-07-13" time="18:00:00 +0300"
2458         packager="Konstantin Pavlov &lt;thresh@nginx.com&gt;">
2459
2460<change type="change">
2461<para>
2462UTF-8 characters are now allowed in request header field values.
2463</para>
2464</change>
2465
2466<change type="feature">
2467<para>
2468configuration of the request body size limit.
2469</para>
2470</change>
2471
2472<change type="feature">
2473<para>
2474configuration of various HTTP connection timeouts.
2475</para>
2476</change>
2477
2478<change type="feature">
2479<para>
2480Ruby module now automatically uses Bundler where possible.
2481</para>
2482</change>
2483
2484<change type="feature">
2485<para>
2486http.Flusher interface in Go module.
2487</para>
2488</change>
2489
2490<change type="bugfix">
2491<para>
2492various issues in HTTP connection errors handling.
2493</para>
2494</change>
2495
2496<change type="bugfix">
2497<para>
2498requests with body data might be handled incorrectly in PHP module.
2499</para>
2500</change>
2501
2502<change type="bugfix">
2503<para>
2504individual PHP configuration options specified via control API were reset
2505to previous values after the first request in application process.
2506</para>
2507</change>
2508
2509</changes>
2510
2511
2512<changes apply="unit-php
2513                unit-python unit-python2.7
2514                unit-python3.4 unit-python3.5 unit-python3.6
2515                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10
2516                unit-perl
2517                unit-ruby"
2518         ver="1.2" rev="1"
2519         date="2018-06-07" time="18:00:00 +0300"
2520         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2521
2522<change>
2523<para>
2524NGINX Unit updated to 1.2.
2525</para>
2526</change>
2527
2528</changes>
2529
2530
2531<changes apply="unit" ver="1.2" rev="1"
2532         date="2018-06-07" time="18:00:00 +0300"
2533         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2534
2535<change type="feature">
2536<para>
2537configuration of environment variables for application processes.
2538</para>
2539</change>
2540
2541<change type="feature">
2542<para>
2543customization of php.ini path.
2544</para>
2545</change>
2546
2547<change type="feature">
2548<para>
2549setting of individual PHP configuration options.
2550</para>
2551</change>
2552
2553<change type="feature">
2554<para>
2555configuration of execution arguments for Go applications.
2556</para>
2557</change>
2558
2559<change type="bugfix">
2560<para>
2561keep-alive connections might hang after reconfiguration.
2562</para>
2563</change>
2564
2565</changes>
2566
2567
2568<changes apply="unit-go1.10" ver="1.1" rev="1"
2569         date="2018-05-14" time="18:00:00 +0300"
2570         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2571
2572<change>
2573<para>
2574Initial release of Go 1.10 module for NGINX Unit.
2575</para>
2576</change>
2577
2578</changes>
2579
2580
2581<changes apply="unit-php
2582                unit-python unit-python2.7
2583                unit-python3.4 unit-python3.5 unit-python3.6
2584                unit-go unit-go1.7 unit-go1.8 unit-go1.9
2585                unit-perl
2586                unit-ruby"
2587         ver="1.1" rev="1"
2588         date="2018-04-26" time="18:00:00 +0300"
2589         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2590
2591<change>
2592<para>
2593NGINX Unit updated to 1.1.
2594</para>
2595</change>
2596
2597</changes>
2598
2599
2600<changes apply="unit" ver="1.1" rev="1"
2601         date="2018-04-26" time="18:00:00 +0300"
2602         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2603
2604<change type="bugfix">
2605<para>
2606Python applications that use the write() callable did not work.
2607</para>
2608</change>
2609
2610<change type="bugfix">
2611<para>
2612virtual environments created with Python 3.3 or above might not have worked.
2613</para>
2614</change>
2615
2616<change type="bugfix">
2617<para>
2618the request.Read() function in Go applications did not produce EOF
2619when the whole body was read.
2620</para>
2621</change>
2622
2623<change type="bugfix">
2624<para>
2625a segmentation fault might have occurred while access log reopening.
2626</para>
2627</change>
2628
2629<change type="bugfix">
2630<para>
2631in parsing of IPv6 control socket addresses.
2632</para>
2633</change>
2634
2635<change type="bugfix">
2636<para>
2637loading of application modules was broken on OpenBSD.
2638</para>
2639</change>
2640
2641<change type="bugfix">
2642<para>
2643a segmentation fault might have occurred when there were two modules
2644with the same type and version; the bug had appeared in 1.0.
2645</para>
2646</change>
2647
2648<change type="bugfix">
2649<para>
2650alerts "freed pointer points to non-freeble page" might have appeared in log
2651on 32-bit platforms.
2652</para>
2653</change>
2654
2655</changes>
2656
2657
2658<changes apply="unit-php
2659                unit-python unit-python2.7
2660                unit-python3.4 unit-python3.5 unit-python3.6
2661                unit-go unit-go1.7 unit-go1.8 unit-go1.9
2662                unit-perl
2663                unit-ruby"
2664         ver="1.0" rev="1"
2665         date="2018-04-12" time="18:00:00 +0300"
2666         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2667
2668<change>
2669<para>
2670NGINX Unit updated to 1.0.
2671</para>
2672</change>
2673
2674</changes>
2675
2676
2677<changes apply="unit" ver="1.0" rev="1"
2678         date="2018-04-12" time="18:00:00 +0300"
2679         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2680
2681<change type="change">
2682<para>
2683configuration object moved into "/config/" path.
2684</para>
2685</change>
2686
2687<change type="feature">
2688<para>
2689basic access logging.
2690</para>
2691</change>
2692
2693<change type="bugfix">
2694<para>
2695503 error occurred if Go application did not write response header or body.
2696</para>
2697</change>
2698
2699<change type="bugfix">
2700<para>
2701Ruby applications that use encoding conversions might not have worked.
2702</para>
2703</change>
2704
2705<change type="bugfix">
2706<para>
2707various stability issues.
2708</para>
2709</change>
2710
2711</changes>
2712
2713
2714<changes apply="unit-php
2715                unit-python unit-python2.7
2716                unit-python3.4 unit-python3.5 unit-python3.6
2717                unit-go unit-go1.7 unit-go1.8 unit-go1.9
2718                unit-perl"
2719         ver="0.7" rev="1"
2720         date="2018-03-22" time="18:00:00 +0300"
2721         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2722
2723<change>
2724<para>
2725NGINX Unit updated to 0.7.
2726</para>
2727</change>
2728
2729</changes>
2730
2731
2732<changes apply="unit-ruby" ver="0.7" rev="1"
2733         date="2018-04-02" time="15:40:00 +0300"
2734         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2735
2736<change>
2737<para>
2738Initial release of Ruby module for NGINX Unit.
2739</para>
2740</change>
2741
2742</changes>
2743
2744
2745<changes apply="unit" ver="0.7" rev="1"
2746         date="2018-03-22" time="18:00:00 +0300"
2747         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2748
2749<change type="feature">
2750<para>
2751Ruby application module.
2752</para>
2753</change>
2754
2755<change type="bugfix">
2756<para>
2757in discovering modules.
2758</para>
2759</change>
2760
2761<change type="bugfix">
2762<para>
2763various race conditions on reconfiguration and during shutting down.
2764</para>
2765</change>
2766
2767<change type="bugfix">
2768<para>
2769tabs and trailing spaces were not allowed in header fields values.
2770</para>
2771</change>
2772
2773<change type="bugfix">
2774<para>
2775a segmentation fault occurred in Python module if start_response() was called
2776outside of WSGI callable.
2777</para>
2778</change>
2779
2780<change type="bugfix">
2781<para>
2782a segmentation fault might have occurred in PHP module if there was an error
2783while initialization.
2784</para>
2785</change>
2786
2787</changes>
2788
2789
2790<changes apply="unit-php
2791                unit-python unit-python2.7
2792                unit-python3.4 unit-python3.5 unit-python3.6
2793                unit-go unit-go1.7 unit-go1.8 unit-go1.9
2794                unit-perl"
2795         ver="0.6" rev="1"
2796         date="2018-02-09" time="18:00:00 +0300"
2797         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2798
2799<change>
2800<para>
2801NGINX Unit updated to 0.6.
2802</para>
2803</change>
2804
2805</changes>
2806
2807
2808<changes apply="unit" ver="0.6" rev="1"
2809         date="2018-02-09" time="18:00:00 +0300"
2810         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2811
2812<change type="bugfix">
2813<para>
2814the main process died when the "type" application option contained version;
2815the bug had appeared in 0.5.
2816</para>
2817</change>
2818
2819</changes>
2820
2821
2822<changes apply="unit-php
2823                unit-python unit-python2.7
2824                unit-python3.4 unit-python3.5 unit-python3.6
2825                unit-go unit-go1.7 unit-go1.8 unit-go1.9"
2826         ver="0.5" rev="1"
2827         date="2018-02-08" time="18:00:00 +0300"
2828         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2829
2830<change>
2831<para>
2832NGINX Unit updated to 0.5.
2833</para>
2834</change>
2835
2836</changes>
2837
2838
2839<changes apply="unit-perl" ver="0.5" rev="1"
2840         date="2018-02-08" time="18:00:00 +0300"
2841         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2842
2843<change>
2844<para>
2845Initial release of Perl module for NGINX Unit.
2846</para>
2847</change>
2848
2849</changes>
2850
2851
2852<changes apply="unit" ver="0.5" rev="1"
2853         date="2018-02-08" time="18:00:00 +0300"
2854         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2855
2856<change type="change">
2857<para>
2858the "workers" application option was removed, the "processes"
2859application option should be used instead.
2860</para>
2861</change>
2862
2863<change type="feature">
2864<para>
2865the "processes" application option with prefork and dynamic
2866process management support.
2867</para>
2868</change>
2869
2870<change type="feature">
2871<para>
2872Perl application module.
2873</para>
2874</change>
2875
2876<change type="bugfix">
2877<para>
2878in reading client request body; the bug had appeared in 0.3.
2879</para>
2880</change>
2881
2882<change type="bugfix">
2883<para>
2884some Python applications might not have worked due to missing
2885"wsgi.errors" environ variable.
2886</para>
2887</change>
2888
2889<change type="bugfix">
2890<para>
2891HTTP chunked responses might be encoded incorrectly on 32-bit
2892platforms.
2893</para>
2894</change>
2895
2896<change type="bugfix">
2897<para>
2898infinite looping in HTTP parser.
2899</para>
2900</change>
2901
2902<change type="bugfix">
2903<para>
2904segmentation fault in router.
2905</para>
2906</change>
2907
2908</changes>
2909
2910
2911<changes apply="unit-php
2912                unit-python unit-python2.7
2913                unit-python3.4 unit-python3.5 unit-python3.6
2914                unit-go unit-go1.7 unit-go1.8 unit-go1.9"
2915         ver="0.4" rev="1"
2916         date="2018-01-15" time="18:00:00 +0300"
2917         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2918
2919<change>
2920<para>
2921NGINX Unit updated to 0.4.
2922</para>
2923</change>
2924
2925</changes>
2926
2927
2928<changes apply="unit" ver="0.4" rev="1"
2929         date="2018-01-15" time="18:00:00 +0300"
2930         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2931
2932<change type="feature">
2933<para>
2934compatibility with DragonFly BSD.
2935</para>
2936</change>
2937
2938<change type="feature">
2939<para>
2940"configure php --lib-static" option.
2941</para>
2942</change>
2943
2944<change type="bugfix">
2945<para>
2946HTTP request body was not passed to application;
2947the bug had appeared in 0.3.
2948</para>
2949</change>
2950
2951<change type="bugfix">
2952<para>
2953HTTP large header buffers allocation and deallocation fixed;
2954the bug had appeared in 0.3.
2955</para>
2956</change>
2957
2958<change type="bugfix">
2959<para>
2960some PHP applications might not have worked with relative "root" path.
2961</para>
2962</change>
2963
2964</changes>
2965
2966
2967<changes apply="unit-go1.9" ver="0.3" rev="1"
2968         date="2017-12-28" time="18:00:00 +0300"
2969         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2970
2971<change>
2972<para>
2973Initial release of Go 1.9 module for NGINX Unit.
2974</para>
2975</change>
2976
2977</changes>
2978
2979
2980<changes apply="unit-python3.6" ver="0.3" rev="1"
2981         date="2017-12-28" time="18:00:00 +0300"
2982         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2983
2984<change>
2985<para>
2986Initial release of Python 3.6 module for NGINX Unit.
2987</para>
2988</change>
2989
2990</changes>
2991
2992
2993<changes apply="unit-php
2994                unit-python unit-python2.7 unit-python3.4 unit-python3.5
2995                unit-go unit-go1.7 unit-go1.8"
2996         ver="0.3" rev="1"
2997         date="2017-12-28" time="18:00:00 +0300"
2998         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2999
3000<change>
3001<para>
3002NGINX Unit updated to 0.3.
3003</para>
3004</change>
3005
3006</changes>
3007
3008
3009<changes apply="unit" ver="0.3" rev="1"
3010         date="2017-12-28" time="18:00:00 +0300"
3011         packager="Andrei Belov &lt;defan@nginx.com&gt;">
3012
3013<change type="change">
3014<para>
3015the Go package name changed to "nginx/unit".
3016</para>
3017</change>
3018
3019<change type="change">
3020<para>
3021in the "limits.timeout" application option: application start time and
3022time in queue now are not accounted.
3023</para>
3024</change>
3025
3026<change type="feature">
3027<para>
3028the "limits.requests" application option.
3029</para>
3030</change>
3031
3032<change type="feature">
3033<para>
3034application request processing latency optimization.
3035</para>
3036</change>
3037
3038<change type="feature">
3039<para>
3040HTTP keep-alive connections support.
3041</para>
3042</change>
3043
3044<change type="feature">
3045<para>
3046the "home" Python virtual environment configuration option.
3047</para>
3048</change>
3049
3050<change type="feature">
3051<para>
3052Python atexit hook support.
3053</para>
3054</change>
3055
3056<change type="feature">
3057<para>
3058various Go package improvements.
3059</para>
3060</change>
3061
3062<change type="bugfix">
3063<para>
3064various crashes fixed.
3065</para>
3066</change>
3067
3068</changes>
3069
3070
3071<changes apply="unit-go" ver="0.2" rev="1"
3072         date="2017-10-19" time="18:00:00 +0300"
3073         packager="Andrei Belov &lt;defan@nginx.com&gt;">
3074
3075<change>
3076<para>
3077Initial release of Go module for NGINX Unit.
3078</para>
3079</change>
3080
3081</changes>
3082
3083
3084<changes apply="unit-go1.7" ver="0.2" rev="1"
3085         date="2017-10-19" time="18:00:00 +0300"
3086         packager="Andrei Belov &lt;defan@nginx.com&gt;">
3087
3088<change>
3089<para>
3090Initial release of Go 1.7 module for NGINX Unit.
3091</para>
3092</change>
3093
3094</changes>
3095
3096
3097<changes apply="unit-go1.8" ver="0.2" rev="1"
3098         date="2017-10-19" time="18:00:00 +0300"
3099         packager="Andrei Belov &lt;defan@nginx.com&gt;">
3100
3101<change>
3102<para>
3103Initial release of Go 1.8 module for NGINX Unit.
3104</para>
3105</change>
3106
3107</changes>
3108
3109
3110<changes apply="unit-python" ver="0.2" rev="1"
3111         date="2017-10-19" time="18:00:00 +0300"
3112         packager="Andrei Belov &lt;defan@nginx.com&gt;">
3113
3114<change>
3115<para>
3116Initial release of Python module for NGINX Unit.
3117</para>
3118</change>
3119
3120</changes>
3121
3122
3123<changes apply="unit-python2.7" ver="0.2" rev="1"
3124         date="2017-10-19" time="18:00:00 +0300"
3125         packager="Andrei Belov &lt;defan@nginx.com&gt;">
3126
3127<change>
3128<para>
3129Initial release of Python 2.7 module for NGINX Unit.
3130</para>
3131</change>
3132
3133</changes>
3134
3135
3136<changes apply="unit-python3.4" ver="0.2" rev="1"
3137         date="2017-10-19" time="18:00:00 +0300"
3138         packager="Andrei Belov &lt;defan@nginx.com&gt;">
3139
3140<change>
3141<para>
3142Initial release of Python 3.4 module for NGINX Unit.
3143</para>
3144</change>
3145
3146</changes>
3147
3148
3149<changes apply="unit-python3.5" ver="0.2" rev="1"
3150         date="2017-10-19" time="18:00:00 +0300"
3151         packager="Andrei Belov &lt;defan@nginx.com&gt;">
3152
3153<change>
3154<para>
3155Initial release of Python 3.5 module for NGINX Unit.
3156</para>
3157</change>
3158
3159</changes>
3160
3161
3162<changes apply="unit-php" ver="0.2" rev="1"
3163         date="2017-10-19" time="18:00:00 +0300"
3164         packager="Andrei Belov &lt;defan@nginx.com&gt;">
3165
3166<change>
3167<para>
3168Initial release of PHP module for NGINX Unit.
3169</para>
3170</change>
3171
3172</changes>
3173
3174
3175<changes apply="unit" ver="0.2" rev="1"
3176         date="2017-10-19" time="18:00:00 +0300"
3177         packager="Andrei Belov &lt;defan@nginx.com&gt;">
3178
3179<change type="feature">
3180<para>
3181configuration persistence.
3182</para>
3183</change>
3184
3185<change type="feature">
3186<para>
3187improved handling of configuration errors.
3188</para>
3189</change>
3190
3191<change type="feature">
3192<para>
3193application "timeout" property.
3194</para>
3195</change>
3196
3197<change type="bugfix">
3198<para>
3199POST request for PHP were handled incorrectly.
3200</para>
3201</change>
3202
3203<change type="bugfix">
3204<para>
3205the router exited abnormally if all listeners had been deleted.
3206</para>
3207</change>
3208
3209<change type="bugfix">
3210<para>
3211the router crashed under load.
3212</para>
3213</change>
3214
3215<change type="bugfix">
3216<para>
3217memory leak in the router.
3218</para>
3219</change>
3220
3221</changes>
3222
3223
3224<changes apply="unit" ver="0.1" rev="1"
3225         date="2017-09-06" time="19:14:28 +0300"
3226         packager="Andrei Belov &lt;defan@nginx.com&gt;">
3227
3228<change>
3229<para>
3230First public release.
3231</para>
3232</change>
3233
3234</changes>
3235
3236
3237</change_log>
3238