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