woo
2022-07-08
An asynchronous HTTP server written in Common Lisp
Woo
Woo is a fast non-blocking HTTP server built on top of libev. Although Woo is written in Common Lisp, it aims to be the fastest web server written in any programming language.
Warning
This software is still BETA quality.
How fast?
See benchmark.md for the detail.
Usage
Start a server
(ql:quickload :woo) (woo:run (lambda (env) (declare (ignore env)) '(200 (:content-type "text/plain") ("Hello, World"))))
Start with Clack
(ql:quickload :clack) (clack:clackup (lambda (env) (declare (ignore env)) '(200 (:content-type "text/plain") ("Hello, World"))) :server :woo :use-default-middlewares nil)
Cluster
(woo:run (lambda (env) (declare (ignore env)) '(200 (:content-type "text/plain") ("Hello, World"))) :worker-num 4)
Signal handling
When the master process gets these signals, it kills worker processes and quits afterwards.
- QUIT: graceful shutdown, waits for all requests are finished.
- INT/TERM: shutdown immediately.
Benchmarks
See benchmark.md.
Installation
Woo has switched the backend from cl-async to libev after the latest Quicklisp dist release. If you're gonna run the benchmarks by your own, please use the latest one.
Requirements
- UNIX (GNU Linux, Mac, *BSD)
- SBCL
- libev
Installing via Quicklisp
(ql:quickload :woo)
See Also
Author
- Eitaro Fukamachi (e.arrows@gmail.com)
Copyright
Copyright (c) 2014 Eitaro Fukamachi & contributors
License
Licensed under the MIT License.