Haxe Changelog

What's new in Haxe 3.2.0

May 18, 2015
  • New features:
  • all : added @:noPrivateAccess to re-enable access restrictions within @:privateAccess
  • cpp : some support for @:nativeGen metadata
  • Bug fixes:
  • all : fixed detection of @:generic classes with constructor constraints
  • all : fixed variable initialization check issue in loop condition
  • all : fixed pattern matching on @:enum abstracts via field access (#4084)
  • all : fixed missing implicit casts in Map literals (#4100)
  • all : fixed various minor issues in haxe.xml.Parser
  • all : fixed class path issue when HAXE_STD_PATH is set (#4163)
  • js : fixed DCE issue related to printing enums (#4197)
  • js : fixed various issues with the new Bytes implementation
  • php : fixed EOF handling in FileInput.readByte (#4082)
  • cs/java : fixed Math.fround implementation (#4177)
  • cs/java : fixed some cases of Std.parseInt failing (#4132)
  • cpp : fixed compilation without -main (#4199)
  • General improvements and optimizations:
  • all : --macro keep no longer causes types to be included for compilation
  • php : support interpolation in php code
  • js : added variable number of arguments support in js.html.* classes
  • js : refined new HTML externs
  • Macro features and changes:
  • macro : [breaking] synced FClosure and FInstance with the compiler update

New in Haxe 3.2.0 RC 2 (Mar 21, 2015)

  • New features:
  • all : added --display mode for toplevel completion
  • all : added --display mode for position and usage information
  • all : allowed @:callable on abstracts to forward calls to their underlying type
  • all : allowed pattern matching on getters
  • all : allowed @:native on class fields
  • all : added static analyzer with constant propagation
  • all : added Haxe-based XML implementation
  • python : added python target
  • flash : flash player 12-14 support
  • js : added @:jsRequire and js.Lib.require
  • js : support haxe.CallStack.exceptionStack
  • cs : added @:bridgeProperties
  • cs : added -D erase_generics
  • cs : added -D dll_import to import haxe-generated dlls
  • java/cs : added sys.db package
  • java/cs : clean unused files in output folder, unless -D keep_old_output is defined
  • java/cs : added -c-arg to add C#/Java compiler arguments
  • cpp : inititial implementation of cppia scripting
  • Bugfixes:
  • all : fixed nullability of abstracts over functions
  • all : fixed some equality checks between UInt and Int
  • all : fixed rare issue with abstract casts
  • all : fixed some internal code which relied on unspecified evaluation order
  • all : fixed exhaustiveness checks involving guards
  • all : fixed issue involving recursively constrained type parameters and @:generic
  • all : fixed type inference issue in map literals
  • all : fixed type inference issue when calling abstract method from within the abstract
  • all : fixed several abstract variance issues
  • all : fixed DCE issues with interface properties
  • all : fixed variance issue with function variables and dynamic methods on interfaces
  • all : fixed pattern matching on empty arrays that are typed as Dynamic
  • all : fixed various @:generic issues
  • all : fixed default cases on @:enum abstract being omitted
  • all : fixed various expression positions
  • all : disallowed break/continue in closures in loops
  • all : disallowed inline functions in value places
  • all : fixed parsing of cast followed by parentheses
  • all : fixed resource naming in case of invalid file system characters
  • all : fixed issue with inlined array declarations with field access
  • cpp : fixed issue with the side-effect handler
  • cpp : fixed issue with NativeArray in --no-inline mode
  • php : fixed issue with invalid references for closures in for-loops
  • php : fixed Reflect.compare and string comparison for numeric strings
  • cs/java : fixed various issues with -java-lib and -net-lib.
  • cs/java : added @:libType to skip checking on -java-lib / -net-lib types
  • cs/java : compilation server now works with C#/Java [experimental support]
  • cs : fixed Type.enumIndex / switch on C# native enums
  • cs : fixed reflection on COM types
  • java : fixed sys.net.Socket server implementation
  • spod : various fixes - working now on cpp, java, neko, php and c#
  • cpp : improved boot order, with enums constants first
  • General improvements and optimizations:
  • all : disallowed using super in value positions
  • all : check exhaustiveness of explicit Null types
  • all : resolve unqualified identifiers to @:enum abstract constructors
  • all : determine @:generic type parameters from constructor call if possible
  • all : properly disallowed field redefinition in extending interface
  • all : properly disallowed leading zeroes for Int and Float literals
  • all : allowed variance on interface variables
  • all : allowed pattern matching on arrays if they are typed as Dynamic
  • all : allowed pattern matching on fields of parent classes
  • all : -D doc-gen no longer implies -dce no
  • all : allowed matching against null on any enum instance
  • flash/js: optimized haxe.ds.StringMap
  • neko : create output directory if it does not exist
  • js : inline Math methods and fields
  • cs/java : optimized Reflect.fields on dynamic structures
  • cs/java : haxe will now clear output directory of old files (use -D keep-old-output to keep them)
  • cs : optimized field lookup structure
  • cs : optimized casting of parametrized types
  • cs : beautify c# code output
  • cs : added cs.Flags to manipulate C# enums that can be also flags
  • xml : improved documentation generation and fixed missing entity escaping
  • cpp : property access via Dynamic variables now requires property to be declared with @:nativeProperty
  • cpp : allow injection of code from relative paths using @:sourceFile and @:cppInclude
  • cpp : stronger typing of native functions via cpp.Function + cpp.Callable
  • cpp : moved 'Class' implementation to hx namespace to improve objective C interaction
  • cpp : added file_extension define to change the output filename extension (eg, ".mm")
  • cpp : added pre-calculated hashes to string constants to allow faster lookups
  • cpp : map implementation allows strongly typed interactions in some cases (avoids boxing)
  • cpp : added native WeakMap implementation
  • cpp : put each resource into own cpp file to allow more data/smaller files
  • Standard Library:
  • all : added typed arrays to haxe.io package
  • all : added haxe.ds.Either
  • all : added haxe.extern.Rest type for representing "rest" arguments in extern method signatures
  • all : added haxe.extern.EitherType abstract type for dealing with externs for dynamic targets
  • all : added haxe.DynamicAccess type for working with dynamic anonymous structures using a Map-like interface
  • all : [breaking] changed haxe.ds.Vector.get to return T instead of Null
  • all : added haxe.macro.Compiler.addGlobalMetadata
  • all : changed haxe.Int64 to be an abstract type instead of a class
  • js : updated HTML externs
  • Macro features and changes:
  • macro : added Context.getLocalTVars
  • macro : added TypedExprTools.iter
  • macro : added Context.getCallArguments
  • macro : changed @:genericBuild macros to prefer ComplexType returns
  • macro : [breaking] extended TAnonymous structures now have AExtend status instead of AClosed
  • macro : added Context.getDefines
  • macro : fixed file_seek from end (position was inversed)
  • macro : added Context.storeTypedExpr
  • macro : allowed type name reification
  • Deprecations:
  • all : deprecated structurally extending classes and interfaces
  • sys : Sys.command shell special chars (&|#;*?(){}$) are now properly escaped
  • java/cs : Lib.nativeType is now renamed to Lib.getNativeType
  • The Flash 8 target has been removed

New in Haxe 3.2.0 RC 1 (Mar 16, 2015)

  • New features:
  • all : added --display mode for toplevel completion
  • all : added --display mode for position and usage information
  • all : allowed @:callable on abstracts to forward calls to their underlying type
  • all : allowed pattern matching on getters
  • all : allowed @:native on class fields
  • all : added static analyzer with constant propagation
  • all : added Haxe-based XML implementation
  • python : added python target
  • flash : flash player 12-14 support
  • js : added @:jsRequire and js.Lib.require
  • cs : added @:bridgeProperties
  • cs : added -D erase_generics
  • cs : added -D dll_import to import haxe-generated dlls
  • java/cs : added sys.db package
  • java/cs : clean unused files in output folder, unless -D keep_old_output is defined
  • java/cs : added -c-arg to add C#/Java compiler arguments
  • cpp : inititial implementation of cppia scripting
  • Bugfixes:
  • all : fixed nullability of abstracts over functions
  • all : fixed some equality checks between UInt and Int
  • all : fixed rare issue with abstract casts
  • all : fixed some internal code which relied on unspecified evaluation order
  • all : fixed exhaustiveness checks involving guards
  • all : fixed issue involving recursively constrained type parameters and @:generic
  • all : fixed type inference issue in map literals
  • all : fixed type inference issue when calling abstract method from within the abstract
  • all : fixed several abstract variance issues
  • all : fixed DCE issues with interface properties
  • all : fixed variance issue with function variables and dynamic methods on interfaces
  • all : fixed pattern matching on empty arrays that are typed as Dynamic
  • all : fixed various @:generic issues
  • all : fixed default cases on @:enum abstract being omitted
  • all : fixed various expression positions
  • all : disallowed break/continue in closures in loops
  • all : disallowed inline functions in value places
  • all : fixed parsing of cast followed by parentheses
  • all : fixed resource naming in case of invalid file system characters
  • all : fixed issue with inlined array declarations with field access
  • cpp : fixed issue with the side-effect handler
  • cpp : fixed issue with NativeArray in --no-inline mode
  • php : fixed issue with invalid references for closures in for-loops
  • php : fixed Reflect.compare and string comparison for numeric strings
  • cs/java : fixed various issues with -java-lib and -net-lib.
  • cs/java : added @:libType to skip checking on -java-lib / -net-lib types
  • cs/java : compilation server now works with C#/Java [experimental support]
  • cs : fixed Type.enumIndex / switch on C# native enums
  • cs : fixed reflection on COM types
  • java : fixed sys.net.Socket server implementation
  • spod : various fixes - working now on cpp, java, neko, php and c#
  • cpp : improved boot order, with enums constants first
  • General improvements and optimizations:
  • all : disallowed using super in value positions
  • all : check exhaustiveness of explicit Null types
  • all : resolve unqualified identifiers to @:enum abstract constructors
  • all : determine @:generic type parameters from constructor call if possible
  • all : properly disallowed field redefinition in extending interface
  • all : properly disallowed leading zeroes for Int and Float literals
  • all : allowed variance on interface variables
  • all : allowed pattern matching on arrays if they are typed as Dynamic
  • all : allowed pattern matching on fields of parent classes
  • all : -D doc-gen no longer implies -dce no
  • all : allowed matching against null on any enum instance
  • flash/js: optimized haxe.ds.StringMap
  • neko : create output directory if it does not exist
  • js : inline Math methods and fields
  • cs/java : optimized Reflect.fields on dynamic structures
  • cs/java : haxe will now clear output directory of old files (use -D keep-old-output to keep them)
  • cs : optimized field lookup structure
  • cs : optimized casting of parametrized types
  • cs : beautify c# code output
  • cs : added cs.Flags to manipulate C# enums that can be also flags
  • xml : improved documentation generation and fixed missing entity escaping
  • cpp : property access via Dynamic variables now requires property to be declared with @:nativeProperty
  • cpp : allow injection of code from relative paths using @:sourceFile and @:cppInclude
  • cpp : stronger typing of native functions via cpp.Function + cpp.Callable
  • cpp : moved 'Class' implementation to hx namespace to improve objective C interaction
  • cpp : added file_extension define to change the output filename extension (eg, ".mm")
  • cpp : added pre-calculated hashes to string constants to allow faster lookups
  • cpp : map implementation allows strongly typed interactions in some cases (avoids boxing)
  • cpp : added native WeakMap implementation
  • cpp : put each resource into own cpp file to allow more data/smaller files
  • Standard Library:
  • all : added typed arrays to haxe.io package
  • all : added haxe.ds.Either
  • all : added haxe.extern.Rest type for representing "rest" arguments in extern method signatures
  • all : added haxe.extern.EitherType abstract type for dealing with externs for dynamic targets
  • all : added haxe.DynamicAccess type for working with dynamic anonymous structures using a Map-like interface
  • all : [breaking] changed haxe.ds.Vector.get to return T instead of Null
  • all : added haxe.macro.Compiler.addGlobalMetadata
  • all : changed haxe.Int64 to be an abstract type instead of a class
  • js : updated HTML externs
  • Macro features and changes:
  • macro : added Context.getLocalTVars
  • macro : added TypedExprTools.iter
  • macro : added Context.getCallArguments
  • macro : changed @:genericBuild macros to prefer ComplexType returns
  • macro : [breaking] extended TAnonymous structures now have AExtend status instead of AClosed
  • macro : added Context.getDefines
  • macro : fixed file_seek from end (position was inversed)
  • macro : added Context.storeTypedExpr
  • macro : allowed type name reification
  • Deprecations:
  • all : deprecated structurally extending classes and interfaces
  • sys : Sys.command shell special chars (&|#;*?(){}$) are now properly escaped
  • java/cs : Lib.nativeType is now renamed to Lib.getNativeType

New in Haxe 3.0.0 (May 28, 2013)

  • all : added haxe.ds.BalancedTree
  • all : added haxe.ds.EnumValueMap
  • all : allow enum constructors as keys to Map
  • all : haxe.ds.ObjectMap is now correctly constrained on all targets
  • all : preliminary support of -D display-mode=usage|position|metadata
  • all : improved pattern matcher error messages
  • all : allow inline constructors
  • all : allow abstract member macros (not for @:op, @:arrayAccess, @:from, @:to)
  • all : allow abstract type parameter variance
  • all : do not generate hidden null on if without else
  • macro : made abstract structure available

New in Haxe 2.10 (Jun 25, 2012)

  • all : fixed List and Null for first, last, pop
  • js : added js.Lib.debug()
  • flash : fixed Xml.parent() when no parent
  • flash : fixed haxe.io.Bytes.blit when len=0
  • js/php/flash8 : fixed haxe.Int32.mul overflow on 52 bits
  • js : fixed haxe.Utf8 usage (static 'length' issue)
  • all : does not allow overriding var/prop
  • flash : removed wrapping for Xml nodes, use instead specific compare when comparing two typed nodes
  • js : use new haxe.xml.Parser (faster, not based on Regexp)
  • flash : fixed completion issue with for( x in Vector )
  • all : optimized Std.int(123) and Std.int(123.45)
  • flash : bugfix for @:bitmap with 24-bits PNG (flash decode wrong colors)
  • as3 : fixed EnumValue becomes Object
  • js : removed js.Lib.isIE/isOpera (not complete, use js.JQuery.browser instead)
  • all : function parameters are nullable if they are declared with '?'
  • all : added support for finding common base types of multiple types (unify_min) for array, switch, if
  • php : do not implement duplicate interfaces
  • haxelib : added git support through haxelib git
  • all : allow derived classes to widen method visibility
  • macro : added haxe.macro.Context.getLocalMethod
  • macro : improved support of "using" macro functions
  • php : optimized Xml implementation
  • php : fixed Reflect.get/setProperty not working on PHP < 5.3
  • all : support for callback(f, _, x)
  • all : allow private access between classes that have a common base class
  • all : added Output.writeFloat/Double and Input.readFloat/Double
  • all : support for var:{x:Float} = { x = 1 } constant structure subtyping
  • all : allow contravariant function arguments and covariant function returns in overrides
  • macro : support for final Array argument as rest argument
  • macro : use top-down inference on macro calls
  • all : made "using" imply "import"
  • all : made String concat more consistent across platforms (add Std.string wrappers)
  • all : allow direct member variable/property and static property initialization
  • js : greatly reduced amount of generated code by using smarter DCE
  • php : made modulo operations more consistent
  • all : allow local functions to have both type parameters and be inlined
  • all : functions type parameters can be constraint (will be checked at end of compilation)
  • macro : use NekoVM runtime for regexps, process and xml parsing
  • flash : allow @:getter/@:setter in interfaces
  • flash : added support for "arguments" in methods
  • all : not used enums and inline var/methods are now removed by DCE
  • all : allow @:overload to use type parameters and not-absolute type paths
  • all : ensure that Std.string of arrays and enums are now consistent across platforms
  • all : allow to inline functions containing other functions
  • xml : added metadata output to xml generator
  • macro : added macro reification

New in Haxe 2.09 (May 31, 2012)

  • all : optimized const == const and const != const (with different const types)
  • all : add Type.allEnums(e)
  • all : big improvements with completion speed and fixed many issues
  • flash9 : fixed -D swfprotected with swc output
  • neko : added ~ implementation
  • js : upgraded jquery version, more api overloads
  • sys : added "in" operator for spod macros, added relation access in expressions
  • macro : added ECheckType
  • macro : added TLazy for not-yet-typed class fields
  • js/php/neko : added haxe.web.Request
  • all : added Std.format
  • js : trace() output fallback on console.log if no id="haxe:trace"
  • all : ensure that Std.is(2.0,Int) returns true on all platforms
  • js : replaced $closure by function.$bind + changes in output format
  • all : allowed @:extern on static methods (no generate + no closure + force inlining)
  • all : added documentation in --display infos + display overloads in completion
  • js : removed --js-namespace, added $hxClasses
  • flash : output traces to native trace() when using -D fdb or -D nativeTrace
  • all : allowed abitrary string fields in anonymous objects
  • all : allowed optional structure fields (for constant structs)
  • all : allowed optional args in functions types (?Int -> Void)
  • all : added Reflect.getProperty/setProperty (except flash8)
  • all : added --wait and --cwd and --connect (parsed files and module caching)
  • all : fixed completion in macros calls arguments
  • all : fixed DCE removing empty but still used interfaces/superclasses
  • all : added haxe.Utf8 (crossplatform)
  • neko : Reflect now uses $fasthash (require neko 1.8.2)
  • all : allow \uXXXX in regexp (although not supported everywhere)
  • js : make difference between values and statements expressions in JSGenApi
  • js : added source mapping with -debug (replace previous stack emulation)
  • flash : added @:file("a.dat") class File extends flash.utils.ByteArray
  • flash : added @:sound("file.wav|mp3") class S extends flash.media.Sound
  • js : added --js-modern for wrapping output in a closure and ES5 strict mode
  • all : null, true and false are now keywords
  • all : neko.io.Path, cpp.io.Path and php.io.Path are now haxe.io.Path
  • neko, cpp, php : added Sys class, sys.io and sys.net packages and "sys" define
  • all : allow to access root package with std prefix (std.Type for example)
  • all : added haxe.EnumFlags
  • sys : io.File.getChar/stdin/stdout/stderr are now in Sys class
  • cpp : Reflect.getField and Reflect.setField no longer call property functions. Use Reflect.getProperty and Refelect.setProperty instead.
  • cpp : Default arguments now use Null for performance increase and interface compatibility
  • cpp : Added metadata options for injecting native cpp code into headers, classes and functions
  • php : added php.Lib.mail