Skip to content

Releases: HaxeFoundation/haxe

3.1.2

29 Mar 22:38
Compare
Choose a tag to compare

Bugfixes:

  • all : disallowed spaces between >>, >>>, >>= and >>>=
  • all : fix branching issue when switching on Dynamic values with only one case
  • all : added missing abstract cast call when checking for equality
  • all : fixed member fields initializations on parent classes that have no constructor
  • all : fixed toString usage of abstracts which are argument to Std.string
  • flash : avoid rare FP 12 PPAPI JIT crash
  • cpp : fixed bug in side-effect handler which caused incorrect behavior of while loops
  • js : fixed missing print function for enum values with DCE
  • macro : make sure member field initializations are respected

General improvements and optimizations:

  • all : cached file exist checks to speed up compilations with a lot of class paths
  • all : improved completion related to super class fields
  • all : allowed iterating on abstract which have get_length and @:arrayAccess fields
  • js : improved Type.allEnums implementation to avoid issues with obfuscation

Standard Library:

  • all : added haxe.io.Bytes.readDouble/Float
  • all : added haxe.io.BytesBuffer.addString/Float/Double

3.1.1

15 Mar 13:09
Compare
Choose a tag to compare

New features:

  • all : added -D deprecation-warnings
  • all : allowed \u escape sequences in strings
  • cs : implemented haxe.CallStack

Bugfixes:

  • all : fixed wrong handling of "" and null in haxe.io.Path.join
  • all : fixed invalid cast-to-self generation on some abstracts
  • all : removed @:to Dynamic from UInt to avoid issues in the Map selection algorithm
  • all : fixed various issues with UInt
  • all : fixed position setter in haxe.io.BytesInput
  • all : fixed various issues with member/static extension macros
  • flash : fixed invalid override involving single-constraint type parameters
  • flash8 : fixed various bugs
  • js : fixed a problem with Std.string(null) being optimized incorrectly
  • js : fixed custom generators
  • cpp : dealt with string literals that are too long for MSVC
  • cs : fixed various issues with -net-lib

3.1.0

04 Mar 22:08
Compare
Choose a tag to compare

New features:

  • all : allowed null-patterns in pattern matching
  • all : allowed extractors in pattern matching using => syntax
  • all : allowed extending generic type parameters
  • all : allowed (expr : type) syntax (ECheckType)
  • all : allowed @:enum and @:forward on abstracts
  • all : allowed using abstracts as static extension
  • all : allowed Class.new
  • all : added EnumValue.match
  • all : allow multiple structural extension using { > T1, > T2, fields }
  • all : inline array and structure declarations if possible
  • cs : added -net-lib
  • cs : support for native delegates
  • cs : support for attributes
  • cs : support for events

Standard Library:

  • all : support abstract types in haxe.rtti.XmlParser
  • all : added Std.instance
  • all : added length field to BytesBuffer, BytesOutput, BytesInput and StringBuf
  • all : added UInt for all targets
  • all : added Array.indexOf and Array.lastIndexOf
  • all : added haxe.xml.Printer
  • all : added haxe.Int32 as abstract type
  • all : added haxe.format.JsonParser/Printer

General improvements and optimizations:

  • all : optimized pattern matching output
  • all : allowed recursive type parameter constraints
  • all : improved support of custom @:coreType abstracts
  • all : evaluate conditional expressions in @:require
  • all : improved inline constructors by detecting more cases where it can be applied
  • js : improved inlining
  • js : always use JSON extern (compile with -D old-browser to disable)
  • js : added -D js-flatten
  • js : added -D js-es5
  • cpp : improved side-effect detection

Bugfixes:

  • all : inlining a parameter which has side effects will not remove it even if not used
  • all : implemented constraints check on enum and enum field type parameters
  • all : fixed memory leak in compilation server and optimized caching in general
  • all : fixed issue with invalid lowercase class name in Windows completion
  • flash : fixed font embedding with UTF8 chars
  • flash : give error if non-nullable basic types are skipped in a call
  • flash : give error if assigned parent class field values would be overwritten by super()

Macro features and changes:

  • macro : add Context.onAfterGenerate
  • macro : add Context.typeExpr
  • macro : add Context.getExpectedType
  • macro : add ExprTools.getValue
  • macro : allowed $v{(c:Float|Int|String)}
  • macro : resolve error line number in external files
  • macro : rewrote macros used as static extension
  • macro : exposed typed AST
  • macro : added @:genericBuild
  • macro : [breaking] first argument of ComplexType.TExtend is now Array<TypePath> instead of TypePath
  • macro : improved expression printing

3.0.1

26 Sep 07:21
Compare
Choose a tag to compare
  • all : minor DCE bug fix

3.0.0

26 Sep 07:22
Compare
Choose a tag to compare
  • 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

3.0.0-rc2

26 Sep 07:32
Compare
Choose a tag to compare
3.0.0-rc2 Pre-release
Pre-release
  • all : improved abstract support
  • all : renamed HAXE_LIBRARY_PATH to HAXE_STD_PATH
  • all : added inlinable constructors
  • all : renamed haxe.ds.FastCell to GenericCell
  • all : fixed >= operator in #if conditionals
  • all : improved completion support for Unknown results
  • all : allowed [] access for Map
  • all : added haxe.ds.WeakMap (not yet supported on all platforms)
  • all : all trace parameters are now printed by default
  • all : added --help-metas
  • all : improved completion
  • all : improved pattern matching variable capture and GADT support
  • js : cached $bind results (unique closure creation per instance)
  • js : removed --js-modern (now as default)
  • cpp : added socket.setFastSend
  • flash : update player 11.7 api
  • flash : improved @:font, @:sound and @:bitmap support
  • neko/java/cs : improved Array performances when growing with []
  • java : added -java-lib support
  • java : added sys.net package implementation (alpha)
  • java : complete java std library through hxjava haxelib
  • java/cs : added support for overloaded function declarations
  • java/cs : overload selection algorithm
  • cs : operator overloading is now accessible through Haxe
  • cs : source mapping; can be disabled with -D real_position
  • as3 : fixed rare syntax ambiguity
  • php : removed initialization of some inline fields
  • macro : fixed several issues with 'using' a macro function
  • macro : improved expression printing

3.0.0-rc1

26 Sep 07:32
Compare
Choose a tag to compare
3.0.0-rc1 Pre-release
Pre-release
v3-00-rc1

2.10.0

26 Sep 07:23
Compare
Choose a tag to compare
  • java/cs : added two new targets (beta)
  • all : fixed List and Null<T> 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<Expr> 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 <expr> and macro : <type> reification
  • all : renamed type(e) to $type(e)
  • as3 : support for metadata and resources, and other fixes

2.9.0

26 Sep 07:29
Compare
Choose a tag to compare
  • 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<T> 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
  • (hotfix) fixed bug in completion and disabled profiling on Linux
  • (hotfix) fixed $ssize when doing new String(v) in neko
  • (hotfix) fixed bug with properties in interfaces for Flash & PHP

2.8.0

26 Sep 07:29
Compare
Choose a tag to compare
  • js : added js.JQuery
  • all : added @:overload
  • js : upgraded js.SWFObject from 1.4.4 inlined to 1.5 embedded
  • js : code generator beautify
  • all : ensure that modifying returned Type.getEnumConstructs array does not affect enum
  • all : allow macro typed parameters (other than Expr)
  • flash : added flash11 apis
  • neko : added support for https to haxe.Http (using hxssl library)
  • all : added haxe.Int64
  • all : added haxe.Int32 isNeg,isZero,ucompare, fixed overflows for js/flash8/php
  • all : bugfix when optimizing inlined immediate function call
  • all : fixed "using" on macro function
  • all : allowed member macros functions (called as static)
  • neko : allowed serialization of haxe.Int32 (as Int)
  • all : fixed invalid optimization of two constant numbers comparison
  • flash8 : bugfix Std.parseInt with some hex values
  • flash9 : added flash.utils.RegExp
  • all : changed @:build behavior, now takes/returns a var with anonymous fields
  • all : added @:native support for enums
  • neko : changed the result of array-assign expression (was null)
  • flash9 : no longer auto create enums from SWF classes
  • (need explicit "enum" type patch)
  • all : optimized variable tracking/renaming
  • all : optimized macro engine (speed x2)
  • all : added -D macrotimes support
  • flash9 : store resources in bytes tag instead of bytecode
  • all : allow $ prefixed identifiers (for macros usage only)
  • all : allow to access modules subtype statics with pack.Mod.Type.value
  • and fixed identifier resolution order
  • flash9 : added @:bitmap("file") for simple embedding
  • all : added haxe.web.Dispatch
  • js : added js.Storage
  • all : allow this + member variables access in local functions
  • added untyped this support and transition error
  • all : added haxe.macro.MacroType
  • neko : neko.Lib.serialize/unserialize now returns bytes
  • neko : added sys.db package (crossplatform with -D spod_macro support)
  • spod_macro now uses wrappers for Bytes (require neko 1.8.2)
  • php : added --php-prefix for prefixing generated files and class names
  • all : added type_expr_with_type enum support
  • php/js : fixed adding 'null' to StringBuf
  • all : added haxe.macro.Context.defineType