Haxe 3.3.0-rc.1

Released: 2016-05-26

Thank you for choosing Haxe!
Download for your platform and start developing today.

A newer version is available!
The latest stable version is Haxe 4.3.4.

Release Notes

Dear community,

On behalf of the Haxe Foundation I am proud to announce that Haxe 3.3.0-rc1 is now officially released! It is available along with the changelog at https://haxe.org/download.

This release introduces the new Lua target which was developed by Justin Donaldson. As with any new target it should be considered to be in beta stage.

Other major features include a rewritten static analyzer which is now enabled by default. Furthermore, the C++ target generator has seen a major overhaul.

As usual, there have also been lots of bugfixes and improvements in various areas. There have also been a few small breaking changes which we documented at https://github.com/HaxeFoundation/haxe/wiki/Breaking-changes-in-Haxe-3.3.0.

Please test your Haxe code with this version and let us know if you come across any problems at https://github.com/HaxeFoundation/haxe/issues.

Thank you for your support

Change Log

New features:

  • all : support @:resolve on abstracts (#3753)
  • all : support extern abstracts and extern @:enum abstracts (#4862)
  • all : support completion on { if the expected type is a structure (#3907)
  • all : support (expr is Type) with mandatory parentheses (#2976)
  • all : allowed passing package dot-paths on command line (#4227)
  • all : support import.hx modules that define per-directory import/using directives (#1138)
  • all : support parsing of postfix ! operator (can be used by abstract operator overloading and macros) (#4284)
  • all : support parsing of ||= and &&= operators (can be used by abstract operator overloading and macros) (#4427)
  • all : support @:structInit classes (#4526)
  • all : reworked static analyzer and enabled it by default
  • flash : update flash externs to version 21
  • hl : added HL target (interpreter and C output)
  • lua: added lua target
  • js : introduced new jQuery extern (js.jquery.*) for jQuery 1.12.4 / 2.2.4 support. (#4377)
  • js : introduced new SWFObject extern (js.swfobject.SWFObject) for SWFObject 2.3.20130521 (#4451)
  • js : added js.Lib.rethrow (#4551)
  • cs/java : added -D fast_cast as an experimental feature to cleanup casts

Bugfixes:

  • all : properly disallowed assigning methods to structures with read-accessors (#3975)
  • all : fixed a bug related to abstract + Int/Float and implicit casts (#4122)
  • all : disallowed duplicate type parameter names (#4293)
  • all : made UInt's >>> behave like >> (#2736)
  • all : fixed various type loading issues
  • all : fixed code generation problems with inline (#1827)
  • php/as3 : support run-time metadata on interfaces (#2042)
  • php : fixed argument passing to closures (#2587)
  • neko/cpp : fixed various sys.Filesystem issues with Windows drive paths (#3266)
  • as3 : fixed problem with covariant return types (#4222)
  • as3 : fixed rare problem with static initialization order (#3563)
  • python : fixed various reflection problems

General improvements and optimizations:

  • all : added support for determining minimal types in Map literals (#4196)
  • all : allowed @:native on abstracts to set the name of the implementation class (#4158)
  • all : allowed creating closures on abstract inline methods (#4165)
  • all : type parameter declarations can now have metadata (#3836)
  • all : optimize Math.ceil/floor on constant arguments (#4223)
  • all : allowed extern classes to have field names being used for both static and instance (#4376)
  • all : added haxe.Constraints.Constructible (#4761)
  • all : rewrote pattern matcher to improve output in many cases (#4940)
  • python : use spaces instead of tabs to indent the output (#4299)
  • cpp : reworked backend to improve overall code output quality and fix various issues
  • swf : added scene-tag to allow creating accessible SWF files

Standard Library:

  • all : added Lambda.flatten and Lambda.flatMap (#3553)
  • all : added haxe.Constraints.Constructible (#4761)
  • sys : proper quoting/escaping (can be opt-out) for Sys.command and sys.io.Process (#3603)
  • js : added position parameter to haxe.macro.Compiler.includeFile
  • js : removed -D embed-js (#4074)
  • js : updated HTML externs

Macro features and changes:

  • macro : added overloads field to ClassField (#3460)
  • macro : added Context.getLocalImports (#3560)
  • macro : added Context.onAfterTyping (#4714)
  • macro : added Context.resolveType