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