Haxe is an cross-language development toolkit. It implements a modern, high level, strictly typed programming language. Comes with a cross-compiler for multiple target languages (iOS, Android, Java, C++, C#, HTML5, NodeJS, Python, PHP, Lua). It brings along its own standard library, but still provides ways to access each platforms native capabilities.
Homepage
Download
Recent Releases
4.3.615 Sep 2024 17:45
minor bugfix:
:
Display : do not define "display" for json rpc diagnostics.
Cpp : null check interfaces
hl : ignore WANT_READ/WANT_WRITE errors when the socket is known to be blocking
hl : weird compiler error.
Jvm : --java out -D jvm deprecation warning
Macro : Context.reportError should not abort build macros
4.3.527 Jul 2024 11:05
minor bugfix:
General improvements:
All : macOS universal binaries.
Display : migrated diagnostics to Json RPC
Macro : expose TVar VStatic flag in macros.
:
All : `@:structInit` with getter + setter.
All : add missing recursion when checking abstract casts
All : fail nicer if unify_min can't find a common type
All : pretty errors failure
All : disallow local statics when inlining
Display : unused pattern variables should be marked as unused
Display : diagnostics miss "used without being initialized" errors
Display : recursive inline is not supported on enum abstract constructor
Display : Void as value error disappears on second compilation
Display : false positives of "This cast has no effect, but some of its sub-expressions"
Cpp : inherit `@:unreflective` on generic classes
hl : bit shift + assignment in while loop header
hl : do-while loop in genhl+hlopt
hl/c : use uint64 instead of uint64_t for shift cast.
Macro : don't choke on namePos for reification pattern matching
Deprecation / future version handling:
Macro : `Compiler.include()` warning when used outside init macros.
4.3.405 Mar 2024 06:45
minor bugfix:
General improvements:
All : allow @:using with Class and Enum.
Display : expose list of metadata/defines
:
All : typedef vs. GADT.
All : don't double-throw exceptions
All : some abstract inlining failures
All : JsonPrinter empty parent class
All : dce: clean up operator handling
All : analyzer: deal with unreachable block in binops
All : analyzer: don't recursively check enum values when const propagating
All : analyzer: check for inlined purity meta
Display : errors from parser missing in diagnostics
Display : display services with static extension
Display : display services with safe navigation
hl : hlopt rework try-catch control flow
hl/c : reserved keywords.
Deprecation / future version handling:
All : don't infer string on concat, when using -D haxe-next.
All : handle optional arguments with bind, when using -D haxe-next
Macro : build order vs inheritance, when using -D haxe-next
Macro : deprecate some API from haxe.macro.Compiler
Java/jvm : warn about --java... -D jvm vs --jvm.
4.3.310 Jan 2024 19:57
minor bugfix:
General improvements: All : improve extra field error range. All : better error messages for --connect hl : improve error message when hl_version is missing hl/c : compiler now adds hlc define when targeting hl/c. Macro : update macro API restriction warnings when using -D haxe-next : All : handle non existing files for positions in pretty errors. All : metadata support for local static vars All : catch trailing invalid syntax in string interpolation Eval : Array.resize retaining values Eval/hl : catching haxe.ValueException hl : make genhl respect Meta.NoExpr hl : don't add bindings for non existing methods hl/c : add missing I64 mod support hl/c : rework reserved keywords hl/c : Int64 unsigned right shift overflow. Java/cs: stack overflow from closures constraints js : DOMElement insertAdjacentElement should not be pure. Macro : catch trailing invalid syntax in Context.parseInlineString Macro : TDAbstract without flags in haxe.macro.Printer
4.3.007 Apr 2023 03:15
major bugfix:
New features:
All : support defaults for type parameters.
All : support @:op(a()) on abstracts
All : support abstract keyword to reference the abstract
All : support static var at expression-level
All : support ?. safe navigation operator
All : added ?? null coalescing operator
All : add -w compiler option to configure warnings
All : added new error reporting modes
All : support custom metadata and defines
General improvements:
All : made various optimizations in the analyzer.
All : made various improvements to diagnostics
All : made various improvements to null-safety
All : optimize `.bind` for instance methods
All : improved various parser error messages
All : improved compilation server performance
All : improved code generation for try/catch
All : infer property accessor type from the property
All : improved inference of local functions typed against abstracts
All : improved completion on module-level fields
All : improved handling of native libraries on the compilation server
All : improved performance when generating locals
All : made Std.parseInt more consistent across targets
All : infer null literals as Null
All : made field access errors more consistent
All : consistently allow trailing commas
All : migrated all relevant targets to PCRE2
All : made analyzer reconstruct do-while loops
All : improved restrictions on init macros
All : improved positions of @:structInit fields
Macro : support map literals in Context.makeExpr
Macro : added haxe.macro.Compiler.getConfiguration()
Macro : added withImports and withOption to haxe.macro.Context
Macro : added getMacroStack and onAfterInitMacros to haxe.macro.Context
Macro : added haxe.macro.Context.makeMonomorph
Eval : added dictionary mode to objects, increasing performance in some cases
Eval : Sys.exit handling messing up the compilation server
Eval : added -D eval-print-depth and -D eval-pretty-print
Cpp : supported type parameters on extern classes
Cpp : haxe.Int64 improvements
4.1.016 Oct 2020 03:15
major bugfix:
New features:
All : added tail recursion elimination.
All : added unified exception handling
All : allow `try catch(e) ` as a shortcut for `try catch(e:haxe.Exception) `
Eval : added SSL support
Jvm : the JVM target is no longer considered experimental
General improvements:
All : implemented different display support approach.
All : improved display services related to reference finding
All : added go-to-implementation support
All : made various improvements to diagnostics
All : support completion for map keys
All : improved parser robustness for incomplete syntax
All : disallowed the combination of `@:overload` and inline
All : improved renaming of local variables
All : better inlining of for-loops with anonymous iterators
All : remove redundant final `return` in `Void` functions
All : remove redundant `continue` in loops
All : improved various compilation errors reporting
All : allowed `(get,default)` property access combination
All : allowed ++ and -- on member properties of abstracts
js : use abstract type name for generating its implementation class
js : improve haxe.ds.StringMap implementation
js : improve interface checking and make it more minifier-friendly
js : generate `let` instead of `var` when compiler with `-D js-es=6`
js : optimize `.bind` on constructors.
Jvm : rewrote function handling to me much faster and more portable
Jvm : generate interfaces for typedefs for improved performance
Jvm : added support for haxe.MainLoop
Jvm : support `@:jvm.synthetic` and use it to hide some generated fields
Jvm : respect `@:private` and `@:protected`
Lua : improve error handling behavior when throwing objects/instances
Lua : optimize `haxe.iterators.StringIterator`
Php : optimize `Std.isOfType` for String, Bool and Float
Php : make Haxe Array implement native interfaces Iterator, IteratorAggregate, Countable
cs : support `@:assemblyMeta` and `@:assemblyStrict`.
Python : added `__contains__` and `__getitem__` implementations
4.0.0-preview.202 Nov 2017 08:07
major feature:
New features:
all : added final keyword (#6596)
all : added new function type notation (#6645)
General improvements and optimizations:
all : replaced some occurrences of List with Array
all : changed haxe.xml.Fast to an abstract
all : improved optimization when comparing against `null`
all : added support for `case var x` syntax and detect possible typos (#6608)
php : changed `--php-prefix`, `--php-front` and `--php-lib` to `-D php-prefix=`, `-D php-front=` and `-D php-lib=` respectively
Removals:
all : moved haxe.unit to hx3compat
all : moved haxe.web.Request to hx3compat
php : dropped php5 support; minimum supported php version is 7.0 now
Bugfixes:
all : fixed issue with various functions not being displayed in macro context (#6000)
all : fixed invalid static extension lookup on `super` (#3607)
all : fixed typing error when constructing enums with abstracts over functions (#6609)
all : fixed bug that skipped checking @:from typing in some cases (#6564)
all : fixed Int64 parsing of negative numbers that end in a zero (#5493)
all : fixed top-down inference when constructing enums (#6606)
eval : fixed bug with equality handling
eval : fixed issue with file creation not defaulting to binary
eval : fixed invalid override detection (#6583)
eval : fixed infinite recursion when printing arrays/vectors
cs/java : fixed DCE bug that would lose toString method of thrown objects
php/python : fixed some bit operators for Int32 (#5938)
php : fixed accessing `static inline var` via reflection (#6630)
php : fixed Math.min() and Math.max() for NAN on PHP 7.1.9 and 7.1.10
js : fixed js syntax error for `value.iterator--` (#6637)
Standard Library:
macro : added have.display.Position and PositionTools.toRange (#6599)
all : moved List to haxe.ds (#6610)
4.0.0-preview.113 Sep 2017 02:45
major bugfix:
Preview.1
New features:
All : reworked macro interpreter.
All : added support for arrow functions
General improvements and optimizations:
js : improved generation of `break` inside `switch` inside loops
cs : improved generation of enum classes.
Sys : the `database` parameter of `Mysql.connect` is now optional
js : updated jQuery extern (js.jquery.*) for jQuery 1.12.4 / 3.2.1 support.
Makefile : default Unix installation location (INSTALL_DIR) changed from /usr to /usr/local.
Makefile : default Unix std location (INSTALL_STD_DIR) changed from (INSTALL_LIB_DIR)/std to (INSTALL_DIR)/share/haxe/std.
Removals:
All : removed --eval command line argument.
Sys : SPOD (sys.db.Object, sys.db.Manager and friends) was moved into a separate library `record-macros` (https://github.com/HaxeFoundation/record-macros)
js : js.JQuery and js.SWFObject were moved into hx3compat library (https://github.com/HaxeFoundation/hx3compat),
it's recommended to use more modern js.jquery.JQuery and js.swfobject.SWFObject classes.
All : moved haxe.web.Dispatch into hx3compat library (https://github.com/HaxeFoundation/hx3compat).
:
Php7: Reflect.field() for strings.
Php7: `@:enum abstract` generation without `-dce full`
Php7: using enum constructor with arguments as a call argument
Php7: `null` property access
Php7: setting values in a map stored in another map
Php7: haxe.io.Input.readAll() with disabled analyzer optimizations
Php/php7: accessing enum constructors on enum type stored to a variable
Php/php7: "cannot implement previously implemented interface"
Php: invoking functions stored in dynamic static vars
Php: field access on `new MyClass()` expressions wrapped in a `cast`
Standard Library:
All : added `EReg.escape`.
All : `BalancedTree implements `haxe.Constraints.IMap`
3.4.221 Mar 2017 03:25
minor bugfix:
:
Cpp : with @:native names being prewith ::
Cpp : with return type handling
Cpp : inaccurate line numbers that threw off deging
Php7 : generation of ` 0 ` constructs
3.4.115 Mar 2017 12:05
minor bugfix:
New features:
Php7 : added source maps generation with `-D source_map` flag.
:
All : compilation server with two identical @:native paths on extern abstracts.
All : invalid inling in a specific case
All : various display related cpp : improved typing of some Function/Callable-related types
hl : various and improvements.
Php : FileSystem.stat() for directories on Windows
Php/php7 : invalid result of Web.getPostData()
Php7 : invalid access to length of string in some cases
Php7 : infinite recursion on MysqlConnection.()
3.4.008 Feb 2017 01:15
major feature:
General improvements and optimizations:
Support completion for static extensions.
Removed neko dependency for macros, use PCRE instead.
Disabled analyzer optimizations by default, re-enable with -D analyzer-optimize
PHP7: Generate native v instanceof MyType instead of Std.is(v, MyType) where possible for better performance,
added @:phpNoConstructor meta for externs which do not have native php constructors and yet can be constructed,
greatly reduced amount of generated tmp vars,
Array performance improvements.
HL: made various improvements
Bugfixes:
+ fixed using picking up non-static abstract functions
+ fixed issue with side-effect detection when optimizing
+ fixed issue with zlib bindings causing zlib_deflate errors
+ Allow user-defined modules in php package
+ Dereference some of php.Syntax methods if required
+ fixed assigning a method of dynamic value to a variable
+ fixed missing initialization of dynamic methods in classes with empty constructors