Skip to content
Find file
Fetching contributors…
Cannot retrieve contributors at this time
110 lines (85 sloc) 4.02 KB
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
<html xmlns="" xml:lang="en" lang="en">
<title>teepeedee2 (tpd2)</title>
<link rel="stylesheet" type="text/css" href="style.css"/>
<div class="header">
<h1>teepeedee2 (tpd2)</h1>
<h2>A web-application framework for dynamic webpages.</h2>
<p>tpd2 is a fast web-application framework for dynamic
pages. Like <a
href="">ULib</a> and
<a href="">the Klone webserver</a>
it is efficient.</p>
<p>There are many other Lisp web-frameworks and webservers. The
most popular webserver is
probably <a href="">Hunchentoot</a>.
Lisp webservers that might be reasonably efficient
are <a href=""></a> and, for static
pages, <a href="">Antiweb</a>.</p>
<p>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.</p>
<p>It was possible, but it took a lot of effort.</p>
<p><a href="">Lisp
LGPL</a>. See addons/* for the licences of those libraries.</p>
<p>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 is included in the tpd2 tarball) &mdash;
though this is not enforced by the licence, I think it is very
slimy of web <q>developers</q> to greedily take for free huge
amounts of work like the Linux kernel, GNU toolchain and MySQL,
but then keep their horrible little scripts a closely guarded
secret. Don't be like them.</p>
<h3>Development priorities</h3>
has <a href="">achieved its
performance goal</a> (to be much faster than most web
<p>However, I don't feel it is as correct as it should be. It
needs stress testing and an HTTP fuzzing torture test.</p>
<p> 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
<li>Rewrite the sendbuf stuff to use more correct buffer pinning
and change the data representation (perhaps arrays with a fill
pointer instead of list heads and tails). Also separate
sendbufs and cords, so that need not depend on
(and thereby CFFI).</li>
<li>Tidy up the HTTP server, and reintegrate the HTTP client
with it.</li>
<li>Rewrite the dispatcher mechanism to support more complicated
routing. And maybe something cool like using a perfect hash
instead of a standard hash-table?</li>
<p> Patches welcomed! Write to the
<a href="">teepeedee2-devel</a> mailing list.</p>
<p><a href="">Tarball of the the latest git commit</a>.</p>
<p>To check out the tree locally:</p>
git clone git://
<h3>Project members</h3>
<pre><!--#include virtual="../../pprinted-project-members/teepeedee2" --></pre>
<div class="check">
<a href="">
Valid XHTML 1.0 Strict</a>
Something went wrong with that request. Please try again.