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