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