Skip to content

Releases: HaxeFoundation/haxe

3.4.1

17 Mar 08:19
Compare
Choose a tag to compare

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

31 Jan 10:00
Compare
Choose a tag to compare

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 of Std.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

24 Dec 20:48
Compare
Choose a tag to compare
3.4.0-rc2 Pre-release
Pre-release

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 by Std.is() (#5565)
  • php : fixed stdin(), stdout(), stderr() of Sys 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) when o is Class<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

30 Nov 09:47
Compare
Choose a tag to compare
3.4.0-rc1 Pre-release
Pre-release

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"] to o.s (#5724)
  • cpp : greatly improved ObjC output and integration options
  • lua : greatly improved code output quality

Standard Library:

  • all : added Any type (#5500)
  • all : added haxe.extern.AsVar
  • all : added haxe.macro.CompilationServer (experimental)
  • all : fixed haxe.Template.resolve (#5301)

3.3.0-rc1

26 May 21:09
Compare
Choose a tag to compare
3.3.0-rc1 Pre-release
Pre-release

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:

  • macro : added overloads field to ClassField (#3460)
  • macro : added Context.getLocalImports (#3560)
  • macro : added Context.onAfterTyping (#4714)
  • macro : added Context.resolveType

3.2.1

26 Sep 07:19
Compare
Choose a tag to compare

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

12 May 08:57
Compare
Choose a tag to compare

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

20 Mar 06:52
Compare
Choose a tag to compare
3.2.0-rc2 Pre-release
Pre-release

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

16 Mar 09:09
Compare
Choose a tag to compare
3.2.0-rc1 Pre-release
Pre-release

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

13 Apr 18:39
Compare
Choose a tag to compare

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)