[ZODB-Dev] IndexedCatalog 0.6.0-RC1

Christian Reis kiko at async.com.br
Wed Sep 17 19:06:27 EDT 2003


After a long winter, here's the first release candidate of
IndexedCatalog 0.6.0. A description of this pre-release follows, and
comments are invited.

! New Features

  * Subclassing

    IC now supports complete catalog subclassing. 0.5.0 included this
    as a preview, but 0.6.0 provides full functionality.  Subclassing
    means you can have a hierarchy of classes:

        class Shape | class Triangle(Shape) | class Rectangle(Shape)

    and all Triangle and Rectangle objects created are automatically
    indexed by the Shape catalog (as well as by their own catalogs).
    Queries done to the Shape catalog can return objects of all
    subclasses (including Triangle and Rectangle objects). 
    
    Subclasses also inherit attributes defined in their parent classes,
    which mirrors conventional inheritance, and provides the required
    semantics for parent catalog queries.

  * Schema Updating

    A fact of your application's life is that your object schema will
    change. IC now provides API that triggers an update to catalogs,
    which automatically creates and removes indexes according to the
    changes in your class' attributes. This feature is a must for using
    IC in an evolving application schema, and (minus three minor
    issues) it works quite well.

    [These issues will be fixed in 0.6.0 final.]

  * Reindexing

    Catalogs now offer a reindex() API, which allows indexes to be
    rebuilt on-demand. This also provides a simple way to repair indexes
    that have "somehow" become damaged.

  * Integrity Checking

    The Shelf and Catalog now include classes that perform integrity
    checking, which allows diagnosing damaged indexes and inconsistent
    objects. [This was used to a major extent while cleaning up
    inconsistencies and bugs in the catalog and index code itself.]

  * C extensions

    Nicholas Henke contributed an implementation of IndexedObject and a
    number of Util methods as C extensions, as a performance
    enhancement.

    Lots of other small enhancements went in, including support for
    indexing class types, API improvements, internal schema updates, and
    more.

! Fixes

    A *large* number of fixes were implemented, most notably a rewrite of
    the mutable indexes to use special classes that notify the index as
    modifications are made. 
   
    Many of the tests in the testsuite were renamed, and many tests were
    added.

    Quite a few bugs were caught by running pychecker through the code,
    including numerous typos and not a small amount of dead code.

    The full ChangeLog is included in the distribution tarball.

! Show Me the Code

    http://async.com.br/projects/IC/dist/IndexedCatalog-0.6.0-RC1.tar.gz

    A bonsai query to see all changes that went in since 0.5.0:

        http://makeashorterlink.com/?P33B15EE5

    Meaningless statistics: since 0.5.0, roughly (+6000/-3000) lines
    were changed. IC itself is around 4500 lines of python, and 300
    lines of C; the testsuite has over 60 tests in around 2500 lines.

! Comments and Flames
    
    indexedcatalog at async.com.br 

    http://www.async.com.br/mailman/listinfo/indexedcatalog

    This iteration of IC had us holding our breath for a long time, but
    we've come out with fairly-rounded set of features, and nicer
    performance with better code. I feel IC is really at the point where
    it's solid and performant enough for day-to-day use (and our
    customers are beginning to agree too!). If you've been wondering
    what IC is like, or what it is for, this is a great time to try it
    out and send in feedback on what you think.

    Thanks to Nic, Johan and Pinazo, Rico and Salgado at Async Open
    Source for their hard work on getting another release candidate out
    the door.

Take care,
--
Christian Reis | http://async.com.br/~kiko/ | [+55 16] 261 2331



More information about the ZODB-Dev mailing list