Skip to content

Releases: HaxeFoundation/haxe

4.2.2

14 May 15:33
Compare
Choose a tag to compare

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 before super 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

26 Feb 10:53
Compare
Choose a tag to compare
release 4.2.1

4.2.0

09 Feb 08:58
Compare
Choose a tag to compare

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 to haxe.macro.Expr (#9689)
  • all : added variance forwarding with @:forward.variance (#9741)
  • all : treat Any as Dynamic 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 and UInt64 implementations under eval.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 of Void->... (#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 and set functions of haxe.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/from haxe.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

31 Dec 08:21
Compare
Choose a tag to compare

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> and Null<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) for arg values of more than 30 bits (#9974)
  • js : fixed haxe.CallStack.exceptionStack (#9968)

4.1.4

11 Sep 12:25
Compare
Choose a tag to compare

2020-09-11 4.1.4

General improvements:

  • all : allowed Any as type parameter in catch(e:SomeType<Any>) (#9641)
  • all : improved compilation speed for try..catch expressions (#9848)

Bugfixes:

  • all : fixed switch typing error for arrow functions with Void 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> and Int (#9870)
  • flash : fixed loading swc libraries containing Vector without a type parameter (#9805)
  • hl : fixed messages being send to wrong threads with sendMessage/readMessage in sys.thread.Thread (#9875)
  • cpp : fixed cpp.Lib.stringReference() (#8457)

4.1.3

22 Jul 10:24
Compare
Choose a tag to compare
release 4.1.3

4.1.2

19 Jun 14:19
Compare
Choose a tag to compare

2020-06-19 4.1.2

Bugfixes:

  • all : added contains and keyValueIterator 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 as Dynamic (#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

22 May 09:34
Compare
Choose a tag to compare

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

13 May 10:29
Compare
Choose a tag to compare

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 for try {} 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 in Void 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 of var 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 of String.indexOf and String.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; use Std.isOfType instead (#2976)
  • all : added a warning for an uninitialized variable usage captured in a closure (#7447)
  • js : deprecated untyped __js__(code, args); use js.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 final else (#9040)
  • all : prohibit @:structInit on interfaces (#9017)
  • macro : fixed handling TAnonymous in haxe.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 yielding null (#8452)
  • cpp : fixed native compilation if there is a hx package in a project (#8543)
  • cs : fixed null to 0 conversion in parametrized functions for Null<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

17 Dec 08:28
Compare
Choose a tag to compare

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 of fn without arguments (#9037)
  • js : fix multiple appearances of the first object added to ObjectMap is passed to ObjectMap.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)