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