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