最終更新:2013-03-18 (月) 08:23:13 (4058d)  

altJS
Top / altJS

Alternatives to JavaScript

http://altjs.org/

Compile-to-JavaScript Languages

  • Caffeine? - A dialect of CoffeeScript that support packages and classes import, useful for browser applications.
  • CoffeeScript - An alternative syntax for JavaScript inspired by Ruby, Python and others.
  • CoffeeScript Redux? - Independent rewrite of the CoffeeScript compiler.
  • Coco? - A CoffeeScript variant with cutting-edge experimental features.
  • Contracts.coffee? - CoffeeScript dialect with runtime contracts.
  • GorillaScript? - A compile-to-JavaScript language designed to empower coders whilst also preventing some common programming errors.
  • heap.coffee? - A dialect of CoffeeScript that offers a C-like type system with manual memory management.
  • IcedCoffeeScript? - A CoffeeScript dialect that adds support for await and defer keywords which simplify async control flow.
  • Jack - A language that emphasizes simplicity, fun and productivity.
  • JMacro? - An untyped mixture of JavaScript and Haskell syntax that bridges a gap between those two languages. Can be used in a Haskell environment or run as a standalone compiler.
  • JS11? - [complete but currently inactive] A flexible set of syntax transformations that all compile line-for-line to proper JavaScript equivalents.
  • Kaffeine? - Progressive enhancement of JavaScript, aimed at professionals.
  • LittleSmallscript? - A project with philosophical similarity to CoffeeScript, except that the language syntax is based on Little Smalltalk.
  • LispyScript? - A JavaScript with Lispy syntax and Macros.
  • LiveScript? - Coco? but much more compatible with CoffeeScript, more functional, and more feature rich.
  • LLJS? - "bastard child of C and JavaScript" that offers explicit memory management and other C-like features in a typed dialect of JavaScript. Research project.
  • Moescript? - Indent-based language.
  • Move? - A simplified language intended for new programmers.
  • pogoscript? - Language that emphasises readability, handles async control flow nicely, is friendly to domain specific languages and compiles to regular JavaScript.
  • Sibilant? - An expandable JavaScript-like language inspired by Lisp.
  • ToffeeScript? - A dialect of CoffeeScript that support Asynchronous Syntax, Symbol and Regexp operator =~.
  • Parsec CoffeeScript? - An extensible fork of the CoffeeScript project.
  • Uberscript?, a CoffeeScript fork that adds type annotations which are compiled to Google closure compiler type annotation comments.
  • Zedscript? - Pseudocode-ish syntax alternative to the ECMAScript syntax.

JavaScript Enhancements

Security Enforcement

  • ADsafe? - Client-side static verifier and API, making third party scripts safe.
  • Caja - Compiles ES5/strict to ES3 and supports object-capabilities.
  • Dojo Secure? - Framework for building secure mashups.
  • FBJS? - Facebook JavaScript, used for scripting Facebook gadgets.
  • Jacaranda? - Static verifier supporting object-capabilities.
  • Gatekeeper - Microsoft Research project.
  • Microsoft - Web Sandbox Technology preview, security through isolation.

Static Typing

  • Some of the others listed are statically typed, such as mobl, GWT, NS Basic?, and Haxe.
  • Elm - type-safe functional language that compiles to HTML, CSS, and JavaScript.
  • JSX - a faster, safer, easier alternative to JavaScript.
  • Lambdascript? - [superceded by the Haste project] A prototype language intended to allow strongly-typed purely functional web scripting.
  • 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.
  • Pit? - F♯ to Javascript compiler.
  • Prefix? - C♯ like language with readable output.
  • Roy? - Functional language with type inference, structural typing, sum types, pattern matching - tries to stay close to JavaScript semantics.
  • SafeJS? - Typed JS with optional syntactic sugar.
  • Script♯? - [commercial] Compiles C♯ to JS.
  • TypeScript - Microsoft's open source expansion of JavaScript with Visual Studio Intellisense to make building typed JS applications easier.

Synchronous to Asynchronous (CPS)

  • async.js? - Async utilities for Node.js and the browser.
  • Continuation.js? - A lightweight JIT compiler for simplifying asynchronous JavaScript programming with no runtime dependences. It supports both Node.js and browser-side JavaScript and is compatible with CoffeeScript (also TypeScript, and any other scripts compile to JS).
  • Jscex? - Write simple JavaScript code, execute it asynchronously by compiling to monadic form. Works in any ECMAScript 3 engines directly.
  • jwacs? - JavaScript With Advanced Continuation Support.
  • mobl - Screen-driven language and toolset for building mobile web apps.
  • NarrativeJS? - JavaScript extension with asynchronous futures and promises.
  • StratifiedJS? - JavaScript plus structured concurrency.
  • Streamline.js? - Uses underscore (_) to stand for callbacks. This fork preserves line numbers for debugging.
  • TameJS? - From OkCupid?, a cleaner way to write async JavaScript.
  • Wind.js? - Wind.js is an advanced library which enable us to control flow with plain JavaScript for asynchronous programming (and more) without additional pre-compiling steps.

Language Extensions

  • ContextJS? - is an implementation of Context-oriented Programming for JavaScript.
  • Cycript? - An Objective-C / JavaScript bridge that can also be used to compile and compress standard or hybrid JavaScript syntax.
  • Flapjax? - Event-driven, reactive evaluation.
  • Jangaroo? - AS3 (ActionScript) to JavaScript.
  • JavaScript++? - Superset of JS that includes features such as classes, block scoping and a pluggable type system.
  • jLang? - adds object oriented syntax, namespaces, operators overriding.
  • JS2? - Object-oriented JavaScript with syntactic sugar (curry, foreach, property). Released as a Ruby gem.
  • Mochiscript? - Object-oriented JavaScript with syntactic sugar. Released as a Ruby gem.
  • 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.
  • Restrict? - Mode Tightens up the behavior of several JavaScript operators, including ==.
  • Six - Six is a language super-set of JavaScript that enables new syntactic features from the 6th edition of ECMAScript to be used, through a transpiler, in your scripts today.
  • TIScript? - gentle extension of JavaScript.

Ports of Existing Languages

Ruby

  • 8ball? - Specifically targets the V8 engine, and transforms a partial subset of Ruby into JavaScript.
  • ColdRuby? - A Ruby 1.9 MRI bytecode compiler and JS runtime. (includes a C++ runtime incorporating the V8 engine for native execution.)
  • HotRuby? - Runs opcode, compiled by YARV on Ruby inside a web browser or in Flash.
  • Opal - A Ruby to JavaScript compiler created by Adam Beynon, with a tiny runtime that can be used in any JS environment. Has custom integration with jQuery, node.js and Rails.
  • rb2js? - Converts Ruby to JavaScript.
  • Red? - Writes like Ruby and runs like JavaScript.
  • Quby? - Used for game coding site, not open source (requires HTML5).

Ruby-related Libraries

  • RubyJS? - Endorsed by Yukihiro (Matz?) Matsumoto, creator of Ruby. A JS library that ports the code-lib functions of Ruby to JavaScript, yielding an R object that can be used as an alternative to libraries like Underscore.js. Integrates nicely with CoffeeScript syntax.

Python

Perl

Java - and JVM

Scala

  • js.scala? - - JavaScript - as an embedded DSL in Scala
  • Scala+GWT? - Aims to compile Scala code for the browser via the GWT toolchain.

C♯, F♯, .NET related languages

Lisp, Clojure - & Scheme

OCaml/ML

Haskell

Smalltalk

  • Amber - An implementation Smalltalk-80? with IDE that runs on the JavaScript runtime (formerly JTalk?).
  • Clamato? - a Smalltalk dialect that is designed to operate within JavaScript.
  • Lively Kernel? - Smalltalk/Squeak-like development environment in the browser.
  • Silver Smalltalk? - [commercial] Smalltalk in the browser.

C/C++

BASIC

Pascal

  • Smart Mobile Studio? - [commercial] Object Pascal to JavaScript compiler and Delphi like IDE that brings classes, inheritance, interfaces and more to JavaScript.
  • Elevate Web Builder? - [commercial] Visual development tool for web applications that compiles standard Object Pascal? source code into JavaScript.

Go

Multitarget

その他

Tierless Languages (produce both client & server)

  • Opa? - Industrial programming language for high-security distributed web applications.
  • 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.

Visual JavaScript Tools

  • Blockly - web-based, graphical programming language. Users can drag blocks together to build an application.
  • Illumination? - [Commercial] Visual, cross-platform tool creates apps for Android, iPhone, iPad, Desktops and HTML5 or Flash websites. The I language underlies the tool.
  • JsMaker? - Visual JavaScript programming.
  • Meemoo? - Flow-based visual programming framework for hackable web apps.
  • NoFlo? - JavaScript implementation of Flow-Based Programming. Programs (network graphs) can be visually created with DrawFBP?,
  • ScriptBlocks?
  • Snap? - JavaScript of BYOB?, which is a fork of Scratch.
  • Waterbear?

Other Projects

  • Agda? - A dependently typed functional programming language and mechanized proof assistant.
  • browserl? - An Erlang Emulator written in JavaScript.
  • Dart - A class-based programming language for creating structured web applications.
  • erljs? - Run Erlang in JavaScript.
  • ErlyJS? - (abandoned) JavaScript to Erlang compiler.
  • FalconJS? - Part of Adobe's donation of Flex technology to The Apache Foundation?; compiles ActionScript and MXML to JavaScript.
  • Gnusto? - a Z-Machine VM interpreter written in JavaScript.
  • jsForth?
  • Logo Interpreter?
  • lua.js? - Lua parser.
  • MIPS.coffee? Simple MIPS Interpretor.
  • newspeak? - in progress, converting compiler from Java to JavaScript.
  • Nile? - Declarative Stream Processing for Media Applications (with JS backend).
  • NGN APL? - an APL?-to-JavaScript compiler written in CoffeeScript.
  • Oia? - A port of Io? to JavaScript.
  • p2js? - Perl to JavaScript converter.
  • php.js - PHP to JavaScript converter and VM written in JavaScript.
  • phype? - Run a limited subset of PHP in a browser.
  • Plaid? - A gradually-typed, typestate-oriented language designed as a better Java.
  • Pygmy? - a dynamic language that compiles to JavaScript designed to be readable but concise enough to be competitive in code golf.
  • Reb2Static? - Rebol? to JavaScript.
  • RPN? - Interpreter for a language with a Reverse Polish Notation syntax.
  • SMLtoJs? - SML to JavaScript compiler.
  • tcl.js? - Tcl implementation in JavaScript.
  • TIScript?
  • Topaz? - Rebol? inspired language on top of JavaScript.
  • wForth?
  • Quixe? - a Glulx VM? interpreter written in JavaScript.
  • XLCC? - Interpret LCC into JavaScript on node.js.

Tools for Compiler Writers

JavaScript Parsers & Extensions

JavaScript Optimizers

JavaScript Parser Generators

  • Pjison? - 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
  • Language.js? - PEG with error nodes being inserted into the tree for unique error handling
  • 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?
  • 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 (Abstract Syntax Tree)

  • Acorn - A tiny, fast JavaScript parser in JavaScript created by Marijn Haverbeke.
  • burrito? & js-traverse? - see this post for more info, as well as node-stackedy for an example and node-browserify for running it in a browser instead of node.js.
  • Closure Compiler AST Documentation
  • escodegen? - JavaScript code generator.
  • JavaScript Shaper? an extensible framework for JavaScript syntax tree shaping.
  • JsonML? - AST format used by the ES5 parser.
  • ECMAScript 5 parser? - A parser for ES5, the current version of ECMAScript.
  • Esprima - ECMAScript parsing infrastructure for multipurpose analysis.
  • language-javascript? - JavaScript parser for Haskell.
  • Mozilla SpiderMonkey Parser API? - For use with the SpiderMonkey shell.
  • Source Map - Map JavaScript debugger output to original source.
  • treehugger? - JavaScript AST transformation tools.
  • Zeon? - A static visual JavaScript analyzer / editor. See also ZeParser?.

関連

参考