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