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