Downloading Haxe 3.3.0-rc.1

If your download does not begin automatically please click here.

Support the Haxe Foundation

Thank you for downloading Haxe. If you'd like to support the Haxe Foundation please consider donating to keep our open source efforts thriving.

Monthly Donation Amount

Get Technical Help

Get support directly from the Haxe team. The Haxe Foundation offers several support tiers to help with your organization's technical challenges.

Explore our support plans

What next?

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

Getting Started With Haxe

Now that you've downloaded Haxe, you can get started with a specific platform. Click on a logo to learn how to set up the development environment and how to proceed from there:

For getting started with Haxe, take a look at our introduction, read through the Haxe Manual or look at these use cases for Haxe, including tutorials and popular libraries: