Changes with Tengine 2.0.0                                       08 Jan 2014

    *) Feature: now DSO module does not need the original source code or
       compiler options when compiling a new module. (monadbobo)

    *) Feature: added support for SPDY v3, and SPDY/HTTP servers can listen on
       the same port. (lilbedwin、chobits)

    *) Feature: added support for setting retries for upstream servers (proxy,
       memcached, fastcgi, scgi, uwsgi). (supertcy)

    *) Feature: now tfs module can report access status to rcs while keepalive.
       (zhcn381)

    *) Feature: now the directive "if" supports ">", "<", ">=", "<=" operators
       for numeric comparison. (flygoast)

    *) Feature: now upstream health check module uses keep-alive connections.
       (lilbedwin)

    *) Feature: now trim module can handle SSI and ESI comments properly.
       (taoyuanyuan)

    *) Feature: now directive "expires_by_types" supports wildcard such as
       "text/*". (zhcn381)

    *) Feature: added variables starting with "$base64_decode_" to encode
       variables in base64. (yzprofile)

    *) Feature: added variables starting with "$md5_encode_" to encode variables
       in md5. (yzprofile)

    *) Feature: added a variable "$time_http" to get the current HTTP time.
       (flygoast)

    *) Feature: added a variable "$full_request" to get the original request
       URL with scheme and host. (yzprofile)

    *) Feature: added variables starting with "$escape_uri_" to escape variables
       into formal URL syntax. (yzprofile)

    *) Feature: added a variable "$raw_uri" to get the original URI without
       arguments. (flygoast)

    *) Feature: added support for logging subrequests in nanoseconds. (jinglong)

    *) Feature: added a new API function to encode URL into base64. (lilbedwin)

    *) Change: merged changes between nginx-1.2.9 and nginx-1.4.4. (cfsego)

    *) Change: now stub_status module does not log subrequests. (jinglong)

    *) Bugfix: fixed a bug in footer module when reading a response with
       a "Content-Encoding" header. (yaoweibin)

    *) Bugfix: fixed a bug when "client_body_postpone_size" is set to 0.
       (yaoweibin)

    *) Bugfix: fixed a compilation warning of Lua module. (diwayou)


Changes with Tengine 1.5.2                                       22 Nov 2013

    *) Security: a character following an unescaped space in a request line
       was handled incorrectly (CVE-2013-4547); the bug had appeared in
       0.8.41.
       Thanks to Ivan Fratric of the Google Security Team.

    *) Bugfix: fix a bug that 'nodelay' might be ignored in limit_req module.
       (cfsego)

    *) Bugfix: fix a bug in trim module when processing JavaScript comment.
       (taoyuanyuan)


Changes with Tengine 1.5.1                                       29 Aug 2013

    *) Feature: added the directive 'retry_cached_connection' which could
       disable unconditional retries with a cached backend connection.
       (yaoweibin)

    *) Feature: added the argument of 'ncpu' to 'sysguard_load' directive.
       (yzprofile)

    *) Bugfix: fixed a bug in referer module that regex rules might be
       invalid with https requests. (lilbedwin)

    *) Bugfix: fixed a bug that the trim module might send a zero-size
       buffer. (taoyuanyuan)

    *) Bugfix: fixed a compile error when using the configure option
       '--without-dso'. (zhuzhaoyuan)

    *) Bugfix: fixed two compile warnings. (zzjin, diwayou)


Changes with Tengine 1.5.0                                       31 Jul 2013

    *) Feature: added ABI compatibility verification for DSO modules.
       (monadbobo)

    *) Feature: added non-buffering request body mechanism. Now the http proxy
       and fastcgi module can send requests to backend servers when it receives
       part of a request body. (yaoweibin)

    *) Feature: added trim module which can remove unnecessary white spaces and
       comments to reduce the size of a page. (taoyuanyuan)

    *) Feature: added the accept filter mechanism which supports to do some
       filter processing after accepting a new connection. (yzprofile)

    *) Feature: Now the server banner in a default error page can be replaced
       by the string specified in server_tag. (zhuzhaoyuan)

    *) Bugfix: fixed the bug of the 'buffer' argument might be ignored in the
       'access_log' directive. (cfsego)

    *) Bugfix: fixed the session_sticky module didn't issue the session cookie
       in the direct mode. (dinic)


Changes with Tengine 1.4.6                                       14 May 2013

    *) Bugfix: merged the changes of Nginx-1.2.9 and fixed the security problem
       CVE-2013-2070. This bug had appeared in 1.4.0. (yaoweibin)

Changes with Tengine 1.4.5                                       1 May 2013

    *) Feature: added the consistent_hash module which dispatches requests
       to upstream servers based on consistent hashing algorithm of a
       variable specified. (dinic)

    *) Feature: added the "keepalive_timeout" directive to set timeout for
       the upstream keepalive connections. (jinglong)

    *) Feature: now the configure script supports compilation of all modules
       to be shared or static. (monadbobo)

    *) Change: updated the Lua module to 0.7.19. (jinglong)

    *) Change: merged the changes of Nginx-1.2.8. (yaoweibin)

    *) Bugfix: fixed the compile warnings of syslog and upstream_check
       modules in GCC-4.4.5. (magicbear)


Changes with Tengine 1.4.4                                       21 Mar 2013

    *) Feature: added the session_sticky module by using which one client
       can be always served by the same upstream server. (dinic)

    *) Feature: now the sysguard module can protect the server based on
       the amount of free memory. (lifeibo)

    *) Feature: added support for geoip regional database in geoip module.
       (jasonlfunk)

    *) Feature: log_empty_request can also disable the logs for timeout (408)
       empty request. (yaoweibin)

    *) Change: merged changes between Nginx-1.2.5 and Nginx-1.2.7. (cfsego)

    *) Change: CPU affinity is off by default now. (cfsego)

    *) Bugfix: fixed a bug that sysguard and upstream_check module didn't
       compile on Solaris 11. (lifeibo, yaoweibin)

    *) Bugfix: fixed a bug with TFS module that it might return bad values.
       (zhcn381)

    *) Bugfix: fixed a bug with TFS module that it might corrupt large files.
       (zhcn381)


Changes with Tengine 1.4.3                                       21 Jan 2013

    *) Feature: added the TFS module which provides a RESTful API to Taobao
       File System. (zhcn381, monadbobo)

    *) Feature: added a $sent_cookie_XXX variable which could be used to get
       the value of cookie XXX from the Set-Cookie headers. (skoo87)

    *) Feature: now the syslog logging supports host name and domain name as
       its destination address. (cfsego)

    *) Change: added an attribute 'id' for the server directive in the upstream
       block. (yaoweibin)

    *) Bugfix: fixed a bug of DSO module which might stop Tengine from
       reloading. (monadbobo)

    *) Bugfix: fixed a segmentation fault bug of upstream_check module when
       the check timeout was larger than the check interval. (yaoweibin)

    *) Bugfix: fixed a segmentation fault bug of user_agent module when there
       was no User-Agent header existed in a request. (dinic)

    *) Bugfix: fixed the bug that sysguard module didn't work on Mac OS. (lizi)


Changes with Tengine 1.4.2                                         22 Nov 2012

    *) Feature: added the option '--dso-tool-path' to configure script, which
       can specify the installation path for the dso_tool script. (monadbobo)

    *) Feature: added a new variable '$unix_time', whose value is the current
       number of seconds since unix epoch time. (yaoweibin)

    *) Feature: added the 'make test' target to run test cases. (yaoweibin)

    *) Feature: now the sysguard module can be used in a location block.
       (lifeibo)

    *) Change: merged the changes from Nginx-1.2.4 and Nginx-1.2.5.
       (zhuzhaoyuan)

    *) Change: now checks the error codes of input body filters more carefully
       to avoid socket leaks. (cfsego)

    *) Bugfix: fixed the problem with directive limit_req can't handle 4
       arguments. (monadbobo)
       Thanks to LazyZhu.

    *) Bugfix: fixed a compilation error with the file of sysinfo in Cygwin.
       (lifeibo)
       Thanks to Cao Peiran.

    *) Bugfix: now the installation script will copy the user_agent module's
       configuration. (monadbobo)
       Thanks to Jianbin Xiao.

    *) Bugfix: fixed the installation directory error with the DSO module
       when creating the RPM package. (monadbobo)
       Thanks to Jianbin Xiao and Ren Xiaolei.


Changes with Tengine 1.4.1                                         10 Oct 2012

    *) Feature: added jemalloc library support. (fanjizhao)

    *) Feature: added a new variable '$dollar', whose value is the dollar
       sign ('$'). (zhuzhaoyuan)

    *) Feature: added the option 'off' to 'worker_cpu_affinity' directive.
       (cfsego)

    *) Change: disable CPU affinity when a new worker process is forked as
       an old one exits abnormally. (cfsego)

    *) Bugfix: fixed compile error with shared Lua module when using LuaJIT
       in Mac OS. (monadbobo)

    *) Bugfix: fixed the wrong module execution order with the third party
       shared filter module. (monadbobo)


Changes with Tengine 1.4.0                                         05 Sep 2012

    *) Feature: added the dynamic module loading support (a.k.a. DSO), so we
       don't have to recompile tengine when we want to add a new module.
       (monadbobo)

    *) Feature: updated the Lua module to the latest stable version.
       (chaoslawful, agentzh, jinglong)

    *) Feature: added json and csv format output for the upstream_check
       module. (yaoweibin)

    *) Feature: added the 'log_empty_request' directive which could be used
       to turn off logs from a connection without HTTP data. (zhuzhaoyuan)

    *) Feature: added the 'concat_delimiter' directive to the concat module
       to allow adding delimiter between each file. (dinic)

    *) Feature: added the 'concat_ignore_file_error' directive to ignore file
       errors and the syntax of concat is less strict now. (dinic)

    *) Feature: added the 'default' option to the 'error_page' directive to
       set all error pages to default values. (jinglong)

    *) Feature: added the 'priority' directive of the procs module.
       (yzprofile)

    *) Feature: added the 'delay_start' directive of the procs module.
       (yzprofile)

    *) Change: merged changes from nginx-1.2.3. (zhuzhaoyuan)

    *) Bugfix: fixed a segmentation fault bug of the geo module when 'range'
       was set without default value. (yzprofile)

    *) Bugfix: fixed a segmentation fault bug with the procs module.
       (yzprofile)

    *) Bugfix: fixed a socket leak bug when upstream_check was enabled.
       (yaoweibin)

    *) Bugfix: fixed some bugs of the limit_req module. (monadbobo)

    *) Bugfix: fixed wrong format types with error logs. (yaoweibin)

    *) Bugfix: fixed a compile error if the perl module was used with procs.
       (yzprofile)


Changes with Tengine 1.3.0                                         25 May 2012

    *) Feature: added the Lua module which embeds the power of Lua into Tengine.
       (chaoslawful, agentzh)

    *) Feature: added the procs module which provides a mechanism to support
       standalone processes. (yzprofile)

    *) Change: renamed the parameter from 'nongreedy' to 'greedy' in the
       user_agent module. (dinic)

    *) Bugfix: fixed a segmentation fault bug in syslog with uninitialized
       pointer problem. (cfsego)

    *) Bugfix: fixed a compile error in syslog with '--with-ipv6' configuration
       parameter. (cfsego)


Changes with Tengine 1.2.5                                         09 May 2012

    *) Feature: added the upstream_check module which could be used to do
       proactive health check of upstream servers. (yaoweibin)

    *) Feature: now allow to specify program identifiers with syslogs. (cfsego)

    *) Change: merged changes between nginx-1.0.14 and nginx-1.0.15.
       (zhuzhaoyuan)

    *) Change: the default value of 'accept_mutex_delay' was changed from
       500ms to 100ms to gain better performance. (zhuzhaoyuan)

    *) Bugfix: fixed a segmentation fault bug in syslog when failed to connect
       to an upstream server. (cfsego)

    *) Bugfix: fixed the bug of 'access_log' might not be compatible with the
       'buffer' parameter. (cfsego)


Changes with Tengine 1.2.4                                         30 Mar 2012

    *) Feature: added the user_agent module. (dinic)

    *) Feature: added the 'log_escape' directive. (agentzh, skoo87)

    *) Change: merged changes between nginx-1.0.12 and nginx-1.0.14.
       (zhuzhaoyuan)

    *) Bugfix: fixed a bug in the limit_req module. (liseen.wan)

    *) Bugfix: fixed a bug in subrequest. (lifeibo)


Changes with Tengine 1.2.3                                         27 Feb 2012

    *) Feature: added the 'request_time_cache' directive to get more precise
       $request_time/$request_time_msec/$request_time_usec. (yzprofile)

    *) Feature: added the slice module. (zhuzhaoyuan)

    *) Change: merged changes between nginx-1.0.11 and nginx-1.0.12.
       (zhuzhaoyuan)

    *) Change: deleted unused browsers detection. (zhuzhaoyuan)

    *) Bugfix: fixed a bug in upstream when reading header. (lifeibo)

    *) Bugfix: fixed a bug in 'expires_by_types'. (lifeibo)


Changes with Tengine 1.2.2                                         11 Jan 2012

    *) Feature: added the input body filter mechanism. (cfsego)

    *) Feature: added SSL dialog support to the mail module. (cfsego)

    *) Change: merged changes between nginx-1.0.10 and nginx-1.0.11.
       (zhuzhaoyuan)

    *) Change: turned 'lingering_close' off by default. (zhuzhaoyuan)

    *) Bugfix: fixed a bug in pipe logs. (cfsego)

    *) Bugfix: fixed a 'forbid_action' bug in the limit_req module.
       (monadbobo)

    *) Bugfix: fixed a bug in 'backtrace_max_stack_size'. (monadbobo)

    *) Bugfix: fixed a bug in the footer module when output body is empty.
       (dinic)

    *) Bugfix: fixed the last hostname letter omitted bug in syslog.
       (cfsego)


Changes with Tengine 1.2.1                                         06 Dev 2011

    *) Bugfix: fixed a segmentation fault bug when using default error log
       or access log. (yzprofile)


Changes with Tengine 1.2.0                                         29 Nov 2011

    *) This is the first public release.

    *) Feature: added syslog support to error_log and access_log. (cfsego)

    *) Feature: added pipe support to error_log and access_log. (cfsego)

    *) Feature: added realloc() related APIs. (gongyuan)

    *) Feature: added time specific variables. (skoo87)

    *) Feature: added the backtrace module. (monadbobo)

    *) Feature: added whitelist support to the limit_req module. (monadbobo)

    *) Feature: now more limit_req directives are allowed in a single location.
       (monadbobo)

    *) Feature: added the sysguard module. (lifeibo)

    *) Feature: added two APIs, ngx_http_header_in and ngx_http_header_out.
       (lifeibo)

    *) Feature: added two variables, $request_time_msec and $request_time_usec.
       (jinglong)

    *) Feature: added the footer module. (yunxing)

    *) Feature: added the $conn_requests variable which is similar to Apache's
       '%K'. (lieyuan)

    *) Feature: added the $host_comment variable. (yunxing)

    *) Feature: added a 'ratio' parameter to access_log so now access log can
       be sampled. (cfsego)

    *) Feature: added the 'server_info' and 'server_admin' directives to show
       more information when 4xx/5xx errors encountered. (lieyuan)

    *) Feature: added the '-d' command line option to dump contents of
       the configuration files. (piaoling)

    *) Feature: added response time statistics to the stub_status module.
       (jinglong)

    *) Feature: added the 'server_tag' directive. (zhuzhaoyuan)

    *) Feature: now the 'worker_processes' supports the 'auto' parameter, which
       sets the worker process numbers to the cores automatically. (cfsego)

    *) Feature: now the 'worker_cpu_affinity' directive supports the 'auto'
       parameter, which binds the worker processes to the cores automatically.
       (cfsego)

    *) Feature: added the 'ssl_pass_phrase_dialog' directive. (cfsego)

    *) Feature: added the '-s start' command line option. (zhuzhaoyuan)

    *) Feature: added '-m' command line option to list all compiled-in modules.
       (zhuzhaoyuan)

    *) Feature: added the 'expires_by_types' directive. (lifeibo)

    *) Feature: added the '-l' command line option to list all supported
       directives. (dinic)

    *) Feature: added the ngx_atoll() API, which can convert a string to a long
       long integer (64 bits). (lifeibo)

    *) Feature: now status lines (302, 405) are RFC-2616 compatibale. (zhuzhaoyuan)

    *) Feature: now ngx_escape_uri/ngx_unescape_uri supports encoding/decoding
       style of Java and PHP. (zhuzhaoyuan)

    *) Feature: now configuration files included are sorted. (zhuzhaoyuan)

    *) Feature: now 'error_page' can be reset to 'default' (zhuzhaoyuan)

    *) Change: turned 'msie_padding' off by default. (zhuzhaoyuan)

    *) Bugfix: fixed a bug when subrequest_in_memory and upstream keepalive
       being used. (lifeibo)

    *) Bugfix: fixed a bug in $sent_http_connection and $sent_http_keep_alive.
       (zhongsheng)

    *) Bugfix: fixed a bug that error_page directive can't detect duplicate
       codes and inherited correctly. (zhuzhaoyuan)

    *) Bugfix: fixed a segmentation fault bug in the FastCGI module, while
       processing duplicated HTTP headers. (monadbobo)

    *) Bugfix: fixed a bug that file in open_file_cache can't be updated.
       (cfsego)

    *) Bugfix: fixed a bug in 'worker_cpu_affinity'. (cfsego)
