[Checkins] SVN: Zope/trunk/doc/ moved HISTORY

Andreas Jung andreas at andreas-jung.com
Fri Feb 20 10:35:13 EST 2009


Log message for revision 96831:
  moved HISTORY
  

Changed:
  D   Zope/trunk/doc/HISTORY.txt
  A   Zope/trunk/doc/obsolete/HISTORY.txt

-=-
Deleted: Zope/trunk/doc/HISTORY.txt
===================================================================
--- Zope/trunk/doc/HISTORY.txt	2009-02-20 15:34:26 UTC (rev 96830)
+++ Zope/trunk/doc/HISTORY.txt	2009-02-20 15:35:13 UTC (rev 96831)
@@ -1,1964 +0,0 @@
-Zope History
-
-  This file contains change information for previous versions of
-  Zope. Change information for the current release can be found
-  in the file CHANGES.txt.
-
-  Zope 2.11.3 (unreleased)
-
-    Bugs Fixed
-
-      - configure script: setting ZOPE_VERS to '2.11'
-
-      - Products.PluginIndexes.PathIndex:  backported doc fixes /
-        optiimizations from trunk (and ExtendedPathIndex).
-
-      - Updated 'pytz' from '2007f' to '2008i'.
-
-      - Moved svn:externals for 'mechanize', 'ClientPath', and 'pytz' to
-        versions managed outside the Zope3 trunk.
-  
-      - Testing.ZopeTestCase: Remove quota argument from DemoStorage calls in
-        preparation for ZODB 3.9.
-
-  Zope 2.11.2 (2008/10/24) 
-
-    Bugs Fixed
-
-      - updated to ZODB 3.8.1
-
-      - DateTime conversion of datetime objects with non-pytz tzinfo. 
-        Timezones() returns a copy of the timezone list (allows tests to run).
-        (Backport of r89373 from trunk).
-
-      - LP #253362: better dealing with malformed HTTP_ACCEPT_CHARSET headers
-
-      - Testing.ZopeTestCase: installPackage was tied to the ZopeLite layer.
-
-  Zope 2.11.1 (2008/07/17)
-
-    Bugs Fixed
-
-      - Suppressed DeprecationWarning during import of ZPublisher.Iterators:
-        that module needs to use Z2-style interfaces in 2.11, for BBB, but
-        the Interface module itself issues the warning on import.
-
-      - Launchpad #246748: added 'immediate' option to sendXXX() methods
-        for sending a mail immediately by-passing the zope.sendmail delivery
-        mechanism
-    
-      - Launchpad #246290: fixed backward compatibility issue
-
-      - zope.testing : updated to 3.5.3
-
-      - zope.viewlets: updated to 3.4.2
-
-      - zope.sendmail: updated to 3.5.0 (fixing Launchpad #230831)
-
-  Zope 2.11.0 (2008/06/15)
-
-    Restructuring
-
-      - Noted long-standing but silent deprecation of Zope2-style
-        interfaces (on import of the Interface package).  That package
-        is already gone on the trunk.
-
-    Bugs Fixed
-
-      - Launchpad #229549:  Don't ignore 'debug' flag when rendering
-        page templates (thanks to Eric Steele for the patch).
-
-      - Fixed against-the-rules zope.conf option 'fast_listen' to read
-        'fast-listen' (dash, not underscore).
-
-  Zope 2.11 rc 1 (2008/05/08)
-
-    Bugs Fixed
-
-      - Launchpad #142350: Display description for properties as row title,
-        if present.
-
-      - Launchpad #200007: DateTime(anotherDateTime) now preserves the
-        timezone.
-
-      - Launchpad #213311:  Handle "unsubscriptable object" errors
-        during publishing traversal.
-
-      - Products.Five: Fixed vocabulary lookup broken in 2.11 beta 1.
-        ZopeVocabularyRegistry wasn't hooked up on startup.
-
-      - Launchpad #143813: zopectl now exits non-zero when
-        child processes fail.
-
-      - Products.Five: Resynced browser.adding with zope.app.container.
-        This fixes some minor bugs and removes deprecated code.
-
-      - Launchpad #173658:  Removed dead code in OFS.Traversable's
-        'unrestrictedTraverse' (apparent NameError).
-
-      - Launchpad #198274:  "empty" ZopePageTemplates could not be
-        unpickled.
-
-  Zope 2.11 beta 1 (2007/12/29)
-
-    Restructuring
-
-      - Moved two implements declarations from Five into the proper classes.
-
-      - Document.sequence: replaced by zope.sequencesort
-
-      - All Products folders as well as the zope and zope.app folders are
-        declared as setuptools namespace packages now. See
-        http://peak.telecommunity.com/DevCenter/setuptools#namespace-packages
-        for more information about namespace packages.
-
-      - ZPT: removed display of ZPT warnings since warnings were
-        removed from the zope.pagetemplate implementation     
-
-      - Ship Zope with a standard docutils 0.4 distribution, instead
-        of a patched one.  Both trusted and untrusted code are still
-        protected against unwanted file inclusion.
-
-      - Removed ZGadflyDA (deprecated since Zope 2.9). The code is
-        still available from svn.zope.org/Products.ZGadflyDA.
-
-      - Removed OFS.content_types (deprecated since Zope 2.9)
-
-      - Undeprecated 'zLOG', which will remain a backward-compatibility
-        shim for the Python logging module.
-
-      - Indexes: Removed unused parameters from '_apply_index' methods.
-
-      - Removed deprecated support for product initialization based on
-        '__ac_permissions__' and 'meta_types' attributes.
-
-      - reStructuredText/ZReST: setting raw_enabled to 0 for security
-        reasons
-
-      - OFS Image: Image and File updated to use isinstance(data, str)
-        and raises TypeError upon encountering unicode objects.
-
-      - OFS Application: Updated deprecation warnings.
-        Support for '__ac_permissions__' and 'meta_types' will be removed in
-        Zope 2.11, 'methods' support might remain longer.
-
-    Features added
-
-      - Zope2 startup: Zope will now sends DatabaseOpened and
-        ProcessStarting events during startup
-
-      - Testing.ZopeTestCase: Introduced a "ZopeLite" test layer, making it
-        possible to mix ZTC and non-ZTC tests much more freely.
-
-      - Testing/custom_zodb.py: added support use a different storage other
-        than DemoStorage. A dedicated FileStorage can be mount by setting the
-        $TEST_FILESTORAGE environment variable to a custom Data.fs file.  A 
-        ZEO server can be configured using the $TEST_ZEO_HOST and 
-        $TEST_ZEO_PORT environment variables. This new functionality allows us
-        to use the standard Zope testrunner for writing and running tests
-        against existing Zope installations.
-
-      - The ZPublisher HTTP request has now both the debug and locale
-        attributes available, like its Zope 3 counterpart. The debug attribute
-        was so far limited to code from the zope.* namespace in order to make
-        the Zope 3 ZPT engine work. The locale attribute provides access to an
-        zope.i18n.interfaces.locales.ILocale object with access to locale
-        related information like date / time formatting or translated language
-        and country names. Form variables of both debug and locale will shadow
-        these two attributes and their use is therefor discouraged.
-
-      - MailHost: now uses zope.sendmail for delivering the mail. With this
-        change MailHost integrates with the Zope transaction system (avoids
-        sending dupe emails in case of conflict errors). In addition MailHost
-        now provides support for asynchronous mail delivery. The 'Use queue'
-        configuration option will create a mail queue on the filesystem (under
-        'Queue directory') and start a queue thread that checks the queue
-        every three seconds. This decouples the sending of mail from its
-        delivery.  In addition MailHosts now supports encrypted connections
-        through TLS/SSL.
-
-      - integrated ZODB 3.8 (featuring BLOB support)
-    
-      - integrated latest Zope3 components (aka Zope 3.4)
-
-      - Support for using zopectl on Windows has been added. All commands are
-        supported and there are two Windows specific ones: install and remove,
-        which install or remove the Windows service. The start, stop and
-        restart commands handle the Windows service. In order to use them, you
-        need to call 'bin\zopectl install' once.
-
-      - ZCatalog result objects (catalog brains) now have an interface,
-        ZCatalog.interfaces.ICatalogBrain.
-
-      - PythonScripts: allow usage of Python's 'sets' module
-
-      - added 'fast_listen' directive to http-server and webdav-source-server
-        sections in etc/zope.conf in order to defer the opening of the sockets
-        until the late startup phase. This in in particular useful when running
-        Zope behind a loadbalancer (patch by Patrick Gerken).
-
-      - AccessControl.Role: added new method
-        manage_getUserRolesAndPermissions().
-
-      - AccessControl: the form behind the "Security" tab has a new form
-        for user-related reporting of permissions and roles
-
-      - Zope 3-based exception views can now be registered in ZCML for
-        various exceptions that can be raised by Zope. Registering an
-        exception view can be done like this::
-
-          <browser:page
-            for="zope.publisher.interfaces.INotFound"
-            class=".view.SomeView"
-            name="index.html"
-            permission="zope.Public" />
-
-        Relevant exceptions that can have views are:
-
-        o zope.interface.common.interfaces.IException
-
-        o zope.publisher.interfaces.INotFound
-
-        o zope.security.interfaces.IForbidden
-
-        o zope.security.interfaces.IUnauthorized
-
-        Note that the name has to be 'index.html' for the exception
-        view to work. (patch by Sidnei da Silva from Enfold,
-        integration by Martijn Faassen (Startifact) for Infrae)
-
-      - DateTime now uses pytz for time zone data. This means support
-        for more time zones and up to date daylight saving time
-        information.
-
-    Bugs Fixed
-
-      - Collector #2113:  'zopectl test' masked Ctrl-C.
-
-      - Collector #2190: Calls to zope.security.management.checkPermission
-        weren't rerouted to Zope 2's security policy.
-
-        NOTE: If you already have a Zope 2.10 instance running, you
-        will either have to recreate it or add the following lines to
-        the end of the etc/site.zcml file::
-
-          <securityPolicy
-                component="Products.Five.security.FiveSecurityPolicy" />
-
-      - Collector #2223: Evaluation of booleans in TALES and the
-        'default' variable.
-
-      - Collector #2213: Can't edit "old" ZopePageTemplate instances.
-
-      - Collector #2235: A number of ZCatalog methods were doing boolean
-        evaluation of objects that implemented __len__ instead of checking
-        them against None. Replaced a number of "if not obj" with
-        "if obj is None".
-
-  Zope 2.10.8 (unreleased)
-
-    Restructuring
-
-      - Added 'InitializeClass' alias in 'App.class_init' to ease migration.
-        In Zope 2.12 it will be recommended to import 'InitializeClass' from
-        'App.class_init' instead of 'Globals'.
-
-      - Moved 'ApplicationDefaultPermissions' from 'App.class_init' to
-        'AccessControl.Permissions', in order to break an import cycle
-        in third-party code which avoids imports from 'Globals.'  Left
-        the class importable from its old location without deprecation.
-
-    Bugs fixed
-
-      - LP/#143873: Fixed problems when no HTTP_ACCEPT_CHARSET is in the
-        request. This required an update of zope.publisher to 3.3.3.
-
-      - LP/#324876: tighened regex for detecting the charset
-        from a meta-equiv header
-
-      - Acquisition wrappers now correctly proxy __iter__.
-
-      - Launchpad #174705:  ensure that the error info object exposed to a
-        'tal:on_error' handler has attributes visible to restricted code.
-
-  Zope 2.10.7 (2008/10/24)
-
-    Bugs fixed
-
-      - Ensure that response header values cannot embed CRLF pairs, which
-        violate the HTTP spec (RFC 2616).
-
-      - Launchpad #282677: fixed implementation of guarded_map and
-        provided tests and implementation for guarded_zip
-        (RestrictedPython).
-
-      - Lauchpad #143736,#271395: fixed AttributeError' on _ltid in TempStorage
-
-      - 'AccessControl.ZopeGuards.guarded_import' mapped some Unauthorized
-        exceptions onto ImportErrors:  don't do that!  Also, removed
-        mutable defaults from argument list, improved tests.
-
-      - LP #281156:  'AccessControl.SecurityInfo.secureModule' dropped
-        ModuleSecurity for failed imports, obscuring later attempts to
-        import the same broken module.
-
-      - LP #142667:  Updated to ZODB-3.7.3 to fix problem with product
-        auto-refresh.
-
-      - Updated to Five 1.5.8
-
-      - Launchpad #245649:  the Products package is now a proper
-        "namespace package" under the rules specified by setuptools.
-
-      - Fixed outdated transaction.commit(1) call in 
-        ZODBMountPoint.SimpleTrailblazer
-
-      - Launchpad #239636:  Ensure that HEAD requests lock an empty body
-        for NotFound errors.
-
-      - Launchpad #229549:  Don't ignore 'debug' flag when rendering
-        page templates (thanks to Eric Steele for the patch).
-
-      - integrated Hotfix-2008-08-12
-
-      - Launchpad #267545: DateTime(DateTime()) now preserves the
-        correct hour
-
-      - Launchpad #262313: respect the 'Expand macros when editing' flag
-        when editing a page template through the ZMI
-
-
-  Zope 2.10.6 (2008/05/10)
-
-    Bugs fixed
-
-      - Launchpad #142350: Display description for properties as row title,
-        if present.
-
-      - Launchpad #200007: DateTime(anotherDateTime) now preserves the
-        timezone.
-
-      - Launchpad #213311:  Handle "unsubscriptable object" errors
-        during publishing traversal.
-
-      - Launchpad #143813: zopectl now exits non-zero when
-        child processes fail.
-
-      - Launchpad #173658:  Removed dead code in OFS.Traversable's
-        'unrestrictedTraverse' (apparent NameError).
-
-      - Launchpad #198274:  "empty" ZopePageTemplates could not be
-        unpickled.
-
-      - zope.security: switched to use standalone 3.3.3 version, which
-        contains a backport of a huge performance bugfix from the 3.4 branch.
-
-      - Launchpad #164783: Indexes were migrated on initial creation of a
-        ZODB.
-
-  Zope 2.10.5 (2007/10/30)
-
-    Other changes
-
-      - Turned deprecation warnings for manage_afterAdd, manage_beforeDelete
-        and manage_afterClone methods into discouraged warnings. These methods
-        will not be removed in Zope 2.11, but stay for the foreseeable future.
-        Using events is still highly encouraged.
-
-    Bugs fixed
-
-      - Launchpad #147201: treat container-class in zope.conf as a string,
-        making it possible to use types from extra products directories.
-
-      - Collector #2358: backported fix making 'Products' package a real
-        "namespace package" from the trunk.
-
-      - Collector #2287: form ':record' objects did not implement enough of
-        the mapping interface.
-
-      - Collector #2352: fix in OFS.Traversable
-
-      - Collector #2346: username logging in FCGI crashed the server
-
-      - ZopePageTemplate's pt_edit did not recognize content type arguments
-        which had a charset information included.
-
-      - Collector #2332: SessionDataManger: don't swallow ConflictErrors
-
-      - Collector #2339: ZPT: fixed unicode issue when using the 'structure'
-        directive
-
-      - Launchpad #151020: HTTP_CHAR_SET headers containing 'x-user-defined'
-        caused a LookupError exception. Unknown encodings are from now on
-        silently discarded.
-
-  Zope 2.10.4 (2007/06/23)
-
-    Other changes
-
-      - updated to ZODB 3.7.1
-
-      - updated to Zope 3.3.2
-
-      - updated to Five 1.5.5
-
-    Bugs fixed
-
-      - Collector #1306: Missing acquisition context on local roles screen.
-
-      - Collector #2153: Supporting unquoted cookies with spaces.
-
-      - The REQUEST no longer accepts holds after it has been closed.
-
-      - Collector #1441: WebDAV compatibility with Windows Web Folders
-        restored by adding a configuration variable that controls the
-        sending of the non-standard MS-Author-Via and Public
-        headers. Thanks for PatrickD for the the hard work coming up
-        with an initial patch.  
-        (http://zope.org/Collectors/Zope/1441)
-
-      - Fixed bug in ZPublisher.BaseRequest with persistent site managers. An
-        EndRequestEvent was thrown after the ZODB connection was already
-        closed and thus the site manager not being available anymore.
-
-      - Collector #2295: Comments in PythonScripts could lead to syntax
-        errors
-
-      - Collector #2307: ObjectCopiedEvent not dispatched to sublocations.
-
-      - Collector #2304: fixed markup issue in ptEdit.zpt
-
-      - Collector #2260: fixed Examples.zexp
-
-      - Collector #2320: HTTPResponse setHeader lowercased keys but getHeader
-        did not, causing lookups of 'Content-Type' to fail
-
-      - Collector #2321: Skip trusted proxies when extracting the client IP
-        address from the request.
-
-      - Collector #2318: Allow override of zopectl's control socket in
-        zope.conf
-
-      - Collector #2316: correctly unpack DateTimeIndex dates when browsing the
-        index.
-
-      - Collector #1866: a 304 HTTP status should not have a content length.
-  
-      - Collector #2300: delimit *all* HTTP Response headers with CRLF.
-
-  Zope 2.10.3 (2007/03/25)
-
-    Bugs fixed
-
-      - Collector #2298: webdav.Resource.COPY and webdav.Resource.MOVE did
-        not send the expected copy/move events.
-
-      - Collector #2296: Fixed import of ZClass products, broken by removal
-        of BBB support for pasting objects whose meta_type info was
-        permission-free.
-
-      - Collector #2294: Protected DOS-able ControlPanel methods with the
-        same 'requestmethod' wrapper.
-
-      - Collector #2294: Protected various security mutators with a new
-        'postonly' decorator.  The decorator limits method publishing to
-        POST requests only, and is a backport from Zope 2.11's requestmethod
-        decorator factory.
-
-      - Collector #2289: restored compatibility with PTProfiler
-    
-      - No longer opens a zodb connection every time a ProductDispatcher
-        is looked up.
-
-      - Collector #2288: @ and + should not be quoted when forming
-        request URLs in BaseRequest and HTTPRequest
-
-      - Undeprecated 'zLOG', which will remain a backward-compatibility
-        shim for the Python logging module.
-
-      - PageTemplate/ZRPythonExpr.py: expressions represented as unicode string
-        caused UnicodeDecodeErrors. 
-
-  Zope 2.10.2 (2007/01/26)
-
-    Bugs fixed
-
-      - Updated Zope 3 to bugfix release 3.3.1.
-
-      - Collector #2261: Acquisition when creating objects via Webdav.
-
-      - Collector #2269: fixed broken FTP support for ZPT
-
-  Zope 2.10.2 beta 1 (2007/01/14)
-
-    Bugs fixed
-
-      - Fixed Collector #2190: Calls to
-        zope.security.management.checkPermission aren't rerouted to
-        Zope 2's security policy.
-
-        NOTE: If you already have a Zope 2.10 instance running, you
-        will either have to recreate it or add the following lines to
-        the end of the etc/site.zcml file::
-
-          <securityPolicy
-                component="Products.Five.security.FiveSecurityPolicy" />
-
-      - Fixed Collector #2223: Evaluation of booleans in TALES and the
-        'default' variable.
-
-      - Reverted backward-incompatible fix for Collector #2191.
-
-      - Fixed the creation of lib/python/Zope2/version.txt
-
-      - added Python 2.4.4 as optimal Python version to 'configure'
-
-      - the ZopePageTemplate implementation now uses unicode
-        internally.  Non-unicode instances are migrated on-the-fly to
-        unicode. However this will work only properly for ZPT
-        instances formerly encoded as utf-8 or ISO-8859-15. For other
-        encodings you might set the environment variable
-        ZPT_REFERRED_ENCODING to insert your preferred encoding in
-        front of utf-8 and ISO-8859-15 within the encoding sniffer
-        code. In addition there is a new 'output_encodings' property
-        that controls the conversion from/to unicode for WebDAV/FTP
-        operations.
-
-      - the ZPT implementation has now a configurable option in order
-        how to deal with UnicodeDecodeErrors. A custom
-        UnicodeEncodingConflictResolver can be configured through ZCML
-        (see Products/PageTemplates/(configure.zcml,
-        unicodeconflictresolver.py, interfaces.py)
-
-  Zope 2.10.1 (2006-11-22)
-
-    Bugs fixed
-
-      - Collector #2191: extended DateTime parser for better support
-        to the ISO8601 specification.
-
-      - Reworking of _cached_result in Shared.DC.ZRDB.DA.DA:
-
-        - fixed KeyError reported in Collector #2212
-
-        - fixed two memory leaks that occurred under high load
-
-        - fixed broken cache keys for people using the obscure 
-          Shared.DC.ZRDB.DA.DA.connection_hook
-
-        - fixed incorrect cache ordering resulting in newer results
-          being dumped when the cache became too large.
-
-      - Collector #2232: Can't call DTML templates from Page Templates
-
-      - Collector #2213: Can't edit "old" ZopePageTemplate instances.
-
-      - Collector #2237: 'make' doesn't tell you to run 'make inplace'
-        before running 'make instance'.
-
-      - Collector #2235: A number of ZCatalog methods were doing boolean
-        evaluation of objects that implemented __len__ instead of checking
-        them against None. Replaced a number of "if not obj" with
-        "if obj is None".
-
-      - Collector #2208: rewriting/setting the 'charset' part of the
-        content-type HTTP header will be done only for 'text/*'
-
-      - Collector #2209: ZTUtils module could not be used inside ZPT
-
-      - Collector #2206: Set PYTHONPATH to include existing PYTHONPATH
-        in skel/bin/zopectl.in and skel/bin/runzope.in
-
-
-  Zope 2.10.0 (2006/10/04)
-
-    Bugs fixed
-
-  
-  Zope 2.10.0 RC 1 (2006/09/25)
-
-    Bugs fixed
-
-      - Call setDefaultSkin on new requests created as the result of
-        ConflictError retries.
-
-      - Collector #2187: PUT_factory broken
-      
-  Zope 2.10.0 beta 2 (2006/09/17)
-
-    Bugs fixed
-
-      - Collector #2117: Don't choke in 'unrestrictedTraverse' for '+'
-        path elements.
-
-      - Collector #2185: Log username for FCGI requests.
-
-      - Collector #2152: Fixed MailHost documentation; simple_send does not
-        process or validate its arguments in any way.
-
-      - Collector #2175: ZTUtils.make_hidden_input did not escape
-        double-quotes.
-
-      - Collector #2176: Fixed bad logging call.
-
-      - Collector #1907: Moved 'alt' property from File to Image.
-
-      - Collector #1983: Specifying session-resolution-seconds >= 1200 caused
-        Zope startup to fail.
-
-      - Collector #2169: webdav.Resource.COPY did not send ObjectClonedEvent.
-
-      - Collector #2178: Fix ZopeTestCase doctest support for layers
-
-  Zope 2.10.0 beta 2 (2006/08/20)
-
-    Bugs Fixed
-
-      - Collector #2155: Fix wrong parameter being passed to
-        logger's error() method, with tests.
-
-      - Updated Five to stable 1.5 release.
-
-      - Traversal order changes were causing WebDAV requests which used
-        acquisition to fail.
-
-      - Collector #2157: Expose name of broken class in SystemError raised
-        from '__getstate__' of a broken instance.
-
-      - Usage of 'urljoin' in 'webdav.davcmds' could lead to wrongly
-        constructed urls.
-
-      - Fix #2141: TALES doesn't traverse correctly over 'repeat'
-        variable
-
-      - reStructuredText/ZReST: setting raw_enabled to 0 for security
-        reasons
-
-      - Collector #2113:  'zopectl test' masked Ctrl-C.
-
-      - OFS Image: Image and File updated to use isinstance(data, str)
-        and raises TypeError upon encountering unicode objects.
-
-      - OFS Application: Updated deprecation warnings.
-        Support for '__ac_permissions__' and 'meta_types' will be removed in
-        Zope 2.11, 'methods' support might remain longer.
-
-      - Collector #2136: Map ResourceLockedError to the correct response code.
-
-      - Collector #2016: DemoStorage couldn't wrap base storages without
-                         an '_oid' attribute.
-
-      - Collector #2118: Empty TALES path expressions are allowed
-        in Zope 2.
-
-      - Acquisition wrappers now correctly proxy __contains__.
-
-      - Collector #2116: sequence.sort() did not work properly
-        locale related comparison methods
-
-      - Collector #2122: fixed missing is_proxying_match definition
-        in ZServer/HTTPServer
-
-      - Collector 2077: fixed problem with ACTUAL_URL and SiteRoot
-
-      - Collector #2073: fixed misbehaviour of OFS.Owned.changeOwnership
-
-      - Collector #2063: cleaned up some mess in MailHost.sendTemplate()
-
-      - View and attribute lookup order was changed to the following:
-           1. Unacquired attributes
-           2. Views
-           3. Acquired attributes
-        According to consensus in z3-five mailing list:
-        http://codespeak.net/pipermail/z3-five/2006q2/001474.html
-        
-      - The defaultView directive now only looks up views, not attributes.
-
-      - Collector #2178: Fix ZopeTestCase doctest support for layers
-
-    Other Changes
-
-      - Disabled docutils file inclusion completely, rather than trying
-        to jigger it via configuration settings.
-
-      - Returned to the "classic" './configure && make && make install'
-        recipe, dropping the use of 'zpkg' for building Zope2 releases.
-
-  Zope 2.10.0 beta 1 (2006/05/30)
-
-    Restructuring
-
-      - Zope 2.10+ now includes site.zcml as part of its instance
-        creation skel directory.  As a consequence Five now requires
-        this file to exist in every instance.  If upgrading a site
-        from Zope 2.9 to 2.10, you will need to copy site.zcml and
-        package-includes/ from your installed Zope installation
-        location (skel/etc/) into the etc/ directory of your upgraded
-        instance.
-
-        The rationale for requiring this new file is to bring Zope 2
-        instances closer in consistency to Zope 3 instances.  It also
-        eases use of Zope 3 coding techniques in Zope 2 and removes
-        some confusion when trying to run pure Zope 3 applications on
-        Zope 2.
-
-      - Products.PageTemplates now uses the Zope 3 ZPT implementation
-        in zope.pagetemplate.
-
-      - The TAL package has been deprecated in favour of the TAL
-        engine from zope.tal.
-
-      - Products.PageTemplates.TALES has been deprecated in favour of
-        the TALES engine from zope.tales.
-
-      - ZTUtils.Iterator has been deprecated in favour of the TALES
-        iterator implementation in zope.tales.tales.
-
-      - ZCatalog: removed manage_deleteIndex(), manage_delColumns()
-        which were deprecated since Zope 2.4
-
-      - deprecated the zLOG module. Use Pythons 'logging' module instead.
-
-      - replaced all zLOG occurences (expect the zLOG module itself) with
-        the 'logging' module
-
-      - PluginIndexes/TextIndex is deprecated. Use ZCTextIndex instead
-  
-      - the 'StructuredText' module is deprecated. Use zope.structuredtext
-        instead
-
-      - removed ZopeTutorial (Elvis is now really dead)
-
-      - ZClasses are deprecated and should no longer be used. In addition
-        any code related to the ZClasses (re)distribution mechanism is
-        removed.
-
-      - ZGadyFlyDA/Gadfly is deprecated
-
-      - deprecated OFS.content_types (to be removed in Zope 2.11) and
-        replaced all occurences with zope.app.content_types
-
-      - OFS.content_types: moved code to zope.app.content_types and added
-        method aliases
-
-      - Using FastCGI is offically deprecated.
-
-    Features added
-
-      - added PluggableIndexes/interfaces/IIndexConfiguration (on request
-        by the GenericSetup community)
-
-      - Included Zope 3.3 and corresponding Five 1.5 release.
-
-      - There is now a default favicon.ico.
-
-      - Experimental WSGI and Twisted support for http.
-        Zope now has a WSGI interface for integration with other
-        web-servers than ZServer. Most notably Twisted is supported.
-        The WSGI application is ZPublisher.WSGIPublisher.publish_module
-
-        You can make ZServer use the twisted interface with the
-        "use-wsgi on" keyword in the http-server section in zope.conf.
-
-        You can run Twisted by installing Twisted (2.1 recommended) and
-        replacing the http-server section with a server section in
-        zope.conf. It is not possible to run a Twisted server together with
-        a ZServer at the same time::
-
-          <server>
-            address 8080
-            type Zope2-HTTP
-          </server>
-
-        WSGI: http://www.python.org/dev/peps/pep-0333/
-        Twisted: http://twistedmatrix.com/
-
-      - The traversal has been refactored to take heed of Zope3s
-        IPublishTraverse adapter interfaces. The ZCML directives
-        five:traversable and five:defaultViewable are therefore no
-        longer needed, as everything now is five:traversable and
-        five:defaultViewable.
-
-        There was a bug in earlier versions of Five that allowed you
-        to do custom publishing traversal with ITraversable adapters.
-        This bug has been corrected. Anybody using ITraversable
-        adapters need to convert them to IPublishTraversal adapters.
-
-      - Testing.makerequest: Added an 'environ' argument so
-        clients can use mappings other than os.environ.
-
-      - Updated to Docutils 0.4.0
-
-      - reStructuredText: The default value for the 'stylesheet'
-        property has been changed from 'default.css' to None because
-        there is no 'default.css' file by default.
-
-      - ZReST: rewritten render() method to integrate it smoothly
-        with Docutils 0.4.0. The default value for the 'stylesheet'
-        property has been changed from 'default.css' to None because
-        there is no 'default.css' file by default.
-
-      - Added a "clock server" servertype which allows users to
-        configure methods that should be called periodically as if
-        they were being called by a remote user agent on one of Zope's
-        HTTP ports.  This is meant to replace wget+cron for some class
-        of periodic callables.
-
-        To use, create a "clock-server" directive section anywhere
-        in your zope.conf file, like so::
-
-             <clock-server>
-                method /do_stuff
-                period 60
-                user admin
-                password 123
-                host localhost
-             </clock-server>
-
-        Any number of clock-server sections may be defined within a
-        single zope.conf.  Note that you must specify a
-        username/password combination with the appropriate level of
-        access to call the method you've defined.  You can omit the
-        username and password if the method is anonymously callable.
-        Obviously the password is stored in the clear in the config
-        file, so you need to protect the config file with filesystem
-        security if the Zope account is privileged and those who have
-        filesystem access should not see the password.
-
-        Descriptions of the values within the clock-server section
-        follow::
-
-          method -- the traversal path (from the Zope root) to an
-          executable Zope method (Python Script, external method,
-          product method, etc).  The method must take no arguments or
-          must obtain its arguments from a query string.
-
-          period -- the number of seconds between each clock "tick" (and
-          thus each call to the above "method").  The lowest number
-          providable here is typically 30 (this is the asyncore mainloop
-          "timeout" value).
-
-          user -- a zope username.
-
-          password -- the password for the zope username provided above.
-
-          host -- the hostname passed in via the "Host:" header in the
-          faux request.  Could be useful if you have virtual host rules
-          set up inside Zope itself.
-
-        To make sure the clock is working, examine your Z2.log file.  It
-        should show requests incoming via a "Zope Clock Server"
-        useragent.
-
-      - Added a 'conflict-error-log-level' directive to zope.conf, to set
-        the level at which conflict errors (which are normally retried
-        automatically) are logged. The default is 'info'.
-
-      - The SiteErrorLog now copies exceptions to the event log by default.
-
-      - ObjectManager now has an hasObject method to test presence. This
-        brings it in line with BTreeFolder.
-
-      - Improved logging of ConflictErrors. All conflict errors are
-        logged at INFO, with counts of how many occurred and how many
-        were resolved. Tracebacks for all conflicts are logged a DEBUG
-        level, although these won't help anyone much. If a conflict
-        error is unresolved, it will now bubble up to error_log and
-        standard_error_message.
-
-      - Use new-style security declarations everywhere possible. This
-        means remove the use of __ac_permissions__, foo__roles__ and
-        default__class_init__. A few corner cases can't be converted
-        because of circular imports.
-
-      - Fixed unclear security declarations. Warn when an attempt is
-        made to have a security declaration on a nonexistent method.
-
-      - updated to ZPL 2.1
-
-      - interfaces: Added 'Interfaces' tab to basic core objects.
-        This is a Five feature and only available if the classes are made
-        five:traversable. It allows to inspect interfaces and to assign
-        marker interfaces through the ZMI.
-
-      - webdav: Added support for the z3 WriteLock interface.
-        It is no longer necessary to have the WriteLockInterface in the
-        __implements__ list of lockable objects. All classes inheriting from
-        LockableItem inherit also the IWriteLock interface. Note that this
-        enables webdav locking for all subclasses by default even if they
-        don't specify the WriteLockInterface explicitly.
-
-      - App ProductContext: Made registerClass aware of z3 interfaces.
-        Z2 and z3 interfaces are registered side by side in the same tuple in
-        Products.meta_types. IFAwareObjectManagers like the ZCatalog work now
-        with z3 interfaces as well.
-
-      - Zope now sends Zope 3 events when objects are added or removed
-        from standard containers. manage_afterAdd, manage_beforeDelete
-        and manage_afterClone are now deprecated. See
-        lib/python/Products/Five/tests/event.txt for details.
-
-      - Zope now utilizes ZODB 3.6.  It had previously used
-        ZODB 3.4.  As a result, the DBTab package was removed, as
-        ZODB 3.6 has multidatabase support that makes DBTab
-        unnecessary.
-
-      - Added a 'product-config' section type to zope.conf, allowing
-        arbitrary key-value mappings.  Products can look for such
-        confgiurations to set product-specific options.  Products mwy
-        also register their own section types, extending the
-        'zope.product.base' type. (see the example '<product-config>'
-        section in skel/etc/zope.conf.in for sample usage).
-
-      - Collector #1490: Added a new zope.conf option to control the
-        character set used to encode unicode data that reaches
-        ZPublisher without any specified encoding.
-
-      - AccessControl, Acquisition, App, OFS, webdav, PluginIndexes,
-        ZCatalog and ZCTextIndex: Added some Zope 3 style interfaces.
-        This makes the bridged interfaces shipped with Five obsolete.
-
-      - ZConfig extension, address now also accepts symbolic port names
-        from etc/services (unix) or etc\services (win32)
-
-      - ZPublisher.HTTPRequest.FileUpload now supports full file
-        object interface.  This means Iterator support was added. (for
-        line in fileobject: ..., as well as fileobject.next() and
-        fileobject.xreadlines() ) Collector #1837
-
-      - Switched the bundled Zope 3 to release 3.2 and upgraded the
-        Five product to version 1.3 (see Products/Five/CHANGES.txt).
-
-      - The PageTemplate implementation now uses Zope 3 message
-        catalogs by default for translation.  Old-style translation
-        services such as Localizer or PlacelessTranslationService are
-        still supported as fall-backs.  See Products/Five/doc/i18n.txt
-        for more information.
-
-      - Switched to the new improved test runner from Zope 3.  Run
-        test.py with -h to find out more.
-
-      - lib/python/docutils is now a reference to docutils package
-        from the Zope 3 source tree (to get rid of redundant packages)
-
-    Bugs Fixed
-
-      - Collector #1447: When editing content on a virtual-hosted zope,
-        AcceleratedHTTPCacheManager now purges the correct URL.
-
-      - When you add roles in manage_access, roles are now stripped of
-        any leading or trailing spaces.
-
-      - Collector #2062: Fix manage_historyCopy, which was broken, and write
-        tests for it.
-
-      - Collector #2061: Fix problems where windows line endings are passed
-        to restricted code compilers.
-
-      - Collector #2051: Applied patch by Yoshinori Okuji to fix some
-        XML export/import problems, including tests for that feature.
-
-      - Collector #2037: fixed broken ACTUAL_URL for '/'
-
-      - Missing import of NotFound in webdav.Resource
-
-      - Collector #1819: fixed method signature of
-        MountedObject.SimpleTrailblazer._construct()
-
-      - Collector #2019: removed validateValue() from cAccessControl (already
-        removed in former Zope versions from the AccessControl Python
-        implementation)
-
-      - Collector #1991: ZPublisher did not deal properly with a trailing
-        %20 in the URL
-
-      - zope.app.introspector was not included with the source archive
-
-      - Collector #2013: improved XHTML conformance of error messages,
-        some of which did not close '<p>' tags.
-
-      - Collector #2002: fixed broken 'ls -R' functionality (didn't
-        recurse properly subclasses of OFS.Folder)
-
-      - Collector #1992: unified the visible hostnames of the FTP and
-        HTTP servers
-
-      - Collector #1999: fixed broken FTP rename functionality
-        (RNFR now returns 350 as status code instead 250)
-
-      - HTTPResponse: for XML content the encoding specified within
-        the XML preamble is adjusted to the real encoding of the content
-        as specified through the 'charset' within the content-type
-        property.
-
-      - Collector #1939: When running as a service, Zope could
-        potentially collect too much log output filling the NT Event
-        Log. When that happened, a 'print' during exception handling
-        would cause an IOError in the restart code causing the service
-        not to restart automatically.
-
-        Problem is that a service/pythonw.exe process *always* has an
-        invalid sys.stdout.  But due to the magic of buffering, small
-        "print" statements would not fail - but once the file actually
-        got written to, the error happened.  Never a problem when
-        debugging, as the process has a console, and hence a valid
-        stdout.
-
-      - For content-type HTTP headers starting with 'text/' or 'application/'
-        the 'charset' field is automatically if not specified by the
-        application. The 'charset' is determined by the content-type header
-        specified by the application (if available) or from the
-        zpublisher_default_encoding value as configured in etc/zope.conf
-
-      - Collector #1976: FTP STOR command would load the file being
-        uploaded in memory. Changed to use a TemporaryFile.
-
-      - OFS ObjectManager: Fixed list_imports() to tolerate missing
-        import directories.
-
-      - Collector #1621, 1894:  Removed support for use of long-deprecated
-        'whrandom' module.
-
-      - OFS PropertySheets / webdav: Fixed dav__resourcetype.
-        __dav_collection__ with a false value was overridden by
-        isAnObjectManager.
-
-      - added missing Zope 3 imports: zope.app.intid, zope.app.keyreference,
-        zope.app.session, zope.contentprovider, zope.viewlet
-
-    Other
-
-      - AccessControl.User: Use a better __repr__.
-
-      - ZSQLMethod.manage_main: Moved the error message that warns of a
-        non-existing or closed database connection next to the Connection ID
-        dropdown and present it using red to increase its visibility.
-
-      - The ImageFile module has finally been deprecated for good and
-        will be removed in Zope 2.11.  Use App.ImageFile instead.
-
-  after Zope 2.8.1
-
-      - The '@' character is now allowed in object ids (RFC 1738 allows it).
-
-    Bugs Fixed
-
-      - If a content object implemented any in-place numeric operators,
-        untrusted code could call them, thus modifying the content.
-
-      - If Python 2.4 is used, despite the fact that Python 2.4 is
-        unsupported, untrusted code could use generator expressions to
-        gain access to container items.
-
-      - Collector #1895: testrunner: omitting the 'var' from recursive
-        directory walking
-
-      - OFS.Image.manage_FTPget() would str() it's .data attribute,
-        potentially loading the whole file in memory as a
-        string. Changed to use RESPONSE.write() iterating through the
-        Pdata chain, just like index_html().
-
-      - Collector #1863: Prevent possibly sensitive information to leak via
-        the TransientObject's __repr__ method.
-
-      - Repaired 'handle_errors' usage for doctests, along with the
-        supporting 'debug' argument passed to
-        'ZPublisher.Test.publish_module'.
-
-      - Collector #1879: applied patch by Dieter Maurer to fix a bug in
-        ac_aquire() ignoring the default argument
-
-      - Collector #1864, #1906: fixed header normalization in appendHeader()
-
-      - Collector #1899: fixed migration issue when using export/import for
-        ZCatalog instances
-
-      - Collector #1871: Applied patch to support lists with records using
-        ZTUtils.make_query()
-
-      - AccessControl: creating a new user through "zpasswd inituser" did not
-        work properly with a top-level user folder with enabled password
-        encryption.
-
-      - ZCatalog: refreshCatalog() could not be called safely from a ZEO
-        client script
-
-      - Catalog.clear(): fixed handling of _length attribute (caused import
-        problems for some .zexp files e.g. Squishdot instances)
-
-      - DateIndex now properly removes documents from both indexes if
-        the value is None
-
-      - Collector #1888: Some parts of the TALInterpreter would not pass a
-        default when  translating, yet expect a string back. This would cause
-        an error (usually "NoneType has no attribute 'replace'") in the case
-        the message was not translated.
-
-  Zope 2.8.1 (2005/08/11)
-
-    Features added
-
-      - Interface: Added Z3 -> Z2 bridge utilities.
-        This allows to migrate interfaces to Zope 3 style interfaces and
-        bridge them back to oldstyle interfaces for backwards compatibility.
-
-    Bugs Fixed
-
-      - Zope2.Startup.zopectl: fork before execv when running unit tests
-        (don't exit the shell, if run from there).
-
-      - TAL: MassageIDs are now handled the same way as in zope.tal.
-
-      - DocumentTemplate: ustr no longer mangles MassageIDs.
-        Custom string types are now returned unchanged.
-
-      -  As developed in a long thread starting at
-         http://mail.zope.org/pipermail/zope/2005-July/160433.html
-         there appears to be a race bug in the Microsoft Windows socket
-         implementation, rarely visible in ZEO and/or in
-         ZServer/medusa/thread/select_trigger.py when multiple processes try
-         to create an "asyncore trigger" simultaneously, most often (in
-         stress tests) manifesting as a hung process.  Windows-specific
-         trigger code in both changed to work around this bug when it occurs.
-
-      - Collector #1807: fixed memory leak in cAccessControl.guarded_getattr()
-
-
-  Zope 2.8.1 b1 (2005/07/28)
-
-    Features Added
-
-      - PluginIndexes, ZCTextIndex and ZCatalog: Added some z3 interfaces.
-
-      - Verbose security exception reporting has been folded into Zope,
-        removing the need for the VerboseSecurity product.  See the
-        documentation for the "verbose-security" option in zope.conf.
-
-      - "TemporaryStorage" (the storage that is used mainly to back the
-        default sessioning database) is now MVCC capable, which essentially
-        means that its usage will no longer generate ZODB ReadConflictErrors.
-
-    Bugs Fixed
-
-      - Collector #1852: fixed wrong URL construction in webdav.davcmds
-
-      - Collector #1844: fixed whitespace handling in the ZMI "Find" tab
-
-      - Collector #1813: removed spurious inclusion of CMFBTreeFolder.
-        in Products/BTreeFolder2 (CMFCore will include it after 1.5, with
-        an appropriate module alias for backward compatibility).
-
-      - Replaced all transaction.commit(1) calls by  transaction.savepoint()
-
-      - Collector #1832: UnIndex swallowed ConflictErrors.
-
-      - Collector #1815: ZCTextIndex accepts (again) sequences of strings to
-        be indexed.
-
-      - Collector #1812: Fixed key error in ZSQL ZMI/Test
-
-      - Fixed CMFBTreeFolder for CMF 1.5+
-
-      - WebDAV COPY and MOVE did not call '_notifyOfCopyTo' and '_postCopy'
-        hooks like it was done in OFS.CopySupport. Additionally added
-        'manage_changeOwnershipType' to make MOVE behave even closer to
-        OFS.CopySupport.
-
-      - Collector #1548: Fix 'httplib' usage in ZPublisher.Client.
-
-      - Collector #1808: manage_convertIndexes no longer tries to change the
-        index types causing some trouble with CMF.
-
-      - manage_convertIndexes did not treat DateRangeIndexes and PathIndexes
-        properly.
-
-      - Updated Zope X3 to bugfix release 3.0.1
-
-      - Updated Five to bugfix release 1.0.2 (see Products/Five/CHANGES.txt)
-
-  Zope 2.8.0 (2005/06/11)
-
-    Bugs Fixed
-
-      - Collector #1792: applied patch for broken ZClasses
-
-      - doc/FAQ.txt updated: should bear some resemblance to reality now.
-        (PCGI stuff removed; error information updated; PID information
-        updated; upgrade procedure added; some common version questions
-        added.)
-
-      - Collector #1770: Fixed RestructuredText subtitle
-
-      - Collector #1803: Fixed InitializeClass for some corner case.
-
-      - Collector #1798, issue 1: ZopeTestCase no longer tries to
-        install products that were installed by Zope during startup.
-
-      - Collector #1799: Avoid lying about parent's refcount when
-        calling back into Python code.
-
-      - Collector #889:  made 'and' operator for KeywordIndexes actually
-        restrict results as expected (thanks to 'aroda' for the patch!).
-
-      - Collector #1323: applied patch to fix umask problem in zdctl
-
-      - Updated Five to bugfix release 1.0.1 (see Products/Five/CHANGES.txt)
-
-  Zope 2.8.0 b2 (2005/05/22)
-
-    Features added
-
-      - Made WebDAV server distinguishable from the default HTTP
-        server both in the ZMI and in event.log.
-
-      - Included BTreeFolder2
-
-    Bugs fixed
-
-      - Collector #1507/1728: Server addresses are now handled the same way on
-        all platforms. This fixes the default binding on Windows.
-
-      - Collector #1781: made 'create_mount_points' ZConfig option actually
-        work (thanks to Dieter Maurer for the patch).
-
-      - Collector #1780: DateTime.strftime() now handles dates <= 1900 or
-        >= 2038
-
-      - Collector #1775: turning off debug mode by default
-
-      - Collector #1784: fixed handling of multiple attributes in ZCTextIndex
-
-      - Don't copy '.svn' directories from skeleton into an instance
-        (thanks to Dale Hirt for the patch).
-
-      - Collector #1776: Improved setup.py.
-        The Finder class is now used for the complete lib/python tree and has
-        a blacklist instead of a whitelist for file extensions. So there
-        should no longer be a need to update setup.py if modules or files are
-        added or removed in lib/python.
-
-      - Collector #1751: Improved error reporting reporting during the
-        startup phase
-
-      - Collector #1745: Fixed ZSQL error KeyError 'query'
-
-      - Collector #1735: fixed UnicodeDecodeError in Loader.py
-
-  Zope 2.8b1 (2005/04/24)
-
-    Features added
-
-      - Added lazy: TAL expression and fixed defer: expression for python
-        expression
-
-      - ZCatalog.CatalogBrains: An _unrestrictedGetObject method has
-        been added.
-
-      - ZODB transactions now support savepoints. See
-        transaction/savepoint.txt.  These will replace
-        subtransactions.
-
-    Bugs fixed
-
-      - Collector #1754: Fixed import of 'transaction' in
-        'zopectl adduser' (which wasy dying with a NameError).
-
-      - Collector #1750: StructuredText: fixed handling of image URLs
-        with query string
-
-      - Collector #1748: Fixed SIGSEGV in Acquisition
-
-      - Hotfix_20050405:  classes defined in untrusted code could shadow
-        the roles of methods defined as protected by their bases.
-
-      - Collector #1656: Fixed enumeration within untrusted code
-        (forward-port from 2.7 branch).
-
-      - Collector #1721: Fixed handling of an empty indexed_attrs parameter
-
-
-  Zope 2.8a2 (2005/04/02)
-
-    Features added
-
-      - ZCatalog.CatalogBrains:  'getObject' now raises errors, rather than
-        returning None, in cases where the path points either to a nonexistent
-        object (in which case it raises NotFound) or to one which the user
-        cannot access (raising Unauthorized).  Sites which rely on the old
-        behavior can restore setting a new zope.conf option,
-        'catalog-getObject-raises', to "off".
-
-        This compatibility option will be removed in Zope 2.10.
-
-      - PluginIndexes: the ZCatalog's "Indexes" tab now show the number of
-        distinct values indexed by each index instead of a mixture of indexed
-        objects versus number of distinct values. Indexes derived from UnIndex
-        show both values within their own ZMI screen. In addition most indexes
-        have now a "Browse" tab to browse through the list of indexed
-        values and their occurrences.
-
-      - FTPServer: a RNFR (rename from) request is now being responded
-        with a 550 error code if the source file does not exist
-
-      - Fixed ObjectManager to not swallow exceptions during object
-        deletion (in debug mode and if the user is not Manager). This
-        allows for better debugging, while still keeping the possibility
-        for a Manager to delete buggy objects.
-
-      - Added a ZConfig directive 'large-file-threshold' to control
-        the request content-size threshold at which a temporary file
-        gets created. Use the same value for deciding between reading
-        the whole request in memory or just a chunk inside
-        webdav.NullResource.PUT().
-
-      - RAMCacheManager: Allow invalidation of a cache entry from the
-        Statistics view in the ZMI
-
-      - Collector #1454/OFS.File: Accept content types ending with
-        "javascript" as editable through the File edit form, just like
-        text/<foo> types
-
-      - Zope X3 3.0.0's 'src/zope' package is included now.
-
-      - Five (Zope 3 integration technology for Zope 2) is included
-        now in Products/Five.
-
-    Bugs fixed
-
-      - Collector #1460: guarded_apply was too restrictive.
-
-      - OFS.Traversable still used a string 'NotFound' exception.
-
-      - ZPublisher would fail to recognize a XML-RPC request if the
-        content-type header included a 'charset' parameter.
-
-      - Forward-ported 'aq_acquire'-related fix and associated tests
-        from Zope 2.7.4.
-
-      - Collector #1730: XML page templates couldn't call aq_parent in
-        path expressions.
-
-      - Fixed brain.getObject() to correctly traverse to an object even
-        if one of its parents is not accessible, to be close to what the
-        Publisher does.
-
-      - Forward ported fix for OFS.CopySupport tests which corrected
-        signature of a faux security policy's 'validate' method.
-
-      - 'setup.py' did not install the 'Zope' compatibility module
-        (the old 'Zope' package has been renamed to 'Zope2').
-
-      - Fixed Shared.DC.ZRDB.Results to behave with the new-style
-        ExtensionClass. Added a test.
-
-      - 'setup.py' did not install the new 'Zope' compatibility module
-        (the 'Zope' package has been renamedd to 'Zope2').
-
-      - Collector #1507: Zope now binds again to all available IP addresses if
-        ip-address is unset
-
-      - Use 'del' instead of 'list.remove()' in
-        Catalog.delColumn(). There can be only one column with the
-        same name, and it could potentially break catalog metadata as
-        remove() may remove more than one element from the list if
-        they have the same value. Also, we already have the list index
-        we are interested in deleting so it doesn't make sense to look
-        up the value and call 'list.remove()' on it.
-
-      - Collector #1628: FTP server has been broken (directory
-        listings did not work)
-
-      - Collector #1705: CopySource._postCopy is never called
-
-      - Collector #1617: Fixed crash in ZPT code (caused by improper
-        checks in cAccessControl)
-
-      - Collector #1683: fixing batching in the DA "Test" tab
-
-      - Collector #1648: Fix bug in Medusa FTP
-
-      - Collector #1667: allow 'max-number-of-session-objects 0' to have
-        the same effect as setting the value via the web interface (i.e.,
-        make the number of session objects unlimited, rather than falling
-        back to the default).
-
-      - Collector: #1651: removed compiler warning
-
-      - Collector #1661: make 'python-check-interval' setting in zope.conf
-        actually work as documented.  This setting allows for important
-        tuning opportunities for production Zope servers.
-
-      - Collector #1657:  Don't break host-based virtual hosting when
-        purging an HTTP accelerator.
-
-      - DTML Methods were not interoperable with the new filestream_iterator
-        and caches based on it (FileCacheManager).
-
-      - Collector #1655: fixed severe memory leak in TemporaryStorage
-
-      - Collector #1407: fixed XML escaping problem introduced in 2.7.4 b1
-
-      - Collector #1151: HTTP compression was broken on error pages
-
-      - The REQUEST now contains a new entry ACTUAL_URL which contains the
-        full URL without query string as it appears within the location bar of
-        the browser. The key has been added to provide a single key that is
-        available for vhosted and non-vhosted installations.
-
-      - Collector #1605: VHM did not quote URLs
-
-      - webdav.Resource: during COPY, manage_afterClone was called way
-        too early, thus the object wasn't bound to the database and
-        couldn't find a context. Changed to behave the same way as
-        CopySupport.
-
-      - RAMCacheManager: opimized performance by using cPickle instead
-        of pickle and by using the highest pickle protocol available
-        instead of using ASCII pickles (patch by Dieter Maurer)
-
-      - Collector #631: Image URLs in StructuredText containing port
-        numbers were not rendered correctly
-
-      - Collector #1498: Don't choke on malformed cookies. Cookies of
-        the form "foo=bar; hmm; baz=gee" will give an empty value for
-        'hmm' instead of silently discarding it and the rest of the
-        string. (Thanks to 'sirilyan' for the patch.)
-
-      - bin/zopectl test now uses os.execv, instead os os.system,
-        so that options with characters that needs shell quoting
-        doesn't break the command.
-
-      - Collector #1219:  Make XML export sane again.
-
-      - Collector #945:  Allow adding empty PythonScript instances
-        programmatically.
-
-      - Updated doc/UNITTEST.txt and lib/python/Testing/README.txt to
-        reflect progress made since UNITTEST.txt was originally written.
-
-      - Removed Version objects from the add menu. Versions are agreed to be a
-        feature that should not be used as it is not well implemented and
-        allows for data loss.
-
-      - Collector #1510: Allow encoding of application/xhtml+xml pages
-        according to the charset specified in the Content-Type header
-        (thanks to Jacek Konieczny for the patch).
-
-      - Collector #1599: made sqltest work with unicode strings (thanks
-        to Peter Sabaini for the patch).
-
-      - zopectl: fixed handling of child processes (patch by Dieter Maurer)
-
-      - Collector #1593: fixed dumb _get_id() implementation in
-        OFS.CopySupport that produced copy_of_copy_of....files (thanks
-        to Alexandre Boeglin for the patch).
-
-      - Collector #1450: files in utilities/ZODBTools are now installed
-        during the installation process in the 'bin' directory
-
-      - Collector #1003: added new 'http-header-max-length' directive
-        to zope.conf to specific the maximum length of a HTTP request
-        header before it is considered as a possible DoS attack and
-        discarded.
-
-      - Collector #1371: added new 'cgi-maxlen' directive to zope.conf
-        to limit the amount of form data being processed by Zope
-        to prevent DoS attacks
-
-      - Collector #1407: changed WebDAV display name for objects
-        to title_or_id()
-
-      - the 'trusted-proxy' directive in zope.conf now also accepts
-        hostnames instead of IP addresses only (patch by Dieter Maurer)
-
-      - Fixed test.py to not over-resolve symbolic links. Needed to run
-        tests when the Products directory and a product are symlinks.
-
-      - Collector #1583/ZReST: Fixed handling of the title attribute
-        for non-ascii characters.
-
-      - Collector #1577: Fixed cryptic error message in ZPublisher if a
-        non-ASCII string is passed to a date, int, long or float property.
-
-      - Collector #1576: Fixed Z Search Interface to use proper HTML.
-
-      - Collector #1127: strftime did not take timezone into account.
-
-      - Collector #1569/DateTime: Added a new ISO8601-method that will
-        return correctly formatted ISO 8601-representations to augment
-        the ISO method which isn't compliant with ISO 8601.
-
-      - ZPublisher: changed some hardcoded 'latin1' arguments to 'iso-8859-15'
-        since latin1 is obsolete.
-
-      - Collector #1566: Installation of Zope on some older Solaris versions
-        could fail due to a broken "echo" implementation causing the
-        creation of a borked version.txt file.
-
-      - Collector #934: Image and File objects are now always internally
-        split into small chunks even when initialized from a string.
-
-      - docutils: updated to V 0.3.5. The Zope core now contains a full
-        copy of the docutils package except some GPLed files which can not
-        be included with the Zope distribution due to license constraints
-        on svn.zope.org.
-
-      - docutils: moved from lib/python/docutils to
-        lib/python/third_party/docutils
-
-      - Collector #1557/OFS.Image: Introducing new 'alt' property. The
-        'alt' attribute is no longer taken from the 'title' property but
-        from the new 'alt' property.  The border="0" attribute is no longer
-        part of the HTML output except specified otherwise.
-
-      - Set a default value of '' for the new 'alt' property as not to
-        break existing content.
-
-      - Collector #1511: made IPCServer show up in the Control Panel under
-        "Network Services"
-
-      - Collector #1443: Applied patch by Simon Eisenmann that reimplements
-        the XML parser used in WebDAV fixing a memory leak.
-
-      - Always unescape element contents on webdav.xmltools
-
-      - Use saxutils to escape/unescape values for/from
-        PROPFIND/PROPPATCH.
-
-      - Make OFS.PropertySheet use the escaping function from
-        webdav.xmltools.
-
-      - Escape/unescape &quot; and &apos;
-
-      - Don't escape properties stored as XML (ie: having a
-        __xml_attrs__ metadata set by PROPPATCH) when building a
-        PROPFIND response.
-
-      - If a PROPPATCH element value contains only a CDATA section,
-        store the CDATA contents only.
-
-      - Catch AttributeErrors and KeyErrors raised from
-        __bobo_traverse__ and convert them to NotFound. In debug mode
-        a more verbose error message is issued, the same way it's done
-        on attribute/item traversal.
-
-      - Collector #1523: replace the text field for importing .zexp/.xml
-        files with a selection list
-
-      - Stitch newly-created object into it's container *before*
-        calling it's PUT() method. This fixes an issue with
-        OFS.File/OFS.Image that would result into reading the whole
-        file in memory and wrapping it into a *single* Pdata object.
-
-      - Import ZServer.CONNECTION_LIMIT variable *inside* the method
-        that uses it. Before this, the variable was imported at the
-        module level, thus binding it too early which would cause the
-        ZConfig handler to have no real effect.
-
-  Zope 2.8a1 (2004/10/17)
-
-    Features added
-
-     - Included Stefan Holek's ZopeTestCase 0.9
-
-     - The SiteErrorLog allows you to acknowledge (or delete) exceptions,
-       so you can reduce or clear the list without restarting your
-       Zope server. Additionally the SiteErrorLog is covered by unit tests
-       now.
-
-     - Unit tests added for the SiteErrorLog.
-
-     - UI improvement for the ZCatalog. The "catalog contents" allow
-       you to filter the cataloged objects by path now.
-
-     - Made test.py follow symbolic links on POSIX systems.
-
-     - added utilities/reindex_catalog.py to perform ZCatalog maintenance
-       operations from the command line (through zopectl)
-
-     - RESPONSE.setBody and RESPONSE.setStatus now accept lock
-       parameters in the same way as RESPONSE.redirect. These prevent
-       further calls to the methods from overwriting the previous value.
-       This is useful when writing http proxies.
-
-     - DateTime: new DateTime instance can be constructed from a given
-       DateTime instance: d_new = DateTime(d_old)
-
-     - The DateTime parser now throws a SyntaxError upon any parsing errors.
-
-     - ZCatalog: added a new configuration option in the "Advanced" tab
-       to provide optional logging of the progress of long running
-       reindexing or recataloging operations.
-
-     - made Zope.configure return the starter instance to enable other
-       methods to be called, such as starter.setupConfiguredLoggers()
-
-     - Improved Unicode handling in Page Templates. Template contents
-       and title will now be saved as a Unicode string if
-       the management_page_charset variable can be acquired and is true.
-       The character set of an uploaded file can now be specified.
-
-     - zopectl now accepts the -m argument to set a umask for files created
-       by the managed process (e.g. -m 002 or --umask 002).
-
-     - AccessControl/permission_settings() now has a new optional parameter
-       'permission' to retrieve the permission settings for a particular
-       permission.
-
-     - The obsolete 'SearchIndex' package has been removed
-
-     - Traversal now supports a "post traversal hook" that get's run
-       after traversal finished and the security context is established.
-
-     - Using "_usage" parameters in a ZCatalog query is deprecated and
-       logged as DeprecationWarning.
-
-     - MailHost now has two additional properties, a user id and a
-       password. These are used to attempt ESMTP authentication
-       before sending a mail.
-
-     - Folder listings in FTP now include "." as well as "..".
-
-     - When a VHM is activated, it adds the mapping
-       'VIRTUAL_URL_PARTS': (SERVER_URL, BASEPATH1, virtual_url_path)
-       to the request's 'other' dictionary.  If BASEPATH1 is empty, it
-       is omitted from the tuple.  The joined parts are also added
-       under the key 'VIRTUAL_URL'.  Since the parts are evaluated
-       before traversal continues, they will not reflect modifications
-       to the path during traversal or by the addition of a default
-       method such as 'index_html'.
-
-     - Extension Classes, a key Zope foundation, have been totally
-       rewritten based on Python new-style classes.
-
-       This change provides a number of advantages:
-
-       o Use of new-style class features (e.g. slots, descriptors,
-         etc.) in Zope objects. Support for object protocols (special
-         __ methods) added since Python 1.4.
-
-       o Support for cyclic garbage collection.
-
-       o Ability to use new-style classes as base classes of Zope objects.
-
-       o Pave the way for sharing code between Zope 2 and Zope 3.
-
-       Note -- Extension classes with __of__ methods are made into
-         Python read descriptors.
-
-         If an extension classes is used to implement a descriptor,
-         indirectly by implementing __of__ or directly by implementing
-         __get__, the behavior of the descriptor will differ from
-         ordinary descriptors in an important way. The descriptors
-         __get__ method will be called *even if* the descriptor is
-         stored on an instance of an extension class.  Normally
-         descritor __get__ methods are called only of the descriptor
-         is stored in a class.
-
-     - ZODB 3.3
-
-       This is the first version of ZODB that does not require
-       ExtensionClass.
-
-     - Add 'parity' method to ZTUtils Iterators.
-
-     - Allow untrusted code to mutate ZPublisher record objects.
-
-     - Added a "mime-types" configuration value which names a file
-       giving additional MIME type to filename extension mappings.
-       The "mime-types" setting may be given more than once in the
-       configuration file; the files have the same format at the
-       mime.types file distributed with Apache.
-
-     - Changed the ZEO server and control process to work with a
-       single configuration file; this is now the default way to
-       configure these processes.  (It's still possible to use
-       separate configuration files.)  The ZEO configuration file can
-       now include a "runner" section used by the control process and
-       ignored by the ZEO server process itself.  If present, the
-       control process can use the same configuration file.
-
-     - ZConfig was updated to version 2.0.  The new version includes
-       two new ways to perform schema extension; of particular
-       interest in Zope is the ability for a configuration file to
-       "import" new schema components to allow 3rd-party components
-       (such as storages, databases, or logging handlers) to be used.
-
-     - The testrunner.py script has been replaced with test.py which
-       is now installed into the 'bin' folder.
-
-    Bugs fixed
-
-     - Removed Python 2.3.3 as valid option. ZODB 3.3 requires Python
-       2.3.4 or later.
-
-     - Collector #1332: Added in-place migration of the Catalog.__len__
-       attribute to avoid new-style class caching problems. Instances of
-       ZCatalog or instances of classes with ZCatalog as base class will be
-       migrated automatically. Instances of Catalog or classes with Catalog
-       as base class must be migrated manually by calling the migrate__len__()
-       method on the every instance. In addition old BTree migration code
-       (for pre-Zope 2.5 instances) has been removed. If you want to migrate
-       from such an old version to Zope 2.8, you need to clear and reindex
-       your ZCatalog).
-
-     - Collector #1595: same as in Collector #1132 for indexes derived from
-       UnIndex. Exisiting ZCatalog instances must be converted manually
-       by calling the "manage_convertIndexes" method through-the-web for
-       every single ZCatalog instance. See also doc/FAQ.txt (Installation,
-       question #4)
-
-     - Collector #1457: ZCTextIndex's QueryError and ParseError
-       are now available for import from untrusted code.
-
-     - Collector #1473: zpasswd.py can now accept --username
-       without --password
-
-     - Collector #1491: talgettext.py did not create a proper header
-       for the generated .pot file if multiple pagetemplate files
-       were processed.
-
-     - Collector #1477: TaintedString.strip() now implements the
-       same signature as str.strip()
-
-     - TAL: tal:on-error does not trap ConflictError anymore.
-
-     - OFS.CopySupport: Enforced "Delete objects" permission during
-       move (CMF Collector #259).
-
-     - Removed DWIM'y attempt to filter acquired-but-not-aceessible
-       results from 'guarded_getattr'.
-
-     - Collector #1267: applied patch to fix segmentation faults on
-       x86_64 systems
-
-     - ZReST: the charset used in the rendered HTML was not set to the
-       corresponding output_encoding property of the ZReST instance. In
-       addition changing the encodings through the Properties tab did not
-       re-render the HTML.
-
-     - Collector #1234: an exception triple passed to LOG() was not
-       propagated properly to the logging module of Python
-
-     - Collector #1441: Removed headers introduced to make Microsoft
-       webfolders and office apps happy, since they make a lot of
-       standards-compliant things unhappy AND they trick MS Office
-       into trying to edit office files stored in Zope via WebDAV even
-       when the user isn't allowed to edit them and is only trying to
-       download them.
-
-     - Collector #1445: Fixed bad interaction between -p and -v(v)
-       options to test.py that resulted in exceptions being printed
-       when they shouldn't have been.
-
-     - Collector #729: manage_main doesn't display the correct page title
-       most of the time. It is not completely fixed but using title_or_id
-       makes folders display the correct id as a fallback.
-
-     - Collector #1370: Fixed html generated by Z Search interface.
-
-     - Collector #1295: Fixed minor niglet with the Elvis tutorial.
-
-     - added "version.txt" to setup.py to avoid untrue "unreleased version"
-       messages within the control panel
-
-     - Collector #1436: applied patch to fix a memory leak in
-       cAccessControl.
-
-     - Collector #1431: fixed NetBSD support in initgroups.c
-
-     - Collector #1406: fixed segmentation fault by acquisition
-
-     - Collector #1392: ExternalMethod ignored management_page_charset
-
-     - unrestrictedTraverse() refactored to remove hasattr calls (which mask
-       conflict errors) and for greater readability and maintainability.
-
-     - Zope can now be embedded in C/C++ without exceptions being raised
-       in zdoptions.
-
-     - Collector #1213: Fixed wrong labels of cache parameters
-
-     - Collector #1265: Fixed handling of orphans in ZTUtil.Batch
-
-     - Collector #1293: missing 'address' parameters within one of the server
-       sections raise an exception.
-
-     - Collector #1345: AcceleratedHTTPCacheManager now sends the
-       Last-Modified header.
-
-     - Collector #1126: ZPublisher.Converters.field2lines now using
-       splitlines() instead of split('\n').
-
-     - Collector #1322: fixed HTML quoting problem with ZSQL methods
-       in DA.py
-
-     - Collector #1124: The ZReST product now uses the same reST encoding
-       parameters from zope.conf as the low-level reStructuredText
-       implementation.
-
-     - Collector #1259: removed the "uninstall" target from the Makefile
-       since the uninstall routine could also remove non-Zope files. Because
-       this was to dangerous it has been removed completely.
-
-     - Collector #1299: Fixed bug in sequence.sort()
-
-     - Collector #1159: Added test for __MACH__ to initgroups.c so the
-       initgroups method becomes available on Mac OS X.
-
-     - Collector #1004: text,token properties were missing in
-       PropertyManager management page.
-
-     - Display index name on error message when index can't be used as
-       'sort_on'.
-
-     - PUT would fail if the created object had a __len__ = 0 (eg:
-       BTreeFolder2) and fallback to _default_put_factory. Fix by
-       checking if the returned object is None instead.
-
-     - Collector #1160: HTTPResponse.expireCookie() potentially didn't
-       when an 'expires' keyword argument was passed.
-
-     - Collector #1289: Allow ZSQL methods to be edited via WebDAV.
-
-     - WebDAV property values were not being properly escaped on
-       'propstat'.
-
-     - WebDAV 'supportedlock' was not checking if the object did
-       implement the WriteLockInterface before returning it's
-       value.
-
-     - reStructuredText ignored the encoding settings in zope.conf
-
-     - ObjectManager no longer raises string exceptions
-
-     - Collector #1260: Testing/__init__.py no longer changes the
-       INSTANCE_HOME.
-
-     - App.config.setConfiguration() did not update the legacy source
-       for debug_mode, Globals.DevelopmentMode.
-
-     - Script (Python) objects now have a _filepath attribute, also
-       used as the '__file__' global at runtime.  This prevents an
-       import problem caused by the fix to #1074.
-
-     - Minor usability tweaks:
-
-       * Increased FindSupport meta type selection widgets
-         height to 8 lines
-
-     - The DateTime module did not recognize the settings for
-       "datetime-format".
-
-     - Stop testrunner.py from recursing into the 'build-base' directory
-       created by setup.py.
-
-     - Collector #1074: Change Scripts' __name__ to None
-
-     - Range searches with KeywordIndexes did not work with record-style
-       query parameters
-
-     - Item_w__name__ now has a working getId() method
-
-     - PageTemplateFile now using Item_w__name__ mixin, fixing
-       its getId() and absolute_url() methods.
-
-     - Only one VirtualHostMonster is allowed per container.
-
-     - Collector #1133: TreeTag choked on Ids of type long.
-
-     - Collector #1012: A carefully crafted compressed tree state
-       could violate size limit.  Limit is no longer hardcoded.
-
-     - Collector #1139: tal:attributes didn't escape double quotes.
-
-     - Management interface of TopicIndexes has been completely broken
-
-     - Collector #1129: Improper parsing of ISO8601 in DateTime.
-
-     - Removed pervasive use of string exceptions (some may still be
-       hiding in the woodwork, but all raise's with string literals are
-       gone).
-
-     - AccessControl.User used a misleading string exeception,
-       'NotImplemented', which shadowed the Python builtin.
-
-     - Collector #426: Inconsistent, undocumented error() method.
-
-     - Collector #799: Eliminate improper uses of SCRIPT_NAME.
-
-     - Collector #445: Add internal global declaration for Script bindings.
-
-     - Collector #616: Make CONTEXTS available to TALES Python expressions.
-
-     - Collector #1074: Give Script execution context a __name__
-
-     - Collector #1095: Allow TAL paths starting with '/varname' as a
-       preferred spelling for 'CONTEXTS/varname'.
-
-     - Collector #391: Cut and paste now requires delete permissions.
-
-     - Collector #331: Referenses to URL in manage_tabs was changed
-       to REQUEST.URL to prevent accidental overriding.
-
-     - Made the control panel properly reflect the cache-size setting
-       of ZODB's object cache once again.
-
-     - ConflictError was swallowed in ObjectManager by
-       manage_beforeDelete and _delObject. This could break code
-       expecting to do cleanups before deletion.
-
-     - Python 2.3 BooleanType wasn't handled properly by ZTUtils
-       marshalling and ZPublisher's converters.
-
-     - Collector #1065: bin/ scripts didn't export HOME envars.
-
-     - Collector #572: WebDAV GET protected by 'FTP Access' permission.
-       Two new methods have been added to WebDAV resources, "manage_DAVget"
-       and "listDAVObjects". These are now used by WebDAV instead of the
-       earlier "manage_FTPget" and "objectValues". This separates the
-       permissions, and allows WebDAV specific overriding of these methods.
-
-     - Collector #904: Platform specific signals in zdaemon/Daemon.py
-       (fixed by removing the "fossil" module from 2.7 branch and head).
-
-     - Workaround for Collector #1081: The 'title' property for objects
-       derived from OFS.Folder or PropertyManager can now be
-       removed and replaced with a ustring property. This allows the usage
-       of non-ISO-8859-1 or ASCII charsets
-
-     - Collector #951: DateTime(None) is now equal to DateTime()
-
-     - Collector #1056: aq_acquire() ignored the default argument
-
-     - Collector #1087: ZPT: "repeat/item/length" did not work as documented
-       in the Zope Book.
-
-     - Collector #721: Entities in tal:attribute values weren't
-       properly escaped.
-
-     - Collector #851: Traversable.py: A bare try..except shadowed
-       conflict errors
-
-     - Collector #1058: Several fixes for PropertySheets when used
-       outside ZClasses
-
-     - Collector #1053: parseIndexRequest turned empty sequence of search
-       terms into unrestricted search.
-
-     - manage_tabs had a namespace problem with the acquisition of names from
-       the manage_options variable resulting to acquire "target" and "action"
-       from objects above in the hierachy.
-
-     - PathIndex and TopicIndex are now using a counter for the number
-       of indexed objects instead of using a very expensive calculation
-       based on the keys of their indexes.
-
-     - Collector #1039: Whitespace problem in Z2.log fixed
-
-     - changed some bare try: except:'s in Shared.DC.ZRDB.Connection
-       so that they now log exceptions that occur.
-
-     - ObjectManager will now attempt to set Owner local role keyed
-       to the user's id, rather than username.
-

Copied: Zope/trunk/doc/obsolete/HISTORY.txt (from rev 96821, Zope/trunk/doc/HISTORY.txt)
===================================================================
--- Zope/trunk/doc/obsolete/HISTORY.txt	                        (rev 0)
+++ Zope/trunk/doc/obsolete/HISTORY.txt	2009-02-20 15:35:13 UTC (rev 96831)
@@ -0,0 +1,1964 @@
+Zope History
+
+  This file contains change information for previous versions of
+  Zope. Change information for the current release can be found
+  in the file CHANGES.txt.
+
+  Zope 2.11.3 (unreleased)
+
+    Bugs Fixed
+
+      - configure script: setting ZOPE_VERS to '2.11'
+
+      - Products.PluginIndexes.PathIndex:  backported doc fixes /
+        optiimizations from trunk (and ExtendedPathIndex).
+
+      - Updated 'pytz' from '2007f' to '2008i'.
+
+      - Moved svn:externals for 'mechanize', 'ClientPath', and 'pytz' to
+        versions managed outside the Zope3 trunk.
+  
+      - Testing.ZopeTestCase: Remove quota argument from DemoStorage calls in
+        preparation for ZODB 3.9.
+
+  Zope 2.11.2 (2008/10/24) 
+
+    Bugs Fixed
+
+      - updated to ZODB 3.8.1
+
+      - DateTime conversion of datetime objects with non-pytz tzinfo. 
+        Timezones() returns a copy of the timezone list (allows tests to run).
+        (Backport of r89373 from trunk).
+
+      - LP #253362: better dealing with malformed HTTP_ACCEPT_CHARSET headers
+
+      - Testing.ZopeTestCase: installPackage was tied to the ZopeLite layer.
+
+  Zope 2.11.1 (2008/07/17)
+
+    Bugs Fixed
+
+      - Suppressed DeprecationWarning during import of ZPublisher.Iterators:
+        that module needs to use Z2-style interfaces in 2.11, for BBB, but
+        the Interface module itself issues the warning on import.
+
+      - Launchpad #246748: added 'immediate' option to sendXXX() methods
+        for sending a mail immediately by-passing the zope.sendmail delivery
+        mechanism
+    
+      - Launchpad #246290: fixed backward compatibility issue
+
+      - zope.testing : updated to 3.5.3
+
+      - zope.viewlets: updated to 3.4.2
+
+      - zope.sendmail: updated to 3.5.0 (fixing Launchpad #230831)
+
+  Zope 2.11.0 (2008/06/15)
+
+    Restructuring
+
+      - Noted long-standing but silent deprecation of Zope2-style
+        interfaces (on import of the Interface package).  That package
+        is already gone on the trunk.
+
+    Bugs Fixed
+
+      - Launchpad #229549:  Don't ignore 'debug' flag when rendering
+        page templates (thanks to Eric Steele for the patch).
+
+      - Fixed against-the-rules zope.conf option 'fast_listen' to read
+        'fast-listen' (dash, not underscore).
+
+  Zope 2.11 rc 1 (2008/05/08)
+
+    Bugs Fixed
+
+      - Launchpad #142350: Display description for properties as row title,
+        if present.
+
+      - Launchpad #200007: DateTime(anotherDateTime) now preserves the
+        timezone.
+
+      - Launchpad #213311:  Handle "unsubscriptable object" errors
+        during publishing traversal.
+
+      - Products.Five: Fixed vocabulary lookup broken in 2.11 beta 1.
+        ZopeVocabularyRegistry wasn't hooked up on startup.
+
+      - Launchpad #143813: zopectl now exits non-zero when
+        child processes fail.
+
+      - Products.Five: Resynced browser.adding with zope.app.container.
+        This fixes some minor bugs and removes deprecated code.
+
+      - Launchpad #173658:  Removed dead code in OFS.Traversable's
+        'unrestrictedTraverse' (apparent NameError).
+
+      - Launchpad #198274:  "empty" ZopePageTemplates could not be
+        unpickled.
+
+  Zope 2.11 beta 1 (2007/12/29)
+
+    Restructuring
+
+      - Moved two implements declarations from Five into the proper classes.
+
+      - Document.sequence: replaced by zope.sequencesort
+
+      - All Products folders as well as the zope and zope.app folders are
+        declared as setuptools namespace packages now. See
+        http://peak.telecommunity.com/DevCenter/setuptools#namespace-packages
+        for more information about namespace packages.
+
+      - ZPT: removed display of ZPT warnings since warnings were
+        removed from the zope.pagetemplate implementation     
+
+      - Ship Zope with a standard docutils 0.4 distribution, instead
+        of a patched one.  Both trusted and untrusted code are still
+        protected against unwanted file inclusion.
+
+      - Removed ZGadflyDA (deprecated since Zope 2.9). The code is
+        still available from svn.zope.org/Products.ZGadflyDA.
+
+      - Removed OFS.content_types (deprecated since Zope 2.9)
+
+      - Undeprecated 'zLOG', which will remain a backward-compatibility
+        shim for the Python logging module.
+
+      - Indexes: Removed unused parameters from '_apply_index' methods.
+
+      - Removed deprecated support for product initialization based on
+        '__ac_permissions__' and 'meta_types' attributes.
+
+      - reStructuredText/ZReST: setting raw_enabled to 0 for security
+        reasons
+
+      - OFS Image: Image and File updated to use isinstance(data, str)
+        and raises TypeError upon encountering unicode objects.
+
+      - OFS Application: Updated deprecation warnings.
+        Support for '__ac_permissions__' and 'meta_types' will be removed in
+        Zope 2.11, 'methods' support might remain longer.
+
+    Features added
+
+      - Zope2 startup: Zope will now sends DatabaseOpened and
+        ProcessStarting events during startup
+
+      - Testing.ZopeTestCase: Introduced a "ZopeLite" test layer, making it
+        possible to mix ZTC and non-ZTC tests much more freely.
+
+      - Testing/custom_zodb.py: added support use a different storage other
+        than DemoStorage. A dedicated FileStorage can be mount by setting the
+        $TEST_FILESTORAGE environment variable to a custom Data.fs file.  A 
+        ZEO server can be configured using the $TEST_ZEO_HOST and 
+        $TEST_ZEO_PORT environment variables. This new functionality allows us
+        to use the standard Zope testrunner for writing and running tests
+        against existing Zope installations.
+
+      - The ZPublisher HTTP request has now both the debug and locale
+        attributes available, like its Zope 3 counterpart. The debug attribute
+        was so far limited to code from the zope.* namespace in order to make
+        the Zope 3 ZPT engine work. The locale attribute provides access to an
+        zope.i18n.interfaces.locales.ILocale object with access to locale
+        related information like date / time formatting or translated language
+        and country names. Form variables of both debug and locale will shadow
+        these two attributes and their use is therefor discouraged.
+
+      - MailHost: now uses zope.sendmail for delivering the mail. With this
+        change MailHost integrates with the Zope transaction system (avoids
+        sending dupe emails in case of conflict errors). In addition MailHost
+        now provides support for asynchronous mail delivery. The 'Use queue'
+        configuration option will create a mail queue on the filesystem (under
+        'Queue directory') and start a queue thread that checks the queue
+        every three seconds. This decouples the sending of mail from its
+        delivery.  In addition MailHosts now supports encrypted connections
+        through TLS/SSL.
+
+      - integrated ZODB 3.8 (featuring BLOB support)
+    
+      - integrated latest Zope3 components (aka Zope 3.4)
+
+      - Support for using zopectl on Windows has been added. All commands are
+        supported and there are two Windows specific ones: install and remove,
+        which install or remove the Windows service. The start, stop and
+        restart commands handle the Windows service. In order to use them, you
+        need to call 'bin\zopectl install' once.
+
+      - ZCatalog result objects (catalog brains) now have an interface,
+        ZCatalog.interfaces.ICatalogBrain.
+
+      - PythonScripts: allow usage of Python's 'sets' module
+
+      - added 'fast_listen' directive to http-server and webdav-source-server
+        sections in etc/zope.conf in order to defer the opening of the sockets
+        until the late startup phase. This in in particular useful when running
+        Zope behind a loadbalancer (patch by Patrick Gerken).
+
+      - AccessControl.Role: added new method
+        manage_getUserRolesAndPermissions().
+
+      - AccessControl: the form behind the "Security" tab has a new form
+        for user-related reporting of permissions and roles
+
+      - Zope 3-based exception views can now be registered in ZCML for
+        various exceptions that can be raised by Zope. Registering an
+        exception view can be done like this::
+
+          <browser:page
+            for="zope.publisher.interfaces.INotFound"
+            class=".view.SomeView"
+            name="index.html"
+            permission="zope.Public" />
+
+        Relevant exceptions that can have views are:
+
+        o zope.interface.common.interfaces.IException
+
+        o zope.publisher.interfaces.INotFound
+
+        o zope.security.interfaces.IForbidden
+
+        o zope.security.interfaces.IUnauthorized
+
+        Note that the name has to be 'index.html' for the exception
+        view to work. (patch by Sidnei da Silva from Enfold,
+        integration by Martijn Faassen (Startifact) for Infrae)
+
+      - DateTime now uses pytz for time zone data. This means support
+        for more time zones and up to date daylight saving time
+        information.
+
+    Bugs Fixed
+
+      - Collector #2113:  'zopectl test' masked Ctrl-C.
+
+      - Collector #2190: Calls to zope.security.management.checkPermission
+        weren't rerouted to Zope 2's security policy.
+
+        NOTE: If you already have a Zope 2.10 instance running, you
+        will either have to recreate it or add the following lines to
+        the end of the etc/site.zcml file::
+
+          <securityPolicy
+                component="Products.Five.security.FiveSecurityPolicy" />
+
+      - Collector #2223: Evaluation of booleans in TALES and the
+        'default' variable.
+
+      - Collector #2213: Can't edit "old" ZopePageTemplate instances.
+
+      - Collector #2235: A number of ZCatalog methods were doing boolean
+        evaluation of objects that implemented __len__ instead of checking
+        them against None. Replaced a number of "if not obj" with
+        "if obj is None".
+
+  Zope 2.10.8 (unreleased)
+
+    Restructuring
+
+      - Added 'InitializeClass' alias in 'App.class_init' to ease migration.
+        In Zope 2.12 it will be recommended to import 'InitializeClass' from
+        'App.class_init' instead of 'Globals'.
+
+      - Moved 'ApplicationDefaultPermissions' from 'App.class_init' to
+        'AccessControl.Permissions', in order to break an import cycle
+        in third-party code which avoids imports from 'Globals.'  Left
+        the class importable from its old location without deprecation.
+
+    Bugs fixed
+
+      - LP/#143873: Fixed problems when no HTTP_ACCEPT_CHARSET is in the
+        request. This required an update of zope.publisher to 3.3.3.
+
+      - LP/#324876: tighened regex for detecting the charset
+        from a meta-equiv header
+
+      - Acquisition wrappers now correctly proxy __iter__.
+
+      - Launchpad #174705:  ensure that the error info object exposed to a
+        'tal:on_error' handler has attributes visible to restricted code.
+
+  Zope 2.10.7 (2008/10/24)
+
+    Bugs fixed
+
+      - Ensure that response header values cannot embed CRLF pairs, which
+        violate the HTTP spec (RFC 2616).
+
+      - Launchpad #282677: fixed implementation of guarded_map and
+        provided tests and implementation for guarded_zip
+        (RestrictedPython).
+
+      - Lauchpad #143736,#271395: fixed AttributeError' on _ltid in TempStorage
+
+      - 'AccessControl.ZopeGuards.guarded_import' mapped some Unauthorized
+        exceptions onto ImportErrors:  don't do that!  Also, removed
+        mutable defaults from argument list, improved tests.
+
+      - LP #281156:  'AccessControl.SecurityInfo.secureModule' dropped
+        ModuleSecurity for failed imports, obscuring later attempts to
+        import the same broken module.
+
+      - LP #142667:  Updated to ZODB-3.7.3 to fix problem with product
+        auto-refresh.
+
+      - Updated to Five 1.5.8
+
+      - Launchpad #245649:  the Products package is now a proper
+        "namespace package" under the rules specified by setuptools.
+
+      - Fixed outdated transaction.commit(1) call in 
+        ZODBMountPoint.SimpleTrailblazer
+
+      - Launchpad #239636:  Ensure that HEAD requests lock an empty body
+        for NotFound errors.
+
+      - Launchpad #229549:  Don't ignore 'debug' flag when rendering
+        page templates (thanks to Eric Steele for the patch).
+
+      - integrated Hotfix-2008-08-12
+
+      - Launchpad #267545: DateTime(DateTime()) now preserves the
+        correct hour
+
+      - Launchpad #262313: respect the 'Expand macros when editing' flag
+        when editing a page template through the ZMI
+
+
+  Zope 2.10.6 (2008/05/10)
+
+    Bugs fixed
+
+      - Launchpad #142350: Display description for properties as row title,
+        if present.
+
+      - Launchpad #200007: DateTime(anotherDateTime) now preserves the
+        timezone.
+
+      - Launchpad #213311:  Handle "unsubscriptable object" errors
+        during publishing traversal.
+
+      - Launchpad #143813: zopectl now exits non-zero when
+        child processes fail.
+
+      - Launchpad #173658:  Removed dead code in OFS.Traversable's
+        'unrestrictedTraverse' (apparent NameError).
+
+      - Launchpad #198274:  "empty" ZopePageTemplates could not be
+        unpickled.
+
+      - zope.security: switched to use standalone 3.3.3 version, which
+        contains a backport of a huge performance bugfix from the 3.4 branch.
+
+      - Launchpad #164783: Indexes were migrated on initial creation of a
+        ZODB.
+
+  Zope 2.10.5 (2007/10/30)
+
+    Other changes
+
+      - Turned deprecation warnings for manage_afterAdd, manage_beforeDelete
+        and manage_afterClone methods into discouraged warnings. These methods
+        will not be removed in Zope 2.11, but stay for the foreseeable future.
+        Using events is still highly encouraged.
+
+    Bugs fixed
+
+      - Launchpad #147201: treat container-class in zope.conf as a string,
+        making it possible to use types from extra products directories.
+
+      - Collector #2358: backported fix making 'Products' package a real
+        "namespace package" from the trunk.
+
+      - Collector #2287: form ':record' objects did not implement enough of
+        the mapping interface.
+
+      - Collector #2352: fix in OFS.Traversable
+
+      - Collector #2346: username logging in FCGI crashed the server
+
+      - ZopePageTemplate's pt_edit did not recognize content type arguments
+        which had a charset information included.
+
+      - Collector #2332: SessionDataManger: don't swallow ConflictErrors
+
+      - Collector #2339: ZPT: fixed unicode issue when using the 'structure'
+        directive
+
+      - Launchpad #151020: HTTP_CHAR_SET headers containing 'x-user-defined'
+        caused a LookupError exception. Unknown encodings are from now on
+        silently discarded.
+
+  Zope 2.10.4 (2007/06/23)
+
+    Other changes
+
+      - updated to ZODB 3.7.1
+
+      - updated to Zope 3.3.2
+
+      - updated to Five 1.5.5
+
+    Bugs fixed
+
+      - Collector #1306: Missing acquisition context on local roles screen.
+
+      - Collector #2153: Supporting unquoted cookies with spaces.
+
+      - The REQUEST no longer accepts holds after it has been closed.
+
+      - Collector #1441: WebDAV compatibility with Windows Web Folders
+        restored by adding a configuration variable that controls the
+        sending of the non-standard MS-Author-Via and Public
+        headers. Thanks for PatrickD for the the hard work coming up
+        with an initial patch.  
+        (http://zope.org/Collectors/Zope/1441)
+
+      - Fixed bug in ZPublisher.BaseRequest with persistent site managers. An
+        EndRequestEvent was thrown after the ZODB connection was already
+        closed and thus the site manager not being available anymore.
+
+      - Collector #2295: Comments in PythonScripts could lead to syntax
+        errors
+
+      - Collector #2307: ObjectCopiedEvent not dispatched to sublocations.
+
+      - Collector #2304: fixed markup issue in ptEdit.zpt
+
+      - Collector #2260: fixed Examples.zexp
+
+      - Collector #2320: HTTPResponse setHeader lowercased keys but getHeader
+        did not, causing lookups of 'Content-Type' to fail
+
+      - Collector #2321: Skip trusted proxies when extracting the client IP
+        address from the request.
+
+      - Collector #2318: Allow override of zopectl's control socket in
+        zope.conf
+
+      - Collector #2316: correctly unpack DateTimeIndex dates when browsing the
+        index.
+
+      - Collector #1866: a 304 HTTP status should not have a content length.
+  
+      - Collector #2300: delimit *all* HTTP Response headers with CRLF.
+
+  Zope 2.10.3 (2007/03/25)
+
+    Bugs fixed
+
+      - Collector #2298: webdav.Resource.COPY and webdav.Resource.MOVE did
+        not send the expected copy/move events.
+
+      - Collector #2296: Fixed import of ZClass products, broken by removal
+        of BBB support for pasting objects whose meta_type info was
+        permission-free.
+
+      - Collector #2294: Protected DOS-able ControlPanel methods with the
+        same 'requestmethod' wrapper.
+
+      - Collector #2294: Protected various security mutators with a new
+        'postonly' decorator.  The decorator limits method publishing to
+        POST requests only, and is a backport from Zope 2.11's requestmethod
+        decorator factory.
+
+      - Collector #2289: restored compatibility with PTProfiler
+    
+      - No longer opens a zodb connection every time a ProductDispatcher
+        is looked up.
+
+      - Collector #2288: @ and + should not be quoted when forming
+        request URLs in BaseRequest and HTTPRequest
+
+      - Undeprecated 'zLOG', which will remain a backward-compatibility
+        shim for the Python logging module.
+
+      - PageTemplate/ZRPythonExpr.py: expressions represented as unicode string
+        caused UnicodeDecodeErrors. 
+
+  Zope 2.10.2 (2007/01/26)
+
+    Bugs fixed
+
+      - Updated Zope 3 to bugfix release 3.3.1.
+
+      - Collector #2261: Acquisition when creating objects via Webdav.
+
+      - Collector #2269: fixed broken FTP support for ZPT
+
+  Zope 2.10.2 beta 1 (2007/01/14)
+
+    Bugs fixed
+
+      - Fixed Collector #2190: Calls to
+        zope.security.management.checkPermission aren't rerouted to
+        Zope 2's security policy.
+
+        NOTE: If you already have a Zope 2.10 instance running, you
+        will either have to recreate it or add the following lines to
+        the end of the etc/site.zcml file::
+
+          <securityPolicy
+                component="Products.Five.security.FiveSecurityPolicy" />
+
+      - Fixed Collector #2223: Evaluation of booleans in TALES and the
+        'default' variable.
+
+      - Reverted backward-incompatible fix for Collector #2191.
+
+      - Fixed the creation of lib/python/Zope2/version.txt
+
+      - added Python 2.4.4 as optimal Python version to 'configure'
+
+      - the ZopePageTemplate implementation now uses unicode
+        internally.  Non-unicode instances are migrated on-the-fly to
+        unicode. However this will work only properly for ZPT
+        instances formerly encoded as utf-8 or ISO-8859-15. For other
+        encodings you might set the environment variable
+        ZPT_REFERRED_ENCODING to insert your preferred encoding in
+        front of utf-8 and ISO-8859-15 within the encoding sniffer
+        code. In addition there is a new 'output_encodings' property
+        that controls the conversion from/to unicode for WebDAV/FTP
+        operations.
+
+      - the ZPT implementation has now a configurable option in order
+        how to deal with UnicodeDecodeErrors. A custom
+        UnicodeEncodingConflictResolver can be configured through ZCML
+        (see Products/PageTemplates/(configure.zcml,
+        unicodeconflictresolver.py, interfaces.py)
+
+  Zope 2.10.1 (2006-11-22)
+
+    Bugs fixed
+
+      - Collector #2191: extended DateTime parser for better support
+        to the ISO8601 specification.
+
+      - Reworking of _cached_result in Shared.DC.ZRDB.DA.DA:
+
+        - fixed KeyError reported in Collector #2212
+
+        - fixed two memory leaks that occurred under high load
+
+        - fixed broken cache keys for people using the obscure 
+          Shared.DC.ZRDB.DA.DA.connection_hook
+
+        - fixed incorrect cache ordering resulting in newer results
+          being dumped when the cache became too large.
+
+      - Collector #2232: Can't call DTML templates from Page Templates
+
+      - Collector #2213: Can't edit "old" ZopePageTemplate instances.
+
+      - Collector #2237: 'make' doesn't tell you to run 'make inplace'
+        before running 'make instance'.
+
+      - Collector #2235: A number of ZCatalog methods were doing boolean
+        evaluation of objects that implemented __len__ instead of checking
+        them against None. Replaced a number of "if not obj" with
+        "if obj is None".
+
+      - Collector #2208: rewriting/setting the 'charset' part of the
+        content-type HTTP header will be done only for 'text/*'
+
+      - Collector #2209: ZTUtils module could not be used inside ZPT
+
+      - Collector #2206: Set PYTHONPATH to include existing PYTHONPATH
+        in skel/bin/zopectl.in and skel/bin/runzope.in
+
+
+  Zope 2.10.0 (2006/10/04)
+
+    Bugs fixed
+
+  
+  Zope 2.10.0 RC 1 (2006/09/25)
+
+    Bugs fixed
+
+      - Call setDefaultSkin on new requests created as the result of
+        ConflictError retries.
+
+      - Collector #2187: PUT_factory broken
+      
+  Zope 2.10.0 beta 2 (2006/09/17)
+
+    Bugs fixed
+
+      - Collector #2117: Don't choke in 'unrestrictedTraverse' for '+'
+        path elements.
+
+      - Collector #2185: Log username for FCGI requests.
+
+      - Collector #2152: Fixed MailHost documentation; simple_send does not
+        process or validate its arguments in any way.
+
+      - Collector #2175: ZTUtils.make_hidden_input did not escape
+        double-quotes.
+
+      - Collector #2176: Fixed bad logging call.
+
+      - Collector #1907: Moved 'alt' property from File to Image.
+
+      - Collector #1983: Specifying session-resolution-seconds >= 1200 caused
+        Zope startup to fail.
+
+      - Collector #2169: webdav.Resource.COPY did not send ObjectClonedEvent.
+
+      - Collector #2178: Fix ZopeTestCase doctest support for layers
+
+  Zope 2.10.0 beta 2 (2006/08/20)
+
+    Bugs Fixed
+
+      - Collector #2155: Fix wrong parameter being passed to
+        logger's error() method, with tests.
+
+      - Updated Five to stable 1.5 release.
+
+      - Traversal order changes were causing WebDAV requests which used
+        acquisition to fail.
+
+      - Collector #2157: Expose name of broken class in SystemError raised
+        from '__getstate__' of a broken instance.
+
+      - Usage of 'urljoin' in 'webdav.davcmds' could lead to wrongly
+        constructed urls.
+
+      - Fix #2141: TALES doesn't traverse correctly over 'repeat'
+        variable
+
+      - reStructuredText/ZReST: setting raw_enabled to 0 for security
+        reasons
+
+      - Collector #2113:  'zopectl test' masked Ctrl-C.
+
+      - OFS Image: Image and File updated to use isinstance(data, str)
+        and raises TypeError upon encountering unicode objects.
+
+      - OFS Application: Updated deprecation warnings.
+        Support for '__ac_permissions__' and 'meta_types' will be removed in
+        Zope 2.11, 'methods' support might remain longer.
+
+      - Collector #2136: Map ResourceLockedError to the correct response code.
+
+      - Collector #2016: DemoStorage couldn't wrap base storages without
+                         an '_oid' attribute.
+
+      - Collector #2118: Empty TALES path expressions are allowed
+        in Zope 2.
+
+      - Acquisition wrappers now correctly proxy __contains__.
+
+      - Collector #2116: sequence.sort() did not work properly
+        locale related comparison methods
+
+      - Collector #2122: fixed missing is_proxying_match definition
+        in ZServer/HTTPServer
+
+      - Collector 2077: fixed problem with ACTUAL_URL and SiteRoot
+
+      - Collector #2073: fixed misbehaviour of OFS.Owned.changeOwnership
+
+      - Collector #2063: cleaned up some mess in MailHost.sendTemplate()
+
+      - View and attribute lookup order was changed to the following:
+           1. Unacquired attributes
+           2. Views
+           3. Acquired attributes
+        According to consensus in z3-five mailing list:
+        http://codespeak.net/pipermail/z3-five/2006q2/001474.html
+        
+      - The defaultView directive now only looks up views, not attributes.
+
+      - Collector #2178: Fix ZopeTestCase doctest support for layers
+
+    Other Changes
+
+      - Disabled docutils file inclusion completely, rather than trying
+        to jigger it via configuration settings.
+
+      - Returned to the "classic" './configure && make && make install'
+        recipe, dropping the use of 'zpkg' for building Zope2 releases.
+
+  Zope 2.10.0 beta 1 (2006/05/30)
+
+    Restructuring
+
+      - Zope 2.10+ now includes site.zcml as part of its instance
+        creation skel directory.  As a consequence Five now requires
+        this file to exist in every instance.  If upgrading a site
+        from Zope 2.9 to 2.10, you will need to copy site.zcml and
+        package-includes/ from your installed Zope installation
+        location (skel/etc/) into the etc/ directory of your upgraded
+        instance.
+
+        The rationale for requiring this new file is to bring Zope 2
+        instances closer in consistency to Zope 3 instances.  It also
+        eases use of Zope 3 coding techniques in Zope 2 and removes
+        some confusion when trying to run pure Zope 3 applications on
+        Zope 2.
+
+      - Products.PageTemplates now uses the Zope 3 ZPT implementation
+        in zope.pagetemplate.
+
+      - The TAL package has been deprecated in favour of the TAL
+        engine from zope.tal.
+
+      - Products.PageTemplates.TALES has been deprecated in favour of
+        the TALES engine from zope.tales.
+
+      - ZTUtils.Iterator has been deprecated in favour of the TALES
+        iterator implementation in zope.tales.tales.
+
+      - ZCatalog: removed manage_deleteIndex(), manage_delColumns()
+        which were deprecated since Zope 2.4
+
+      - deprecated the zLOG module. Use Pythons 'logging' module instead.
+
+      - replaced all zLOG occurences (expect the zLOG module itself) with
+        the 'logging' module
+
+      - PluginIndexes/TextIndex is deprecated. Use ZCTextIndex instead
+  
+      - the 'StructuredText' module is deprecated. Use zope.structuredtext
+        instead
+
+      - removed ZopeTutorial (Elvis is now really dead)
+
+      - ZClasses are deprecated and should no longer be used. In addition
+        any code related to the ZClasses (re)distribution mechanism is
+        removed.
+
+      - ZGadyFlyDA/Gadfly is deprecated
+
+      - deprecated OFS.content_types (to be removed in Zope 2.11) and
+        replaced all occurences with zope.app.content_types
+
+      - OFS.content_types: moved code to zope.app.content_types and added
+        method aliases
+
+      - Using FastCGI is offically deprecated.
+
+    Features added
+
+      - added PluggableIndexes/interfaces/IIndexConfiguration (on request
+        by the GenericSetup community)
+
+      - Included Zope 3.3 and corresponding Five 1.5 release.
+
+      - There is now a default favicon.ico.
+
+      - Experimental WSGI and Twisted support for http.
+        Zope now has a WSGI interface for integration with other
+        web-servers than ZServer. Most notably Twisted is supported.
+        The WSGI application is ZPublisher.WSGIPublisher.publish_module
+
+        You can make ZServer use the twisted interface with the
+        "use-wsgi on" keyword in the http-server section in zope.conf.
+
+        You can run Twisted by installing Twisted (2.1 recommended) and
+        replacing the http-server section with a server section in
+        zope.conf. It is not possible to run a Twisted server together with
+        a ZServer at the same time::
+
+          <server>
+            address 8080
+            type Zope2-HTTP
+          </server>
+
+        WSGI: http://www.python.org/dev/peps/pep-0333/
+        Twisted: http://twistedmatrix.com/
+
+      - The traversal has been refactored to take heed of Zope3s
+        IPublishTraverse adapter interfaces. The ZCML directives
+        five:traversable and five:defaultViewable are therefore no
+        longer needed, as everything now is five:traversable and
+        five:defaultViewable.
+
+        There was a bug in earlier versions of Five that allowed you
+        to do custom publishing traversal with ITraversable adapters.
+        This bug has been corrected. Anybody using ITraversable
+        adapters need to convert them to IPublishTraversal adapters.
+
+      - Testing.makerequest: Added an 'environ' argument so
+        clients can use mappings other than os.environ.
+
+      - Updated to Docutils 0.4.0
+
+      - reStructuredText: The default value for the 'stylesheet'
+        property has been changed from 'default.css' to None because
+        there is no 'default.css' file by default.
+
+      - ZReST: rewritten render() method to integrate it smoothly
+        with Docutils 0.4.0. The default value for the 'stylesheet'
+        property has been changed from 'default.css' to None because
+        there is no 'default.css' file by default.
+
+      - Added a "clock server" servertype which allows users to
+        configure methods that should be called periodically as if
+        they were being called by a remote user agent on one of Zope's
+        HTTP ports.  This is meant to replace wget+cron for some class
+        of periodic callables.
+
+        To use, create a "clock-server" directive section anywhere
+        in your zope.conf file, like so::
+
+             <clock-server>
+                method /do_stuff
+                period 60
+                user admin
+                password 123
+                host localhost
+             </clock-server>
+
+        Any number of clock-server sections may be defined within a
+        single zope.conf.  Note that you must specify a
+        username/password combination with the appropriate level of
+        access to call the method you've defined.  You can omit the
+        username and password if the method is anonymously callable.
+        Obviously the password is stored in the clear in the config
+        file, so you need to protect the config file with filesystem
+        security if the Zope account is privileged and those who have
+        filesystem access should not see the password.
+
+        Descriptions of the values within the clock-server section
+        follow::
+
+          method -- the traversal path (from the Zope root) to an
+          executable Zope method (Python Script, external method,
+          product method, etc).  The method must take no arguments or
+          must obtain its arguments from a query string.
+
+          period -- the number of seconds between each clock "tick" (and
+          thus each call to the above "method").  The lowest number
+          providable here is typically 30 (this is the asyncore mainloop
+          "timeout" value).
+
+          user -- a zope username.
+
+          password -- the password for the zope username provided above.
+
+          host -- the hostname passed in via the "Host:" header in the
+          faux request.  Could be useful if you have virtual host rules
+          set up inside Zope itself.
+
+        To make sure the clock is working, examine your Z2.log file.  It
+        should show requests incoming via a "Zope Clock Server"
+        useragent.
+
+      - Added a 'conflict-error-log-level' directive to zope.conf, to set
+        the level at which conflict errors (which are normally retried
+        automatically) are logged. The default is 'info'.
+
+      - The SiteErrorLog now copies exceptions to the event log by default.
+
+      - ObjectManager now has an hasObject method to test presence. This
+        brings it in line with BTreeFolder.
+
+      - Improved logging of ConflictErrors. All conflict errors are
+        logged at INFO, with counts of how many occurred and how many
+        were resolved. Tracebacks for all conflicts are logged a DEBUG
+        level, although these won't help anyone much. If a conflict
+        error is unresolved, it will now bubble up to error_log and
+        standard_error_message.
+
+      - Use new-style security declarations everywhere possible. This
+        means remove the use of __ac_permissions__, foo__roles__ and
+        default__class_init__. A few corner cases can't be converted
+        because of circular imports.
+
+      - Fixed unclear security declarations. Warn when an attempt is
+        made to have a security declaration on a nonexistent method.
+
+      - updated to ZPL 2.1
+
+      - interfaces: Added 'Interfaces' tab to basic core objects.
+        This is a Five feature and only available if the classes are made
+        five:traversable. It allows to inspect interfaces and to assign
+        marker interfaces through the ZMI.
+
+      - webdav: Added support for the z3 WriteLock interface.
+        It is no longer necessary to have the WriteLockInterface in the
+        __implements__ list of lockable objects. All classes inheriting from
+        LockableItem inherit also the IWriteLock interface. Note that this
+        enables webdav locking for all subclasses by default even if they
+        don't specify the WriteLockInterface explicitly.
+
+      - App ProductContext: Made registerClass aware of z3 interfaces.
+        Z2 and z3 interfaces are registered side by side in the same tuple in
+        Products.meta_types. IFAwareObjectManagers like the ZCatalog work now
+        with z3 interfaces as well.
+
+      - Zope now sends Zope 3 events when objects are added or removed
+        from standard containers. manage_afterAdd, manage_beforeDelete
+        and manage_afterClone are now deprecated. See
+        lib/python/Products/Five/tests/event.txt for details.
+
+      - Zope now utilizes ZODB 3.6.  It had previously used
+        ZODB 3.4.  As a result, the DBTab package was removed, as
+        ZODB 3.6 has multidatabase support that makes DBTab
+        unnecessary.
+
+      - Added a 'product-config' section type to zope.conf, allowing
+        arbitrary key-value mappings.  Products can look for such
+        confgiurations to set product-specific options.  Products mwy
+        also register their own section types, extending the
+        'zope.product.base' type. (see the example '<product-config>'
+        section in skel/etc/zope.conf.in for sample usage).
+
+      - Collector #1490: Added a new zope.conf option to control the
+        character set used to encode unicode data that reaches
+        ZPublisher without any specified encoding.
+
+      - AccessControl, Acquisition, App, OFS, webdav, PluginIndexes,
+        ZCatalog and ZCTextIndex: Added some Zope 3 style interfaces.
+        This makes the bridged interfaces shipped with Five obsolete.
+
+      - ZConfig extension, address now also accepts symbolic port names
+        from etc/services (unix) or etc\services (win32)
+
+      - ZPublisher.HTTPRequest.FileUpload now supports full file
+        object interface.  This means Iterator support was added. (for
+        line in fileobject: ..., as well as fileobject.next() and
+        fileobject.xreadlines() ) Collector #1837
+
+      - Switched the bundled Zope 3 to release 3.2 and upgraded the
+        Five product to version 1.3 (see Products/Five/CHANGES.txt).
+
+      - The PageTemplate implementation now uses Zope 3 message
+        catalogs by default for translation.  Old-style translation
+        services such as Localizer or PlacelessTranslationService are
+        still supported as fall-backs.  See Products/Five/doc/i18n.txt
+        for more information.
+
+      - Switched to the new improved test runner from Zope 3.  Run
+        test.py with -h to find out more.
+
+      - lib/python/docutils is now a reference to docutils package
+        from the Zope 3 source tree (to get rid of redundant packages)
+
+    Bugs Fixed
+
+      - Collector #1447: When editing content on a virtual-hosted zope,
+        AcceleratedHTTPCacheManager now purges the correct URL.
+
+      - When you add roles in manage_access, roles are now stripped of
+        any leading or trailing spaces.
+
+      - Collector #2062: Fix manage_historyCopy, which was broken, and write
+        tests for it.
+
+      - Collector #2061: Fix problems where windows line endings are passed
+        to restricted code compilers.
+
+      - Collector #2051: Applied patch by Yoshinori Okuji to fix some
+        XML export/import problems, including tests for that feature.
+
+      - Collector #2037: fixed broken ACTUAL_URL for '/'
+
+      - Missing import of NotFound in webdav.Resource
+
+      - Collector #1819: fixed method signature of
+        MountedObject.SimpleTrailblazer._construct()
+
+      - Collector #2019: removed validateValue() from cAccessControl (already
+        removed in former Zope versions from the AccessControl Python
+        implementation)
+
+      - Collector #1991: ZPublisher did not deal properly with a trailing
+        %20 in the URL
+
+      - zope.app.introspector was not included with the source archive
+
+      - Collector #2013: improved XHTML conformance of error messages,
+        some of which did not close '<p>' tags.
+
+      - Collector #2002: fixed broken 'ls -R' functionality (didn't
+        recurse properly subclasses of OFS.Folder)
+
+      - Collector #1992: unified the visible hostnames of the FTP and
+        HTTP servers
+
+      - Collector #1999: fixed broken FTP rename functionality
+        (RNFR now returns 350 as status code instead 250)
+
+      - HTTPResponse: for XML content the encoding specified within
+        the XML preamble is adjusted to the real encoding of the content
+        as specified through the 'charset' within the content-type
+        property.
+
+      - Collector #1939: When running as a service, Zope could
+        potentially collect too much log output filling the NT Event
+        Log. When that happened, a 'print' during exception handling
+        would cause an IOError in the restart code causing the service
+        not to restart automatically.
+
+        Problem is that a service/pythonw.exe process *always* has an
+        invalid sys.stdout.  But due to the magic of buffering, small
+        "print" statements would not fail - but once the file actually
+        got written to, the error happened.  Never a problem when
+        debugging, as the process has a console, and hence a valid
+        stdout.
+
+      - For content-type HTTP headers starting with 'text/' or 'application/'
+        the 'charset' field is automatically if not specified by the
+        application. The 'charset' is determined by the content-type header
+        specified by the application (if available) or from the
+        zpublisher_default_encoding value as configured in etc/zope.conf
+
+      - Collector #1976: FTP STOR command would load the file being
+        uploaded in memory. Changed to use a TemporaryFile.
+
+      - OFS ObjectManager: Fixed list_imports() to tolerate missing
+        import directories.
+
+      - Collector #1621, 1894:  Removed support for use of long-deprecated
+        'whrandom' module.
+
+      - OFS PropertySheets / webdav: Fixed dav__resourcetype.
+        __dav_collection__ with a false value was overridden by
+        isAnObjectManager.
+
+      - added missing Zope 3 imports: zope.app.intid, zope.app.keyreference,
+        zope.app.session, zope.contentprovider, zope.viewlet
+
+    Other
+
+      - AccessControl.User: Use a better __repr__.
+
+      - ZSQLMethod.manage_main: Moved the error message that warns of a
+        non-existing or closed database connection next to the Connection ID
+        dropdown and present it using red to increase its visibility.
+
+      - The ImageFile module has finally been deprecated for good and
+        will be removed in Zope 2.11.  Use App.ImageFile instead.
+
+  after Zope 2.8.1
+
+      - The '@' character is now allowed in object ids (RFC 1738 allows it).
+
+    Bugs Fixed
+
+      - If a content object implemented any in-place numeric operators,
+        untrusted code could call them, thus modifying the content.
+
+      - If Python 2.4 is used, despite the fact that Python 2.4 is
+        unsupported, untrusted code could use generator expressions to
+        gain access to container items.
+
+      - Collector #1895: testrunner: omitting the 'var' from recursive
+        directory walking
+
+      - OFS.Image.manage_FTPget() would str() it's .data attribute,
+        potentially loading the whole file in memory as a
+        string. Changed to use RESPONSE.write() iterating through the
+        Pdata chain, just like index_html().
+
+      - Collector #1863: Prevent possibly sensitive information to leak via
+        the TransientObject's __repr__ method.
+
+      - Repaired 'handle_errors' usage for doctests, along with the
+        supporting 'debug' argument passed to
+        'ZPublisher.Test.publish_module'.
+
+      - Collector #1879: applied patch by Dieter Maurer to fix a bug in
+        ac_aquire() ignoring the default argument
+
+      - Collector #1864, #1906: fixed header normalization in appendHeader()
+
+      - Collector #1899: fixed migration issue when using export/import for
+        ZCatalog instances
+
+      - Collector #1871: Applied patch to support lists with records using
+        ZTUtils.make_query()
+
+      - AccessControl: creating a new user through "zpasswd inituser" did not
+        work properly with a top-level user folder with enabled password
+        encryption.
+
+      - ZCatalog: refreshCatalog() could not be called safely from a ZEO
+        client script
+
+      - Catalog.clear(): fixed handling of _length attribute (caused import
+        problems for some .zexp files e.g. Squishdot instances)
+
+      - DateIndex now properly removes documents from both indexes if
+        the value is None
+
+      - Collector #1888: Some parts of the TALInterpreter would not pass a
+        default when  translating, yet expect a string back. This would cause
+        an error (usually "NoneType has no attribute 'replace'") in the case
+        the message was not translated.
+
+  Zope 2.8.1 (2005/08/11)
+
+    Features added
+
+      - Interface: Added Z3 -> Z2 bridge utilities.
+        This allows to migrate interfaces to Zope 3 style interfaces and
+        bridge them back to oldstyle interfaces for backwards compatibility.
+
+    Bugs Fixed
+
+      - Zope2.Startup.zopectl: fork before execv when running unit tests
+        (don't exit the shell, if run from there).
+
+      - TAL: MassageIDs are now handled the same way as in zope.tal.
+
+      - DocumentTemplate: ustr no longer mangles MassageIDs.
+        Custom string types are now returned unchanged.
+
+      -  As developed in a long thread starting at
+         http://mail.zope.org/pipermail/zope/2005-July/160433.html
+         there appears to be a race bug in the Microsoft Windows socket
+         implementation, rarely visible in ZEO and/or in
+         ZServer/medusa/thread/select_trigger.py when multiple processes try
+         to create an "asyncore trigger" simultaneously, most often (in
+         stress tests) manifesting as a hung process.  Windows-specific
+         trigger code in both changed to work around this bug when it occurs.
+
+      - Collector #1807: fixed memory leak in cAccessControl.guarded_getattr()
+
+
+  Zope 2.8.1 b1 (2005/07/28)
+
+    Features Added
+
+      - PluginIndexes, ZCTextIndex and ZCatalog: Added some z3 interfaces.
+
+      - Verbose security exception reporting has been folded into Zope,
+        removing the need for the VerboseSecurity product.  See the
+        documentation for the "verbose-security" option in zope.conf.
+
+      - "TemporaryStorage" (the storage that is used mainly to back the
+        default sessioning database) is now MVCC capable, which essentially
+        means that its usage will no longer generate ZODB ReadConflictErrors.
+
+    Bugs Fixed
+
+      - Collector #1852: fixed wrong URL construction in webdav.davcmds
+
+      - Collector #1844: fixed whitespace handling in the ZMI "Find" tab
+
+      - Collector #1813: removed spurious inclusion of CMFBTreeFolder.
+        in Products/BTreeFolder2 (CMFCore will include it after 1.5, with
+        an appropriate module alias for backward compatibility).
+
+      - Replaced all transaction.commit(1) calls by  transaction.savepoint()
+
+      - Collector #1832: UnIndex swallowed ConflictErrors.
+
+      - Collector #1815: ZCTextIndex accepts (again) sequences of strings to
+        be indexed.
+
+      - Collector #1812: Fixed key error in ZSQL ZMI/Test
+
+      - Fixed CMFBTreeFolder for CMF 1.5+
+
+      - WebDAV COPY and MOVE did not call '_notifyOfCopyTo' and '_postCopy'
+        hooks like it was done in OFS.CopySupport. Additionally added
+        'manage_changeOwnershipType' to make MOVE behave even closer to
+        OFS.CopySupport.
+
+      - Collector #1548: Fix 'httplib' usage in ZPublisher.Client.
+
+      - Collector #1808: manage_convertIndexes no longer tries to change the
+        index types causing some trouble with CMF.
+
+      - manage_convertIndexes did not treat DateRangeIndexes and PathIndexes
+        properly.
+
+      - Updated Zope X3 to bugfix release 3.0.1
+
+      - Updated Five to bugfix release 1.0.2 (see Products/Five/CHANGES.txt)
+
+  Zope 2.8.0 (2005/06/11)
+
+    Bugs Fixed
+
+      - Collector #1792: applied patch for broken ZClasses
+
+      - doc/FAQ.txt updated: should bear some resemblance to reality now.
+        (PCGI stuff removed; error information updated; PID information
+        updated; upgrade procedure added; some common version questions
+        added.)
+
+      - Collector #1770: Fixed RestructuredText subtitle
+
+      - Collector #1803: Fixed InitializeClass for some corner case.
+
+      - Collector #1798, issue 1: ZopeTestCase no longer tries to
+        install products that were installed by Zope during startup.
+
+      - Collector #1799: Avoid lying about parent's refcount when
+        calling back into Python code.
+
+      - Collector #889:  made 'and' operator for KeywordIndexes actually
+        restrict results as expected (thanks to 'aroda' for the patch!).
+
+      - Collector #1323: applied patch to fix umask problem in zdctl
+
+      - Updated Five to bugfix release 1.0.1 (see Products/Five/CHANGES.txt)
+
+  Zope 2.8.0 b2 (2005/05/22)
+
+    Features added
+
+      - Made WebDAV server distinguishable from the default HTTP
+        server both in the ZMI and in event.log.
+
+      - Included BTreeFolder2
+
+    Bugs fixed
+
+      - Collector #1507/1728: Server addresses are now handled the same way on
+        all platforms. This fixes the default binding on Windows.
+
+      - Collector #1781: made 'create_mount_points' ZConfig option actually
+        work (thanks to Dieter Maurer for the patch).
+
+      - Collector #1780: DateTime.strftime() now handles dates <= 1900 or
+        >= 2038
+
+      - Collector #1775: turning off debug mode by default
+
+      - Collector #1784: fixed handling of multiple attributes in ZCTextIndex
+
+      - Don't copy '.svn' directories from skeleton into an instance
+        (thanks to Dale Hirt for the patch).
+
+      - Collector #1776: Improved setup.py.
+        The Finder class is now used for the complete lib/python tree and has
+        a blacklist instead of a whitelist for file extensions. So there
+        should no longer be a need to update setup.py if modules or files are
+        added or removed in lib/python.
+
+      - Collector #1751: Improved error reporting reporting during the
+        startup phase
+
+      - Collector #1745: Fixed ZSQL error KeyError 'query'
+
+      - Collector #1735: fixed UnicodeDecodeError in Loader.py
+
+  Zope 2.8b1 (2005/04/24)
+
+    Features added
+
+      - Added lazy: TAL expression and fixed defer: expression for python
+        expression
+
+      - ZCatalog.CatalogBrains: An _unrestrictedGetObject method has
+        been added.
+
+      - ZODB transactions now support savepoints. See
+        transaction/savepoint.txt.  These will replace
+        subtransactions.
+
+    Bugs fixed
+
+      - Collector #1754: Fixed import of 'transaction' in
+        'zopectl adduser' (which wasy dying with a NameError).
+
+      - Collector #1750: StructuredText: fixed handling of image URLs
+        with query string
+
+      - Collector #1748: Fixed SIGSEGV in Acquisition
+
+      - Hotfix_20050405:  classes defined in untrusted code could shadow
+        the roles of methods defined as protected by their bases.
+
+      - Collector #1656: Fixed enumeration within untrusted code
+        (forward-port from 2.7 branch).
+
+      - Collector #1721: Fixed handling of an empty indexed_attrs parameter
+
+
+  Zope 2.8a2 (2005/04/02)
+
+    Features added
+
+      - ZCatalog.CatalogBrains:  'getObject' now raises errors, rather than
+        returning None, in cases where the path points either to a nonexistent
+        object (in which case it raises NotFound) or to one which the user
+        cannot access (raising Unauthorized).  Sites which rely on the old
+        behavior can restore setting a new zope.conf option,
+        'catalog-getObject-raises', to "off".
+
+        This compatibility option will be removed in Zope 2.10.
+
+      - PluginIndexes: the ZCatalog's "Indexes" tab now show the number of
+        distinct values indexed by each index instead of a mixture of indexed
+        objects versus number of distinct values. Indexes derived from UnIndex
+        show both values within their own ZMI screen. In addition most indexes
+        have now a "Browse" tab to browse through the list of indexed
+        values and their occurrences.
+
+      - FTPServer: a RNFR (rename from) request is now being responded
+        with a 550 error code if the source file does not exist
+
+      - Fixed ObjectManager to not swallow exceptions during object
+        deletion (in debug mode and if the user is not Manager). This
+        allows for better debugging, while still keeping the possibility
+        for a Manager to delete buggy objects.
+
+      - Added a ZConfig directive 'large-file-threshold' to control
+        the request content-size threshold at which a temporary file
+        gets created. Use the same value for deciding between reading
+        the whole request in memory or just a chunk inside
+        webdav.NullResource.PUT().
+
+      - RAMCacheManager: Allow invalidation of a cache entry from the
+        Statistics view in the ZMI
+
+      - Collector #1454/OFS.File: Accept content types ending with
+        "javascript" as editable through the File edit form, just like
+        text/<foo> types
+
+      - Zope X3 3.0.0's 'src/zope' package is included now.
+
+      - Five (Zope 3 integration technology for Zope 2) is included
+        now in Products/Five.
+
+    Bugs fixed
+
+      - Collector #1460: guarded_apply was too restrictive.
+
+      - OFS.Traversable still used a string 'NotFound' exception.
+
+      - ZPublisher would fail to recognize a XML-RPC request if the
+        content-type header included a 'charset' parameter.
+
+      - Forward-ported 'aq_acquire'-related fix and associated tests
+        from Zope 2.7.4.
+
+      - Collector #1730: XML page templates couldn't call aq_parent in
+        path expressions.
+
+      - Fixed brain.getObject() to correctly traverse to an object even
+        if one of its parents is not accessible, to be close to what the
+        Publisher does.
+
+      - Forward ported fix for OFS.CopySupport tests which corrected
+        signature of a faux security policy's 'validate' method.
+
+      - 'setup.py' did not install the 'Zope' compatibility module
+        (the old 'Zope' package has been renamed to 'Zope2').
+
+      - Fixed Shared.DC.ZRDB.Results to behave with the new-style
+        ExtensionClass. Added a test.
+
+      - 'setup.py' did not install the new 'Zope' compatibility module
+        (the 'Zope' package has been renamedd to 'Zope2').
+
+      - Collector #1507: Zope now binds again to all available IP addresses if
+        ip-address is unset
+
+      - Use 'del' instead of 'list.remove()' in
+        Catalog.delColumn(). There can be only one column with the
+        same name, and it could potentially break catalog metadata as
+        remove() may remove more than one element from the list if
+        they have the same value. Also, we already have the list index
+        we are interested in deleting so it doesn't make sense to look
+        up the value and call 'list.remove()' on it.
+
+      - Collector #1628: FTP server has been broken (directory
+        listings did not work)
+
+      - Collector #1705: CopySource._postCopy is never called
+
+      - Collector #1617: Fixed crash in ZPT code (caused by improper
+        checks in cAccessControl)
+
+      - Collector #1683: fixing batching in the DA "Test" tab
+
+      - Collector #1648: Fix bug in Medusa FTP
+
+      - Collector #1667: allow 'max-number-of-session-objects 0' to have
+        the same effect as setting the value via the web interface (i.e.,
+        make the number of session objects unlimited, rather than falling
+        back to the default).
+
+      - Collector: #1651: removed compiler warning
+
+      - Collector #1661: make 'python-check-interval' setting in zope.conf
+        actually work as documented.  This setting allows for important
+        tuning opportunities for production Zope servers.
+
+      - Collector #1657:  Don't break host-based virtual hosting when
+        purging an HTTP accelerator.
+
+      - DTML Methods were not interoperable with the new filestream_iterator
+        and caches based on it (FileCacheManager).
+
+      - Collector #1655: fixed severe memory leak in TemporaryStorage
+
+      - Collector #1407: fixed XML escaping problem introduced in 2.7.4 b1
+
+      - Collector #1151: HTTP compression was broken on error pages
+
+      - The REQUEST now contains a new entry ACTUAL_URL which contains the
+        full URL without query string as it appears within the location bar of
+        the browser. The key has been added to provide a single key that is
+        available for vhosted and non-vhosted installations.
+
+      - Collector #1605: VHM did not quote URLs
+
+      - webdav.Resource: during COPY, manage_afterClone was called way
+        too early, thus the object wasn't bound to the database and
+        couldn't find a context. Changed to behave the same way as
+        CopySupport.
+
+      - RAMCacheManager: opimized performance by using cPickle instead
+        of pickle and by using the highest pickle protocol available
+        instead of using ASCII pickles (patch by Dieter Maurer)
+
+      - Collector #631: Image URLs in StructuredText containing port
+        numbers were not rendered correctly
+
+      - Collector #1498: Don't choke on malformed cookies. Cookies of
+        the form "foo=bar; hmm; baz=gee" will give an empty value for
+        'hmm' instead of silently discarding it and the rest of the
+        string. (Thanks to 'sirilyan' for the patch.)
+
+      - bin/zopectl test now uses os.execv, instead os os.system,
+        so that options with characters that needs shell quoting
+        doesn't break the command.
+
+      - Collector #1219:  Make XML export sane again.
+
+      - Collector #945:  Allow adding empty PythonScript instances
+        programmatically.
+
+      - Updated doc/UNITTEST.txt and lib/python/Testing/README.txt to
+        reflect progress made since UNITTEST.txt was originally written.
+
+      - Removed Version objects from the add menu. Versions are agreed to be a
+        feature that should not be used as it is not well implemented and
+        allows for data loss.
+
+      - Collector #1510: Allow encoding of application/xhtml+xml pages
+        according to the charset specified in the Content-Type header
+        (thanks to Jacek Konieczny for the patch).
+
+      - Collector #1599: made sqltest work with unicode strings (thanks
+        to Peter Sabaini for the patch).
+
+      - zopectl: fixed handling of child processes (patch by Dieter Maurer)
+
+      - Collector #1593: fixed dumb _get_id() implementation in
+        OFS.CopySupport that produced copy_of_copy_of....files (thanks
+        to Alexandre Boeglin for the patch).
+
+      - Collector #1450: files in utilities/ZODBTools are now installed
+        during the installation process in the 'bin' directory
+
+      - Collector #1003: added new 'http-header-max-length' directive
+        to zope.conf to specific the maximum length of a HTTP request
+        header before it is considered as a possible DoS attack and
+        discarded.
+
+      - Collector #1371: added new 'cgi-maxlen' directive to zope.conf
+        to limit the amount of form data being processed by Zope
+        to prevent DoS attacks
+
+      - Collector #1407: changed WebDAV display name for objects
+        to title_or_id()
+
+      - the 'trusted-proxy' directive in zope.conf now also accepts
+        hostnames instead of IP addresses only (patch by Dieter Maurer)
+
+      - Fixed test.py to not over-resolve symbolic links. Needed to run
+        tests when the Products directory and a product are symlinks.
+
+      - Collector #1583/ZReST: Fixed handling of the title attribute
+        for non-ascii characters.
+
+      - Collector #1577: Fixed cryptic error message in ZPublisher if a
+        non-ASCII string is passed to a date, int, long or float property.
+
+      - Collector #1576: Fixed Z Search Interface to use proper HTML.
+
+      - Collector #1127: strftime did not take timezone into account.
+
+      - Collector #1569/DateTime: Added a new ISO8601-method that will
+        return correctly formatted ISO 8601-representations to augment
+        the ISO method which isn't compliant with ISO 8601.
+
+      - ZPublisher: changed some hardcoded 'latin1' arguments to 'iso-8859-15'
+        since latin1 is obsolete.
+
+      - Collector #1566: Installation of Zope on some older Solaris versions
+        could fail due to a broken "echo" implementation causing the
+        creation of a borked version.txt file.
+
+      - Collector #934: Image and File objects are now always internally
+        split into small chunks even when initialized from a string.
+
+      - docutils: updated to V 0.3.5. The Zope core now contains a full
+        copy of the docutils package except some GPLed files which can not
+        be included with the Zope distribution due to license constraints
+        on svn.zope.org.
+
+      - docutils: moved from lib/python/docutils to
+        lib/python/third_party/docutils
+
+      - Collector #1557/OFS.Image: Introducing new 'alt' property. The
+        'alt' attribute is no longer taken from the 'title' property but
+        from the new 'alt' property.  The border="0" attribute is no longer
+        part of the HTML output except specified otherwise.
+
+      - Set a default value of '' for the new 'alt' property as not to
+        break existing content.
+
+      - Collector #1511: made IPCServer show up in the Control Panel under
+        "Network Services"
+
+      - Collector #1443: Applied patch by Simon Eisenmann that reimplements
+        the XML parser used in WebDAV fixing a memory leak.
+
+      - Always unescape element contents on webdav.xmltools
+
+      - Use saxutils to escape/unescape values for/from
+        PROPFIND/PROPPATCH.
+
+      - Make OFS.PropertySheet use the escaping function from
+        webdav.xmltools.
+
+      - Escape/unescape &quot; and &apos;
+
+      - Don't escape properties stored as XML (ie: having a
+        __xml_attrs__ metadata set by PROPPATCH) when building a
+        PROPFIND response.
+
+      - If a PROPPATCH element value contains only a CDATA section,
+        store the CDATA contents only.
+
+      - Catch AttributeErrors and KeyErrors raised from
+        __bobo_traverse__ and convert them to NotFound. In debug mode
+        a more verbose error message is issued, the same way it's done
+        on attribute/item traversal.
+
+      - Collector #1523: replace the text field for importing .zexp/.xml
+        files with a selection list
+
+      - Stitch newly-created object into it's container *before*
+        calling it's PUT() method. This fixes an issue with
+        OFS.File/OFS.Image that would result into reading the whole
+        file in memory and wrapping it into a *single* Pdata object.
+
+      - Import ZServer.CONNECTION_LIMIT variable *inside* the method
+        that uses it. Before this, the variable was imported at the
+        module level, thus binding it too early which would cause the
+        ZConfig handler to have no real effect.
+
+  Zope 2.8a1 (2004/10/17)
+
+    Features added
+
+     - Included Stefan Holek's ZopeTestCase 0.9
+
+     - The SiteErrorLog allows you to acknowledge (or delete) exceptions,
+       so you can reduce or clear the list without restarting your
+       Zope server. Additionally the SiteErrorLog is covered by unit tests
+       now.
+
+     - Unit tests added for the SiteErrorLog.
+
+     - UI improvement for the ZCatalog. The "catalog contents" allow
+       you to filter the cataloged objects by path now.
+
+     - Made test.py follow symbolic links on POSIX systems.
+
+     - added utilities/reindex_catalog.py to perform ZCatalog maintenance
+       operations from the command line (through zopectl)
+
+     - RESPONSE.setBody and RESPONSE.setStatus now accept lock
+       parameters in the same way as RESPONSE.redirect. These prevent
+       further calls to the methods from overwriting the previous value.
+       This is useful when writing http proxies.
+
+     - DateTime: new DateTime instance can be constructed from a given
+       DateTime instance: d_new = DateTime(d_old)
+
+     - The DateTime parser now throws a SyntaxError upon any parsing errors.
+
+     - ZCatalog: added a new configuration option in the "Advanced" tab
+       to provide optional logging of the progress of long running
+       reindexing or recataloging operations.
+
+     - made Zope.configure return the starter instance to enable other
+       methods to be called, such as starter.setupConfiguredLoggers()
+
+     - Improved Unicode handling in Page Templates. Template contents
+       and title will now be saved as a Unicode string if
+       the management_page_charset variable can be acquired and is true.
+       The character set of an uploaded file can now be specified.
+
+     - zopectl now accepts the -m argument to set a umask for files created
+       by the managed process (e.g. -m 002 or --umask 002).
+
+     - AccessControl/permission_settings() now has a new optional parameter
+       'permission' to retrieve the permission settings for a particular
+       permission.
+
+     - The obsolete 'SearchIndex' package has been removed
+
+     - Traversal now supports a "post traversal hook" that get's run
+       after traversal finished and the security context is established.
+
+     - Using "_usage" parameters in a ZCatalog query is deprecated and
+       logged as DeprecationWarning.
+
+     - MailHost now has two additional properties, a user id and a
+       password. These are used to attempt ESMTP authentication
+       before sending a mail.
+
+     - Folder listings in FTP now include "." as well as "..".
+
+     - When a VHM is activated, it adds the mapping
+       'VIRTUAL_URL_PARTS': (SERVER_URL, BASEPATH1, virtual_url_path)
+       to the request's 'other' dictionary.  If BASEPATH1 is empty, it
+       is omitted from the tuple.  The joined parts are also added
+       under the key 'VIRTUAL_URL'.  Since the parts are evaluated
+       before traversal continues, they will not reflect modifications
+       to the path during traversal or by the addition of a default
+       method such as 'index_html'.
+
+     - Extension Classes, a key Zope foundation, have been totally
+       rewritten based on Python new-style classes.
+
+       This change provides a number of advantages:
+
+       o Use of new-style class features (e.g. slots, descriptors,
+         etc.) in Zope objects. Support for object protocols (special
+         __ methods) added since Python 1.4.
+
+       o Support for cyclic garbage collection.
+
+       o Ability to use new-style classes as base classes of Zope objects.
+
+       o Pave the way for sharing code between Zope 2 and Zope 3.
+
+       Note -- Extension classes with __of__ methods are made into
+         Python read descriptors.
+
+         If an extension classes is used to implement a descriptor,
+         indirectly by implementing __of__ or directly by implementing
+         __get__, the behavior of the descriptor will differ from
+         ordinary descriptors in an important way. The descriptors
+         __get__ method will be called *even if* the descriptor is
+         stored on an instance of an extension class.  Normally
+         descritor __get__ methods are called only of the descriptor
+         is stored in a class.
+
+     - ZODB 3.3
+
+       This is the first version of ZODB that does not require
+       ExtensionClass.
+
+     - Add 'parity' method to ZTUtils Iterators.
+
+     - Allow untrusted code to mutate ZPublisher record objects.
+
+     - Added a "mime-types" configuration value which names a file
+       giving additional MIME type to filename extension mappings.
+       The "mime-types" setting may be given more than once in the
+       configuration file; the files have the same format at the
+       mime.types file distributed with Apache.
+
+     - Changed the ZEO server and control process to work with a
+       single configuration file; this is now the default way to
+       configure these processes.  (It's still possible to use
+       separate configuration files.)  The ZEO configuration file can
+       now include a "runner" section used by the control process and
+       ignored by the ZEO server process itself.  If present, the
+       control process can use the same configuration file.
+
+     - ZConfig was updated to version 2.0.  The new version includes
+       two new ways to perform schema extension; of particular
+       interest in Zope is the ability for a configuration file to
+       "import" new schema components to allow 3rd-party components
+       (such as storages, databases, or logging handlers) to be used.
+
+     - The testrunner.py script has been replaced with test.py which
+       is now installed into the 'bin' folder.
+
+    Bugs fixed
+
+     - Removed Python 2.3.3 as valid option. ZODB 3.3 requires Python
+       2.3.4 or later.
+
+     - Collector #1332: Added in-place migration of the Catalog.__len__
+       attribute to avoid new-style class caching problems. Instances of
+       ZCatalog or instances of classes with ZCatalog as base class will be
+       migrated automatically. Instances of Catalog or classes with Catalog
+       as base class must be migrated manually by calling the migrate__len__()
+       method on the every instance. In addition old BTree migration code
+       (for pre-Zope 2.5 instances) has been removed. If you want to migrate
+       from such an old version to Zope 2.8, you need to clear and reindex
+       your ZCatalog).
+
+     - Collector #1595: same as in Collector #1132 for indexes derived from
+       UnIndex. Exisiting ZCatalog instances must be converted manually
+       by calling the "manage_convertIndexes" method through-the-web for
+       every single ZCatalog instance. See also doc/FAQ.txt (Installation,
+       question #4)
+
+     - Collector #1457: ZCTextIndex's QueryError and ParseError
+       are now available for import from untrusted code.
+
+     - Collector #1473: zpasswd.py can now accept --username
+       without --password
+
+     - Collector #1491: talgettext.py did not create a proper header
+       for the generated .pot file if multiple pagetemplate files
+       were processed.
+
+     - Collector #1477: TaintedString.strip() now implements the
+       same signature as str.strip()
+
+     - TAL: tal:on-error does not trap ConflictError anymore.
+
+     - OFS.CopySupport: Enforced "Delete objects" permission during
+       move (CMF Collector #259).
+
+     - Removed DWIM'y attempt to filter acquired-but-not-aceessible
+       results from 'guarded_getattr'.
+
+     - Collector #1267: applied patch to fix segmentation faults on
+       x86_64 systems
+
+     - ZReST: the charset used in the rendered HTML was not set to the
+       corresponding output_encoding property of the ZReST instance. In
+       addition changing the encodings through the Properties tab did not
+       re-render the HTML.
+
+     - Collector #1234: an exception triple passed to LOG() was not
+       propagated properly to the logging module of Python
+
+     - Collector #1441: Removed headers introduced to make Microsoft
+       webfolders and office apps happy, since they make a lot of
+       standards-compliant things unhappy AND they trick MS Office
+       into trying to edit office files stored in Zope via WebDAV even
+       when the user isn't allowed to edit them and is only trying to
+       download them.
+
+     - Collector #1445: Fixed bad interaction between -p and -v(v)
+       options to test.py that resulted in exceptions being printed
+       when they shouldn't have been.
+
+     - Collector #729: manage_main doesn't display the correct page title
+       most of the time. It is not completely fixed but using title_or_id
+       makes folders display the correct id as a fallback.
+
+     - Collector #1370: Fixed html generated by Z Search interface.
+
+     - Collector #1295: Fixed minor niglet with the Elvis tutorial.
+
+     - added "version.txt" to setup.py to avoid untrue "unreleased version"
+       messages within the control panel
+
+     - Collector #1436: applied patch to fix a memory leak in
+       cAccessControl.
+
+     - Collector #1431: fixed NetBSD support in initgroups.c
+
+     - Collector #1406: fixed segmentation fault by acquisition
+
+     - Collector #1392: ExternalMethod ignored management_page_charset
+
+     - unrestrictedTraverse() refactored to remove hasattr calls (which mask
+       conflict errors) and for greater readability and maintainability.
+
+     - Zope can now be embedded in C/C++ without exceptions being raised
+       in zdoptions.
+
+     - Collector #1213: Fixed wrong labels of cache parameters
+
+     - Collector #1265: Fixed handling of orphans in ZTUtil.Batch
+
+     - Collector #1293: missing 'address' parameters within one of the server
+       sections raise an exception.
+
+     - Collector #1345: AcceleratedHTTPCacheManager now sends the
+       Last-Modified header.
+
+     - Collector #1126: ZPublisher.Converters.field2lines now using
+       splitlines() instead of split('\n').
+
+     - Collector #1322: fixed HTML quoting problem with ZSQL methods
+       in DA.py
+
+     - Collector #1124: The ZReST product now uses the same reST encoding
+       parameters from zope.conf as the low-level reStructuredText
+       implementation.
+
+     - Collector #1259: removed the "uninstall" target from the Makefile
+       since the uninstall routine could also remove non-Zope files. Because
+       this was to dangerous it has been removed completely.
+
+     - Collector #1299: Fixed bug in sequence.sort()
+
+     - Collector #1159: Added test for __MACH__ to initgroups.c so the
+       initgroups method becomes available on Mac OS X.
+
+     - Collector #1004: text,token properties were missing in
+       PropertyManager management page.
+
+     - Display index name on error message when index can't be used as
+       'sort_on'.
+
+     - PUT would fail if the created object had a __len__ = 0 (eg:
+       BTreeFolder2) and fallback to _default_put_factory. Fix by
+       checking if the returned object is None instead.
+
+     - Collector #1160: HTTPResponse.expireCookie() potentially didn't
+       when an 'expires' keyword argument was passed.
+
+     - Collector #1289: Allow ZSQL methods to be edited via WebDAV.
+
+     - WebDAV property values were not being properly escaped on
+       'propstat'.
+
+     - WebDAV 'supportedlock' was not checking if the object did
+       implement the WriteLockInterface before returning it's
+       value.
+
+     - reStructuredText ignored the encoding settings in zope.conf
+
+     - ObjectManager no longer raises string exceptions
+
+     - Collector #1260: Testing/__init__.py no longer changes the
+       INSTANCE_HOME.
+
+     - App.config.setConfiguration() did not update the legacy source
+       for debug_mode, Globals.DevelopmentMode.
+
+     - Script (Python) objects now have a _filepath attribute, also
+       used as the '__file__' global at runtime.  This prevents an
+       import problem caused by the fix to #1074.
+
+     - Minor usability tweaks:
+
+       * Increased FindSupport meta type selection widgets
+         height to 8 lines
+
+     - The DateTime module did not recognize the settings for
+       "datetime-format".
+
+     - Stop testrunner.py from recursing into the 'build-base' directory
+       created by setup.py.
+
+     - Collector #1074: Change Scripts' __name__ to None
+
+     - Range searches with KeywordIndexes did not work with record-style
+       query parameters
+
+     - Item_w__name__ now has a working getId() method
+
+     - PageTemplateFile now using Item_w__name__ mixin, fixing
+       its getId() and absolute_url() methods.
+
+     - Only one VirtualHostMonster is allowed per container.
+
+     - Collector #1133: TreeTag choked on Ids of type long.
+
+     - Collector #1012: A carefully crafted compressed tree state
+       could violate size limit.  Limit is no longer hardcoded.
+
+     - Collector #1139: tal:attributes didn't escape double quotes.
+
+     - Management interface of TopicIndexes has been completely broken
+
+     - Collector #1129: Improper parsing of ISO8601 in DateTime.
+
+     - Removed pervasive use of string exceptions (some may still be
+       hiding in the woodwork, but all raise's with string literals are
+       gone).
+
+     - AccessControl.User used a misleading string exeception,
+       'NotImplemented', which shadowed the Python builtin.
+
+     - Collector #426: Inconsistent, undocumented error() method.
+
+     - Collector #799: Eliminate improper uses of SCRIPT_NAME.
+
+     - Collector #445: Add internal global declaration for Script bindings.
+
+     - Collector #616: Make CONTEXTS available to TALES Python expressions.
+
+     - Collector #1074: Give Script execution context a __name__
+
+     - Collector #1095: Allow TAL paths starting with '/varname' as a
+       preferred spelling for 'CONTEXTS/varname'.
+
+     - Collector #391: Cut and paste now requires delete permissions.
+
+     - Collector #331: Referenses to URL in manage_tabs was changed
+       to REQUEST.URL to prevent accidental overriding.
+
+     - Made the control panel properly reflect the cache-size setting
+       of ZODB's object cache once again.
+
+     - ConflictError was swallowed in ObjectManager by
+       manage_beforeDelete and _delObject. This could break code
+       expecting to do cleanups before deletion.
+
+     - Python 2.3 BooleanType wasn't handled properly by ZTUtils
+       marshalling and ZPublisher's converters.
+
+     - Collector #1065: bin/ scripts didn't export HOME envars.
+
+     - Collector #572: WebDAV GET protected by 'FTP Access' permission.
+       Two new methods have been added to WebDAV resources, "manage_DAVget"
+       and "listDAVObjects". These are now used by WebDAV instead of the
+       earlier "manage_FTPget" and "objectValues". This separates the
+       permissions, and allows WebDAV specific overriding of these methods.
+
+     - Collector #904: Platform specific signals in zdaemon/Daemon.py
+       (fixed by removing the "fossil" module from 2.7 branch and head).
+
+     - Workaround for Collector #1081: The 'title' property for objects
+       derived from OFS.Folder or PropertyManager can now be
+       removed and replaced with a ustring property. This allows the usage
+       of non-ISO-8859-1 or ASCII charsets
+
+     - Collector #951: DateTime(None) is now equal to DateTime()
+
+     - Collector #1056: aq_acquire() ignored the default argument
+
+     - Collector #1087: ZPT: "repeat/item/length" did not work as documented
+       in the Zope Book.
+
+     - Collector #721: Entities in tal:attribute values weren't
+       properly escaped.
+
+     - Collector #851: Traversable.py: A bare try..except shadowed
+       conflict errors
+
+     - Collector #1058: Several fixes for PropertySheets when used
+       outside ZClasses
+
+     - Collector #1053: parseIndexRequest turned empty sequence of search
+       terms into unrestricted search.
+
+     - manage_tabs had a namespace problem with the acquisition of names from
+       the manage_options variable resulting to acquire "target" and "action"
+       from objects above in the hierachy.
+
+     - PathIndex and TopicIndex are now using a counter for the number
+       of indexed objects instead of using a very expensive calculation
+       based on the keys of their indexes.
+
+     - Collector #1039: Whitespace problem in Z2.log fixed
+
+     - changed some bare try: except:'s in Shared.DC.ZRDB.Connection
+       so that they now log exceptions that occur.
+
+     - ObjectManager will now attempt to set Owner local role keyed
+       to the user's id, rather than username.
+



More information about the Checkins mailing list