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