Alexandria is a project and a library.
As a project Alexandria's goal is to reduce duplication of effort and improve portability of Common Lisp code according to its own idiosyncratic and rather conservative aesthetic. What this actually means is open to debate, but each project member has a veto on all project activities, so a degree of conservativism is inevitable.
As a library Alexandria is one of the means by which the project strives for its goals. Alexandria is a collection of portable public domain utilities that meet the following constraints:
- Utilities, not extensions: Alexandria will not contain conceptual extensions to Common Lisp, instead limiting itself to tools and utilities that fit well within the framework of standard ANSI Common Lisp. Test-frameworks, system definitions, logging facilities, serialization layers, etc. are all outside the scope of Alexandria as a library, though well within the scope of Alexandria as a project.
- Conservative: Alexandria limits itself to what project members consider conservative utilities. Alexandria does not and will not include anaphoric constructs, loop-like binding macros, etc.
- Portable: Alexandria limits itself to portable parts of Common Lisp. Even apparently conservative and usefull functions remain outside the scope of Alexandria if they cannot be implemented portably. Portability is here defined as portable within a conforming implementation: implementation bugs are not considered portability issues.
- Team player: Alexandria will not (initially, at least) subsume or provide functionality for which good-quality special-purpose packages exist, like split-sequence. Instead, third party packages such as that may be "blessed".
Initial release of the Alexandria library is yet to happen, but draft documantion exists and current sources are available:
git clone <a href="http://common-lisp.net/gitweb?p=projects/alexandria/alexandria.git;a=summary">git://common-lisp.net/projects/alexandria/alexandria.git</a>
Note: As of 2010-03-09 the project switched from Darcs to Git. The old Darcs repo
http://common-lisp.net/project/alexandria/darcs/alexandria
is still available, but remains frozen.
Discussions on Alexandria take place on alexandria-devel mailing list -- and also #lisp on irc.freenode.net. Automated commit messages for the Git repository are sent to the alexandria-cvs mailing list. (Yeah, -cvs, really. Historical reasons.)
Babel is a charset encoding/decoding library, not unlike GNU libiconv, but completely written in Common Lisp.
It strives to achieve decent performance. To that effect, we use Clozure CL's approach of calculating the destination buffer size in advance. Most of the encoding/decoding algorithms have been adapted from Clozure CL's source. Another important goal is reusability. Similarly to SBCL, we define an interface wherein the algorithms can be reused between a variety of data types so long we're dealing with conversions between octets and unicode code points.
Babel comes with converters between strings and octet vectors but can be easily extended to deal with, e.g., strings and foreign memory, vectors and Closure's runes, etc...
Mailing List
babel-devel
(also available through gmane.lisp.babel.devel)
The current version is 0.3.0, released on July 28, 2008. (tar.gz, sig)
A Darcs repository is available:
darcs get http://common-lisp.net/project/babel/darcs/babel
(browsable through darcsweb)
If you liked this article, subscribe to the feed by clicking the image below to keep informed about new contents of the blog:
0 comments:
Post a Comment