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