Recs.
Updated
Haxe is an open source toolkit based on a modern, high level, strictly typed programming language, a cross-compiler, a complete cross-platform standard library and ways to access each platform's native capabilities.
SpecsUpdate
Pros
Pro Syntactic macros
Syntactic macros allow you to extend compiler features at the syntax tree step. Macros come into play after code is parsed into the abstract syntax tree, and macros allow you to transform it before the rest of the compilation completes.
This provides for immense power, while at the same time scoping the extensibility at a level that is powerful, but well constrained.
Pro Abstracts allows me to create more intative api's without runtime overhead
Pro Compiles to multiple platforms and languages
Haxe allows you to develop for Web, iOS, Android, Blackberry, Windows, OSX, Linux and others, all at once, without the need to switch languages and maintain separate code bases.
This is possible because Haxe can compile to JavaScript, ActionScript, Flash AVM bytecode, C++, Neko, PHP, C# (.NET) and Java.
Support for even more platforms and languages is under development.
Pro Powerfully expressive but easy to learn
The language was designed to be very expressive with the smallest possible amount of syntactic sugar. There are actually fewer keywords than other languages with similar power.
Pro Pick up errors at compile time
One big advantage over pure javascript, (or some other languages listed here) is that Haxe will pick up a whole range of errors when you compile, saving you the pain of having to try and debug them later. This includes everything from syntax errors ("Unexpected ;") to type errors ("Class user has no field username. Suggestion: username").
Pro Ability to use existing JS libraries
Haxe has the ability to use "externs". These are haxe files which describe the usage of existing JS libraries. Get code completion and compile-time-checking for everything from jQuery to Node.js.
Even without externs, native JS code can still be used through untyped code.
Pro Large library support from servers to games
Haxelib (common library repo) and other sources contain large codebases for anything from cryptography to communications. A lot of these are fully cross-platform and work with the JavaScript target.
The JavaScript target can be used for everything from node.js server applications (with code completion) to games using either the Flash-like OpenFL library or direct canvas or WebGL programming.
Pro Small, readable output
The output that is generated can be trimmed using "dead code elimination" to only include those functions and libraries that are strictly necessary. All code is very readable with only minimal extras for specific functionality.
Small output is good for frontend development as file size is a major concern.
Pro Create without needing to be limited to a language, target, or commercial ecosystem
Cons
Con It's not easy to convince people it's as good as it really is unless you can get them to really try it
Recommendations
Comments
Flagged Pros + Cons
Pro Large library support. From servers to games.
Haxelib (common library repo) and other sources contain large codebases for anything from cryptography to communications. A lot of these are fully cross platform and work with the JavaScript target.
The JavaScript target can be used for everything from node.js server applications (with code completion) to games using either the Flash-like OpenFL library or direct canvas or WebGL programming.
Pro Extremely fast compilation
Haxe can easily compile over 100,000 lines of code to JS in seconds on a mid-spec computer.