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