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