Permalink
Browse files

release

  • Loading branch information...
1 parent 35ff8ab commit 3171a1f303dcc600e51f7fd4b7a7f31e7eed0ab5 @vii committed May 24, 2009
Showing with 53 additions and 2 deletions.
  1. +6 −0 LICENCE
  2. +41 −0 README
  3. +5 −1 src/blog/blog.lisp
  4. +1 −1 src/blog/feed.lisp
View
6 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.
View
41 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.
View
6 src/blog/blog.lisp
@@ -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"
View
2 src/blog/feed.lisp
@@ -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.