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