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