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