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