1<?xml version="1.0" ?> 2<!DOCTYPE change_log SYSTEM "changes.dtd" > 3 4 5<change_log title="unit"> 6 7 8<changes apply="unit-php 9 unit-python unit-python2.7 10 unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7 11 unit-python3.8 unit-python3.9 unit-python3.10 12 unit-go 13 unit-perl 14 unit-ruby 15 unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13 16 unit-jsc14 unit-jsc15 unit-jsc16 unit-jsc17 unit-jsc18" 17 ver="1.28.0" rev="1" 18 date="" time="" 19 packager="Nginx Packaging <nginx-packaging@f5.com>"> 20 21<change> 22<para> 23NGINX Unit updated to 1.28.0. 24</para> 25</change> 26 27</changes> 28 29 30<changes apply="unit" ver="1.28.0" rev="1" 31 date="" time="" 32 packager="Nginx Packaging <nginx-packaging@f5.com>"> 33 34<change type="change"> 35<para> 36increased the applications' startup timeout. 37</para> 38</change> 39 40<change type="change"> 41<para> 42disallowed abstract Unix domain socket syntax in non-Linux systems. 43</para> 44</change> 45 46<change type="feature"> 47<para> 48supporting abstract UNIX sockets. 49</para> 50</change> 51 52<change type="feature"> 53<para> 54supporting UNIX sockets in address matching. 55</para> 56</change> 57 58<change type="feature"> 59<para> 60forwarded header to replace client address and protocol. 61</para> 62</change> 63 64<change type="feature"> 65<para> 66ability to get dynamic variables. 67</para> 68</change> 69 70<change type="feature"> 71<para> 72more http variables support. 73</para> 74</change> 75 76<change type="feature"> 77<para> 78added a new variable, $dollar, that translates to a literal "$" during 79variable substitution. 80</para> 81</change> 82 83<change type="feature"> 84<para> 85customizable access log format. 86</para> 87</change> 88 89<change type="bugfix"> 90<para> 91an index file that didn't contain a file extension was incorrectly 92handled, and caused a use-after-free bug. 93</para> 94</change> 95 96<change type="bugfix"> 97<para> 98force SCRIPT_NAME in Ruby to always be an empty string. 99</para> 100</change> 101 102<change type="bugfix"> 103<para> 104the ruby application process could crash if it's interrupted by SIGTERM signal. 105</para> 106</change> 107 108<change type="bugfix"> 109<para> 110prevent the ruby application processes from crashing on SIGINT (^C). 111</para> 112</change> 113 114<change type="bugfix"> 115<para> 116when isolated PID numbers reach the prototype process host PID, 117the prototype crashed. 118</para> 119</change> 120 121</changes> 122 123 124<changes apply="unit-php 125 unit-python unit-python2.7 126 unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7 127 unit-python3.8 unit-python3.9 unit-python3.10 128 unit-go 129 unit-perl 130 unit-ruby 131 unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13 132 unit-jsc14 unit-jsc15 unit-jsc16 unit-jsc17 unit-jsc18" 133 ver="1.27.0" rev="1" 134 date="2022-06-02" time="18:00:00 +0300" 135 packager="Andrei Belov <defan@nginx.com>"> 136 137<change> 138<para> 139NGINX Unit updated to 1.27.0. 140</para> 141</change> 142 143</changes> 144 145 146<changes apply="unit" ver="1.27.0" rev="1" 147 date="2022-06-02" time="18:00:00 +0300" 148 packager="Andrei Belov <defan@nginx.com>"> 149 150<change type="feature"> 151<para> 152ability to specify a custom index file name when serving static files. 153</para> 154</change> 155 156<change type="feature"> 157<para> 158variables support in the "location" option of the "return" action. 159</para> 160</change> 161 162<change type="feature"> 163<para> 164support empty strings in the "location" option of the "return" action. 165</para> 166</change> 167 168<change type="feature"> 169<para> 170added a new variable, $request_uri, that includes both the path and the query 171parts as per RFC 3986, sections 3-4. 172</para> 173</change> 174 175<change type="feature"> 176<para> 177Ruby Rack environment parameter "SCRIPT_NAME" support. 178</para> 179</change> 180 181<change type="feature"> 182<para> 183compatibility with GCC 12. 184</para> 185</change> 186 187<change type="bugfix"> 188<para> 189Ruby Sinatra applications don't work without custom logging. 190</para> 191</change> 192 193<change type="bugfix"> 194<para> 195the controller process could crash when a chain of more than four 196certificates was uploaded. 197</para> 198</change> 199 200<change type="bugfix"> 201<para> 202some Perl applications failed to process the request body, notably with Plack. 203</para> 204</change> 205 206<change type="bugfix"> 207<para> 208some Spring Boot applications failed to start, notably with Grails. 209</para> 210</change> 211 212<change type="bugfix"> 213<para> 214incorrect Python protocol auto detection (ASGI or WSGI) for native callable 215object, notably with Falcon. 216</para> 217</change> 218 219<change type="bugfix"> 220<para> 221ECMAScript modules did not work with the recent Node.js versions. 222</para> 223</change> 224 225</changes> 226 227 228<changes apply="unit-php 229 unit-python unit-python2.7 230 unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7 231 unit-python3.8 unit-python3.9 unit-python3.10 232 unit-go 233 unit-perl 234 unit-ruby 235 unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13 236 unit-jsc14 unit-jsc15 unit-jsc16 unit-jsc17 unit-jsc18" 237 ver="1.26.1" rev="1" 238 date="2021-12-02" time="18:00:00 +0300" 239 packager="Andrei Belov <defan@nginx.com>"> 240 241<change> 242<para> 243NGINX Unit updated to 1.26.1. 244</para> 245</change> 246 247</changes> 248 249 250<changes apply="unit" ver="1.26.1" rev="1" 251 date="2021-12-02" time="18:00:00 +0300" 252 packager="Andrei Belov <defan@nginx.com>"> 253 254<change type="bugfix"> 255<para> 256occasionally, the Unit daemon was unable to fully terminate; the bug had 257appeared in 1.26.0. 258</para> 259</change> 260 261<change type="bugfix"> 262<para> 263a prototype process could crash on an application process exit; the bug had 264appeared in 1.26.0. 265</para> 266</change> 267 268<change type="bugfix"> 269<para> 270the router process crashed on reconfiguration if "access_log" was configured 271without listeners. 272</para> 273</change> 274 275<change type="bugfix"> 276<para> 277a segmentation fault occurred in the PHP module if chdir() or 278fastcgi_finish_request() was called in the OPcache preloading script. 279</para> 280</change> 281 282<change type="bugfix"> 283<para> 284fatal errors on DragonFly BSD; the bug had appeared in 1.26.0. 285</para> 286</change> 287 288</changes> 289 290 291<changes apply="unit-jsc18" ver="1.26.0" rev="1" 292 date="2021-11-18" time="18:00:00 +0300" 293 packager="Andrei Belov <defan@nginx.com>"> 294 295<change> 296<para> 297Initial release of Java 18 module for NGINX Unit. 298</para> 299</change> 300 301</changes> 302 303 304<changes apply="unit-python3.10" ver="1.26.0" rev="1" 305 date="2021-11-18" time="18:00:00 +0300" 306 packager="Andrei Belov <defan@nginx.com>"> 307 308<change> 309<para> 310Initial release of Python 3.10 module for NGINX Unit. 311</para> 312</change> 313 314</changes> 315 316 317<changes apply="unit-php 318 unit-python unit-python2.7 319 unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7 320 unit-python3.8 unit-python3.9 321 unit-go 322 unit-perl 323 unit-ruby 324 unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13 325 unit-jsc14 unit-jsc15 unit-jsc16 unit-jsc17" 326 ver="1.26.0" rev="1" 327 date="2021-11-18" time="18:00:00 +0300" 328 packager="Andrei Belov <defan@nginx.com>"> 329 330<change> 331<para> 332NGINX Unit updated to 1.26.0. 333</para> 334</change> 335 336</changes> 337 338 339<changes apply="unit" ver="1.26.0" rev="1" 340 date="2021-11-18" time="18:00:00 +0300" 341 packager="Andrei Belov <defan@nginx.com>"> 342 343<change type="change"> 344<para> 345the "share" option now specifies the entire path to the files it serves, 346rather than a document root directory to be prepended to the request URI. 347</para> 348</change> 349 350<change type="feature"> 351<para> 352automatic adjustment of existing configurations to the new "share" behavior 353when updating from previous versions. 354</para> 355</change> 356 357<change type="feature"> 358<para> 359variables support in the "share" option. 360</para> 361</change> 362 363<change type="feature"> 364<para> 365multiple paths in the "share" option. 366</para> 367</change> 368 369<change type="feature"> 370<para> 371variables support in the "chroot" option. 372</para> 373</change> 374 375<change type="feature"> 376<para> 377PHP opcache is shared between application processes. 378</para> 379</change> 380 381<change type="feature"> 382<para> 383request routing by the query string. 384</para> 385</change> 386 387<change type="bugfix"> 388<para> 389the router and app processes could crash when the requests limit was reached 390by asynchronous or multithreaded apps. 391</para> 392</change> 393 394<change type="bugfix"> 395<para> 396established WebSocket connections could stop reading frames from the client 397after the corresponding listener had been reconfigured. 398</para> 399</change> 400 401<change type="bugfix"> 402<para> 403fixed building with glibc 2.34, notably Fedora 35. 404</para> 405</change> 406 407</changes> 408 409 410<changes apply="unit-php 411 unit-python unit-python2.7 412 unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7 413 unit-python3.8 unit-python3.9 414 unit-go 415 unit-perl 416 unit-ruby 417 unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13 418 unit-jsc14 unit-jsc15 unit-jsc16 unit-jsc17" 419 ver="1.25.0" rev="1" 420 date="2021-08-19" time="18:00:00 +0300" 421 packager="Andrei Belov <defan@nginx.com>"> 422 423<change> 424<para> 425NGINX Unit updated to 1.25.0. 426</para> 427</change> 428 429</changes> 430 431 432<changes apply="unit" ver="1.25.0" rev="1" 433 date="2021-08-19" time="18:00:00 +0300" 434 packager="Andrei Belov <defan@nginx.com>"> 435 436<change type="feature"> 437<para> 438client IP address replacement from a specified HTTP header field. 439</para> 440</change> 441 442<change type="feature"> 443<para> 444TLS sessions cache. 445</para> 446</change> 447 448<change type="feature"> 449<para> 450TLS session tickets. 451</para> 452</change> 453 454<change type="feature"> 455<para> 456application restart control. 457</para> 458</change> 459 460<change type="feature"> 461<para> 462process and thread lifecycle hooks in Ruby. 463</para> 464</change> 465 466<change type="bugfix"> 467<para> 468the router process could crash on TLS connection open when multiple listeners 469with TLS certificates were configured; the bug had appeared in 1.23.0. 470</para> 471</change> 472 473<change type="bugfix"> 474<para> 475TLS connections were rejected for configurations with multiple certificate 476bundles in a listener if the client did not use SNI. 477</para> 478</change> 479 480<change type="bugfix"> 481<para> 482the router process could crash with frequent multithreaded application 483reconfiguration. 484</para> 485</change> 486 487<change type="bugfix"> 488<para> 489compatibility issues with some Python ASGI apps, notably based on the Starlette 490framework. 491</para> 492</change> 493 494<change type="bugfix"> 495<para> 496a descriptor and memory leak occurred in the router process when an app process 497stopped or crashed. 498</para> 499</change> 500 501<change type="bugfix"> 502<para> 503the controller or router process could crash if the configuration contained 504a full-form IPv6 in a listener address. 505</para> 506</change> 507 508<change type="bugfix"> 509<para> 510the router process crashed when a request was passed to an empty "routes" 511or "upstreams" using a variable "pass" option. 512</para> 513</change> 514 515<change type="bugfix"> 516<para> 517the router process crashed while matching a request to an empty array of source 518or destination address patterns. 519</para> 520</change> 521 522</changes> 523 524 525<changes apply="unit-jsc17" ver="1.24.0" rev="1" 526 date="2021-05-27" time="18:00:00 +0300" 527 packager="Andrei Belov <defan@nginx.com>"> 528 529<change> 530<para> 531Initial release of Java 17 module for NGINX Unit. 532</para> 533</change> 534 535</changes> 536 537 538<changes apply="unit-jsc16" ver="1.24.0" rev="1" 539 date="2021-05-27" time="18:00:00 +0300" 540 packager="Andrei Belov <defan@nginx.com>"> 541 542<change> 543<para> 544Initial release of Java 16 module for NGINX Unit. 545</para> 546</change> 547 548</changes> 549 550 551<changes apply="unit-php 552 unit-python unit-python2.7 553 unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7 554 unit-python3.8 unit-python3.9 555 unit-go 556 unit-perl 557 unit-ruby 558 unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13 559 unit-jsc14 unit-jsc15" 560 ver="1.24.0" rev="1" 561 date="2021-05-27" time="18:00:00 +0300" 562 packager="Andrei Belov <defan@nginx.com>"> 563 564<change> 565<para> 566NGINX Unit updated to 1.24.0. 567</para> 568</change> 569 570</changes> 571 572 573<changes apply="unit" ver="1.24.0" rev="1" 574 date="2021-05-27" time="18:00:00 +0300" 575 packager="Andrei Belov <defan@nginx.com>"> 576 577<change type="change"> 578<para> 579PHP added to the default MIME type list. 580</para> 581</change> 582 583<change type="feature"> 584<para> 585arbitrary configuration of TLS connections via OpenSSL commands. 586</para> 587</change> 588 589<change type="feature"> 590<para> 591the ability to limit static file serving by MIME types. 592</para> 593</change> 594 595<change type="feature"> 596<para> 597support for chrooting, rejecting symlinks, and rejecting mount 598point traversal on a per-request basis when serving static files. 599</para> 600</change> 601 602<change type="feature"> 603<para> 604a loader for automatically overriding the "http" and "websocket" modules in 605Node.js. 606</para> 607</change> 608 609<change type="feature"> 610<para> 611multiple "targets" in Python applications. 612</para> 613</change> 614 615<change type="feature"> 616<para> 617compatibility with Ruby 3.0. 618</para> 619</change> 620 621<change type="bugfix"> 622<para> 623the router process could crash while closing a TLS connection. 624</para> 625</change> 626 627<change type="bugfix"> 628<para> 629a segmentation fault might have occurred in the PHP module if 630fastcgi_finish_request() was used with the "auto_globals_jit" option enabled. 631</para> 632</change> 633 634</changes> 635 636 637<changes apply="unit-php 638 unit-python unit-python2.7 639 unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7 640 unit-python3.8 unit-python3.9 641 unit-go 642 unit-perl 643 unit-ruby 644 unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13 645 unit-jsc14 unit-jsc15" 646 ver="1.23.0" rev="1" 647 date="2021-03-25" time="18:00:00 +0300" 648 packager="Andrei Belov <defan@nginx.com>"> 649 650<change> 651<para> 652NGINX Unit updated to 1.23.0. 653</para> 654</change> 655 656</changes> 657 658 659<changes apply="unit" ver="1.23.0" rev="1" 660 date="2021-03-25" time="18:00:00 +0300" 661 packager="Andrei Belov <defan@nginx.com>"> 662 663<change type="feature"> 664<para> 665support for multiple certificate bundles on a listener via the Server Name 666Indication (SNI) TLS extension. 667</para> 668</change> 669 670<change type="feature"> 671<para> 672"--mandir" ./configure option to specify the directory for man page 673installation. 674</para> 675</change> 676 677<change type="bugfix"> 678<para> 679the router process could crash on premature TLS connection close; the bug had 680appeared in 1.17.0. 681</para> 682</change> 683 684<change type="bugfix"> 685<para> 686a connection leak occurred on premature TLS connection close; the bug had 687appeared in 1.6. 688</para> 689</change> 690 691<change type="bugfix"> 692<para> 693a descriptor and memory leak occurred in the router process when processing 694small WebSocket frames from a client; the bug had appeared in 1.19.0. 695</para> 696</change> 697 698<change type="bugfix"> 699<para> 700a descriptor leak occurred in the router process when removing or 701reconfiguring an application; the bug had appeared in 1.19.0. 702</para> 703</change> 704 705<change type="bugfix"> 706<para> 707persistent storage of certificates might've not worked with some filesystems in 708Linux, and all uploaded certificate bundles were forgotten after restart. 709</para> 710</change> 711 712<change type="bugfix"> 713<para> 714the controller process could crash while requesting information about a 715certificate with a non-DNS SAN entry. 716</para> 717</change> 718 719<change type="bugfix"> 720<para> 721the controller process could crash on manipulations with a certificate 722containing a SAN and no standard name attributes in subject or issuer. 723</para> 724</change> 725 726<change type="bugfix"> 727<para> 728the Ruby module didn't respect the user locale for defaults in the Encoding 729class. 730</para> 731</change> 732 733<change type="bugfix"> 734<para> 735the PHP 5 module failed to build with thread safety enabled; the bug had 736appeared in 1.22.0. 737</para> 738</change> 739 740</changes> 741 742 743<changes apply="unit-python3.9" ver="1.22.0" rev="1" 744 date="2021-02-04" time="18:00:00 +0300" 745 packager="Andrei Belov <defan@nginx.com>"> 746 747<change> 748<para> 749Initial release of Python 3.9 module for NGINX Unit. 750</para> 751</change> 752 753</changes> 754 755 756<changes apply="unit-php 757 unit-python unit-python2.7 758 unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7 759 unit-python3.8 760 unit-go 761 unit-perl 762 unit-ruby 763 unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13 764 unit-jsc14 unit-jsc15" 765 ver="1.22.0" rev="1" 766 date="2021-02-04" time="18:00:00 +0300" 767 packager="Andrei Belov <defan@nginx.com>"> 768 769<change> 770<para> 771NGINX Unit updated to 1.22.0. 772</para> 773</change> 774 775</changes> 776 777 778<changes apply="unit" ver="1.22.0" rev="1" 779 date="2021-02-04" time="18:00:00 +0300" 780 packager="Andrei Belov <defan@nginx.com>"> 781 782<change type="feature"> 783<para> 784the ServerRequest and ServerResponse objects of Node.js module are now 785compliant with Stream API. 786</para> 787</change> 788 789<change type="feature"> 790<para> 791support for specifying multiple directories in the "path" option of Python 792apps. 793</para> 794</change> 795 796<change type="bugfix"> 797<para> 798a memory leak occurred in the router process when serving files larger than 799128K; the bug had appeared in 1.13.0. 800</para> 801</change> 802 803<change type="bugfix"> 804<para> 805apps could stop processing new requests under high load; the bug had 806appeared in 1.19.0. 807</para> 808</change> 809 810<change type="bugfix"> 811<para> 812app processes could terminate unexpectedly under high load; the bug had 813appeared in 1.19.0. 814</para> 815</change> 816 817<change type="bugfix"> 818<para> 819invalid HTTP responses were generated for some unusual status codes. 820</para> 821</change> 822 823<change type="bugfix"> 824<para> 825the PHP_AUTH_USER, PHP_AUTH_PW, and PHP_AUTH_DIGEST server variables were 826missing in the PHP module. 827</para> 828</change> 829 830<change type="bugfix"> 831<para> 832the router process could crash with multithreaded apps under high load. 833</para> 834</change> 835 836<change type="bugfix"> 837<para> 838Ruby apps with multithreading configured could crash on start under load. 839</para> 840</change> 841 842<change type="bugfix"> 843<para> 844mount points weren't unmounted when the "mount" namespace isolation was used; 845the bug had appeared in 1.21.0. 846</para> 847</change> 848 849<change type="bugfix"> 850<para> 851the router process could crash while removing or reconfiguring an app that used 852WebSocket. 853</para> 854</change> 855 856<change type="bugfix"> 857<para> 858a memory leak occurring in the router process when removing or reconfiguring 859an application; the bug had appeared in 1.19.0. 860</para> 861</change> 862 863</changes> 864 865 866<changes apply="unit-jsc15" ver="1.21.0" rev="1" 867 date="2020-11-19" time="18:00:00 +0300" 868 packager="Andrei Belov <defan@nginx.com>"> 869 870<change> 871<para> 872Initial release of Java 15 module for NGINX Unit. 873</para> 874</change> 875 876</changes> 877 878 879<changes apply="unit-jsc14" ver="1.21.0" rev="1" 880 date="2020-11-19" time="18:00:00 +0300" 881 packager="Andrei Belov <defan@nginx.com>"> 882 883<change> 884<para> 885Initial release of Java 14 module for NGINX Unit. 886</para> 887</change> 888 889</changes> 890 891 892<changes apply="unit-jsc13" ver="1.21.0" rev="1" 893 date="2020-11-19" time="18:00:00 +0300" 894 packager="Andrei Belov <defan@nginx.com>"> 895 896<change> 897<para> 898Initial release of Java 13 module for NGINX Unit. 899</para> 900</change> 901 902</changes> 903 904 905<changes apply="unit-php 906 unit-python unit-python2.7 907 unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7 908 unit-python3.8 909 unit-go 910 unit-perl 911 unit-ruby 912 unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11" 913 ver="1.21.0" rev="1" 914 date="2020-11-19" time="18:00:00 +0300" 915 packager="Andrei Belov <defan@nginx.com>"> 916 917<change> 918<para> 919NGINX Unit updated to 1.21.0. 920</para> 921</change> 922 923</changes> 924 925 926<changes apply="unit" ver="1.21.0" rev="1" 927 date="2020-11-19" time="18:00:00 +0300" 928 packager="Andrei Belov <defan@nginx.com>"> 929 930<change type="change"> 931<para> 932procfs is mounted by default for all languages when "rootfs" isolation is used. 933</para> 934</change> 935 936<change type="change"> 937<para> 938any characters valid according to RFC 7230 are now allowed in HTTP header field 939names. 940</para> 941</change> 942 943<change type="change"> 944<para> 945HTTP header fields with underscores ("_") are now discarded from requests by 946default. 947</para> 948</change> 949 950<change type="feature"> 951<para> 952optional multithreaded request processing for Java, Python, Perl, and Ruby apps. 953</para> 954</change> 955 956<change type="feature"> 957<para> 958regular expressions in route matching patterns. 959</para> 960</change> 961 962<change type="feature"> 963<para> 964compatibility with Python 3.9. 965</para> 966</change> 967 968<change type="feature"> 969<para> 970the Python module now supports ASGI 2.0 legacy applications. 971</para> 972</change> 973 974<change type="feature"> 975<para> 976the "protocol" option in Python applications aids choice between ASGI and WSGI. 977</para> 978</change> 979 980<change type="feature"> 981<para> 982the fastcgi_finish_request() PHP function that finalizes request processing and 983continues code execution without holding onto the client connection. 984</para> 985</change> 986 987<change type="feature"> 988<para> 989the "discard_unsafe_fields" HTTP option that enables discarding request header 990fields with irregular (but still valid) characters in the field name. 991</para> 992</change> 993 994<change type="feature"> 995<para> 996the "procfs" and "tmpfs" automount isolation options to disable automatic 997mounting of eponymous filesystems. 998</para> 999</change> 1000 1001<change type="bugfix"> 1002<para> 1003the router process could crash when running Go applications under high load; 1004the bug had appeared in 1.19.0. 1005</para> 1006</change> 1007 1008<change type="bugfix"> 1009<para> 1010some language dependencies could remain mounted after using "rootfs" isolation. 1011</para> 1012</change> 1013 1014<change type="bugfix"> 1015<para> 1016various compatibility issues in Java applications. 1017</para> 1018</change> 1019 1020<change type="bugfix"> 1021<para> 1022the Java module built with the musl C library couldn't run applications that 1023use "rootfs" isolation. 1024</para> 1025</change> 1026 1027</changes> 1028 1029 1030<changes apply="unit-php 1031 unit-python unit-python2.7 1032 unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7 1033 unit-python3.8 1034 unit-go 1035 unit-perl 1036 unit-ruby 1037 unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11" 1038 ver="1.20.0" rev="1" 1039 date="2020-10-08" time="18:00:00 +0300" 1040 packager="Andrei Belov <defan@nginx.com>"> 1041 1042<change> 1043<para> 1044NGINX Unit updated to 1.20.0. 1045</para> 1046</change> 1047 1048</changes> 1049 1050 1051<changes apply="unit" ver="1.20.0" rev="1" 1052 date="2020-10-08" time="18:00:00 +0300" 1053 packager="Andrei Belov <defan@nginx.com>"> 1054 1055<change type="change"> 1056<para> 1057the PHP module is now initialized before chrooting; this enables loading all 1058extensions from the host system. 1059</para> 1060</change> 1061 1062<change type="change"> 1063<para> 1064AVIF and APNG image formats added to the default MIME type list. 1065</para> 1066</change> 1067 1068<change type="change"> 1069<para> 1070functional tests migrated to the pytest framework. 1071</para> 1072</change> 1073 1074<change type="feature"> 1075<para> 1076the Python module now fully supports applications that use the ASGI 3.0 server 1077interface. 1078</para> 1079</change> 1080 1081<change type="feature"> 1082<para> 1083the Python module now has a built-in WebSocket server implementation for 1084applications, compatible with the HTTP & WebSocket ASGI Message Format 2.1 1085specification. 1086</para> 1087</change> 1088 1089<change type="feature"> 1090<para> 1091automatic mounting of an isolated "/tmp" file system into chrooted application 1092environments. 1093</para> 1094</change> 1095 1096<change type="feature"> 1097<para> 1098the $host variable contains a normalized "Host" request value. 1099</para> 1100</change> 1101 1102<change type="feature"> 1103<para> 1104the "callable" option sets Python application callable names. 1105</para> 1106</change> 1107 1108<change type="feature"> 1109<para> 1110compatibility with PHP 8 RC 1. Thanks to Remi Collet. 1111</para> 1112</change> 1113 1114<change type="feature"> 1115<para> 1116the "automount" option in the "isolation" object allows to turn off the 1117automatic mounting of language module dependencies. 1118</para> 1119</change> 1120 1121<change type="bugfix"> 1122<para> 1123"pass"-ing requests to upstreams from a route was broken; the bug had appeared 1124in 1.19.0. Thanks to 洪志道 (Hong Zhi Dao) for discovering and fixing it. 1125</para> 1126</change> 1127 1128<change type="bugfix"> 1129<para> 1130the router process could crash during reconfiguration. 1131</para> 1132</change> 1133 1134<change type="bugfix"> 1135<para> 1136a memory leak occurring in the router process; the bug had appeared in 1.18.0. 1137</para> 1138</change> 1139 1140<change type="bugfix"> 1141<para> 1142the "!" (non-empty) pattern was matched incorrectly; 1143the bug had appeared in 1.19.0. 1144</para> 1145</change> 1146 1147<change type="bugfix"> 1148<para> 1149fixed building on platforms without sendfile() support, notably NetBSD; 1150the bug had appeared in 1.16.0. 1151</para> 1152</change> 1153 1154</changes> 1155 1156 1157<changes apply="unit-php 1158 unit-python unit-python2.7 1159 unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7 1160 unit-python3.8 1161 unit-go 1162 unit-perl 1163 unit-ruby 1164 unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11" 1165 ver="1.19.0" rev="1" 1166 date="2020-08-13" time="18:00:00 +0300" 1167 packager="Andrei Belov <defan@nginx.com>"> 1168 1169<change> 1170<para> 1171NGINX Unit updated to 1.19.0. 1172</para> 1173</change> 1174 1175</changes> 1176 1177 1178<changes apply="unit" ver="1.19.0" rev="1" 1179 date="2020-08-13" time="18:00:00 +0300" 1180 packager="Andrei Belov <defan@nginx.com>"> 1181 1182<change type="feature"> 1183<para> 1184reworked IPC between the router process and the applications to lower latencies, 1185increase performance, and improve scalability. 1186</para> 1187</change> 1188 1189<change type="feature"> 1190<para> 1191support for an arbitrary number of wildcards in route matching patterns. 1192</para> 1193</change> 1194 1195<change type="feature"> 1196<para> 1197chunked transfer encoding in proxy responses. 1198</para> 1199</change> 1200 1201<change type="feature"> 1202<para> 1203basic variables support in the "pass" option. 1204</para> 1205</change> 1206 1207<change type="feature"> 1208<para> 1209compatibility with PHP 8 Beta 1. 1210Thanks to Remi Collet. 1211</para> 1212</change> 1213 1214<change type="bugfix"> 1215<para> 1216the router process could crash while passing requests to an application under 1217high load. 1218</para> 1219</change> 1220 1221<change type="bugfix"> 1222<para> 1223a number of language modules failed to build on some systems; 1224the bug had appeared in 1.18.0. 1225</para> 1226</change> 1227 1228<change type="bugfix"> 1229<para> 1230time in error log messages from PHP applications could lag. 1231</para> 1232</change> 1233 1234<change type="bugfix"> 1235<para> 1236reconfiguration requests could hang if an application had failed to start; 1237the bug had appeared in 1.18.0. 1238</para> 1239</change> 1240 1241<change type="bugfix"> 1242<para> 1243memory leak during reconfiguration. 1244</para> 1245</change> 1246 1247<change type="bugfix"> 1248<para> 1249the daemon didn't start without language modules; 1250the bug had appeared in 1.18.0. 1251</para> 1252</change> 1253 1254<change type="bugfix"> 1255<para> 1256the router process could crash at exit. 1257</para> 1258</change> 1259 1260<change type="bugfix"> 1261<para> 1262Node.js applications could crash at exit. 1263</para> 1264</change> 1265 1266<change type="bugfix"> 1267<para> 1268the Ruby module could be linked against a wrong library version. 1269</para> 1270</change> 1271 1272</changes> 1273 1274 1275<changes apply="unit-php 1276 unit-python unit-python2.7 1277 unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7 1278 unit-python3.8 1279 unit-go 1280 unit-perl 1281 unit-ruby 1282 unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11" 1283 ver="1.18.0" rev="1" 1284 date="2020-05-28" time="18:00:00 +0300" 1285 packager="Andrei Belov <defan@nginx.com>"> 1286 1287<change> 1288<para> 1289NGINX Unit updated to 1.18.0. 1290</para> 1291</change> 1292 1293</changes> 1294 1295 1296<changes apply="unit" ver="1.18.0" rev="1" 1297 date="2020-05-28" time="18:00:00 +0300" 1298 packager="Andrei Belov <defan@nginx.com>"> 1299 1300<change type="feature"> 1301<para> 1302the "rootfs" isolation option for changing root filesystem for an application. 1303</para> 1304</change> 1305 1306<change type="feature"> 1307<para> 1308multiple "targets" in PHP applications. 1309</para> 1310</change> 1311 1312<change type="feature"> 1313<para> 1314support for percent-encoding in the "uri" and "arguments" matching options 1315and in the "pass" option. 1316</para> 1317</change> 1318 1319</changes> 1320 1321 1322<changes apply="unit-php 1323 unit-python unit-python2.7 1324 unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7 1325 unit-python3.8 1326 unit-go 1327 unit-perl 1328 unit-ruby 1329 unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11" 1330 ver="1.17.0" rev="1" 1331 date="2020-04-16" time="18:00:00 +0300" 1332 packager="Andrei Belov <defan@nginx.com>"> 1333 1334<change> 1335<para> 1336NGINX Unit updated to 1.17.0. 1337</para> 1338</change> 1339 1340</changes> 1341 1342 1343<changes apply="unit" ver="1.17.0" rev="1" 1344 date="2020-04-16" time="18:00:00 +0300" 1345 packager="Andrei Belov <defan@nginx.com>"> 1346 1347<change type="feature"> 1348<para> 1349a "return" action with optional "location" for immediate responses and external 1350redirection. 1351</para> 1352</change> 1353 1354<change type="feature"> 1355<para> 1356fractional weights support for upstream servers. 1357</para> 1358</change> 1359 1360<change type="bugfix"> 1361<para> 1362accidental 502 "Bad Gateway" errors might have occurred in applications under 1363high load. 1364</para> 1365</change> 1366 1367<change type="bugfix"> 1368<para> 1369memory leak in the router; the bug had appeared in 1.13.0. 1370</para> 1371</change> 1372 1373<change type="bugfix"> 1374<para> 1375segmentation fault might have occurred in the router process when reaching 1376open connections limit. 1377</para> 1378</change> 1379 1380<change type="bugfix"> 1381<para> 1382"close() failed (9: Bad file descriptor)" alerts might have appeared in the log 1383while processing large request bodies; the bug had appeared in 1.16.0. 1384</para> 1385</change> 1386 1387<change type="bugfix"> 1388<para> 1389existing application processes didn't reopen the log file. 1390</para> 1391</change> 1392 1393<change type="bugfix"> 1394<para> 1395incompatibility with some Node.js applications. 1396</para> 1397</change> 1398 1399<change type="bugfix"> 1400<para> 1401broken build on DragonFly BSD; the bug had appeared in 1.16.0. 1402</para> 1403</change> 1404 1405</changes> 1406 1407 1408<changes apply="unit-php 1409 unit-python unit-python2.7 1410 unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7 1411 unit-python3.8 1412 unit-go 1413 unit-perl 1414 unit-ruby 1415 unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11" 1416 ver="1.16.0" rev="1" 1417 date="2020-03-12" time="18:00:00 +0300" 1418 packager="Andrei Belov <defan@nginx.com>"> 1419 1420<change> 1421<para> 1422NGINX Unit updated to 1.16.0. 1423</para> 1424</change> 1425 1426</changes> 1427 1428 1429<changes apply="unit" ver="1.16.0" rev="1" 1430 date="2020-03-12" time="18:00:00 +0300" 1431 packager="Andrei Belov <defan@nginx.com>"> 1432 1433<change type="feature"> 1434<para> 1435basic load-balancing support with round-robin. 1436</para> 1437</change> 1438 1439<change type="feature"> 1440<para> 1441a "fallback" option that performs an alternative action if a request can't be 1442served from the "share" directory. 1443</para> 1444</change> 1445 1446<change type="feature"> 1447<para> 1448reduced memory consumption by dumping large request bodies to disk. 1449</para> 1450</change> 1451 1452<change type="feature"> 1453<para> 1454stripping UTF-8 BOM and JavaScript-style comments from uploaded JSON. 1455</para> 1456</change> 1457 1458<change type="bugfix"> 1459<para> 1460negative address matching in router might work improperly in combination with 1461non-negative patterns. 1462</para> 1463</change> 1464 1465<change type="bugfix"> 1466<para> 1467Java Spring applications failed to run; the bug had appeared in 1.10.0. 1468</para> 1469</change> 1470 1471<change type="bugfix"> 1472<para> 1473PHP 7.4 was broken if it was built with thread safety enabled. 1474</para> 1475</change> 1476 1477<change type="bugfix"> 1478<para> 1479compatibility issues with some Python applications. 1480</para> 1481</change> 1482 1483</changes> 1484 1485 1486<changes apply="unit-php 1487 unit-python unit-python2.7 1488 unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7 1489 unit-python3.8 1490 unit-go 1491 unit-perl 1492 unit-ruby 1493 unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11" 1494 ver="1.15.0" rev="1" 1495 date="2020-02-06" time="18:00:00 +0300" 1496 packager="Andrei Belov <defan@nginx.com>"> 1497 1498<change> 1499<para> 1500NGINX Unit updated to 1.15.0. 1501</para> 1502</change> 1503 1504</changes> 1505 1506 1507<changes apply="unit" ver="1.15.0" rev="1" 1508 date="2020-02-06" time="18:00:00 +0300" 1509 packager="Andrei Belov <defan@nginx.com>"> 1510 1511<change type="change"> 1512<para> 1513extensions of dynamically requested PHP scripts were restricted to ".php". 1514</para> 1515</change> 1516 1517<change type="feature"> 1518<para> 1519compatibility with Ruby 2.7. 1520</para> 1521</change> 1522 1523<change type="bugfix"> 1524<para> 1525segmentation fault might have occurred in the router process with multiple 1526application processes under load; the bug had appeared in 1.14.0. 1527</para> 1528</change> 1529 1530<change type="bugfix"> 1531<para> 1532receiving request body over TLS connection might have stalled. 1533</para> 1534</change> 1535 1536</changes> 1537 1538 1539<changes apply="unit-php 1540 unit-python unit-python2.7 1541 unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7 1542 unit-python3.8 1543 unit-go 1544 unit-perl 1545 unit-ruby 1546 unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11" 1547 ver="1.14.0" rev="1" 1548 date="2019-12-26" time="18:00:00 +0300" 1549 packager="Andrei Belov <defan@nginx.com>"> 1550 1551<change> 1552<para> 1553NGINX Unit updated to 1.14.0. 1554</para> 1555</change> 1556 1557</changes> 1558 1559 1560<changes apply="unit" ver="1.14.0" rev="1" 1561 date="2019-12-26" time="18:00:00 +0300" 1562 packager="Andrei Belov <defan@nginx.com>"> 1563 1564<change type="change"> 1565<para> 1566the Go package import name changed to "unit.nginx.org/go". 1567</para> 1568</change> 1569 1570<change type="change"> 1571<para> 1572Go package now links to libunit instead of including library sources. 1573</para> 1574</change> 1575 1576<change type="feature"> 1577<para> 1578ability to change user and group for isolated applications when Unit daemon 1579runs as an unprivileged user. 1580</para> 1581</change> 1582 1583<change type="feature"> 1584<para> 1585request routing by source and destination addresses and ports. 1586</para> 1587</change> 1588 1589<change type="bugfix"> 1590<para> 1591memory bloat on large responses. 1592</para> 1593</change> 1594 1595</changes> 1596 1597 1598<changes apply="unit-go1.13" ver="1.13.0" rev="1" 1599 date="2019-11-20" time="09:00:00 +0300" 1600 packager="Andrei Belov <defan@nginx.com>"> 1601 1602<change> 1603<para> 1604Initial release of Go 1.13 module for NGINX Unit. 1605</para> 1606</change> 1607 1608</changes> 1609 1610 1611<changes apply="unit-go1.12" ver="1.13.0" rev="1" 1612 date="2019-11-20" time="09:00:00 +0300" 1613 packager="Andrei Belov <defan@nginx.com>"> 1614 1615<change> 1616<para> 1617Initial release of Go 1.12 module for NGINX Unit. 1618</para> 1619</change> 1620 1621</changes> 1622 1623 1624<changes apply="unit-python3.8" ver="1.13.0" rev="1" 1625 date="2019-11-18" time="14:20:00 +0300" 1626 packager="Andrei Belov <defan@nginx.com>"> 1627 1628<change> 1629<para> 1630Initial release of Python 3.8 module for NGINX Unit. 1631</para> 1632</change> 1633 1634</changes> 1635 1636 1637<changes apply="unit-php 1638 unit-python unit-python2.7 1639 unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7 1640 unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10 unit-go1.11 1641 unit-perl 1642 unit-ruby 1643 unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11" 1644 ver="1.13.0" rev="1" 1645 date="2019-11-14" time="18:00:00 +0300" 1646 packager="Andrei Belov <defan@nginx.com>"> 1647 1648<change> 1649<para> 1650NGINX Unit updated to 1.13.0. 1651</para> 1652</change> 1653 1654</changes> 1655 1656 1657<changes apply="unit" ver="1.13.0" rev="1" 1658 date="2019-11-14" time="18:00:00 +0300" 1659 packager="Andrei Belov <defan@nginx.com>"> 1660 1661<change type="feature"> 1662<para> 1663basic support for HTTP reverse proxying. 1664</para> 1665</change> 1666 1667<change type="feature"> 1668<para> 1669compatibility with Python 3.8. 1670</para> 1671</change> 1672 1673<change type="bugfix"> 1674<para> 1675memory leak in Python application processes when the close handler was used. 1676</para> 1677</change> 1678 1679<change type="bugfix"> 1680<para> 1681threads in Python applications might not work correctly. 1682</para> 1683</change> 1684 1685<change type="bugfix"> 1686<para> 1687Ruby on Rails applications might not work on Ruby 2.6. 1688</para> 1689</change> 1690 1691<change type="bugfix"> 1692<para> 1693backtraces for uncaught exceptions in Python 3 might be logged with significant 1694delays. 1695</para> 1696</change> 1697 1698<change type="bugfix"> 1699<para> 1700explicit setting a namespaces isolation option to false might have enabled it. 1701</para> 1702</change> 1703 1704</changes> 1705 1706 1707<changes apply="unit-php 1708 unit-python unit-python2.7 1709 unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7 1710 unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10 unit-go1.11 1711 unit-perl 1712 unit-ruby 1713 unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11" 1714 ver="1.12.0" rev="1" 1715 date="2019-10-03" time="18:00:00 +0300" 1716 packager="Andrei Belov <defan@nginx.com>"> 1717 1718<change> 1719<para> 1720NGINX Unit updated to 1.12.0. 1721</para> 1722</change> 1723 1724</changes> 1725 1726 1727<changes apply="unit" ver="1.12.0" rev="1" 1728 date="2019-10-03" time="18:00:00 +0300" 1729 packager="Andrei Belov <defan@nginx.com>"> 1730 1731<change type="feature"> 1732<para> 1733compatibility with PHP 7.4. 1734</para> 1735</change> 1736 1737<change type="bugfix"> 1738<para> 1739descriptors leak on process creation; the bug had appeared in 1.11.0. 1740</para> 1741</change> 1742 1743<change type="bugfix"> 1744<para> 1745TLS connection might be closed prematurely while sending response. 1746</para> 1747</change> 1748 1749<change type="bugfix"> 1750<para> 1751segmentation fault might have occurred if an irregular file was requested. 1752</para> 1753</change> 1754 1755</changes> 1756 1757 1758 1759<changes apply="unit-php 1760 unit-python unit-python2.7 1761 unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7 1762 unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10 unit-go1.11 1763 unit-perl 1764 unit-ruby 1765 unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11" 1766 ver="1.11.0" rev="1" 1767 date="2019-09-19" time="18:00:00 +0300" 1768 packager="Konstantin Pavlov <thresh@nginx.com>"> 1769 1770<change> 1771<para> 1772NGINX Unit updated to 1.11.0. 1773</para> 1774</change> 1775 1776</changes> 1777 1778 1779<changes apply="unit" ver="1.11.0" rev="1" 1780 date="2019-09-19" time="18:00:00 +0300" 1781 packager="Konstantin Pavlov <thresh@nginx.com>"> 1782 1783<change type="feature"> 1784<para> 1785basic support for serving static files. 1786</para> 1787</change> 1788 1789<change type="feature"> 1790<para> 1791isolation of application processes with Linux namespaces. 1792</para> 1793</change> 1794 1795<change type="feature"> 1796<para> 1797built-in WebSocket server implementation for Java Servlet Containers. 1798</para> 1799</change> 1800 1801<change type="feature"> 1802<para> 1803direct addressing of API configuration options containing slashes "/" 1804using URI encoding (%2F). 1805</para> 1806</change> 1807 1808<change type="bugfix"> 1809<para> 1810segmentation fault might have occurred in Go applications under high load. 1811</para> 1812</change> 1813 1814<change type="bugfix"> 1815<para> 1816WebSocket support was broken if Unit was built with some linkers other than 1817GNU ld (e.g. gold or LLD). 1818</para> 1819</change> 1820 1821</changes> 1822 1823 1824<changes apply="unit 1825 unit-php 1826 unit-python unit-python2.7 1827 unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7 1828 unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10 unit-go1.11 1829 unit-perl 1830 unit-ruby 1831 unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11" 1832 ver="1.10.0" rev="2" 1833 date="2019-08-23" time="12:00:00 +0300" 1834 packager="Andrei Belov <defan@nginx.com>"> 1835 1836<change type="bugfix"> 1837<para> 1838missed header files added to unit development package. 1839</para> 1840</change> 1841 1842</changes> 1843 1844 1845<changes apply="unit-php 1846 unit-python unit-python2.7 1847 unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7 1848 unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10 unit-go1.11 1849 unit-perl 1850 unit-ruby 1851 unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11" 1852 ver="1.10.0" rev="1" 1853 date="2019-08-22" time="18:00:00 +0300" 1854 packager="Andrei Belov <defan@nginx.com>"> 1855 1856<change> 1857<para> 1858NGINX Unit updated to 1.10.0. 1859</para> 1860</change> 1861 1862</changes> 1863 1864 1865<changes apply="unit" ver="1.10.0" rev="1" 1866 date="2019-08-22" time="18:00:00 +0300" 1867 packager="Andrei Belov <defan@nginx.com>"> 1868 1869<change type="change"> 1870<para> 1871matching of cookies in routes made case sensitive. 1872</para> 1873</change> 1874 1875<change type="change"> 1876<para> 1877decreased log level of common errors when clients close connections. 1878</para> 1879</change> 1880 1881<change type="change"> 1882<para> 1883removed the Perl module's "--include=" ./configure option. 1884</para> 1885</change> 1886 1887<change type="feature"> 1888<para> 1889built-in WebSocket server implementation for Node.js module. 1890</para> 1891</change> 1892 1893<change type="feature"> 1894<para> 1895splitting PATH_INFO from request URI in PHP module. 1896</para> 1897</change> 1898 1899<change type="feature"> 1900<para> 1901request routing by scheme (HTTP or HTTPS). 1902</para> 1903</change> 1904 1905<change type="feature"> 1906<para> 1907support for multipart requests body in Java module. 1908</para> 1909</change> 1910 1911<change type="feature"> 1912<para> 1913improved API compatibility with Node.js 11.10 or later. 1914</para> 1915</change> 1916 1917<change type="bugfix"> 1918<para> 1919reconfiguration failed if "listeners" or "applications" objects were missing. 1920</para> 1921</change> 1922 1923<change type="bugfix"> 1924<para> 1925applying a large configuration might have failed. 1926</para> 1927</change> 1928 1929</changes> 1930 1931 1932<changes apply="unit-go1.11" ver="1.9.0" rev="1" 1933 date="2019-05-30" time="18:00:00 +0300" 1934 packager="Andrei Belov <defan@nginx.com>"> 1935 1936<change> 1937<para> 1938Initial release of Go 1.11 module for NGINX Unit. 1939</para> 1940</change> 1941 1942</changes> 1943 1944 1945<changes apply="unit-php 1946 unit-python unit-python2.7 1947 unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7 1948 unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10 1949 unit-perl 1950 unit-ruby 1951 unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11" 1952 ver="1.9.0" rev="1" 1953 date="2019-05-30" time="18:00:00 +0300" 1954 packager="Andrei Belov <defan@nginx.com>"> 1955 1956<change> 1957<para> 1958NGINX Unit updated to 1.9.0. 1959</para> 1960</change> 1961 1962</changes> 1963 1964 1965<changes apply="unit" ver="1.9.0" rev="1" 1966 date="2019-05-30" time="18:00:00 +0300" 1967 packager="Andrei Belov <defan@nginx.com>"> 1968 1969<change type="feature"> 1970<para> 1971request routing by arguments, headers, and cookies. 1972</para> 1973</change> 1974 1975<change type="feature"> 1976<para> 1977route matching patterns allow a wildcard in the middle. 1978</para> 1979</change> 1980 1981<change type="feature"> 1982<para> 1983POST operation for appending elements to arrays in configuration. 1984</para> 1985</change> 1986 1987<change type="feature"> 1988<para> 1989support for changing credentials using CAP_SETUID and CAP_SETGID capabilities 1990on Linux without running main process as privileged user. 1991</para> 1992</change> 1993 1994<change type="bugfix"> 1995<para> 1996memory leak in the router process might have happened when a client 1997prematurely closed the connection. 1998</para> 1999</change> 2000 2001<change type="bugfix"> 2002<para> 2003applying a large configuration might have failed. 2004</para> 2005</change> 2006 2007<change type="bugfix"> 2008<para> 2009PUT and DELETE operations on array elements in configuration did not work. 2010</para> 2011</change> 2012 2013<change type="bugfix"> 2014<para> 2015request schema in applications did not reflect TLS connections. 2016</para> 2017</change> 2018 2019<change type="bugfix"> 2020<para> 2021restored compatibility with Node.js applications that use 2022ServerResponse._implicitHeader() function; the bug had appeared in 1.7. 2023</para> 2024</change> 2025 2026<change type="bugfix"> 2027<para> 2028various compatibility issues with Node.js applications. 2029</para> 2030</change> 2031 2032</changes> 2033 2034 2035<changes apply="unit-jsc-common" ver="1.8.0" rev="1" 2036 date="2019-03-01" time="18:00:00 +0300" 2037 packager="Andrei Belov <defan@nginx.com>"> 2038 2039<change> 2040<para> 2041Initial release of Java common packages for NGINX Unit. 2042</para> 2043</change> 2044 2045</changes> 2046 2047 2048<changes apply="unit-jsc8" ver="1.8.0" rev="1" 2049 date="2019-03-01" time="18:00:00 +0300" 2050 packager="Andrei Belov <defan@nginx.com>"> 2051 2052<change> 2053<para> 2054Initial release of Java 8 module for NGINX Unit. 2055</para> 2056</change> 2057 2058</changes> 2059 2060 2061<changes apply="unit-jsc10" ver="1.8.0" rev="1" 2062 date="2019-03-01" time="18:00:00 +0300" 2063 packager="Andrei Belov <defan@nginx.com>"> 2064 2065<change> 2066<para> 2067Initial release of Java 10 module for NGINX Unit. 2068</para> 2069</change> 2070 2071</changes> 2072 2073 2074<changes apply="unit-jsc11" ver="1.8.0" rev="1" 2075 date="2019-03-01" time="18:00:00 +0300" 2076 packager="Andrei Belov <defan@nginx.com>"> 2077 2078<change> 2079<para> 2080Initial release of Java 11 module for NGINX Unit. 2081</para> 2082</change> 2083 2084</changes> 2085 2086 2087<changes apply="unit-php 2088 unit-python unit-python2.7 2089 unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7 2090 unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10 2091 unit-perl 2092 unit-ruby" 2093 ver="1.8.0" rev="1" 2094 date="2019-03-01" time="18:00:00 +0300" 2095 packager="Andrei Belov <defan@nginx.com>"> 2096 2097<change> 2098<para> 2099NGINX Unit updated to 1.8.0. 2100</para> 2101</change> 2102 2103</changes> 2104 2105 2106<changes apply="unit" ver="1.8.0" rev="1" 2107 date="2019-03-01" time="18:00:00 +0300" 2108 packager="Andrei Belov <defan@nginx.com>"> 2109 2110<change type="change"> 2111<para> 2112now three numbers are always used for versioning: major, minor, 2113and patch versions. 2114</para> 2115</change> 2116 2117<change type="change"> 2118<para> 2119now QUERY_STRING is always defined even if the request does not include 2120the query component. 2121</para> 2122</change> 2123 2124<change type="feature"> 2125<para> 2126basic internal request routing by Host, URI, and method. 2127</para> 2128</change> 2129 2130<change type="feature"> 2131<para> 2132experimental support for Java Servlet Containers. 2133</para> 2134</change> 2135 2136<change type="bugfix"> 2137<para> 2138segmentation fault might have occurred in the router process. 2139</para> 2140</change> 2141 2142<change type="bugfix"> 2143<para> 2144various potential memory leaks. 2145</para> 2146</change> 2147 2148<change type="bugfix"> 2149<para> 2150TLS connections might have stalled. 2151</para> 2152</change> 2153 2154<change type="bugfix"> 2155<para> 2156some Perl applications might have failed to send the response body. 2157</para> 2158</change> 2159 2160<change type="bugfix"> 2161<para> 2162some compilers with specific flags might have produced non-functioning builds; 2163the bug had appeared in 1.5. 2164</para> 2165</change> 2166 2167<change type="bugfix"> 2168<para> 2169Node.js package had wrong version number when installed from sources. 2170</para> 2171</change> 2172 2173</changes> 2174 2175 2176<changes apply="unit-php 2177 unit-python unit-python2.7 2178 unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7 2179 unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10 2180 unit-perl 2181 unit-ruby" 2182 ver="1.7.1" rev="1" 2183 date="2019-02-07" time="18:00:00 +0300" 2184 packager="Andrei Belov <defan@nginx.com>"> 2185 2186<change> 2187<para> 2188NGINX Unit updated to 1.7.1. 2189</para> 2190</change> 2191 2192</changes> 2193 2194 2195<changes apply="unit" ver="1.7.1" rev="1" 2196 date="2019-02-07" time="18:00:00 +0300" 2197 packager="Andrei Belov <defan@nginx.com>"> 2198 2199<change type="security"> 2200<para> 2201a heap memory buffer overflow might have been caused in the router process by 2202a specially crafted request, potentially resulting in a segmentation fault or 2203other unspecified behavior (CVE-2019-7401). 2204</para> 2205</change> 2206 2207<change type="bugfix"> 2208<para> 2209install of Go module failed without prior building of Unit daemon; 2210the bug had appeared in 1.7. 2211</para> 2212</change> 2213 2214</changes> 2215 2216 2217<changes apply="unit-python3.7" ver="1.7" rev="1" 2218 date="2018-12-25" time="10:30:00 +0300" 2219 packager="Andrei Belov <defan@nginx.com>"> 2220 2221<change> 2222<para> 2223Initial release of Python 3.7 module for NGINX Unit. 2224</para> 2225</change> 2226 2227</changes> 2228 2229 2230<changes apply="unit-php 2231 unit-python unit-python2.7 2232 unit-python3.4 unit-python3.5 unit-python3.6 2233 unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10 2234 unit-perl 2235 unit-ruby" 2236 ver="1.7" rev="1" 2237 date="2018-12-20" time="18:00:00 +0300" 2238 packager="Andrei Belov <defan@nginx.com>"> 2239 2240<change> 2241<para> 2242NGINX Unit updated to 1.7. 2243</para> 2244</change> 2245 2246</changes> 2247 2248 2249<changes apply="unit" ver="1.7" rev="1" 2250 date="2018-12-20" time="18:00:00 +0300" 2251 packager="Andrei Belov <defan@nginx.com>"> 2252 2253<change type="change"> 2254<para> 2255now rpath is set in Ruby module only if the library was not found in default 2256search paths; this allows to meet packaging restrictions on some systems. 2257</para> 2258</change> 2259 2260<change type="bugfix"> 2261<para> 2262"disable_functions" and "disable_classes" PHP options set via Control API 2263did not work. 2264</para> 2265</change> 2266 2267<change type="bugfix"> 2268<para> 2269Promises on request data in Node.js were not triggered. 2270</para> 2271</change> 2272 2273<change type="bugfix"> 2274<para> 2275various compatibility issues with Node.js applications. 2276</para> 2277</change> 2278 2279<change type="bugfix"> 2280<para> 2281a segmentation fault occurred in Node.js module if application tried to read 2282request body after request.end() was called. 2283</para> 2284</change> 2285 2286<change type="bugfix"> 2287<para> 2288a segmentation fault occurred in Node.js module if application attempted to 2289send header twice. 2290</para> 2291</change> 2292 2293<change type="bugfix"> 2294<para> 2295names of response header fields in Node.js module were erroneously treated as 2296case-sensitive. 2297</para> 2298</change> 2299 2300<change type="bugfix"> 2301<para> 2302uncatched exceptions in Node.js were not logged. 2303</para> 2304</change> 2305 2306<change type="bugfix"> 2307<para> 2308global install of Node.js module from sources was broken on some systems; 2309the bug had appeared in 1.6. 2310</para> 2311</change> 2312 2313<change type="bugfix"> 2314<para> 2315traceback for exceptions during initialization of Python applications might not 2316be logged. 2317</para> 2318</change> 2319 2320<change type="bugfix"> 2321<para> 2322PHP module build failed if PHP interpreter was built with thread safety 2323enabled. 2324</para> 2325</change> 2326 2327</changes> 2328 2329 2330<changes apply="unit-php 2331 unit-python unit-python2.7 2332 unit-python3.4 unit-python3.5 unit-python3.6 2333 unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10 2334 unit-perl 2335 unit-ruby" 2336 ver="1.6" rev="1" 2337 date="2018-11-15" time="18:00:00 +0300" 2338 packager="Konstantin Pavlov <thresh@nginx.com>"> 2339 2340<change> 2341<para> 2342NGINX Unit updated to 1.6. 2343</para> 2344</change> 2345 2346</changes> 2347 2348 2349<changes apply="unit" ver="1.6" rev="1" 2350 date="2018-11-15" time="18:00:00 +0300" 2351 packager="Konstantin Pavlov <thresh@nginx.com>"> 2352 2353<change type="change"> 2354<para> 2355"make install" now installs Node.js module as well if it was configured. 2356</para> 2357</change> 2358 2359<change type="feature"> 2360<para> 2361"--local" ./configure option to install Node.js module locally. 2362</para> 2363</change> 2364 2365<change type="bugfix"> 2366<para> 2367Node.js module might have crashed due to broken reference counting. 2368</para> 2369</change> 2370 2371<change type="bugfix"> 2372<para> 2373asynchronous operations in Node.js might not have worked. 2374</para> 2375</change> 2376 2377<change type="bugfix"> 2378<para> 2379various compatibility issues with Node.js applications. 2380</para> 2381</change> 2382 2383<change type="bugfix"> 2384<para> 2385"freed pointer is out of pool" alerts might have appeared in log. 2386</para> 2387</change> 2388 2389<change type="bugfix"> 2390<para> 2391module discovery did not work on 64-bit big-endian systems like IBM/S390x. 2392</para> 2393</change> 2394 2395</changes> 2396 2397 2398<changes apply="unit-php 2399 unit-python unit-python2.7 2400 unit-python3.4 unit-python3.5 unit-python3.6 2401 unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10 2402 unit-perl 2403 unit-ruby" 2404 ver="1.5" rev="1" 2405 date="2018-10-25" time="18:00:00 +0300" 2406 packager="Andrei Belov <defan@nginx.com>"> 2407 2408<change> 2409<para> 2410NGINX Unit updated to 1.5. 2411</para> 2412</change> 2413 2414</changes> 2415 2416 2417<changes apply="unit" ver="1.5" rev="1" 2418 date="2018-10-25" time="18:00:00 +0300" 2419 packager="Andrei Belov <defan@nginx.com>"> 2420 2421<change type="change"> 2422<para> 2423the "type" of application object for Go was changed to "external". 2424</para> 2425</change> 2426 2427<change type="feature"> 2428<para> 2429initial version of Node.js package with basic HTTP request-response support. 2430</para> 2431</change> 2432 2433<change type="feature"> 2434<para> 2435compatibility with LibreSSL. 2436</para> 2437</change> 2438 2439<change type="feature"> 2440<para> 2441--libdir and --incdir ./configure options to install libunit headers 2442and static library. 2443</para> 2444</change> 2445 2446<change type="bugfix"> 2447<para> 2448connection might be closed prematurely while sending response; 2449the bug had appeared in 1.3. 2450</para> 2451</change> 2452 2453<change type="bugfix"> 2454<para> 2455application processes might have stopped handling requests, producing 2456"last message send failed: Resource temporarily unavailable" alerts in log; 2457the bug had appeared in 1.4. 2458</para> 2459</change> 2460 2461<change type="bugfix"> 2462<para> 2463Go applications did not work when Unit was built with musl C library. 2464</para> 2465</change> 2466 2467</changes> 2468 2469 2470<changes apply="unit-php 2471 unit-python unit-python2.7 2472 unit-python3.4 unit-python3.5 unit-python3.6 2473 unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10 2474 unit-perl 2475 unit-ruby" 2476 ver="1.4" rev="2" 2477 date="2018-09-27" time="13:30:00 +0300" 2478 packager="Andrei Belov <defan@nginx.com>"> 2479 2480<change type="bugfix"> 2481<para> 2482corrected instructions for launching sample application. 2483</para> 2484</change> 2485 2486</changes> 2487 2488 2489<changes apply="unit" ver="1.4" rev="2" 2490 date="2018-09-27" time="13:30:00 +0300" 2491 packager="Andrei Belov <defan@nginx.com>"> 2492 2493<change type="change"> 2494<para> 2495the "saveconfig" and "loadconfig" action scripts were removed. 2496</para> 2497</change> 2498 2499</changes> 2500 2501 2502<changes apply="unit-php 2503 unit-python unit-python2.7 2504 unit-python3.4 unit-python3.5 unit-python3.6 2505 unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10 2506 unit-perl 2507 unit-ruby" 2508 ver="1.4" rev="1" 2509 date="2018-09-20" time="18:00:00 +0300" 2510 packager="Andrei Belov <defan@nginx.com>"> 2511 2512<change> 2513<para> 2514NGINX Unit updated to 1.4. 2515</para> 2516</change> 2517 2518</changes> 2519 2520 2521<changes apply="unit" ver="1.4" rev="1" 2522 date="2018-09-20" time="18:00:00 +0300" 2523 packager="Andrei Belov <defan@nginx.com>"> 2524 2525<change type="change"> 2526<para> 2527the control API maps the configuration object only at "/config/". 2528</para> 2529</change> 2530 2531<change type="feature"> 2532<para> 2533TLS support for client connections. 2534</para> 2535</change> 2536 2537<change type="feature"> 2538<para> 2539TLS certificates storage control API. 2540</para> 2541</change> 2542 2543<change type="feature"> 2544<para> 2545Unit library (libunit) to streamline language module integration. 2546</para> 2547</change> 2548 2549<change type="feature"> 2550<para> 2551"408 Request Timeout" responses while closing HTTP keep-alive connections. 2552</para> 2553</change> 2554 2555<change type="feature"> 2556<para> 2557improvements in OpenBSD support. 2558Thanks to David Carlier. 2559</para> 2560</change> 2561 2562<change type="bugfix"> 2563<para> 2564a segmentation fault might have occurred after reconfiguration. 2565</para> 2566</change> 2567 2568<change type="bugfix"> 2569<para> 2570building on systems with non-default locale might be broken. 2571</para> 2572</change> 2573 2574<change type="bugfix"> 2575<para> 2576"header_read_timeout" might not work properly. 2577</para> 2578</change> 2579 2580<change type="bugfix"> 2581<para> 2582header fields values with non-ASCII bytes might be handled incorrectly 2583in Python 3 module. 2584</para> 2585</change> 2586 2587</changes> 2588 2589 2590<changes apply="unit-php 2591 unit-python unit-python2.7 2592 unit-python3.4 unit-python3.5 unit-python3.6 2593 unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10 2594 unit-perl 2595 unit-ruby" 2596 ver="1.3" rev="1" 2597 date="2018-07-13" time="18:00:00 +0300" 2598 packager="Konstantin Pavlov <thresh@nginx.com>"> 2599 2600<change> 2601<para> 2602NGINX Unit updated to 1.3. 2603</para> 2604</change> 2605 2606</changes> 2607 2608 2609<changes apply="unit" ver="1.3" rev="1" 2610 date="2018-07-13" time="18:00:00 +0300" 2611 packager="Konstantin Pavlov <thresh@nginx.com>"> 2612 2613<change type="change"> 2614<para> 2615UTF-8 characters are now allowed in request header field values. 2616</para> 2617</change> 2618 2619<change type="feature"> 2620<para> 2621configuration of the request body size limit. 2622</para> 2623</change> 2624 2625<change type="feature"> 2626<para> 2627configuration of various HTTP connection timeouts. 2628</para> 2629</change> 2630 2631<change type="feature"> 2632<para> 2633Ruby module now automatically uses Bundler where possible. 2634</para> 2635</change> 2636 2637<change type="feature"> 2638<para> 2639http.Flusher interface in Go module. 2640</para> 2641</change> 2642 2643<change type="bugfix"> 2644<para> 2645various issues in HTTP connection errors handling. 2646</para> 2647</change> 2648 2649<change type="bugfix"> 2650<para> 2651requests with body data might be handled incorrectly in PHP module. 2652</para> 2653</change> 2654 2655<change type="bugfix"> 2656<para> 2657individual PHP configuration options specified via control API were reset 2658to previous values after the first request in application process. 2659</para> 2660</change> 2661 2662</changes> 2663 2664 2665<changes apply="unit-php 2666 unit-python unit-python2.7 2667 unit-python3.4 unit-python3.5 unit-python3.6 2668 unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10 2669 unit-perl 2670 unit-ruby" 2671 ver="1.2" rev="1" 2672 date="2018-06-07" time="18:00:00 +0300" 2673 packager="Andrei Belov <defan@nginx.com>"> 2674 2675<change> 2676<para> 2677NGINX Unit updated to 1.2. 2678</para> 2679</change> 2680 2681</changes> 2682 2683 2684<changes apply="unit" ver="1.2" rev="1" 2685 date="2018-06-07" time="18:00:00 +0300" 2686 packager="Andrei Belov <defan@nginx.com>"> 2687 2688<change type="feature"> 2689<para> 2690configuration of environment variables for application processes. 2691</para> 2692</change> 2693 2694<change type="feature"> 2695<para> 2696customization of php.ini path. 2697</para> 2698</change> 2699 2700<change type="feature"> 2701<para> 2702setting of individual PHP configuration options. 2703</para> 2704</change> 2705 2706<change type="feature"> 2707<para> 2708configuration of execution arguments for Go applications. 2709</para> 2710</change> 2711 2712<change type="bugfix"> 2713<para> 2714keep-alive connections might hang after reconfiguration. 2715</para> 2716</change> 2717 2718</changes> 2719 2720 2721<changes apply="unit-go1.10" ver="1.1" rev="1" 2722 date="2018-05-14" time="18:00:00 +0300" 2723 packager="Andrei Belov <defan@nginx.com>"> 2724 2725<change> 2726<para> 2727Initial release of Go 1.10 module for NGINX Unit. 2728</para> 2729</change> 2730 2731</changes> 2732 2733 2734<changes apply="unit-php 2735 unit-python unit-python2.7 2736 unit-python3.4 unit-python3.5 unit-python3.6 2737 unit-go unit-go1.7 unit-go1.8 unit-go1.9 2738 unit-perl 2739 unit-ruby" 2740 ver="1.1" rev="1" 2741 date="2018-04-26" time="18:00:00 +0300" 2742 packager="Andrei Belov <defan@nginx.com>"> 2743 2744<change> 2745<para> 2746NGINX Unit updated to 1.1. 2747</para> 2748</change> 2749 2750</changes> 2751 2752 2753<changes apply="unit" ver="1.1" rev="1" 2754 date="2018-04-26" time="18:00:00 +0300" 2755 packager="Andrei Belov <defan@nginx.com>"> 2756 2757<change type="bugfix"> 2758<para> 2759Python applications that use the write() callable did not work. 2760</para> 2761</change> 2762 2763<change type="bugfix"> 2764<para> 2765virtual environments created with Python 3.3 or above might not have worked. 2766</para> 2767</change> 2768 2769<change type="bugfix"> 2770<para> 2771the request.Read() function in Go applications did not produce EOF 2772when the whole body was read. 2773</para> 2774</change> 2775 2776<change type="bugfix"> 2777<para> 2778a segmentation fault might have occurred while access log reopening. 2779</para> 2780</change> 2781 2782<change type="bugfix"> 2783<para> 2784in parsing of IPv6 control socket addresses. 2785</para> 2786</change> 2787 2788<change type="bugfix"> 2789<para> 2790loading of application modules was broken on OpenBSD. 2791</para> 2792</change> 2793 2794<change type="bugfix"> 2795<para> 2796a segmentation fault might have occurred when there were two modules 2797with the same type and version; the bug had appeared in 1.0. 2798</para> 2799</change> 2800 2801<change type="bugfix"> 2802<para> 2803alerts "freed pointer points to non-freeble page" might have appeared in log 2804on 32-bit platforms. 2805</para> 2806</change> 2807 2808</changes> 2809 2810 2811<changes apply="unit-php 2812 unit-python unit-python2.7 2813 unit-python3.4 unit-python3.5 unit-python3.6 2814 unit-go unit-go1.7 unit-go1.8 unit-go1.9 2815 unit-perl 2816 unit-ruby" 2817 ver="1.0" rev="1" 2818 date="2018-04-12" time="18:00:00 +0300" 2819 packager="Andrei Belov <defan@nginx.com>"> 2820 2821<change> 2822<para> 2823NGINX Unit updated to 1.0. 2824</para> 2825</change> 2826 2827</changes> 2828 2829 2830<changes apply="unit" ver="1.0" rev="1" 2831 date="2018-04-12" time="18:00:00 +0300" 2832 packager="Andrei Belov <defan@nginx.com>"> 2833 2834<change type="change"> 2835<para> 2836configuration object moved into "/config/" path. 2837</para> 2838</change> 2839 2840<change type="feature"> 2841<para> 2842basic access logging. 2843</para> 2844</change> 2845 2846<change type="bugfix"> 2847<para> 2848503 error occurred if Go application did not write response header or body. 2849</para> 2850</change> 2851 2852<change type="bugfix"> 2853<para> 2854Ruby applications that use encoding conversions might not have worked. 2855</para> 2856</change> 2857 2858<change type="bugfix"> 2859<para> 2860various stability issues. 2861</para> 2862</change> 2863 2864</changes> 2865 2866 2867<changes apply="unit-php 2868 unit-python unit-python2.7 2869 unit-python3.4 unit-python3.5 unit-python3.6 2870 unit-go unit-go1.7 unit-go1.8 unit-go1.9 2871 unit-perl" 2872 ver="0.7" rev="1" 2873 date="2018-03-22" time="18:00:00 +0300" 2874 packager="Andrei Belov <defan@nginx.com>"> 2875 2876<change> 2877<para> 2878NGINX Unit updated to 0.7. 2879</para> 2880</change> 2881 2882</changes> 2883 2884 2885<changes apply="unit-ruby" ver="0.7" rev="1" 2886 date="2018-04-02" time="15:40:00 +0300" 2887 packager="Andrei Belov <defan@nginx.com>"> 2888 2889<change> 2890<para> 2891Initial release of Ruby module for NGINX Unit. 2892</para> 2893</change> 2894 2895</changes> 2896 2897 2898<changes apply="unit" ver="0.7" rev="1" 2899 date="2018-03-22" time="18:00:00 +0300" 2900 packager="Andrei Belov <defan@nginx.com>"> 2901 2902<change type="feature"> 2903<para> 2904Ruby application module. 2905</para> 2906</change> 2907 2908<change type="bugfix"> 2909<para> 2910in discovering modules. 2911</para> 2912</change> 2913 2914<change type="bugfix"> 2915<para> 2916various race conditions on reconfiguration and during shutting down. 2917</para> 2918</change> 2919 2920<change type="bugfix"> 2921<para> 2922tabs and trailing spaces were not allowed in header fields values. 2923</para> 2924</change> 2925 2926<change type="bugfix"> 2927<para> 2928a segmentation fault occurred in Python module if start_response() was called 2929outside of WSGI callable. 2930</para> 2931</change> 2932 2933<change type="bugfix"> 2934<para> 2935a segmentation fault might have occurred in PHP module if there was an error 2936while initialization. 2937</para> 2938</change> 2939 2940</changes> 2941 2942 2943<changes apply="unit-php 2944 unit-python unit-python2.7 2945 unit-python3.4 unit-python3.5 unit-python3.6 2946 unit-go unit-go1.7 unit-go1.8 unit-go1.9 2947 unit-perl" 2948 ver="0.6" rev="1" 2949 date="2018-02-09" time="18:00:00 +0300" 2950 packager="Andrei Belov <defan@nginx.com>"> 2951 2952<change> 2953<para> 2954NGINX Unit updated to 0.6. 2955</para> 2956</change> 2957 2958</changes> 2959 2960 2961<changes apply="unit" ver="0.6" rev="1" 2962 date="2018-02-09" time="18:00:00 +0300" 2963 packager="Andrei Belov <defan@nginx.com>"> 2964 2965<change type="bugfix"> 2966<para> 2967the main process died when the "type" application option contained version; 2968the bug had appeared in 0.5. 2969</para> 2970</change> 2971 2972</changes> 2973 2974 2975<changes apply="unit-php 2976 unit-python unit-python2.7 2977 unit-python3.4 unit-python3.5 unit-python3.6 2978 unit-go unit-go1.7 unit-go1.8 unit-go1.9" 2979 ver="0.5" rev="1" 2980 date="2018-02-08" time="18:00:00 +0300" 2981 packager="Andrei Belov <defan@nginx.com>"> 2982 2983<change> 2984<para> 2985NGINX Unit updated to 0.5. 2986</para> 2987</change> 2988 2989</changes> 2990 2991 2992<changes apply="unit-perl" ver="0.5" rev="1" 2993 date="2018-02-08" time="18:00:00 +0300" 2994 packager="Andrei Belov <defan@nginx.com>"> 2995 2996<change> 2997<para> 2998Initial release of Perl module for NGINX Unit. 2999</para> 3000</change> 3001 3002</changes> 3003 3004 3005<changes apply="unit" ver="0.5" rev="1" 3006 date="2018-02-08" time="18:00:00 +0300" 3007 packager="Andrei Belov <defan@nginx.com>"> 3008 3009<change type="change"> 3010<para> 3011the "workers" application option was removed, the "processes" 3012application option should be used instead. 3013</para> 3014</change> 3015 3016<change type="feature"> 3017<para> 3018the "processes" application option with prefork and dynamic 3019process management support. 3020</para> 3021</change> 3022 3023<change type="feature"> 3024<para> 3025Perl application module. 3026</para> 3027</change> 3028 3029<change type="bugfix"> 3030<para> 3031in reading client request body; the bug had appeared in 0.3. 3032</para> 3033</change> 3034 3035<change type="bugfix"> 3036<para> 3037some Python applications might not have worked due to missing 3038"wsgi.errors" environ variable. 3039</para> 3040</change> 3041 3042<change type="bugfix"> 3043<para> 3044HTTP chunked responses might be encoded incorrectly on 32-bit 3045platforms. 3046</para> 3047</change> 3048 3049<change type="bugfix"> 3050<para> 3051infinite looping in HTTP parser. 3052</para> 3053</change> 3054 3055<change type="bugfix"> 3056<para> 3057segmentation fault in router. 3058</para> 3059</change> 3060 3061</changes> 3062 3063 3064<changes apply="unit-php 3065 unit-python unit-python2.7 3066 unit-python3.4 unit-python3.5 unit-python3.6 3067 unit-go unit-go1.7 unit-go1.8 unit-go1.9" 3068 ver="0.4" rev="1" 3069 date="2018-01-15" time="18:00:00 +0300" 3070 packager="Andrei Belov <defan@nginx.com>"> 3071 3072<change> 3073<para> 3074NGINX Unit updated to 0.4. 3075</para> 3076</change> 3077 3078</changes> 3079 3080 3081<changes apply="unit" ver="0.4" rev="1" 3082 date="2018-01-15" time="18:00:00 +0300" 3083 packager="Andrei Belov <defan@nginx.com>"> 3084 3085<change type="feature"> 3086<para> 3087compatibility with DragonFly BSD. 3088</para> 3089</change> 3090 3091<change type="feature"> 3092<para> 3093"configure php --lib-static" option. 3094</para> 3095</change> 3096 3097<change type="bugfix"> 3098<para> 3099HTTP request body was not passed to application; 3100the bug had appeared in 0.3. 3101</para> 3102</change> 3103 3104<change type="bugfix"> 3105<para> 3106HTTP large header buffers allocation and deallocation fixed; 3107the bug had appeared in 0.3. 3108</para> 3109</change> 3110 3111<change type="bugfix"> 3112<para> 3113some PHP applications might not have worked with relative "root" path. 3114</para> 3115</change> 3116 3117</changes> 3118 3119 3120<changes apply="unit-go1.9" ver="0.3" rev="1" 3121 date="2017-12-28" time="18:00:00 +0300" 3122 packager="Andrei Belov <defan@nginx.com>"> 3123 3124<change> 3125<para> 3126Initial release of Go 1.9 module for NGINX Unit. 3127</para> 3128</change> 3129 3130</changes> 3131 3132 3133<changes apply="unit-python3.6" ver="0.3" rev="1" 3134 date="2017-12-28" time="18:00:00 +0300" 3135 packager="Andrei Belov <defan@nginx.com>"> 3136 3137<change> 3138<para> 3139Initial release of Python 3.6 module for NGINX Unit. 3140</para> 3141</change> 3142 3143</changes> 3144 3145 3146<changes apply="unit-php 3147 unit-python unit-python2.7 unit-python3.4 unit-python3.5 3148 unit-go unit-go1.7 unit-go1.8" 3149 ver="0.3" rev="1" 3150 date="2017-12-28" time="18:00:00 +0300" 3151 packager="Andrei Belov <defan@nginx.com>"> 3152 3153<change> 3154<para> 3155NGINX Unit updated to 0.3. 3156</para> 3157</change> 3158 3159</changes> 3160 3161 3162<changes apply="unit" ver="0.3" rev="1" 3163 date="2017-12-28" time="18:00:00 +0300" 3164 packager="Andrei Belov <defan@nginx.com>"> 3165 3166<change type="change"> 3167<para> 3168the Go package name changed to "nginx/unit". 3169</para> 3170</change> 3171 3172<change type="change"> 3173<para> 3174in the "limits.timeout" application option: application start time and 3175time in queue now are not accounted. 3176</para> 3177</change> 3178 3179<change type="feature"> 3180<para> 3181the "limits.requests" application option. 3182</para> 3183</change> 3184 3185<change type="feature"> 3186<para> 3187application request processing latency optimization. 3188</para> 3189</change> 3190 3191<change type="feature"> 3192<para> 3193HTTP keep-alive connections support. 3194</para> 3195</change> 3196 3197<change type="feature"> 3198<para> 3199the "home" Python virtual environment configuration option. 3200</para> 3201</change> 3202 3203<change type="feature"> 3204<para> 3205Python atexit hook support. 3206</para> 3207</change> 3208 3209<change type="feature"> 3210<para> 3211various Go package improvements. 3212</para> 3213</change> 3214 3215<change type="bugfix"> 3216<para> 3217various crashes fixed. 3218</para> 3219</change> 3220 3221</changes> 3222 3223 3224<changes apply="unit-go" ver="0.2" rev="1" 3225 date="2017-10-19" time="18:00:00 +0300" 3226 packager="Andrei Belov <defan@nginx.com>"> 3227 3228<change> 3229<para> 3230Initial release of Go module for NGINX Unit. 3231</para> 3232</change> 3233 3234</changes> 3235 3236 3237<changes apply="unit-go1.7" ver="0.2" rev="1" 3238 date="2017-10-19" time="18:00:00 +0300" 3239 packager="Andrei Belov <defan@nginx.com>"> 3240 3241<change> 3242<para> 3243Initial release of Go 1.7 module for NGINX Unit. 3244</para> 3245</change> 3246 3247</changes> 3248 3249 3250<changes apply="unit-go1.8" ver="0.2" rev="1" 3251 date="2017-10-19" time="18:00:00 +0300" 3252 packager="Andrei Belov <defan@nginx.com>"> 3253 3254<change> 3255<para> 3256Initial release of Go 1.8 module for NGINX Unit. 3257</para> 3258</change> 3259 3260</changes> 3261 3262 3263<changes apply="unit-python" ver="0.2" rev="1" 3264 date="2017-10-19" time="18:00:00 +0300" 3265 packager="Andrei Belov <defan@nginx.com>"> 3266 3267<change> 3268<para> 3269Initial release of Python module for NGINX Unit. 3270</para> 3271</change> 3272 3273</changes> 3274 3275 3276<changes apply="unit-python2.7" ver="0.2" rev="1" 3277 date="2017-10-19" time="18:00:00 +0300" 3278 packager="Andrei Belov <defan@nginx.com>"> 3279 3280<change> 3281<para> 3282Initial release of Python 2.7 module for NGINX Unit. 3283</para> 3284</change> 3285 3286</changes> 3287 3288 3289<changes apply="unit-python3.4" ver="0.2" rev="1" 3290 date="2017-10-19" time="18:00:00 +0300" 3291 packager="Andrei Belov <defan@nginx.com>"> 3292 3293<change> 3294<para> 3295Initial release of Python 3.4 module for NGINX Unit. 3296</para> 3297</change> 3298 3299</changes> 3300 3301 3302<changes apply="unit-python3.5" ver="0.2" rev="1" 3303 date="2017-10-19" time="18:00:00 +0300" 3304 packager="Andrei Belov <defan@nginx.com>"> 3305 3306<change> 3307<para> 3308Initial release of Python 3.5 module for NGINX Unit. 3309</para> 3310</change> 3311 3312</changes> 3313 3314 3315<changes apply="unit-php" ver="0.2" rev="1" 3316 date="2017-10-19" time="18:00:00 +0300" 3317 packager="Andrei Belov <defan@nginx.com>"> 3318 3319<change> 3320<para> 3321Initial release of PHP module for NGINX Unit. 3322</para> 3323</change> 3324 3325</changes> 3326 3327 3328<changes apply="unit" ver="0.2" rev="1" 3329 date="2017-10-19" time="18:00:00 +0300" 3330 packager="Andrei Belov <defan@nginx.com>"> 3331 3332<change type="feature"> 3333<para> 3334configuration persistence. 3335</para> 3336</change> 3337 3338<change type="feature"> 3339<para> 3340improved handling of configuration errors. 3341</para> 3342</change> 3343 3344<change type="feature"> 3345<para> 3346application "timeout" property. 3347</para> 3348</change> 3349 3350<change type="bugfix"> 3351<para> 3352POST request for PHP were handled incorrectly. 3353</para> 3354</change> 3355 3356<change type="bugfix"> 3357<para> 3358the router exited abnormally if all listeners had been deleted. 3359</para> 3360</change> 3361 3362<change type="bugfix"> 3363<para> 3364the router crashed under load. 3365</para> 3366</change> 3367 3368<change type="bugfix"> 3369<para> 3370memory leak in the router. 3371</para> 3372</change> 3373 3374</changes> 3375 3376 3377<changes apply="unit" ver="0.1" rev="1" 3378 date="2017-09-06" time="19:14:28 +0300" 3379 packager="Andrei Belov <defan@nginx.com>"> 3380 3381<change> 3382<para> 3383First public release. 3384</para> 3385</change> 3386 3387</changes> 3388 3389 3390</change_log> 3391