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