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