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