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