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