Downloading Haxe 4.0.0-rc.2

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, we are proud to announce the official release of the Haxe 4.0.0-rc.2! It is available along with the changelog at https://haxe.org/download.

We now support ES6 generation by using the -D js-es=6 flag! Please test this with your Haxe/JavaScript codebases and let us know about any problems you come across.

Other than that, we fixed a lot of bugs and improved the quality of our error messages a little.

See the changelog below for further details. Please report any issues here: https://github.com/HaxeFoundation/haxe/issues

Thank you very much for your help!

Change Log

2019-03-22: 4.0.0-rc.2

New features:

  • all : added strictness settings for the null-safety checker, using loose checking by default (#7811)
  • js : added ES6 class generation with -D js-es=6 (#7806)

General improvements and optimizations:

  • all : inherit @:native for overriden methods (#7844)
  • all : standardized identifiers allowed in markup literals (#7558)
  • all : show typo suggestions when declaring override field (#7847)
  • all : improved parser error messages (#7912)
  • all : improved diagnostics of syntax errors (#7940)
  • all : improved positions of switch and case expressions (#7947)
  • all : allow parsing #if (a.b) (#8005)
  • eval : improved performance of various string operations (#7982)
  • eval : fixed many error positions
  • eval : greatly improved debugger interaction (#7839)
  • eval : properly support threads when debugging (#7991)
  • eval : improved handling of capture variables (#8017)
  • js : generate dot-access for "keyword" field names (#7645)
  • js : optimized run-time type checking against interfaces (#7834)
  • js : skip generation of interfaces when no run-time type checking needed (#7843)

Standard Library:

  • all : unified various Thread APIs in sys.thread (#7999)
  • all : moved typed arrays from js.html to js.lib (#7894)
  • all : added iterator() to haxe.DynamicAccess (#7892)
  • all : added keyValueIterator() to haxe.DynamicAccess (#7769)
  • eval : completed Thread API

Bugfixes:

  • all : fixed argument default value checking for externs (#7752)
  • all : fixed optional status of overloaded arguments with default values (#7794)
  • all : fixed DCE compilation server state issue (#7805)
  • all : fixed compilation server module dependency issue related to macros (#7448)
  • all : fixed call-site inlining on abstracts (#7886)
  • all : fixed Constructible not checking constraints properly (#6714)
  • all : fixed @:structInit not being compatible with final fields (#7182)
  • all : fixed capture variables being allowed in .match (#7921)
  • all : fixed infinite recursion on @:generic field access (#6430)
  • all : fixed -D no-deprecation-warnings for typedefs and enums
  • js : fixed bad stack handling on Map constraint checks (#7781)
  • js : fixed DCE issues related to haxe.CallStack (#7908)
  • cpp : fixed Socket flags not being preserved (#7989)
  • lua : fixed broken output when compiling through the compilation server (#7851)
  • lua : fixed StringTools.fastCodeAt with -D lua-vanilla (#7589)
  • lua : fixed @:expose for classes inside packages (#7849)

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: