Specialized libraries or website dedicated APIs should be listed in Web and not here. Frameworks considered deprecated (without any support or updates for a while and consequently out of date) should not be referred to here (or in a separate table).
PS : Data on this page may not be up to date, please refer to the date of the last edition especially regarding the "Last update" of each framework.
| Name | Documentation | Author | Last update | Maturity | HTML | XML | CSS | XHTML | AJAX | RSS | Cookies | SSL | OpenID | Sessions vs Continuations | Database abstraction | GUI or conception tools | REPL* | Dependencies* | Compatible implementations* | License | Price | Performances benchmarks | Websites using it | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| dwim.hu (once called cl-dwim) | Not much. The authors believe that libraries meant for programmers should be implemented in a such a clear fashion that only a bird's view documentation is needed and a large body of unit tests and examples. | Attila Lendvai Levente Mészáros | 2010 November | Runs openly available (but login protected) applications on the net developed for two ministries of the Hungarian government. About 5000 users, 500 concurrent users at peak time. | yes | yes | ? | yes | yes | yes, through cl-pdf | yes | once IOlib gets the extension | supports sessions, continuations are optional | pluggable, hu.dwim.perec is integrated | supports a component based UI model that gets rendered into XHTML+JavaScript with AJAX support | 50+ libraries; install script is provided | Tested only on SBCL. Should be 99% CL standard compliant, but requires full CLOS MOP support. | BSD | free | In the ballpark of 3000 req/sec of a dynamically generated html page rendering back a properly (un)escaped request parameter. On a 2GHz dual core laptop, running both the tester and the framework, loading the codebase in production mode with debugging level set to warnings and above. As of this writing the codebase is limited to a one worker thread per request operation, which limits the number of live concurrent (slow) connections to the number of threads (about 50-100). |
(def special-variable *performance-application* (make-instance 'standard-application :path-prefix "/performance/"))
(def entry-point (*performance-application* :path "")
(with-request-parameters (name)
(make-functional-html-response ()
(emit-html-document ()
❬h3 ,(or name "The name query parameter is not specified!")❭))))
$ siege --time=10s --concurrent=10 --benchmark http://localhost.localdomain:8080/performance/?name=foo_b%C3%A1r
** SIEGE 2.69
** Preparing 10 concurrent users for battle.
The server is now under siege...
Lifting the server siege... done.
Transactions: 27214 hits
Availability: 100.00 %
Elapsed time: 9.22 secs
Data transferred: 8.46 MB
Response time: 0.00 secs
Transaction rate: 2951.63 trans/sec
Throughput: 0.92 MB/sec
Concurrency: 9.94
Successful transactions: 27214
Failed transactions: 0
Longest transaction: 0.30
Shortest transaction: 0.00
- REPL: does the Framework allow self-editing ? If yes does it provide syntax-highlightning and debug functionnalities ?
- Dependencies: which non-base packages does it require ?
- Implementations: does it require a specific version of Lisp ? You can also check the comparison of the Free Common Lisp implementations
- CLiki internal sources AJAX / Web / ...
- external sources from Web Framework from The Common Lisp Directory and Google
- Concept from WikiMatrix
