woo

2023-10-21

An asynchronous HTTP server written in Common Lisp

Upstream URL

github.com/fukamachi/woo

Author

Eitaro Fukamachi

License

MIT
README

Woo

Build Status

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?

Benchmark graph

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

Copyright

Copyright (c) 2014 Eitaro Fukamachi & contributors

License

Licensed under the MIT License.

Dependencies (15)

  • alexandria
  • bordeaux-threads
  • cffi
  • clack
  • fast-http
  • fast-io
  • lev
  • quri
  • rove
  • smart-buffer
  • static-vectors
  • swap-bytes
  • trivial-mimes
  • trivial-utf-8
  • vom

Dependents (0)

    • GitHub
    • Quicklisp