descriptionTranslator from Common Lisp to JavaScript
homepage URL
repository URL
last changeMon, 22 Oct 2018 09:01:09 +0000 (22 02:01 -0700)
last refreshWed, 24 Oct 2018 03:09:20 +0000 (24 05:09 +0200)
content tags
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 meta-programming
facilities to web developers.

At the same time, Parenscript is different from almost all other
"language X" to JavaScript translators in that it imposes almost no

  No run-time 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 data types. There
    are no new types introduced, and object prototypes are not
  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
    use of JavaScript debuggers.
    Parenscript introduces minimal overhead for advanced Common Lisp
    features. The generated code is almost as fast as hand-written

Parenscript is available via Quicklisp:
  (ql:quickload :parenscript)

To run unit tests:
  (ql:quickload :parenscript.tests)

  Please send patches and bug reports to the mailing list:

  See docs/tutorial.html and docs/reference.html
Mailing list:
Web site:
Source repository:
  BSD-3-Clause, see the file COPYING
42 hours ago Vladimir SedachFixed MAYBE-ONCE-ONLY to handle symbol macrosmaster
44 hours ago Vladimir SedachОлексій Замковий's hack for writing arbitrary strings...
44 hours ago Vladimir SedachAdded misc tests
2 days ago Vladimir SedachBetter output of Unicode strings
2 days ago Vladimir SedachMade CASE treat symbol literals as strings, behave...
2 days ago Vladimir SedachMake RANDOM generate floats correctly
2 days ago Vladimir SedachAdded more unit tests
2 days ago Vladimir SedachUpdated *version*, which has been neglected since 2.3
7 days ago Vladimir SedachFixed loop capture of renamed lexical variables
7 days ago Vladimir SedachFixed capture of loop variables, up to let renaming
8 days ago Vladimir SedachFix RETURN trying to grab declarations from body-less...
8 days ago Vladimir SedachFix: (lambda () "str") to return "str", not treat ...
8 days ago Vladimir SedachAdded misc unit tests
10 days ago Vladimir SedachAdded compatibility for :preserve readtable-case (Alleg...
11 days ago Vladimir SedachAdded a couple of unit tests
12 days ago Vladimir SedachAdded copyright and license notices to source files
10 years ago parenscript-20071104 parenscript-20071104 release
10 years ago parenscript-20071031 parenscript-20071031 release
11 years ago parenscript-20070828 parenscript-20070828 release
11 years ago parenscript-20070720 parenscript-20070720 release
42 hours ago master
5 years ago srcmap
6 years ago loop