Releases: HaxeFoundation/haxe
Releases · HaxeFoundation/haxe
3.4.1
New features:
- php7 : added source maps generation with
-D source_map
flag.
General improvements and optimizations:
- cpp : added cpp.Star and cpp.Struct to help with extern typing
- lua : cleaned up various parts of the standard library
Bugfixes:
- all : fixed compilation server issue with two identical @:native paths on extern abstracts (#5993)
- all : fixed invalid inling in a specific case (#6067)
- all : fixed various display related issues
- all : fixed inline super() calls missing field initializations (#6097)
- all : consider UNC paths to be absolute in haxe.io.Path.isAbsolute (#6061)
- cpp : improved typing of some Function/Callable-related types
- cpp : fixed problem with line numbers when debugging
- hl : various fixes and improvements
- php : fixed FileSystem.stat() for directories on Windows (#6057)
- php/php7 : fixed invalid result of Web.getPostData() (#6033)
- php7 : fixed invalid access to length of string in some cases (#6055)
- php7 : fixed infinite recursion on MysqlConnection.close() (#6056)
3.4.0
General improvements and optimizations:
- all : support completion for static extensions (#5766)
- all : removed neko dependency for macros, use PCRE instead
- all : disabled analyzer optimizations by default, re-enable with -D analyzer-optimize
- php7 : generate native
$v instanceof MyType
instead ofStd.is(v, MyType)
where possible for better performance - php7 : added @:phpNoConstructor meta for externs which do not have native php constructors and yet can be constructed
- php7 : greatly reduced amount of generated tmp vars
- php7 :
Array
performance improvements - hl : made various improvements
Bugfixes:
- all : fixed
using
picking up non-static abstract functions (#5888) - all : fixed issue with side-effect detection when optimizing (#5911)
- all : fixed issue with zlib bindings causing zlib_deflate errors (#5941)
- php7 : Allow user-defined modules in
php
package (#5921) - php7 : Dereference some of
php.Syntax
methods if required (#5923) - php : fixed assigning a method of dynamic value to a variable (#5469)
- php : fixed missing initialization of dynamic methods in classes with empty constructors (#4723)
3.4.0-rc2
New features:
- js : added API documentation to HTML externs (#5868)
- php : added php7 target, enabled with
-D php7
Bugfixes:
- all : fixed top-down inference infinite recursion issue (#5848)
- all : fixed regression in
Compiler.include
(#5847) - all : fixed Not_found exception related to try/catch (#5851)
- all : fixed metadata completion showing up in trace arguments (#5775)
- all : fixed problem with useless pattern detection (#5873)
- all : fixed issue with toString handling in trace arguments (#5858)
- all : fixed inline constructor scoping (#5855)
- cpp : fixed issue with cpp.Pointer variables being eliminated (#5850)
- js : added Notification API to HTML externs (#5852)
- js : fixed several options structures in HTML externs (#5849)
- php/cs :
FileSystem.deleteFile()
and FileSystem.deleteDirectory() now throw on non-existent path (#5742) - php/lua : fixed field access on
null
(#4988) - php : fixed static field access on a
Class<T>
stored to a field (#5383) - php : fixed invalid detection of
NativeArray
byStd.is()
(#5565) - php : fixed
stdin()
,stdout()
,stderr()
ofSys
to use predefined constants for corresponding channels (#5733) - php : fixed
Std.parseInt()
on hexstrings for PHP7+ (#5521) - php : fixed typed cast in assign operations (#5135)
- php : fixed exception thrown by
Reflect.fields(o)
wheno
isClass<T>
(#5608) - php : fixed json encoding of empty objects (#5015)
- php : fixed checking floats for equality (#4260)
- php : throw if invalid json string supplied to
Json.parse()
(#4592) - php : fixed ssl connections (#4581)
- php : fixed writing bytes containing zero byte to MySQL & SQLite (#4489)
- php : fixed
call()()
cases for PHP5 (#5569)
3.4.0-rc1
New features:
- all : support metadata completion
- all : support type-hint completion
- all : added @Signature display mode (#4758)
- all : finalized HashLink (HL) target
Bugfixes:
- all : fixed various optimization issues
- all : fixed various issues with side-effect detection
- all : fixed performance drain in the DCE implementation (#5716)
- all : fixed issue with assignments when inlining constructor (#5340)
- all : fixed major inlining issue when using compilation server (#5320)
- all : fixed pattern matching evaluation order issue (#5274)
- cpp : fixed various minor code generation issues
- js : fixed issue regarding iterating over abstracts (#5385)
- python : fixed evaluation order issue for array writing (#5366)
General improvements and optimizations:
- all : greatly improved support for display mode in general
- all : made --times output look much nicer
- all : remove calls to functions that have no side-effect
- all : hid private property accessors from completion (#5678)
- js : updated jQuery extern (js.jquery.*) for jQuery 1.12.4 / 3.1.0 support.
- js : jQuery extern (js.jquery.*) now includes deprecated fields marked with @:deprecated.
- js : no longer rewrite
o["s"]
too.s
(#5724) - cpp : greatly improved ObjC output and integration options
- lua : greatly improved code output quality
Standard Library:
3.3.0-rc1
New features:
- all : support @:resolve on abstracts (#3753)
- all : support extern abstracts and extern @:enum abstracts (#4862)
- all : support completion on { if the expected type is a structure (#3907)
- all : support (expr is Type) with mandatory parentheses (#2976)
- all : allowed passing package dot-paths on command line (#4227)
- all : support import.hx modules that define per-directory import/using directives (#1138)
- all : support parsing of postfix ! operator (can be used by abstract operator overloading and macros) (#4284)
- all : support parsing of ||= and &&= operators (can be used by abstract operator overloading and macros) (#4427)
- all : support @:structInit classes (#4526)
- all : reworked static analyzer and enabled it by default
- flash : update flash externs to version 21
- hl : added HL target (interpreter and C output)
- lua: added lua target
- js : introduced new jQuery extern (js.jquery.*) for jQuery 1.12.4 / 2.2.4 support. (#4377)
- js : introduced new SWFObject extern (js.swfobject.SWFObject) for SWFObject 2.3.20130521 (#4451)
- js : added js.Lib.rethrow (#4551)
- cs/java : added -D fast_cast as an experimental feature to cleanup casts
Bugfixes:
- all : properly disallowed assigning methods to structures with read-accessors (#3975)
- all : fixed a bug related to abstract + Int/Float and implicit casts (#4122)
- all : disallowed duplicate type parameter names (#4293)
- all : made UInt's >>> behave like >> (#2736)
- all : fixed various type loading issues
- all : fixed code generation problems with
inline
(#1827) - php/as3 : support run-time metadata on interfaces (#2042)
- php : fixed argument passing to closures (#2587)
- neko/cpp : fixed various sys.Filesystem issues with Windows drive paths (#3266)
- as3 : fixed problem with covariant return types (#4222)
- as3 : fixed rare problem with static initialization order (#3563)
- python : fixed various reflection problems
General improvements and optimizations:
- all : added support for determining minimal types in Map literals (#4196)
- all : allowed @:native on abstracts to set the name of the implementation class (#4158)
- all : allowed creating closures on abstract inline methods (#4165)
- all : type parameter declarations can now have metadata (#3836)
- all : optimize Math.ceil/floor on constant arguments (#4223)
- all : allowed extern classes to have field names being used for both static and instance (#4376)
- all : added haxe.Constraints.Constructible (#4761)
- all : rewrote pattern matcher to improve output in many cases (#4940)
- python : use spaces instead of tabs to indent the output (#4299)
- cpp : reworked backend to improve overall code output quality and fix various issues
- swf : added scene-tag to allow creating accessible SWF files
Standard Library:
- all : added Lambda.flatten and Lambda.flatMap (#3553)
- all : added haxe.Constraints.Constructible (#4761)
- sys : proper quoting/escaping (can be opt-out) for Sys.command and sys.io.Process (#3603)
- js : added position parameter to haxe.macro.Compiler.includeFile
- js : removed -D embed-js (#4074)
- js : updated HTML externs
Macro features and changes:
3.2.1
Bugfixes:
- cs/java : fixed
-dce no
issues - cs/java : fixed how KExpr type parameters are generated
- cs : fixed enum creation by reflection problem
- cpp : do not rely in reflection to make interfaces work for non-first interface parents
- cpp : fixed setting of static variables via reflection when class has no member variables* *
- cpp : make sure StringMap's h field is kept if we use StringMap*
- js : Avoid the use of
eval
/Function
to get the top-level defined type/var to not break ContentSecurityPolicy
3.2.0
New features:
- all : added @:noPrivateAccess to re-enable access restrictions within @:privateAccess
- cpp : some support for @:nativeGen metadata
Bugfixes:
- 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 updates
3.2.0-rc2
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
3.2.0-rc1
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
3.1.3
Bugfixes:
- all : fixed handling of abstract variance
- flash : ensure correct endianess in haxe.io.BytesBuffer
- cpp : fixed issue involving class paths with spaces
- php : fixed >>>
- macro : fixed haxe.macro.Compiler.keep
General improvements and optimizations:
- all : give @:deprecated warnings by default, allow -D no-deprecation-warnings
- cpp : optimized Vector implementation
Standard Library:
- all : renamed Bytes.readDouble/Float to getDouble/Float to avoid inheritance issues
- all : deprecated Bytes.readString in favor of getString
- all : added pretty-printing to haxe.format.JsonPrinter (and haxe.Json)