<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.en.xsl"?>
<!-- $LastChangedRevision$ -->

<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<manualpage metafile="new_features_2_0.xml.meta">

<title>Overview of new features in Apache HTTP Server 2.0</title>

<summary>
  <p>This document describes some of the major changes between the
     1.3 and 2.0 versions of the Apache HTTP Server.</p>
</summary>

<seealso><a href="upgrading.html">Upgrading to 2.0 from 1.3</a></seealso>

  <section id="core">
    <title>Core Enhancements</title>

    <dl>
      <dt>Unix Threading</dt>

      <dd>On Unix systems with POSIX threads support, Apache httpd can
      now run in a hybrid multiprocess, multithreaded mode. This
      improves scalability for many, but not all configurations.</dd>

      <dt>New Build System</dt>

      <dd>The build system has been rewritten from scratch to be
      based on <code>autoconf</code> and <code>libtool</code>.
      This makes Apache httpd's configuration system more similar to
      that of other packages.</dd>

      <dt>Multiprotocol Support</dt>

      <dd>Apache HTTP Server now has some of the infrastructure in place to
      support serving multiple protocols. <module>mod_echo</module> has
      been written as an example.</dd>

      <dt>Better support for non-Unix
      platforms</dt>

      <dd>Apache HTTP Server 2.0 is faster and more stable on non-Unix
      platforms such as BeOS, OS/2, and Windows. With the
      introduction of platform-specific <a
      href="mpm.html">multi-processing modules</a> (MPMs) and the
      Apache Portable Runtime (APR), these platforms are now
      implemented in their native API, avoiding the often buggy and
      poorly performing POSIX-emulation layers.</dd>

      <dt>New Apache httpd API</dt>

      <dd>The API for modules has changed significantly for 2.0.
      Many of the module-ordering/-priority problems from 1.3 should
      be gone. 2.0 does much of this automatically, and module ordering
      is now done per-hook to allow more flexibility. Also, new calls
      have been added that provide additional module capabilities
      without patching the core Apache HTTP Server.</dd>

      <dt>IPv6 Support</dt>

      <dd>On systems where IPv6 is supported by the underlying
      Apache Portable Runtime library, Apache httpd gets IPv6 listening
      sockets by default. Additionally, the <directive
      module="mpm_common">Listen</directive>, <directive module="core"
      >NameVirtualHost</directive>, and <directive module="core"
      >VirtualHost</directive> directives support
      IPv6 numeric address strings (e.g., "<code>Listen
      [2001:db8::1]:8080</code>").</dd>

      <dt>Filtering</dt>

      <dd>Apache httpd modules may now be written as filters which act on
      the stream of content as it is delivered to or from the
      server. This allows, for example, the output of CGI scripts to
      be parsed for Server Side Include directives using the
      <code>INCLUDES</code> filter in <module>mod_include</module>. The
      module <module>mod_ext_filter</module> allows external programs to
      act as filters in much the same way that CGI programs can act as
      handlers.</dd>

      <dt>Multilanguage Error Responses</dt>

      <dd>Error response messages to the browser are now provided in
      several languages, using SSI documents. They may be customized
      by the administrator to achieve a consistent look and feel.</dd>

      <dt>Simplified configuration</dt>

      <dd>Many confusing directives have been simplified. The often
      confusing <code>Port</code> and <code>BindAddress</code> directives
      are gone; only the <directive module="mpm_common">Listen</directive>
      directive is used for IP address binding; the <directive
      module="core">ServerName</directive> directive specifies the
      server name and port number only for redirection and vhost
      recognition.</dd>

      <dt>Native Windows NT Unicode Support</dt>

      <dd>Apache httpd 2.0 on Windows NT now uses utf-8 for all filename
      encodings. These directly translate to the underlying Unicode
      file system, providing multilanguage support for all Windows
      NT-based installations, including Windows 2000 and Windows XP.
      <em>This support does not extend to Windows 95, 98 or ME, which
      continue to use the machine's local codepage for filesystem
      access.</em></dd>

      <dt>Regular Expression Library Updated</dt>

      <dd>Apache httpd 2.0 includes the <a href="http://www.pcre.org/">Perl
      Compatible Regular Expression Library</a> (PCRE).  All regular
      expression evaluation now uses the more powerful Perl 5
      syntax.</dd>

    </dl>
  </section>

  <section id="module">
    <title>Module Enhancements</title>

    <dl>
      <dt><module>mod_ssl</module></dt>

      <dd>New module in Apache httpd 2.0. This module is an interface
      to the SSL/TLS encryption protocols provided by
      OpenSSL.</dd>

      <dt><module>mod_dav</module></dt>

      <dd>New module in Apache httpd 2.0. This module implements the HTTP
      Distributed Authoring and Versioning (DAV) specification for
      posting and maintaining web content.</dd>

      <dt><module>mod_deflate</module></dt>

      <dd>New module in Apache httpd 2.0.  This module allows supporting
      browsers to request that content be compressed before delivery,
      saving network bandwidth.</dd>

      <dt><module>mod_auth_ldap</module></dt>

      <dd>New module in Apache httpd 2.0.41.  This module allows an LDAP
      database to be used to store credentials for HTTP Basic
      Authentication.  A companion module, <module>mod_ldap</module>
      provides connection pooling and results caching.</dd>

      <dt><module>mod_auth_digest</module></dt>

      <dd>Includes additional support for session caching across
      processes using shared memory.</dd>

      <dt><module>mod_charset_lite</module></dt>

      <dd>New module in Apache httpd 2.0. This experimental module allows
      for character set translation or recoding.</dd>

      <dt><module>mod_file_cache</module></dt>

      <dd>New module in Apache httpd 2.0. This module includes the
      functionality of <code>mod_mmap_static</code> in Apache HTTP
      Server version 1.3, plus adds further caching abilities.</dd>

      <dt><module>mod_headers</module></dt>

      <dd>This module is much more flexible in Apache httpd 2.0. It can now
      modify request headers used by <module>mod_proxy</module>, and
      it can conditionally set response headers.</dd>

      <dt><module>mod_proxy</module></dt>

      <dd>The proxy module has been completely rewritten to take
      advantage of the new filter infrastructure and to implement a
      more reliable, HTTP/1.1 compliant proxy. In addition, new
      <directive module="mod_proxy" type="section">Proxy</directive>
      configuration sections provide more readable (and internally
      faster) control of proxied sites; overloaded <code>&lt;Directory
      "proxy:..."&gt;</code> configuration are not supported. The module
      is now divided into specific protocol support modules including
      <code>proxy_connect</code>, <code>proxy_ftp</code> and
      <code>proxy_http</code>.</dd>

      <dt><module>mod_negotiation</module></dt>

      <dd>A new <directive module="mod_negotiation"
      >ForceLanguagePriority</directive> directive can be used to assure that
      the client receives a single document in all cases, rather than
      NOT ACCEPTABLE or MULTIPLE CHOICES responses. In addition, the
      negotiation and MultiViews algorithms have been cleaned up to
      provide more consistent results and a new form of type map that
      can include document content is provided.</dd>

      <dt><module>mod_autoindex</module></dt>

      <dd>Autoindex'ed directory listings can now be configured to
      use HTML tables for cleaner formatting, and allow finer-grained
      control of sorting, including version-sorting, and wildcard
      filtering of the directory listing.</dd>

      <dt><module>mod_include</module></dt>

      <dd>New directives allow the default start and end tags for SSI elements
      to be changed and allow for error and time format configuration
      to take place in the main configuration file rather than in the
      SSI document. Results from regular expression parsing and grouping
      (now based on Perl's regular expression syntax) can be retrieved
      using <module>mod_include</module>'s variables <code>$0</code>
      .. <code>$9</code>.</dd>

      <dt><module>mod_auth_dbm</module></dt>

      <dd>Now supports multiple types of DBM-like databases using the
      <directive module="mod_auth_dbm">AuthDBMType</directive>
      directive.</dd>

    </dl>
  </section>
</manualpage>
