xref: /unit/CHANGES (revision 2045:bf2c0b1382df)
1
2Changes with Unit 1.26.1                                         02 Dec 2021
3
4    *) Bugfix: occasionally, the Unit daemon was unable to fully terminate;
5       the bug had appeared in 1.26.0.
6
7    *) Bugfix: a prototype process could crash on an application process
8       exit; the bug had appeared in 1.26.0.
9
10    *) Bugfix: the router process crashed on reconfiguration if "access_log"
11       was configured without listeners.
12
13    *) Bugfix: a segmentation fault occurred in the PHP module if chdir() or
14       fastcgi_finish_request() was called in the OPcache preloading script.
15
16    *) Bugfix: fatal errors on DragonFly BSD; the bug had appeared in
17       1.26.0.
18
19
20Changes with Unit 1.26.0                                         18 Nov 2021
21
22    *) Change: the "share" option now specifies the entire path to the files
23       it serves, rather than a document root directory to be prepended to
24       the request URI.
25
26    *) Feature: automatic adjustment of existing configurations to the new
27       "share" behavior when updating from previous versions.
28
29    *) Feature: variables support in the "share" option.
30
31    *) Feature: multiple paths in the "share" option.
32
33    *) Feature: variables support in the "chroot" option.
34
35    *) Feature: PHP opcache is shared between application processes.
36
37    *) Feature: request routing by the query string.
38
39    *) Bugfix: the router and app processes could crash when the requests
40       limit was reached by asynchronous or multithreaded apps.
41
42    *) Bugfix: established WebSocket connections could stop reading frames
43       from the client after the corresponding listener had been
44       reconfigured.
45
46    *) Bugfix: fixed building with glibc 2.34, notably Fedora 35.
47
48
49Changes with Unit 1.25.0                                         19 Aug 2021
50
51    *) Feature: client IP address replacement from a specified HTTP header
52       field.
53
54    *) Feature: TLS sessions cache.
55
56    *) Feature: TLS session tickets.
57
58    *) Feature: application restart control.
59
60    *) Feature: process and thread lifecycle hooks in Ruby.
61
62    *) Bugfix: the router process could crash on TLS connection open when
63       multiple listeners with TLS certificates were configured; the bug had
64       appeared in 1.23.0.
65
66    *) Bugfix: TLS connections were rejected for configurations with
67       multiple certificate bundles in a listener if the client did not use
68       SNI.
69
70    *) Bugfix: the router process could crash with frequent multithreaded
71       application reconfiguration.
72
73    *) Bugfix: compatibility issues with some Python ASGI apps, notably
74       based on the Starlette framework.
75
76    *) Bugfix: a descriptor and memory leak occurred in the router process
77       when an app process stopped or crashed.
78
79    *) Bugfix: the controller or router process could crash if the
80       configuration contained a full-form IPv6 in a listener address.
81
82    *) Bugfix: the router process crashed when a request was passed to an
83       empty "routes" or "upstreams" using a variable "pass" option.
84
85    *) Bugfix: the router process crashed while matching a request to an
86       empty array of source or destination address patterns.
87
88
89Changes with Unit 1.24.0                                         27 May 2021
90
91    *) Change: PHP added to the default MIME type list.
92
93    *) Feature: arbitrary configuration of TLS connections via OpenSSL
94       commands.
95
96    *) Feature: the ability to limit static file serving by MIME types.
97
98    *) Feature: support for chrooting, rejecting symlinks, and rejecting
99       mount point traversal on a per-request basis when serving static
100       files.
101
102    *) Feature: a loader for automatically overriding the "http" and
103       "websocket" modules in Node.js.
104
105    *) Feature: multiple "targets" in Python applications.
106
107    *) Feature: compatibility with Ruby 3.0.
108
109    *) Bugfix: the router process could crash while closing a TLS
110       connection.
111
112    *) Bugfix: a segmentation fault might have occurred in the PHP module if
113       fastcgi_finish_request() was used with the "auto_globals_jit" option
114       enabled.
115
116
117Changes with Unit 1.23.0                                         25 Mar 2021
118
119    *) Feature: support for multiple certificate bundles on a listener via
120       the Server Name Indication (SNI) TLS extension.
121
122    *) Feature: "--mandir" ./configure option to specify the directory for
123       man page installation.
124
125    *) Bugfix: the router process could crash on premature TLS connection
126       close; the bug had appeared in 1.17.0.
127
128    *) Bugfix: a connection leak occurred on premature TLS connection close;
129       the bug had appeared in 1.6.
130
131    *) Bugfix: a descriptor and memory leak occurred in the router process
132       when processing small WebSocket frames from a client; the bug had
133       appeared in 1.19.0.
134
135    *) Bugfix: a descriptor leak occurred in the router process when
136       removing or reconfiguring an application; the bug had appeared in
137       1.19.0.
138
139    *) Bugfix: persistent storage of certificates might've not worked with
140       some filesystems in Linux, and all uploaded certificate bundles were
141       forgotten after restart.
142
143    *) Bugfix: the controller process could crash while requesting
144       information about a certificate with a non-DNS SAN entry.
145
146    *) Bugfix: the controller process could crash on manipulations with a
147       certificate containing a SAN and no standard name attributes in
148       subject or issuer.
149
150    *) Bugfix: the Ruby module didn't respect the user locale for defaults
151       in the Encoding class.
152
153    *) Bugfix: the PHP 5 module failed to build with thread safety enabled;
154       the bug had appeared in 1.22.0.
155
156
157Changes with Unit 1.22.0                                         04 Feb 2021
158
159    *) Feature: the ServerRequest and ServerResponse objects of Node.js
160       module are now compliant with Stream API.
161
162    *) Feature: support for specifying multiple directories in the "path"
163       option of Python apps.
164
165    *) Bugfix: a memory leak occurred in the router process when serving
166       files larger than 128K; the bug had appeared in 1.13.0.
167
168    *) Bugfix: apps could stop processing new requests under high load; the
169       bug had appeared in 1.19.0.
170
171    *) Bugfix: app processes could terminate unexpectedly under high load;
172       the bug had appeared in 1.19.0.
173
174    *) Bugfix: invalid HTTP responses were generated for some unusual status
175       codes.
176
177    *) Bugfix: the PHP_AUTH_USER, PHP_AUTH_PW, and PHP_AUTH_DIGEST server
178       variables were missing in the PHP module.
179
180    *) Bugfix: the router process could crash with multithreaded apps under
181       high load.
182
183    *) Bugfix: Ruby apps with multithreading configured could crash on start
184       under load.
185
186    *) Bugfix: mount points weren't unmounted when the "mount" namespace
187       isolation was used; the bug had appeared in 1.21.0.
188
189    *) Bugfix: the router process could crash while removing or
190       reconfiguring an app that used WebSocket.
191
192    *) Bugfix: a memory leak occurring in the router process when removing
193       or reconfiguring an application; the bug had appeared in 1.19.0.
194
195
196Changes with Unit 1.21.0                                         19 Nov 2020
197
198    *) Change: procfs is mounted by default for all languages when "rootfs"
199       isolation is used.
200
201    *) Change: any characters valid according to RFC 7230 are now allowed in
202       HTTP header field names.
203
204    *) Change: HTTP header fields with underscores ("_") are now discarded
205       from requests by default.
206
207    *) Feature: optional multithreaded request processing for Java, Python,
208       Perl, and Ruby apps.
209
210    *) Feature: regular expressions in route matching patterns.
211
212    *) Feature: compatibility with Python 3.9.
213
214    *) Feature: the Python module now supports ASGI 2.0 legacy applications.
215
216    *) Feature: the "protocol" option in Python applications aids choice
217       between ASGI and WSGI.
218
219    *) Feature: the fastcgi_finish_request() PHP function that finalizes
220       request processing and continues code execution without holding onto
221       the client connection.
222
223    *) Feature: the "discard_unsafe_fields" HTTP option that enables
224       discarding request header fields with irregular (but still valid)
225       characters in the field name.
226
227    *) Feature: the "procfs" and "tmpfs" automount isolation options to
228       disable automatic mounting of eponymous filesystems.
229
230    *) Bugfix: the router process could crash when running Go applications
231       under high load; the bug had appeared in 1.19.0.
232
233    *) Bugfix: some language dependencies could remain mounted after using
234       "rootfs" isolation.
235
236    *) Bugfix: various compatibility issues in Java applications.
237
238    *) Bugfix: the Java module built with the musl C library couldn't run
239       applications that use "rootfs" isolation.
240
241
242Changes with Unit 1.20.0                                         08 Oct 2020
243
244    *) Change: the PHP module is now initialized before chrooting; this
245       enables loading all extensions from the host system.
246
247    *) Change: AVIF and APNG image formats added to the default MIME type
248       list.
249
250    *) Change: functional tests migrated to the pytest framework.
251
252    *) Feature: the Python module now fully supports applications that use
253       the ASGI 3.0 server interface.
254
255    *) Feature: the Python module now has a built-in WebSocket server
256       implementation for applications, compatible with the HTTP & WebSocket
257       ASGI Message Format 2.1 specification.
258
259    *) Feature: automatic mounting of an isolated "/tmp" file system into
260       chrooted application environments.
261
262    *) Feature: the $host variable contains a normalized "Host" request
263       value.
264
265    *) Feature: the "callable" option sets Python application callable
266       names.
267
268    *) Feature: compatibility with PHP 8 RC 1. Thanks to Remi Collet.
269
270    *) Feature: the "automount" option in the "isolation" object allows to
271       turn off the automatic mounting of language module dependencies.
272
273    *) Bugfix: "pass"-ing requests to upstreams from a route was broken; the
274       bug had appeared in 1.19.0. Thanks to 洪志道 (Hong Zhi Dao) for
275       discovering and fixing it.
276
277    *) Bugfix: the router process could crash during reconfiguration.
278
279    *) Bugfix: a memory leak occurring in the router process; the bug had
280       appeared in 1.18.0.
281
282    *) Bugfix: the "!" (non-empty) pattern was matched incorrectly; the bug
283       had appeared in 1.19.0.
284
285    *) Bugfix: fixed building on platforms without sendfile() support,
286       notably NetBSD; the bug had appeared in 1.16.0.
287
288
289Changes with Unit 1.19.0                                         13 Aug 2020
290
291    *) Feature: reworked IPC between the router process and the applications
292       to lower latencies, increase performance, and improve scalability.
293
294    *) Feature: support for an arbitrary number of wildcards in route
295       matching patterns.
296
297    *) Feature: chunked transfer encoding in proxy responses.
298
299    *) Feature: basic variables support in the "pass" option.
300
301    *) Feature: compatibility with PHP 8 Beta 1. Thanks to Remi Collet.
302
303    *) Bugfix: the router process could crash while passing requests to an
304       application under high load.
305
306    *) Bugfix: a number of language modules failed to build on some systems;
307       the bug had appeared in 1.18.0.
308
309    *) Bugfix: time in error log messages from PHP applications could lag.
310
311    *) Bugfix: reconfiguration requests could hang if an application had
312       failed to start; the bug had appeared in 1.18.0.
313
314    *) Bugfix: memory leak during reconfiguration.
315
316    *) Bugfix: the daemon didn't start without language modules; the bug had
317       appeared in 1.18.0.
318
319    *) Bugfix: the router process could crash at exit.
320
321    *) Bugfix: Node.js applications could crash at exit.
322
323    *) Bugfix: the Ruby module could be linked against a wrong library
324       version.
325
326
327Changes with Unit 1.18.0                                         28 May 2020
328
329    *) Feature: the "rootfs" isolation option for changing root filesystem
330       for an application.
331
332    *) Feature: multiple "targets" in PHP applications.
333
334    *) Feature: support for percent-encoding in the "uri" and "arguments"
335       matching options and in the "pass" option.
336
337
338Changes with Unit 1.17.0                                         16 Apr 2020
339
340    *) Feature: a "return" action with optional "location" for immediate
341       responses and external redirection.
342
343    *) Feature: fractional weights support for upstream servers.
344
345    *) Bugfix: accidental 502 "Bad Gateway" errors might have occurred in
346       applications under high load.
347
348    *) Bugfix: memory leak in the router; the bug had appeared in 1.13.0.
349
350    *) Bugfix: segmentation fault might have occurred in the router process
351       when reaching open connections limit.
352
353    *) Bugfix: "close() failed (9: Bad file descriptor)" alerts might have
354       appeared in the log while processing large request bodies; the bug
355       had appeared in 1.16.0.
356
357    *) Bugfix: existing application processes didn't reopen the log file.
358
359    *) Bugfix: incompatibility with some Node.js applications.
360
361    *) Bugfix: broken build on DragonFly BSD; the bug had appeared in
362       1.16.0.
363
364
365Changes with Unit 1.16.0                                         12 Mar 2020
366
367    *) Feature: basic load-balancing support with round-robin.
368
369    *) Feature: a "fallback" option that performs an alternative action if a
370       request can't be served from the "share" directory.
371
372    *) Feature: reduced memory consumption by dumping large request bodies
373       to disk.
374
375    *) Feature: stripping UTF-8 BOM and JavaScript-style comments from
376       uploaded JSON.
377
378    *) Bugfix: negative address matching in router might work improperly in
379       combination with non-negative patterns.
380
381    *) Bugfix: Java Spring applications failed to run; the bug had appeared
382       in 1.10.0.
383
384    *) Bugfix: PHP 7.4 was broken if it was built with thread safety
385       enabled.
386
387    *) Bugfix: compatibility issues with some Python applications.
388
389
390Changes with Unit 1.15.0                                         06 Feb 2020
391
392    *) Change: extensions of dynamically requested PHP scripts were
393       restricted to ".php".
394
395    *) Feature: compatibility with Ruby 2.7.
396
397    *) Bugfix: segmentation fault might have occurred in the router process
398       with multiple application processes under load; the bug had appeared
399       in 1.14.0.
400
401    *) Bugfix: receiving request body over TLS connection might have
402       stalled.
403
404
405Changes with Unit 1.14.0                                         26 Dec 2019
406
407    *) Change: the Go package import name changed to "unit.nginx.org/go".
408
409    *) Change: Go package now links to libunit instead of including library
410       sources.
411
412    *) Feature: ability to change user and group for isolated applications
413       when Unit daemon runs as an unprivileged user.
414
415    *) Feature: request routing by source and destination addresses and
416       ports.
417
418    *) Bugfix: memory bloat on large responses.
419
420
421Changes with Unit 1.13.0                                         14 Nov 2019
422
423    *) Feature: basic support for HTTP reverse proxying.
424
425    *) Feature: compatibility with Python 3.8.
426
427    *) Bugfix: memory leak in Python application processes when the close
428       handler was used.
429
430    *) Bugfix: threads in Python applications might not work correctly.
431
432    *) Bugfix: Ruby on Rails applications might not work on Ruby 2.6.
433
434    *) Bugfix: backtraces for uncaught exceptions in Python 3 might be
435       logged with significant delays.
436
437    *) Bugfix: explicit setting a namespaces isolation option to false might
438       have enabled it.
439
440
441Changes with Unit 1.12.0                                         03 Oct 2019
442
443    *) Feature: compatibility with PHP 7.4.
444
445    *) Bugfix: descriptors leak on process creation; the bug had appeared in
446       1.11.0.
447
448    *) Bugfix: TLS connection might be closed prematurely while sending
449       response.
450
451    *) Bugfix: segmentation fault might have occurred if an irregular file
452       was requested.
453
454
455Changes with Unit 1.11.0                                         19 Sep 2019
456
457    *) Feature: basic support for serving static files.
458
459    *) Feature: isolation of application processes with Linux namespaces.
460
461    *) Feature: built-in WebSocket server implementation for Java Servlet
462       Containers.
463
464    *) Feature: direct addressing of API configuration options containing
465       slashes "/" using URI encoding (%2F).
466
467    *) Bugfix: segmentation fault might have occurred in Go applications
468       under high load.
469
470    *) Bugfix: WebSocket support was broken if Unit was built with some
471       linkers other than GNU ld (e.g. gold or LLD).
472
473
474Changes with Unit 1.10.0                                         22 Aug 2019
475
476    *) Change: matching of cookies in routes made case sensitive.
477
478    *) Change: decreased log level of common errors when clients close
479       connections.
480
481    *) Change: removed the Perl module's "--include=" ./configure option.
482
483    *) Feature: built-in WebSocket server implementation for Node.js module.
484
485    *) Feature: splitting PATH_INFO from request URI in PHP module.
486
487    *) Feature: request routing by scheme (HTTP or HTTPS).
488
489    *) Feature: support for multipart requests body in Java module.
490
491    *) Feature: improved API compatibility with Node.js 11.10 or later.
492
493    *) Bugfix: reconfiguration failed if "listeners" or "applications"
494       objects were missing.
495
496    *) Bugfix: applying a large configuration might have failed.
497
498
499Changes with Unit 1.9.0                                          30 May 2019
500
501    *) Feature: request routing by arguments, headers, and cookies.
502
503    *) Feature: route matching patterns allow a wildcard in the middle.
504
505    *) Feature: POST operation for appending elements to arrays in
506       configuration.
507
508    *) Feature: support for changing credentials using CAP_SETUID and
509       CAP_SETGID capabilities on Linux without running main process as
510       privileged user.
511
512    *) Bugfix: memory leak in the router process might have happened when a
513       client prematurely closed the connection.
514
515    *) Bugfix: applying a large configuration might have failed.
516
517    *) Bugfix: PUT and DELETE operations on array elements in configuration
518       did not work.
519
520    *) Bugfix: request schema in applications did not reflect TLS
521       connections.
522
523    *) Bugfix: restored compatibility with Node.js applications that use
524       ServerResponse._implicitHeader() function; the bug had appeared in
525       1.7.
526
527    *) Bugfix: various compatibility issues with Node.js applications.
528
529
530Changes with Unit 1.8.0                                          01 Mar 2019
531
532    *) Change: now three numbers are always used for versioning: major,
533       minor, and patch versions.
534
535    *) Change: now QUERY_STRING is always defined even if the request does
536       not include the query component.
537
538    *) Feature: basic internal request routing by Host, URI, and method.
539
540    *) Feature: experimental support for Java Servlet Containers.
541
542    *) Bugfix: segmentation fault might have occurred in the router process.
543
544    *) Bugfix: various potential memory leaks.
545
546    *) Bugfix: TLS connections might have stalled.
547
548    *) Bugfix: some Perl applications might have failed to send the response
549       body.
550
551    *) Bugfix: some compilers with specific flags might have produced
552       non-functioning builds; the bug had appeared in 1.5.
553
554    *) Bugfix: Node.js package had wrong version number when installed from
555       sources.
556
557
558Changes with Unit 1.7.1                                          07 Feb 2019
559
560    *) Security: a heap memory buffer overflow might have been caused in the
561       router process by a specially crafted request, potentially resulting
562       in a segmentation fault or other unspecified behavior
563       (CVE-2019-7401).
564
565    *) Bugfix: install of Go module failed without prior building of Unit
566       daemon; the bug had appeared in 1.7.
567
568
569Changes with Unit 1.7                                            20 Dec 2018
570
571    *) Change: now rpath is set in Ruby module only if the library was not
572       found in default search paths; this allows to meet packaging
573       restrictions on some systems.
574
575    *) Bugfix: "disable_functions" and "disable_classes" PHP options set via
576       Control API did not work.
577
578    *) Bugfix: Promises on request data in Node.js were not triggered.
579
580    *) Bugfix: various compatibility issues with Node.js applications.
581
582    *) Bugfix: a segmentation fault occurred in Node.js module if
583       application tried to read request body after request.end() was
584       called.
585
586    *) Bugfix: a segmentation fault occurred in Node.js module if
587       application attempted to send header twice.
588
589    *) Bugfix: names of response header fields in Node.js module were
590       erroneously treated as case-sensitive.
591
592    *) Bugfix: uncatched exceptions in Node.js were not logged.
593
594    *) Bugfix: global install of Node.js module from sources was broken on
595       some systems; the bug had appeared in 1.6.
596
597    *) Bugfix: traceback for exceptions during initialization of Python
598       applications might not be logged.
599
600    *) Bugfix: PHP module build failed if PHP interpreter was built with
601       thread safety enabled.
602
603
604Changes with Unit 1.6                                            15 Nov 2018
605
606    *) Change: "make install" now installs Node.js module as well if it was
607       configured.
608
609    *) Feature: "--local" ./configure option to install Node.js module
610       locally.
611
612    *) Bugfix: Node.js module might have crashed due to broken reference
613       counting.
614
615    *) Bugfix: asynchronous operations in Node.js might not have worked.
616
617    *) Bugfix: various compatibility issues with Node.js applications.
618
619    *) Bugfix: "freed pointer is out of pool" alerts might have appeared in
620       log.
621
622    *) Bugfix: module discovery did not work on 64-bit big-endian systems
623       like IBM/S390x.
624
625
626Changes with Unit 1.5                                            25 Oct 2018
627
628    *) Change: the "type" of application object for Go was changed to
629       "external".
630
631    *) Feature: initial version of Node.js package with basic HTTP
632       request-response support.
633
634    *) Feature: compatibility with LibreSSL.
635
636    *) Feature: --libdir and --incdir ./configure options to install libunit
637       headers and static library.
638
639    *) Bugfix: connection might be closed prematurely while sending
640       response; the bug had appeared in 1.3.
641
642    *) Bugfix: application processes might have stopped handling requests,
643       producing "last message send failed: Resource temporarily
644       unavailable" alerts in log; the bug had appeared in 1.4.
645
646    *) Bugfix: Go applications did not work when Unit was built with musl C
647       library.
648
649
650Changes with Unit 1.4                                            20 Sep 2018
651
652    *) Change: the control API maps the configuration object only at
653       "/config/".
654
655    *) Feature: TLS support for client connections.
656
657    *) Feature: TLS certificates storage control API.
658
659    *) Feature: Unit library (libunit) to streamline language module
660       integration.
661
662    *) Feature: "408 Request Timeout" responses while closing HTTP
663       keep-alive connections.
664
665    *) Feature: improvements in OpenBSD support. Thanks to David Carlier.
666
667    *) Bugfix: a segmentation fault might have occurred after
668       reconfiguration.
669
670    *) Bugfix: building on systems with non-default locale might be broken.
671
672    *) Bugfix: "header_read_timeout" might not work properly.
673
674    *) Bugfix: header fields values with non-ASCII bytes might be handled
675       incorrectly in Python 3 module.
676
677
678Changes with Unit 1.3                                            13 Jul 2018
679
680    *) Change: UTF-8 characters are now allowed in request header field
681       values.
682
683    *) Feature: configuration of the request body size limit.
684
685    *) Feature: configuration of various HTTP connection timeouts.
686
687    *) Feature: Ruby module now automatically uses Bundler where possible.
688
689    *) Feature: http.Flusher interface in Go module.
690
691    *) Bugfix: various issues in HTTP connection errors handling.
692
693    *) Bugfix: requests with body data might be handled incorrectly in PHP
694       module.
695
696    *) Bugfix: individual PHP configuration options specified via control
697       API were reset to previous values after the first request in
698       application process.
699
700
701Changes with Unit 1.2                                            07 Jun 2018
702
703    *) Feature: configuration of environment variables for application
704       processes.
705
706    *) Feature: customization of php.ini path.
707
708    *) Feature: setting of individual PHP configuration options.
709
710    *) Feature: configuration of execution arguments for Go applications.
711
712    *) Bugfix: keep-alive connections might hang after reconfiguration.
713
714
715Changes with Unit 1.1                                            26 Apr 2018
716
717    *) Bugfix: Python applications that use the write() callable did not
718       work.
719
720    *) Bugfix: virtual environments created with Python 3.3 or above might
721       not have worked.
722
723    *) Bugfix: the request.Read() function in Go applications did not
724       produce EOF when the whole body was read.
725
726    *) Bugfix: a segmentation fault might have occurred while access log
727       reopening.
728
729    *) Bugfix: in parsing of IPv6 control socket addresses.
730
731    *) Bugfix: loading of application modules was broken on OpenBSD.
732
733    *) Bugfix: a segmentation fault might have occurred when there were two
734       modules with the same type and version; the bug had appeared in 1.0.
735
736    *) Bugfix: alerts "freed pointer points to non-freeble page" might have
737       appeared in log on 32-bit platforms.
738
739
740Changes with Unit 1.0                                            12 Apr 2018
741
742    *) Change: configuration object moved into "/config/" path.
743
744    *) Feature: basic access logging.
745
746    *) Bugfix: 503 error occurred if Go application did not write response
747       header or body.
748
749    *) Bugfix: Ruby applications that use encoding conversions might not
750       have worked.
751
752    *) Bugfix: various stability issues.
753
754
755Changes with Unit 0.7                                            22 Mar 2018
756
757    *) Feature: Ruby application module.
758
759    *) Bugfix: in discovering modules.
760
761    *) Bugfix: various race conditions on reconfiguration and during
762       shutting down.
763
764    *) Bugfix: tabs and trailing spaces were not allowed in header fields
765       values.
766
767    *) Bugfix: a segmentation fault occurred in Python module if
768       start_response() was called outside of WSGI callable.
769
770    *) Bugfix: a segmentation fault might have occurred in PHP module if
771       there was an error while initialization.
772
773
774Changes with Unit 0.6                                            09 Feb 2018
775
776    *) Bugfix: the main process died when the "type" application option
777       contained version; the bug had appeared in 0.5.
778
779
780Changes with Unit 0.5                                            08 Feb 2018
781
782    *) Change: the "workers" application option was removed, the "processes"
783       application option should be used instead.
784
785    *) Feature: the "processes" application option with prefork and dynamic
786       process management support.
787
788    *) Feature: Perl application module.
789
790    *) Bugfix: in reading client request body; the bug had appeared in 0.3.
791
792    *) Bugfix: some Python applications might not have worked due to missing
793       "wsgi.errors" environ variable.
794
795    *) Bugfix: HTTP chunked responses might be encoded incorrectly on 32-bit
796       platforms.
797
798    *) Bugfix: infinite looping in HTTP parser.
799
800    *) Bugfix: segmentation fault in router.
801
802
803Changes with Unit 0.4                                            15 Jan 2018
804
805    *) Feature: compatibility with DragonFly BSD.
806
807    *) Feature: "configure php --lib-static" option.
808
809    *) Bugfix: HTTP request body was not passed to application; the bug had
810       appeared in 0.3.
811
812    *) Bugfix: HTTP large header buffers allocation and deallocation fixed;
813       the bug had appeared in 0.3.
814
815    *) Bugfix: some PHP applications might not have worked with relative
816       "root" path.
817
818
819Changes with Unit 0.3                                            28 Dec 2017
820
821    *) Change: the Go package name changed to "nginx/unit".
822
823    *) Change: in the "limits.timeout" application option: application start
824       time and time in queue now are not accounted.
825
826    *) Feature: the "limits.requests" application option.
827
828    *) Feature: application request processing latency optimization.
829
830    *) Feature: HTTP keep-alive connections support.
831
832    *) Feature: the "home" Python virtual environment configuration option.
833
834    *) Feature: Python atexit hook support.
835
836    *) Feature: various Go package improvements.
837
838    *) Bugfix: various crashes fixed.
839
840
841Changes with Unit 0.2                                            19 Oct 2017
842
843    *) Feature: configuration persistence.
844
845    *) Feature: improved handling of configuration errors.
846
847    *) Feature: application "timeout" property.
848
849    *) Bugfix: POST request for PHP were handled incorrectly.
850
851    *) Bugfix: the router exited abnormally if all listeners had been
852       deleted.
853
854    *) Bugfix: the router crashed under load.
855
856    *) Bugfix: memory leak in the router.
857
858
859Changes with Unit 0.1                                            06 Sep 2017
860
861    *) First public release.
862
863