teepeedee2 (tpd2)

A web-application framework for dynamic webpages.


tpd2 is a fast web-application framework for dynamic pages. Like ULib and the Klone webserver it is efficient.

There are many other Lisp web-frameworks and webservers. The most popular webserver is probably Hunchentoot. Lisp webservers that might be reasonably efficient are dwim.hu and, for static pages, Antiweb.


Common Lisp is a language that encourages users to write inefficient programs. Yet some people claim that it is possible to write reasonably efficient programs using a subset of it. Is that true? I thought most web frameworks were horribly inefficient, so as an experiment I decided to try to make a faster web-framework in a less efficient language: thus teepeedee2.

It was possible, but it took a lot of effort. Common Lisp is certainly not well suited to the project.


Lisp LGPL. See addons/* for the licences of those libraries.

I hope that anybody using teepeedee2 for a website will take the time to publicly release their source code (for example, all the code for mopoko.com is included in the tpd2 tarball) — though this is not enforced by the licence, I think it is very slimy of web developers to greedily take for free huge amounts of work like the Linux kernel and MySQL, but then keep their horrible little scripts a closely guarded secret. Don't be like them.

Development priorities

teepeedee2 has achieved its performance goal (to be much faster than most web frameworks).

However, I don't feel it is as correct as it should be. It needs stress testing and an HTTP fuzzing torture test.

At the same time it is missing several features: comprehensive request routing to allow REST-ful interfaces, cookie handling, multipart form uploads, static file serving, logging, SSL, gzip encoding, etc. Patches to implement these will be gratefully accepted!


Patches welcomed! Write to the teepeedee2-devel mailing list.


Tarball of the the latest git commit.

To check out the tree locally:

git clone git://github.com/vii/teepeedee2.git

Project members

[an error occurred while processing this directive]
Valid XHTML 1.0 Strict