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