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