Skip to content

Commit

Permalink
release
Browse files Browse the repository at this point in the history
  • Loading branch information
vii committed May 24, 2009
1 parent 35ff8ab commit 3171a1f
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 2 deletions.
6 changes: 6 additions & 0 deletions LICENCE
@@ -0,0 +1,6 @@
Lisp LGPL
http://opensource.franz.com/preamble.html

Don't be selfish, share the source to your application!

See addons/* for the licences of those libraries.
41 changes: 41 additions & 0 deletions README
@@ -0,0 +1,41 @@
teepeedee2 is a webapplication framework for dynamic webpages. I made
it to see whether it was possible to write a high performance
application in Lisp. There were many obstacles in the way.

This webserver is not finished and I wrote it to learn and experiment
with Common Lisp. There is a lot to be tidied up, now I know the
language better. If you have any interest in using it, please get in
touch with me, John Fremlin <john@freml.in>, or
http://john.fremlin.org/contact.html

It is faster than all(?) other web application frameworks for serving
small dynamic webpages. Please let me know if you have a case where
another framework is faster!

You can see benchmarks comparing it to other web application platforms
like PHP and Rails in this presentation
http://tlug.jp/meetings/2008/11/serving-dynamic-webpages-in-less-then-a-millisecond_john-fremlin_handout.pdf

You can see an example of it running a blog on http://john.freml.in.

It is designed so that small fragments of JavaScript can be delivered
at low overhead to many clients.

However, it also includes general support libraries for quickly
generating XML/HTML (tpd2.ml2), for doing fast networking in a
continuation passing style, i.e. fast event driven userspace
threading (tpd2.io).

For an example application, loaded by default, see the src/game directory.

The addons/ directory contains a few of the other projects (but not
all) that teepeedee2 depends on. They are released under their own
licence.

The licence for most of tpd2 is the Lisp LGPL. However, I take no profit
from making this, and request that if you make an application with it,
please release the source so others can learn from it. Don't be
selfish!

It runs on SBCL and ClozureCL. It shouldn't be hard to port to other
modern Common Lisps.
6 changes: 5 additions & 1 deletion src/blog/blog.lisp
Expand Up @@ -86,7 +86,11 @@
(webapp ((my name) :head-contents
(with-ml-output
(<link :rel "alternate" :type "application/atom+xml" :href (my atom-feed-url))
(<link :rel "alternate" :type "application/rss+xml" :href (my rss-feed-url))))

; disable the RSS feed as RSS wants to have absolute URLs
; (<link :rel "alternate" :type "application/rss+xml" :href (my rss-feed-url)))

)
(let ((n (byte-vector-parse-integer n)))
(let ((entries (my ready-entries :start n)) (count 10))
(<div :class "blog"
Expand Down
2 changes: 1 addition & 1 deletion src/blog/feed.lisp
Expand Up @@ -42,4 +42,4 @@
(tpd2.ml.rss:<link (entry-url-path entry))
(tpd2.ml.rss:<description
(tpd2.io:sendbuf-to-byte-vector (entry-story-ml entry))))))))
(byte-vector-cat "Content-Type: application/rss+xml" tpd2.io:+newline+)))
(byte-vector-cat "Content-Type: application/rss+xml" tpd2.io:+newline+)))

0 comments on commit 3171a1f

Please sign in to comment.