Skip to content

List of languages that compile to JS

gregwebs edited this page Oct 10, 2011 · 208 revisions

CoffeeScript Family (& Friends)

Family (share genes with CoffeeScript)
  • Coco A CoffeeScript dialect that aims to be more radical and practical, also acts as a test bed for features that get imported in CoffeeScript.
  • Parsec CoffeeScript CS based on parser combinators. The project's aim is to add static metaprogramming (i.e. macros + syntax extensibility) to Coffee Script (CS), similar to how Metalua adds such features to Lua. The resulting compiler, once merged with the official compiler, should be usable as a drop-in replacement for it.
  • Contracts.coffee A dialect of CoffeeScript that adds built-in support for contracts.
  • A coffeescript extension that you can declare types with. They get converted into google closure type annotation comments that the closure compiler can use to type check your javascript.
Friends (philosophically related)
  • JS11 JavaScript with augmented semicolon insertion, reduced punctuation, and limited sugar. Debugs line-for-line.
  • Kaffeine Enhanced Syntax for JavaScript.
  • Jack Making programming playful.
  • move A simpler and cleaner programming language.

JavaScript Parsers and Extensions

Javascript Optimizers
Security enforcing JavaScript
  • Caja Compiles ES5/strict to ES3 and supports object-capabilities
  • ADsafe Client-side static verifier and API, making third party scripts safe.
  • FBJS Facebook JavaScript, used for scripting FBML (Facebook Markup Language) gadgets.
  • Jacaranda Static verifier supporting object-capabilities.
  • Microsoft Web Sandbox Technology preview of securing web content through isolation.
  • Gatekeeper Microsoft Research project.
  • Dojo Secure Framework for building secure mashups.
Static typing
  • Some of the ones listed below are also statically typed, such as mobl, GWT, JSIL, NS Basic, and Haxe.
  • Dart by Google. C/Java-like syntax with optional typing.
  • SafeJS
  • MileScript [commercial] A strongly-typed language similar to C# and Java, but which compiles to JS. free for non-profit, educational use.
  • Mascara [commercial] Enhances JavaScript with powerful features like classes, namespaces and type-checking.
  • Roy tries to meld JavaScript semantics with some features common in static functional languages
  • A coffeescript extension that you can declare types with. They get converted into google closure type annotation comments that the closure compiler can use to type check your javascript.
Synchronous to Asynchronous JavaScript Compilers (CPS)
  • Streamline.js Uses underscore (_) to stand for callbacks. This fork preserves line numbers for debugging.
  • mobl The new language for programming the mobile web.
  • StratifiedJS JavaScript + structured concurrency. See also apollo on that site.
  • NarrativeJS JavaScript extension with asynchronous futures and promises.
  • jwacs JavaScript With Advanced Continuation Support.
  • Jscex Write simple JavaScript code, execute it asynchronously by compiling to monadic form.
  • TameJS adds new keywords 'twait' and 'mkevent'
JavaScript Language Extensions
  • ContextJS is an implementation of Context-oriented Programming for JavaScript.
  • Objective-J Shares with JavaScript the same relationship that Objective-C has with the C programming language: that of being a strict, but small, superset.
  • JS2 Object-oriented JavaScript with syntactic sugar (curry, foreach, property). Released as a Ruby gem.
  • jangaroo AS3 (ActionScript) to JavaScript.
  • Flapjax Event-driven, reactive evaluation.
  • jLang adds object oriented syntax, namespaces, operators overriding
  • Restrict Mode
  • TIScript gentle extension of JavaScript

Ruby

  • HotRuby Runs opcode, compiled by YARV on Ruby inside a web browser or in Flash.
  • rb2js Converts Ruby to JavaScript.
  • RubyJS A successor to rb2js
  • Red Writes like Ruby and runs like JavaScript
  • Quby Used for game coding site, not open source.
  • Opal Ruby to Javascript compiler.
  • 8ball ruby-to-javascript source-to-source transformer

Python

  • PYXC-PJ [CS friend] Python to JS. Can generate a (line/col)-number mappings file.
  • Pyjamas Python to JS.
  • Pyjs Python to (readable) JS.
  • Skulpt Python. Client side.
  • PyCow Python to MooTools JS.
  • PyvaScript Python-like syntax to JavaScript.

Java

  • GWT Google Web Toolkit, compiles java to javascript
  • Java2Script Eclipse Java to JavaScript compiler plugin and JavaScript version of SWT
  • j2js Java bytecode to JavaScript.

Scala

  • scalagwt enhanced GWT (accepts jribble as well as java) plus scala to jribble.

C#, .NET

  • jsc [experimental] Recompile your .NET assembly to JavaScript, ActionScript, PHP or Java.
  • JSIL MSIL (.NET bytecode) to Javascript
  • Script# [commercial] Compiles C# to JS.
  • Prefix in development

Lisp, Scheme

  • BiwaScheme Scheme in JavaScript
  • ClojureScript Clojure to JS, the official version. Supports the majority of Clojure including persistent datastructures.
  • clojurejs Subset of Clojure to JS.
  • EdgeLisp A Lisp in the tradition of Common Lisp
  • Fargo Scheme in JavaScript
  • Moby Scheme A Scheme running in JS.
  • nconc scheme interpreter in javascript with stack-friendly tail calls and full call/cc
  • Parenscript Subset of Common Lisp to JS.
  • Ralph Lisp-1 dialect that compiles to JavaScript, inspired by Dylan
  • scheme2js Scheme to JavaScript.
  • Scriptjure Library for generating JavaScript from Clojure forms.
  • Sibilant JavaScript with a lisp.
  • Spock A Scheme to JavaScript compiler that uses Henry Baker's Cheney-on-the-MTA compilation strategy

OCaml

Haskell

  • ghcjs Compile normal Haskell into JS
  • jmacro Quasi-Quoted JS that you can insert Haskell values into, also supports a more haskellish version of javascript.

The rest of these probably don't work, particularly with code written for the common GHC compiler.

  • https://github.com/aculich/lambdascript Compile a subset of Haskell into JS
  • UHC (Utrecht Haskell Compiler) backend converts UHC core to JavaScript, allowing the compiling of Haskell code to JS.
  • YHC (York Haskell Compiler) backend, as above but with YHC core language.
  • jshaskell

Smalltalk

  • Amber - formerly known as Jtalk
  • Clamato a Smalltalk dialect that is designed to operate within the JavaScript runtime.
  • Silver Smalltalk [commercial] Smalltalk in the browser.
  • Lively Kernel - smalltalk/squeak-like development environment in the browser. See also Avocado, built on top of it.

C/C++

  • Emscripten LLVM to JavaScript compiler. LLVM is "an aggressive open-source compiler for C and C++," as well as other languages.
  • mala vala (gobject) to javascript
  • Clue C language compiler to different runtimes (Lua, JS, Perl 5, C, Java, CL).

Basic

  • NS Basic/App Studio [commercial] Visual Basic-style BASIC to JavaScript compiler. Includes IDE. Targets iOS and Android.
  • qb.js An implementation of QBASIC in Javascript

Multitarget

  • Haxe compiles to several platforms (C++, Flash, JS, Neko, PHP).
  • Fantom Evolutionary object-oriented language emphasizing succinct and effective APIs (JVM, CLR, JS).
  • LZX (Laszlo XML) LZX is OpenLaszlo's declarative user interface language, which is compiled into JavaScript 2 as an intermediary format, and further compiled into either JavaScript 1.5 or ActionScript 3.
  • Clue and jsc above target multiple runtimes in addition to javascript

Tierless languages (produce both client & server)

  • Fun A programming language for realtime webapps - compiles to client-side and server-side JS.
  • Ur In the tradition of ML and Haskell.
  • WebSharper Lets you compile F# to JS.
  • mobl The new language for programming the mobile web.
  • E Compiles E to JS. E is a secure distributed persistent pure object language.
  • Sugar new programming language designed to replace JavaScript for client-side (and server-side) web development
  • Opa (in private beta) write your complete application in just one language, and the compiler will transform it into a self-sufficient executable

Visual, Blocks-based Languages

Others

  • Oia A port of Io to JavaScript.
  • Quixe a Glulx VM interpreter written in Javascript
  • Gnusto a Z-Machine VM interpreter written in Javascript
  • Logo Interpreter
  • p2js perl to javascript converter
  • Reb2Static Rebol to Javascript
  • RPN Interpreter for a language with a Reverse Polish Notation syntax.
  • phype run PHP code directly in your browser
  • OP4JS object pascal for javascript, in development
  • jsForth
  • wForth

Tools for Compiler Writers

Javascript Parser Generators
  • jison Bison in javascript, used by Coffeescript
  • OMeta/JS (source) metacompiler for many languages to many targets, including js.
  • PEG.js parser generator for JavaScript based on the parsing expression grammar formalism
  • languagejs - PEG parser written in JavaScript with first class errors
  • Canopy Self-hosting PEG parser compiler for JavaScript, influenced by Ruby parser generators such as Treetop and Citrus. Depends on JS.Class library
  • JS/CC LALR(1) parser generator
  • jsparse PEG by Grandmaster Chris Double
  • ReParse parser combinator library for Javascript like Haskell's Parsec
  • p4js Monadic parser library for JavaScript
  • JSGLR Scannerless, Generalized Left-to-right Rightmost (SGLR) derivation parser for JavaScript
  • antlr has a javascript target
  • Cruiser.Parse LL(k) parser
Javascript AST, Semantics

See Also

  • altJS a Google group and #altjs IRC channel for those interested in alternative languages for javascript ('transpilers'). There is a Try altJS feature, too, to test out various compilers in the browser.
  • jswiki another github wiki with listings of various javascript libraries

Clone this wiki locally