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