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