Zope Changes

  This file contains change information for the current Zope release.
  Change information for previous versions of Zope can be found in the
  file HISTORY.txt.

  To-do

   - Add cyclic-garbage collection support to C extension classes,
     especially to acquisition wrappers.

     N.B:  ExtensionClassType already declares that it supports GC
     (via the Py_TPFLAGS_HAVE_GC flag), but does not appear to conform
     to the rules for such a type laid out in the Python docs:
     http://docs.python.org/api/supporting-cycle-detection.html

  Zope 2.9.1  (2006/02/25)

    Bugs fixed

      - Collector #1819: fixed 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

      - Collector #1989:  'test.py' now copyied to $ZOPE_HOME/bin
        during installation, which re-enables tests run from the instance
        home.

      - 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 #1999: fixed broken FTP rename functionality
        (RNFR now returns 350 as status code instead 250)

      - officially deprecated the zLOG module (to be removed in Zope 2.11).
        Use the logging module of Python instead.

      - Replaced used of deprecated 'OFS.content_types' module with cognates
        from 'zope.app.content_types'.

      - Collector #2002: fixed broken 'ls -R' functionality (didn't
        recurse properly subclasses of OFS.Folder)

  Zope 2.9.0 (2006/01/09)

    Bugs fixed

      - deprecated OFS.content_types

      - Fixed ConflictError when using sessions.

  Zope 2.9.0 beta 2 (2005/12/24)

    Bugs fixed

      - 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 #1965: 'get_transaction' missing from builtins without
       sufficient deprecation notice (ZODB 3.6 properly removed it, but
       Zope needs to keep it for another release).

     - Several zope.app packages were forgotten to be included in the
       first beta due to the now zpkg-based build and release process.

    Features added

     - The SiteErrorLog now copies exceptions to the event log by default.

     - 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'.

  Zope 2.9.0 beta 1 (2005/12/06)

    Features added

      - ObjectManager now has an hasObject method to test presence. This
        brings it in line with BTreeFolder.

      - Using FastCGI is officially deprecated

      - 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.

      - 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.

      - Collector #1904: On Mac OS X avoid a spurious OSError when
        zopectl exits.
