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