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