JavaScript Lisp Implementations

See this article for an explanation.

This table was assembled by Moritz Heidkamp. Thanks for contributions and corrections to Bastian Müller, Mario Domenech Goulart, Manuel Serrano, Max Weber, Nicky Nickell, and Eric Bergstrome.

Acheron Lisp Common Lisp Java none
Yes
No
Yes
No
No
Yes
No
No
2011 GPLv3
BiwaScheme Scheme 188 KiB
No
Yes
Yes
Yes
Yes
Yes
No
Yes
2011 MIT
ClojureJS Clojure Clojure none
Yes
No
Yes
No
No
Yes
No
Yes
2012 EPL
ClojureScript Clojure Clojure 279 KiB
Yes
No
Yes
No
No
Yes
Yes
No
2012 EPL
CPSCM Scheme Chicken Scheme or SISC 116 KiB
Yes
No
No
Yes
Yes
Yes
Yes
No
2007 GPLv2
Dmitry Nizhegorodov's Lisp System Common Lisp 44 KiB
Yes
Yes
No
No
No
Yes
No
Yes
2007 non-commercial
EdgeLisp Common Lisp 92 KiB
Yes
Yes
Yes
No
No
Yes
Yes
Yes
2011 AGPL
Fargo Scheme 148 KiB
No
Yes
No
Yes
No
Yes
Yes
Yes
2011 MIT
GoldenScheme Scheme 8 KiB
No
Yes
No
No
No
No
No
Yes
2008 BSD
Javathcript Custom 44.9 KiB
No
Yes
Yes
No
No
No
No
Yes
2010 unknown
Jisp Custom 7.5 KiB
No
Yes
Yes
No
No
No
No
Yes
2007 unknown
js-lisp Common Lisp 52 KiB
No
Yes
No
No
No
No
No
Yes
2009 Apache-2.0
js-scheme Scheme 196 KiB
No
Yes
Yes
No
Yes
No
No
No
2010 GPLv3
JScreme Scheme 68 KiB
Yes
Yes
Yes
No
No
No
No
No
2010 unknown
jsScheme Scheme 200 KiB
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
2006 GPLv3
lisp2js Common Lisp Common Lisp none
Yes
No
Yes
No
No
No
No
Yes
2010 GPLv3
Marc Belmont's Lisp Common Lisp 6.4 KiB
Yes
Yes
Yes
No
No
No
No
Yes
2010 GPLv2
nconc Scheme 132 KiB
No
Yes
Yes
Yes
Yes
No
No
No
2011 GPLv3
Parenscript Common Lisp Common Lisp none
Yes
No
Yes
No
No
Yes
No
Yes
2012 BSD
Ralph Dylan python, node.js 36 KiB
Yes
Yes
Yes
No
No
Yes
No
Yes
2012 BSD
scheme2js Scheme Bigloo Scheme 136 KiB
Yes
No
No
Yes
Yes
Yes
No
Yes
2011 GPLv3
Scriptjure Clojure Clojure none
Yes
No
Yes
No
No
No
No
Yes
2011 EPL
Sibilant Common Lisp node.js, npm 76 KiB
Yes
Yes
Yes
No
No
Yes
No
Yes
2011 MIT
Spock Scheme Chicken Scheme 84 KiB
Yes
No
Yes
Yes
Yes
Yes
Yes
Yes
2011 BSD
substandard-lisp Standard Lisp 136 KiB
No
Yes
Yes
No
No
No
No
No
2011 GPLv3
The Little JavaScripter Scheme 20 KiB
No
Yes
No
No
No
No
No
Yes
2011 unknown
WdS17 Custom none
Yes
Yes
Yes
Yes
No
Yes
No
No
2010 public domain
LispScript
2007 MIT

A Survey Of JavaScript Lisp Implementations

2011-07-10 00:38 +0000

Given that JavaScript¹ interpreters are so widely distributed and that web applications are used for so many things today, I thought it might be worthwhile to see what possibilities there are to use Lisp with or rather within JavaScript. Some people argue that JavaScript is just Lisp in C's clothing and I think this is true to some degree. But there are just so many details of the language which are plainly annoying that I am not inclined to use it unless I absolutely have to. Obviously, JavaScript also lacks macros and many of the nice features offered by an S-expression based syntax.

Criteria

So I have looked at all browser hosted Lisp systems I could find and evaluated them with regards to the following criteria:

Dialect 使用语法

What Lisp dialect is it modeled after or is it a custom one? Note that I interpret dialects very broadly here, i.e. I consider systems that use defun, defvar, setq and defmacro as dialects of Common Lisp whereas systems that use define, set! and define-syntax as dialects of Scheme.

Build Dependencies 编译器所需依赖

What software packages are needed in order to build programs? This only applies to compilers.

Runtime Dependencies 运行所需依赖

Are any additional libraries required at runtime? If so, how big are they? This is important to know because it influences loading times of websites. Note that I measured runtime dependency sizes as they are distributed by the upstream project, i.e. they may or may not have been minified so be sure to check that if it matters for you.

Compiler 编译器

Does the implementation provide a compiler?

Interpreter

Does it provide an interpreter? Note that I also count self-hosting compilers as interpreters in case they can be used at runtime.

Interoperability 深度交互

Is it possible to interoperate with JavaScript from Lisp code? Can Lisp functions be passed to JavaScript functions as callbacks? 大部分scheme实现有

TCO

Does it implement Tail Call Optimization?

Continuations

Does it implement first class continuations?

Macros

Does it provide a macro system?

Hygiene

Does it provide a hygienic macro system?

Debugging排错系统

Is it (sensibly) possible to use existing browser based debuggers (e.g. Firebug) or are there custom debugging facilities?

Activity开发活跃度

What is the last year development activity has occurred in?

License使用协议

What's the code's license?

The Survey 关于此调查

I have created a tabular view of the result. It probably contains many errors still and I'm sure I didn't find all implementations out there. If you know of one that you'd like to see in this survey or would like to correct something feel free to modify the source data which is kept in an SXML document over at gitorious and notify me.