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