Releases: HaxeFoundation/haxe
Releases · HaxeFoundation/haxe
4.0.0-rc.1
2019-02-01: 4.0.0-rc.1
New features:
- all : added experimental null-safety feature through
--macro nullSafety("package")(#7717)
General improvements and optimizations:
- all : improved unification error messages (#7547)
- all : added
haxe4define - all : do not require semicolon for XML literals (#7438)
- all : made
@:exposeimply@:keep(#7695) - all : unified cast, catch and Std.is behavior of null-values (#7532)
- macro : static variables are now always re-initialized when using the compilation server (#5746)
- macro : support
@:persistentto keep macro static values across compilations - js : improve js.Promise extern: now
thencallback argument types can be properly inferred (#7644)
Bugfixes:
- all : fixed various pattern matching problems
- all : fixed various wrong positions when encoding data to macros
- all : specified String.indexOf with out-of-bounds indices (#7601)
- all : fixed various problems related to DCE and feature-handling (#7694)
- all : fixed bad unary operator optimization (#7704)
- js : fixed syntax problem related to
instanceof(#7653) - flash : fixed var field access on interfaces being uncast (#7727)
- cpp : fixed various issues related to casts
- cpp : fixed some leftover unicode issues
- php : fixed class naming conflicts (#7716)
- eval : fixed Socket.setTimeout (#7682)
- eval : fixed int switch bug related to overflows
Removals:
- macro : deprecated Context.registerModuleReuseCall and onMacroContextReused (#5746)
4.0.0-preview.5
2018-10-13: 4.0.0-preview.5
New features:
- all : support Unicode strings properly on all targets
- all : support
for (key => value in e)syntax for key-value iterators - all : added keyValueIterator to Map and its implementations
- all : support loop-unrolling on
for (i in 0...5)(#7365) - all : added support for write-mode
@:op(a.b) - all : support
inline call()andinline newexpressions (#7425) - all : support
@:usingon type declarations (#7462) - all : support XML literal strings but require them to be macro-processed (#7438)
- all : allow enum values without arguments as default function argument values (#7439)
- lua : add -D lua-vanilla, which emits code with reduced functionality but no additional lib dependencies
General improvements and optimizations:
- all : [breaking] reserved
operatorandoverloadas keywords (#7413) - all : made
finalon structure fields invariant (#7039) - all : [breaking] disallowed static variables that have no type-hint and expression (#6440)
- all : added display/typeDefinition to display protocol (#7266)
- all : fixed various display-related problems
- all : made parser in display mode much more tolerant
- all : allowed assigning
[]whereMapis expected (#7426) - all : unified various parts of the String API across all targets
- php : Optimized haxe.ds.Vector (VectorData is not Array anymore)
- php : Optimized
Map.copy()andArray.copy() - php : Optimized iterators of
Mapand native arrays. - php : Support native PHP generators. See
php.Syntax.yield()andphp.Generator - js : updated HTML externs
- eval : improved object prototype field handling (#7393)
- eval : optimized int switches (#7481)
- eval : improved IntMap and StringMap performance
- eval : improved performance of instance calls
Removals:
- all : disallowed get_x/set_x property syntax, use get/set instead (#4699)
- all : disallowed default values on interface variables (#4087)
- all : disallowed
implements Dynamicon non-extern classes (#6191) - all : warn about expressions in extern non-inline fields (#5898)
- all : removed
-D use-rtti-doc, always store documentation instead (#7493) - all : disallowed macro-in-macro calls (#7496)
- js : removed jQuery and swfobject externs (#7494)
Bugfixes:
- all : fix GC compacting too often in server mode
- all : [breaking]
function () { }(e)is no longer parsed as a call (#5854) - all : fixed various minor inlining issues
- all : disallowed
return nullfrom Void-functions (#7198) - all : fixed various pattern matching problems
- all : fixed compiler hang in display mode (#7236)
- all : fixed the XML printer trimming CDATA content (#7454)
- all : fixed invalid visibility unification with statics (#7527)
- php : Escape
$in field names of anonymous objects (#7230) - php : Generate
switchasif...else if...else...to avoid loose comparison (#7257) - cs : fixed bad evaluation order in structures (#7531)
- eval : fixed various problems with the debugger
- eval : fixed Vector.fromArrayCopy (#7492)
- eval : fixed bad string conversions on invalid + operations
Standard Library:
- all : [breaking] made Lambda functions return Array instead of List (#7097)
- all : added haxe.iterators package
- all : improved StringTools.lpad/rpad/htmlEscape implementation
4.0.0-preview.4
2018-06-12: 4.0.0-preview.4
New features:
- all : added JSON-RPC-based display protocol
- all : allow
enum abstractsyntax instead of@:enum abstract(#4282) - all : allow
externon fields instead of@:extern - all : support signature completion on incomplete structures (#5767)
- all : support auto-numbering and auto-stringification in enum abstracts (#7139)
- all : support
Type1 & Type2intersection syntax for type parameter constraints and structures (#7127)
General improvements and optimizations:
- all : reworked CLI usage/help output (#6862)
- all : implemented
forloop unrolling (#3784) - all : metadata can now use
., e.g.@:a.b. This is represented as a string (#3959) - all : [breaking] disallow static extensions on implicit
this(#6036) - all : allow true and false expressions as type parameters (#6958)
- all : improved display support in many areas
- all : support
override |completion - all : make display/references and display/toplevel actually work sometimes
- all : allow
var ?xandfinal ?xparsing in structures (#6947) - all : improved overall robustness of the parser in display mode
- all : allow
@:commutativeon non-static abstract functions (#5599) - js : added externs for js.Date (#6855)
- js : respect
-D source-mapflag to generate source maps in release builds - js : enums are now generated as objects instead of arrays (#6350)
- eval : improved debugger, support conditional breakpoints
Removals:
- all : moved haxe.remoting to hx3compat
- js : moved js.XMLSocket to hx3compat
- neko : moved neko.net to hx3compat
- all : removed support for
T:(A, B)constraint syntax
Bugfixes:
- all : fixed various issues with diagnostics
- all : fixed fields with default values for
@:structInitclasses (#5449) - all : fixed
Null<T>inconsistency in if/ternary expressions (#6955) - all : fixed visibility check related to private constructors of sibling classes (#6957)
- all : fixed @:generic naming (#6968)
- all : fixed handling of type parameters in local functions (#6560)
- all : fixed resolution order between
untypedand type parameters (#7113) - all : fixed unification behavior in try/catch expressions (#7120)
- all : fixed field type being lost for Int expressions on Float fields (#7132)
- all : cleaned up
inlinehandling (#7155) - display : fixed completion in packages starting with underscore (#5417)
- php : fixed Reflect.callMethod with classes as first argument (#7106)
- eval : fixed internal exception surfacing in some context calls (#7007)
- eval : fixed Type.enumEq (#6710)
- flash : fixed silently swallowing exceptions in getters/setters when invoked with Reflect methods (#5460, #6871)
Standard Library:
4.0.0-preview.3
2018-02-23: 4.0.0-preview.3
See full commit history at 4.0.0-preview.2...4.0.0-preview.3, notable changes below:
New features:
- all : added new function type syntax (
(a:Int, b:String)->Void) (#6645) - all : added column to StackItem.FilePos (#6665)
- all : added
-D warn-var-shadowing - all : added haxe.Log.formatOutput (#6738)
- js : added js.Syntax class for generating unsupported JavaScript syntax in a type-safe analyzer-friendly way
- js : added js.Map and js.Set and js.JsIterator extern definitions (ES6)
- hl : added hl.Format.digest, use it for native Sha1/Md5
General improvements and optimizations:
- all : made all non-warning/non-error compiler messages output to stdout (#4480)
- all : make DCE keep constructor if any instance field is kept (#6690)
- all : make
finalin structures use class notation - display : added
thisandsuperto toplevel completion (#6051) - php : implemented direct method comparison. No need to use
Reflect.compareMethods() - php : added
php.Syntax.code()instead of deprecateduntyped __php__()(#6708) - php : added methods to
php.Syntaxfor each php operator:??,?:,**etc. (#6708) - python : add ssl support for http requests
- python : improve Sys.print(ln) code generation (#6184)
- js : generate faster code for
x.iterator()calls (#6669) - js : rework exception handling, added js.Lib.getOriginalException (#6713)
- js : generate
value instanceof MyClassinstead ofStd.is(value, MyClass)(#6687) - js : use lazy getter for HaxeError.message instead of calling String(val) in the ctor (#6754)
Removals:
- php : removed
php.Syntax.binop()(#6708)
Deprecations:
- php : deprecated support for
untyped __php__,untyped __call__etc. Usephp.Syntaxinstead.
Bugfixes:
- all : delay interface accessor generation properly (#6225, #6672)
- all : fixed unbound variable error in anonymous functions (#6674)
- all : fixed abstract
@:toused whenfromis available in a specific case (#6751) - all : sys.Http: fix chunked encoding handling (#6763)
- all : fix some invalid Json being accepted by haxe.format.JsonParser (#6734)
- all : fixed haxe.format.JsonPrinter for instances of classes to make it produce consistent result across targets (#6801)
- all : fixed autogenerated constructor for extending @:structInit classes (#6822, #6078)
- js : fixed saving setter to
tmpvar before invocation (#6672) - lua : fix toString behavior in the case of -0 (#6652)
- lua : properly bind field functions when passed as arguments (#6722)
- php : don't fail on generating import aliases for classes with the similar names (#6680)
- php : fixed
Sys.environment()to also return variables set bySys.putEnv() - php : fixed
sys.net.Socket.bind()(#6693) - php : fixed appending "sqlite:" prefix to the names of files created by
sys.db.Sqlite.open()(#6692) - php : made php.Lib.objectOfAssociativeArray() recursive (#6698)
- php : fixed php error on parsing expressions like
a == b == c(#6720) - php : fixed multiple file uploads in php.Web.parseMultiPart() (#4173)
- php : fixed an issue with "Object" used as a class name for PHP 7.2 (it's a new keyword in php) (#6838)
- eval : don't lose dynamic function inits from parent classes (#6660)
- cs : fix order-dependent enum type parameter issue (#6016)
3.4.7
2018-02-22: 3.4.7
Bugfixes:
3.4.6
2018-02-12: 3.4.6
Bugfixes:
- all : fixed a bug when Haxe compiler couldn't find std lib on Linux if executed by another program
- all : fixed "Unix.Unix_error" compiler failure if output directory contains a trailing slash (#6212, #6768)
- php7 : fixed an issue with "Object" used as a class name for PHP 7.2 (it's a new keyword in php) (#6838)
- as3 : fixed "inifinite recursion" compiler error for classes named "Object"
3.4.5
2018-01-31: 3.4.5
General improvements and optimizations:
- dce : optimized DCE performance (#6181)
Bugfixes:
- dce : don't remove constructor if any instance field is kept (#6062)
- js : fixed saving setter to
tmpvar before invocation (#6672) - php7 : don't fail on generating import aliases for classes with the similar names (#6680)
- php7 : fixed appending "sqlite:" prefix to the names of files created by
sys.db.Sqlite.open()(#6692) - php7 : made php.Lib.objectOfAssociativeArray() recursive (#6698)
- php7 : fixed php error on parsing expressions like
a == b == c(#6720) - php7 : fixed
Math.min()andMath.max()for NAN on PHP 7.1.9 and 7.1.10 - php/php7 : fixed
sys.net.Socket.bind()(#6693)
4.0.0-preview.2
2017-10-08: 4.0.0-preview.2
New features:
- all : added final keyword (#6596)
General improvements and optimizations:
- all : replaced some occurrences of List with Array
- all : changed haxe.xml.Fast to an abstract
- all : improved optimization when comparing against
null - all : added support for
case var xsyntax and detect possible typos (#6608) - php : changed
--php-prefix,--php-frontand--php-libto-D php-prefix=,-D php-front=and-D php-lib=respectively
Removals:
- all : moved haxe.unit to hx3compat
- all : moved haxe.web.Request to hx3compat
- php : dropped php5 support; minimum supported php version is 7.0 now
Bugfixes:
- all : fixed issue with various functions not being displayed in macro context (#6000)
- all : fixed invalid static extension lookup on
super(#3607) - all : fixed typing error when constructing enums with abstracts over functions (#6609)
- all : fixed bug that skipped checking @:from typing in some cases (#6564)
- all : fixed Int64 parsing of negative numbers that end in a zero (#5493)
- all : fixed top-down inference when constructing enums (#6606)
- eval : fixed bug with equality handling
- eval : fixed issue with file creation not defaulting to binary
- eval : fixed invalid override detection (#6583)
- eval : fixed infinite recursion when printing arrays/vectors
- cs/java : fixed DCE bug that would lose toString method of thrown objects
- php/python : fixed some bit operators for Int32 (#5938)
- php : fixed accessing
static inline varvia reflection (#6630) - php : fixed Math.min() and Math.max() for NAN on PHP 7.1.9 and 7.1.10
- js : fixed js syntax error for
value.iterator--(#6637)
Standard Library:
3.4.4
4.0.0-preview.1
2017-09-12: 4.0.0-preview.1
New features:
- all : reworked macro interpreter (see blogpost)
- all : added support for arrow functions (see proposal)
General improvements and optimizations:
- js : improved generation of
breakinsideswitchinside loops (#4964) - cs : improved generation of enum classes (#6119)
- sys : the
databaseparameter ofMysql.connectis now optional - js : updated jQuery extern (js.jquery.*) for jQuery 1.12.4 / 3.2.1 support.
- Makefile : default Unix installation location $(INSTALL_DIR) changed from /usr to /usr/local.
- Makefile : default Unix std location
$(INSTALL_STD_DIR) changed from $ (INSTALL_LIB_DIR)/std to $(INSTALL_DIR)/share/haxe/std.
Removals:
- all : removed --eval command line argument
- sys : SPOD (sys.db.Object, sys.db.Manager and friends) was moved into a separate library
record-macros(https://github.com/HaxeFoundation/record-macros) - js : js.JQuery and js.SWFObject were moved into hx3compat library (https://github.com/HaxeFoundation/hx3compat),
- it's recommended to use more modern js.jquery.JQuery and js.swfobject.SWFObject classes.
- all : moved haxe.web.Dispatch into hx3compat library (https://github.com/HaxeFoundation/hx3compat).
Bugfixes:
- php7: fix Reflect.field() for strings (#6276)
- php7: fix
@:enum abstractgeneration without-dce full(#6175) - php7: fix using enum constructor with arguments as a call argument (#6177)
- php7: fix
nullproperty access (#6281) - php7: fix setting values in a map stored in another map (#6257)
- php7: fix haxe.io.Input.readAll() with disabled analyzer optimizations (#6387)
- php/php7: fixed accessing enum constructors on enum type stored to a variable (#6159)
- php/php7: fix "cannot implement previously implemented interface" (#6208)
- php: fix invoking functions stored in dynamic static vars (#6158)
- php: fix field access on
new MyClass()expressions wrapped in acast(#6294)
Standard Library: