descriptionTranslator from Common Lisp to JavaScript
homepage URL
repository URL
last changeFri, 10 Feb 2017 06:51:27 +0000 (9 22:51 -0800)
last refreshTue, 24 Apr 2018 13:59:53 +0000 (24 15:59 +0200)
content tags

What is Parenscript?

Parenscript is a translator from an extended subset of Common Lisp to JavaScript. Parenscript code can run almost identically on both the browser (as JavaScript) and server (as Common Lisp).

Parenscript code is treated the same way as Common Lisp code, making the full power of Lisp macros available for JavaScript. This provides a web development environment that is unmatched in its ability to reduce code duplication and provide advanced metaprogramming facilities to web developers.


(ql:quickload :parenscript)

or download the latest release


What's the difference?

Parenscript is different from almost all other "language X" to JavaScript translators in that it imposes almost no overhead:

No runtime dependencies

Any piece of Parenscript code is runnable as-is. There are no JavaScript files to include.

Native types

Parenscript works entirely with native JavaScript datatypes. There are no new types introduced, and object prototypes are not touched.

Native calling convention

Any JavaScript code can be called without the need for bindings. Likewise, Parenscript can be used to make efficient, self-contained JavaScript libraries.

Readable code

Parenscript generates concise, formatted, idiomatic JavaScript code. Identifier names are preserved. This enables seamless debugging in tools like Firebug.


Parenscript introduces minimal overhead for advanced Common Lisp features. The generated code is almost as fast as hand-written JavaScript.


BSD (see COPYING file)

2017-02-10 Vladimir SedachMerge pull request #33 from jasom/ps-dom-fixesmaster
2017-02-10 Vladimir SedachMerge pull request #34 from PuercoPop/docs-1
2017-02-09 Javier OlaecheaFix symbol conversion in example code
2016-12-06 Jason MillerMerge pull request #30 from PuercoPop/update-docs
2016-12-05 Jason MillerCorrect two keywords in ps-dom.lisp
2016-08-29 Javier OlaecheaReference: Update the Arith. and Boolean section
2016-08-29 Javier Olaecheareference.html: = is converted to ===, not =
2016-03-17 Jason MillerMerge pull request #28 from TatriX/master
2016-03-17 TatriXUpdate
2016-03-14 TatriXCreate
2015-06-09 Boris SmilgaAdditions to 116f9ca9, to not replace Φ() with Φ.call...
2015-06-09 Boris SmilgaMerge pull request #19 from jasom/master
2015-03-05 Jason MillerPreserve "this" in implicit lambdas
2015-02-09 Boris SmilgaMerge pull request #16 from agrostis/upstream-quater
2015-02-09 Boris SmilgaFixed: an occurence of the macro WITH-DECLARATION-EFFEC...
2015-02-03 Boris SmilgaMerge pull request #9 from agrostis/upstream
10 years ago parenscript-20071104 parenscript-20071104 release
10 years ago parenscript-20071031 parenscript-20071031 release
10 years ago parenscript-20070828 parenscript-20070828 release
10 years ago parenscript-20070720 parenscript-20070720 release
14 months ago master
5 years ago srcmap
6 years ago loop