Releases: HaxeFoundation/haxe
Releases · HaxeFoundation/haxe
3.1.2
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
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
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 nowArray<TypePath>
instead ofTypePath
- macro : improved expression printing
3.0.1
3.0.0
- 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
- 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
2.10.0
- 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
whenlen=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)
andStd.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>
andmacro : <type>
reification - all : renamed
type(e)
to$type(e)
- as3 : support for metadata and resources, and other fixes
2.9.0
- all : optimized
const == const
andconst != 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
- 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