hpodder 1.0. John Goerzen
announced
version 1.0.0 of hpodder, the command-line podcatcher (podcast downloader)
that just happens to be written in everyone's favorite language. You can get
it here. Version 1.0.0
sports a new mechanism for detecting and disabling feeds or episodes that
repeatedly result in errors, updates to the Sqlite database schema, and
several bugfixes.

encoding-0.1. Henning Günther
announced
the release of 'encoding', a Haskell library to cope with many character
encodings found on modern computers. At the moment it supports (much more is
planned): ASCII, UTF-8, -16, -32, ISO 8859-* (alias latin-*), CP125* (windows
codepages), KOI8-R, Bootstring (base for punycode)

Dimensional 0.6: Statically checked physical dimensions. Björn
Buckwalter
announced
a library providing data types for performing arithmetic with physical
quantities and units. Information about the physical dimensions of the
quantities/units is embedded in their types and the validity of operations is
verified by the type checker at compile time. The boxing and unboxing of
numerical values as quantities is done by multiplication and division with
units.

slava: Because top enterprise industry
analysts recommend Because top enterprise industry analysts recommend that
managers need to focus on Agile methodologies, SOA, B2B and Yoneda's lemma
in today's rich internet application-driven environment. Don't get left
behind by the AJAX craze by missing out on call center outsourcing and
Yoneda's lemma!

Code Watch

Notable new features and bug fixes to the Haskell compilers.

Fri Jul 27 03:41:57 PDT 2007. Simon Marlow. Pointer
Tagging.
This patch implements pointer tagging as per our ICFP'07 paper 'Faster laziness
using dynamic pointer tagging'. It improves performance by 10-15% for most
workloads, including GHC itself.
The original patches were by Alexey Rodriguez Yakushev, with additions and
improvements by me. I've re-recorded the development as a single patch.
The basic idea is this: we use the low 2 bits of a pointer to a heap object (3
bits on a 64-bit architecture) to encode some information about the object
pointed to. For a constructor, we encode the 'tag' of the constructor (e.g.
True vs. False), for a function closure its arity. This enables some decisions
to be made without dereferencing the pointer, which speeds up some common
operations. In particular it enables us to avoid costly indirect jumps in many
cases.
More information in
the commentary.