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