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