Releases: HaxeFoundation/haxe
Releases · HaxeFoundation/haxe
4.2.2
2021-05-14 4.2.2:
Bugfixes:
- all : fixed piping stdin/stdout in
--cmd
(#4669, #6726) - all : fixed rest args typing for overloaded functions (#10143)
- all : fixed using
var
fields as static extensions (#10144) - all : fixed completion for a type in
expr is Type
(#10167) - all : fixed subtypes in
expr is Module.SubType
expressions (#10174) - all : fixed typing chains of calls with constrained type params (#10198)
- all : fixed mixed constraints of anonymous structures and other types (#10162)
- all : fixed operator overloading for enum abstracts (#10173)
- hl : fixed debugging of
catch
blocks (#10109) - jvm : fixed manifest generation for cases with a lot of jar libraries (#10157)
- js : fixed extending extern classes for es5 (#10192)
- js : fixed checking
this
beforesuper
for es6 (#10193) - eval : fixed null pointer exception in
eval.NativeString.fromString(null)
- eval : fixed multiple locks of
sys.thread.Mutex
from the same thread (#10249)
4.2.1
release 4.2.1
4.2.0
2021-02-09 4.2.0:
New features:
- all : implemented "classic" abstract classes and functions (see haxe-evolution#69) (#9716)
- all : module-level static declarations (#8460)
- all : implemented rest arguments (variadic functions) for all targets with
haxe.Rest
type (#9961) - all : per-thread event loops
sys.thread.Thread.events
(#9868) - all : added
@:inheritDoc
meta to inherit documentation for a type or field from another type or field (#9817) - all : support method overloading for extern methods on all targets (#9793)
- all : constructors forwarding for abstracts with
@:forward.new
(#9735) - all : added
EIs
constructor tohaxe.macro.Expr
(#9689) - all : added variance forwarding with
@:forward.variance
(#9741) - all : treat
Any
asDynamic
in variance unification (#6649) - all : added some common exception types to
haxe.exceptions
package - all : support metadata in var declaration syntax (#9618)
- all : added
StringTools.unsafeCharAt
(#9467) - eval : added libuv bindings under
eval.luv
package (#9903) - eval : added bindings to native
Int64
andUInt64
implementations undereval.integers
package (#9903) - cs : UDP socket implementation (#8498)
- cs : added
cs.Syntax
module (#10051) - jvm : added
-D jvm.dynamic-level
to control the amount of dynamic support code being generated. 0 = none, 1 = field read/write optimization (default), 2 = compile-time method closures - java,jvm : support
--java-lib <directory>
(#9551) - python : threading API implementation (#9754)
General improvements:
- all :
expr is SomeType
doesn't require parentheses anymore (#9672) - all : increased priority of @:using extensions (#9681)
- all : allowed usage of static extensions with super (#10062)
- all : allow @:noDoc on fields too (#9893)
- all : made
Map
abstract transitive (#9877) - all : support
@:native
on enum constructors (#9806) - all : support
@:using
on typedefs (#9749) - all : changed multiline errors format to use "..." as a prefix for subsequent lines (#9651)
- all : improved type inference with constrained monomorphs (#9549)
- all : print no-argument function types as
()->...
instead ofVoid->...
(#8148) - all : allow
function
as package name - all : improved object inlining (#9599)
- display : narrow range for hover on parametrized types (#8073)
- cs : added .NET 5.0 support (#10043)
- cpp : support native constructors on extern classes (#9516)
php:php.Syntax.customArrayDecl
(#9113) - php : added externs for various php functions and classes
- php : optimized anonymous objects instantiation (#7916)
- hl : skip compilation if no module has been changed (#9922)
- lua : use hx-lua-simdjson for Lua json parsing (#9885)
- jvm : less CPU consuming
sys.thread.Lock
implementation
Bugfixes:
- all : fixed Template.resolve when current context is not an object (#9372)
- all :
get
andset
functions ofhaxe.io.Float64Array
actually use 64-bit floats now (#9972) - all : treat empty blocks
{}
as object declarations in array comprehension (fixes #9971) - all :
haxe.format.JsonParser
: preserve Float-typed values when they are written as such in JSON (ie. "5.0" or "0.0") (#9844) - all : fixed priority of forwarded static extensions (#9680)
- all : fixed some inconsistency in variance unification for abstracts (#9743)
- display : fixed completion with platform-specific files (#9423)
- cpp : fixed conversion of
cpp.Int64
to/fromhaxe.Int64
(#10101) - cpp : fixed extending extern classes with
@:nativeGen
classes (#9431) - php : fixed generation with subdirectories in
-D php-front=subdir/index.php
(#10037) - php : fixed local vars with the same names as super global vars (#9924)
- eval : allow full range of 32bit integers in
Std.random
(#9974) - js : fixed
haxe.CallStack.exceptionStack
(#9968) - js : fixed compatibility issue with closure compiler upon unused
catch
vars (#9617) - lua : fixed anonymous object printing issue with null fields on tables
- hl : drop data of terminated threads (#9875)
- macro : fixed
haxe.macro.Context.storeTypedExpr
for enum constructs (#9828) - macro : emit a deprecation warning upon a macro call instead of upon a macro function declaration (#9425)
- macro : fixed uncatchable error from
haxe.macro.Context.getType
(#9449) - jvm : fixed
Type.resolveEnum
for enums in the root package (#9809) - jvm : fixed
Type.resolveEnumName
for enums in the root package (#9759) - cs : fixed cs.Lib.rethrow (#9738)
- nullsafety : respect
@:nullSafety(Off)
on var declarations:var @:nullSafety(Off) v
- nullsafety : respect
@:nullSafety(Off)
in closures in constructors (#9643) - nullsafety : fixed error "Type not found : haxe.macro.Compiler.NullSafetyMode_Impl" (#9483)
4.1.5
2020-12-31 4.1.5
General improvements:
- all : added an argument to
haxe.CallStack.exceptionStack
to return full stack up to the topmost call (#9947) - php : compatibility with PHP 8
Bugfixes:
- all : fixed empty object declarations in array comprehension (#9971)
- jvm : fixed equality checks for
Null<Float>
andNull<Int>
(#9897) - hl : fixed crash if a thread finishes without invoking
sendMessage
/readMessage
(#9920) - php : fixed local vars with certain names (_SERVER, _GET etc) overriding super global values (#9924)
- php : fixed generation with directories in
-D php-front
. For example-D php-front=sub/index.php
(#10037)issues/ - macro : added return type hint to haxe.macro.MacroStringTools.formatString (#9928)
- cs : fixed catching exceptions from static closures (#9957)
- eval : fixed
Std.random(arg)
forarg
values of more than 30 bits (#9974) - js : fixed
haxe.CallStack.exceptionStack
(#9968)
4.1.4
2020-09-11 4.1.4
General improvements:
- all : allowed
Any
as type parameter incatch(e:SomeType<Any>)
(#9641) - all : improved compilation speed for
try..catch
expressions (#9848)
Bugfixes:
- all : fixed
switch
typing error for arrow functions withVoid
return type (#9813) - all : fixed typing of arrow functions with empty blocks as bodies (#9843)
- macro : fixed
haxe.macro.Context.getResources()
(#9838) - php : fixed false detection of
catch
vars in anonymous functions as captured from outer scope - php : fixed return type of extern definition for
fseek
function - cs,java : fixed generation of
@:generic
classes with anonymous functions (#9799) - jvm : fixed sending/reading messages with
sys.thread.Threads
for threads created outside of Haxe (#9863) - jvm : fixed multiplication of
Null<Float>
andInt
(#9870) - flash : fixed loading swc libraries containing
Vector
without a type parameter (#9805) - hl : fixed messages being send to wrong threads with
sendMessage
/readMessage
insys.thread.Thread
(#9875) - cpp : fixed
cpp.Lib.stringReference()
(#8457)
4.1.3
release 4.1.3
4.1.2
2020-06-19 4.1.2
Bugfixes:
- all : added
contains
andkeyValueIterator
methods to haxe.ds.ReadOnlyArray - all : fixed super constructor call when extending externs (#7837, #9501)
- all : fixed compiler crash for "--run" argument without a value (#9513)
- all : fixed local variable name collision in
try..catch
(#9533) - all : fixed memory leak in completion server related to haxe.Exception (#9537)
- display : fixed completion for out-of-bounds argument in a call (#9435)
- display : fixed "find references" through interfaces (#9470)
- display : optimized "find references" (#9504)
- display : optimized "server/invalidate" requests (#9509)
- analyzer : fixed compiler crash upon handling code branches with enums with optional arguments (#9591)
- jvm : added "--java-lib-extern" to use jar files as externs without adding them to the compiled project (#9515)
- macro : fixed type intersection syntax in macro reification (#9404)
- eval : fixed exception message when catching compiler-generated
haxe.macro.Error
asDynamic
(#9600) - lua : fixed lua code generation without
--main
compilation argument (#9489) - php : added an overload signature for
session_set_cookie_params
function (#9507) - js : fixed name collisions for catch variables to avoid closure compiler errors (#9617)
- nullsafety : fixed various scenarios of
if..else
branching (#9474)
4.1.1
2020-22-05 4.1.1
New features:
- jvm : added
--jvm path/to.jar
CLI argument
Bugfixes:
- all : fixed arguments ordering for @:structInit constructors (#9418)
- all : fixed display/references completion server request for static fields (#9440)
- all : fixed "Module not found" error reporting during macro execution in display requests (#9449)
- all : fixed module name completion for target-specific modules like
Mod.js.hx
(#9423) - all : fixed completion for packages named "function" (#7697)
- all : fixed recursive typedefs with optional arguments in
@:overload
functions (#9455) - cpp : fixed StringTools.endsWith() for unicode characters (#8980)
- cpp : fixed broken externs in
cpp
package (#9452) - js/cpp : fixed catch var naming collision (#9413)
- interp : fixed throwing
haxe.macro.Error
outside of a macro context (#9390) - lua : fixed lua.PairTools.ipairsMap method
- php : fixed an edge case in String methods generation (#9464)
4.1.0
2020-05-13: 4.1.0
New features:
- all : added tail recursion elimination (#8908)
- all : added unified exception handling (#9124)
- all : allow
try {} catch(e) {}
as a shortcut fortry {} catch(e:haxe.Exception) {}
(#9269) - eval : added SSL support (#9009)
- jvm : the JVM target is no longer considered experimental
General improvements:
- all : implemented different display support approach (#8962)
- all : improved display services related to reference finding
- all : added go-to-implementation support (#9043)
- all : made various improvements to diagnostics
- all : support completion for map keys (#9133)
- all : improved parser robustness for incomplete syntax (#9148)
- all : disallowed the combination of
@:overload
and inline (#3846) - all : improved renaming of local variables (#9304)
- all : better inlining of for-loops with anonymous iterators (#8848)
- all : remove redundant final
return
inVoid
functions (#6420) - all : remove redundant
continue
in loops (#8952) - all : improved various compilation errors reporting
- all : allowed
(get,default)
property access combination (#6195, #8825) - all : allowed ++ and -- on member properties of abstracts (#8930)
- js : use abstract type name for generating its implementation class (#9006)
- js : improve haxe.ds.StringMap implementation (#8909)
- js : improve interface checking and make it more minifier-friendly (#9178)
- js : generate
let
instead ofvar
when compiler with-D js-es=6
(#9280) - js : optimize
.bind
on constructors (#9227) - jvm : rewrote function handling to me much faster and more portable (#9208)
- jvm : generate interfaces for typedefs for improved performance (#9195)
- jvm : added support for haxe.MainLoop
- jvm : support
@:jvm.synthetic
and use it to hide some generated fields (#9213) - jvm : respect
@:private
and@:protected
- lua : improve error handling behavior when throwing objects/instances
- lua : optimize
haxe.iterators.StringIterator
- php : optimize
Std.isOfType
for String, Bool and Float - php : make Haxe Array implement native interfaces Iterator, IteratorAggregate, Countable (#8821, 9377)
- cs : support
@:assemblyMeta
and@:assemblyStrict
(#8347) - python : added
__contains__
and__getitem__
implementations to generated python code for_hx_AnonObject
, so it is subscribable and behaves like a python dict (#9109)
Standard Library:
- all : negative
startIndex
argument ofString.indexOf
andString.lastIndexOf
is unspecified (#8365) - all : changed Array.iterator() to return instances of haxe.iterators.ArrayIterator (#8987)
- all : added Array.contains (#9179)
- all : added Array.keyValueIterator (#7422)
- all : added haxe.Constraints.NotVoid (#8357)
- all : added Lambda.findIndex() (#9071)
- all : added Lambda.foldi() (#9054)
- all : added array access and key-value iteration support to haxe.ds.HashMap (#9056)
- jvm : added JVM-specific versions of sys.thread.Lock and sys.thread.Thread
- jvm : added JVM-specific version of haxe.ds.StringMap
- java/jvm : use native versions of MD-5, SHA-1 and SHA-256 for
haxe.crypto
modules (#9298) - macro : added haxe.macro.Context.containsDisplayPosition(pos) (#9077)
- nullsafety : treat Strict as a single-threaded mode; added StrictThreaded (#8895)
Deprecations:
- all : deprecated
Std.is
; useStd.isOfType
instead (#2976) - all : added a warning for an uninitialized variable usage captured in a closure (#7447)
- js : deprecated
untyped __js__(code, args)
; usejs.Syntax.code(code, args)
instead - php/neko : deprecated neko.Web and php.Web; will be moved to hx4compat library later (#9153)
Bugfixes:
- all : fixed display support for static imports (#9012)
- all : fixed completion in macro mode picking up the wrong type (#7703)
- all : fixed wonky analyzer transformation related to locals captured in closures (#9305)
- all : allow
return;
in abstract constructors (#7809) - all : fixed static @:op([]) functions (#9347)
- all : fixed
@:optional
handling in the inheritance of@:structInit
classes (#7559) - all : support negative numbers as constant type parameters for
@:generic
types (#9149) - all : fixed false positive compilation server error with empty methods in inheritance (#9029)
- all : fixed default values for manually defined @:structInit constructors (#9177, #9258)
- all : fixed inference of
Void
return type for arrow functions (#9181) - all : fixed inconsistencies in wildcard imports resolution (#9189, #9190)
- all : fix array comprehension for a chain of
if..else if
without finalelse
(#9040) - all : prohibit @:structInit on interfaces (#9017)
- macro : fixed handling
TAnonymous
inhaxe.macro.TypeTools.map
(#9147) - eval : fixed EReg.matchSub handling with negative length (#9333)
- eval : fixed extern classes being generated and causing errors in some cases (#9366)
- eval : fixed StringBuf.addSub unicode handling (#9382)
- jvm : fixed Void being generated with the wrong casing (#8717)
- jvm : fixed debugging-related data being generated in the wrong place
- jvm : fixed switches on string values being too optimistic
- jvm : fixed problems with Std.parseInt and Std.parseFloat
- jvm : made sure type parameter types are boxed
- jvm : fixed dynamic access on
null
yieldingnull
(#8452) - cpp : fixed native compilation if there is a
hx
package in a project (#8543) - cs : fixed
null
to0
conversion in parametrized functions forNull<Int>
params (#7428) - cs : fixed integer division handling (#9232)
- php : fixed closure creation out of fields with
null
value (#9316) - js : fixed interface generation for minification with Google Closure Compiler in advanced mode (#9172)
- js : fixed a crash at startup in IE8 (#9062)
- hl : fixed BLOB handling in SQLite (#9048)
4.0.5
2019-12-17: 4.0.5
Bugfixes:
- java : fix boolean arguments for
Type.createInstance(cls, args)
(#9025) - jvm : fix static overloads (#9034)
- java/cs : fixed
Reflect.makeVarArgs(fn)
for calls offn
without arguments (#9037) - js : fix multiple appearances of the first object added to
ObjectMap
is passed toObjectMap.set(obj, v)
multiple times (#9026) - js : automatically wrap compound expressions with parentheses when passed to
js.Syntax.code()
(#9024) - windows : fix adding neko to PATH env var when running windows installer (#9021)