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