repoze.bfg 0.6.4 has been released.  Below is the changelog section related to
the release.  The focus of this release was to regain some speed losses as
features were added in the 0.6 line.

0.6.4 (2009-01-23)

Backwards Incompatibilities

- The ``unicode_path_segments`` configuration variable and the
  ``BFG_UNICODE_PATH_SEGMENTS`` configuration variable have been
  removed.  Path segments are now always passed to model
  ``__getitem__`` methods as unicode.  "True" has been the default for
  this setting since 0.5.4, but changing this configuration setting to
  false allowed you to go back to passing raw path element strings to
  model ``__getitem__`` methods.  Removal of this knob services a
  speed goal (we get about +80 req/s by removing the check), and it's
  clearer just to always expect unicode path segments in model
  ``__getitem__`` methods.

Implementation Changes

- ``repoze.bfg.traversal.split_path`` now also handles decoding
  path segments to unicode (for speed, because its results are

- ``repoze.bfg.traversal.step`` was made a method of the

- Use "precooked" Request subclasses
  (e.g. ``repoze.bfg.request.GETRequest``) that correspond to HTTP
  request methods within ```` when constructing a request
  object rather than using ``alsoProvides`` to attach the proper
  interface to an unsubclassed ``webob.Request``.  This pattern is
  purely an optimization (e.g. preventing calls to ``alsoProvides``
  means the difference between 590 r/s and 690 r/s on a MacBook 2GHz).

- Tease out an extra 4% performance boost by changing the Router;
  instead of using imported ZCA APIs, use the same APIs directly
  against the registry that is an attribute of the Router.

- The registry used by BFG is now a subclass of
  ``zope.component.registry.Components`` (defined as
  ``repoze.bfg.registry.Registry``); it has a ``notify`` method, a
  ``registerSubscriptionAdapter`` and a ``registerHandler`` method.
  If no subscribers are registered via ``registerHandler`` or
  ``registerSubscriptionAdapter``, ``notify`` is a noop for speed.

- The Allowed and Denied classes in ```` now are
  lazier about constructing the representation of a reason message for
  speed; ``repoze.bfg.view_execution_permitted`` takes advantage of

- The ``is_response`` check was sped up by about half at the expense
  of making its code slightly uglier.

New Modules

- ``repoze.bfg.lru`` implements an LRU cache class and a decorator for
  internal use.
Repoze-dev mailing list

Reply via email to