Downloading Haxe 4.0.0-rc.4

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.4! It is available along with the changelog at

Our focus was on small bugfixes and internal stability. In particular, we made an effort to improve the integrity and memory usage of the compilation server. There were also a lot of changes to make IDE support even better.

There are still some issues to sort out before we declare Haxe to be ready for 4.0. We are getting closer, though! Your help in testing this release is, as always, greatly appreciated.

See the changelog below for further details. Please report any issues here:

Thank you very much for your help!

Change Log

2019-09-04: 4.0.0-rc.4

Standard Library:

  • all : added Map.clear (#8681)
  • all : improved Date API (#8508)
  • all : added JSON-RPC protocol types to haxe.display package (#8610)
  • all : added default timeout to HTTP sockets (#8646)
  • macro : added (#8478)
  • macro : added Context.getMessages and Context.filterMessages (#8471)
  • macro : added function kind to EFunction (#8653)
  • macro : added string literal kind to CString (#8668)
  • flash : added flash.AnyType (#8549)

General improvements and optimizations:

  • all : allowed enum constructors without arguments as static inline var (#8187)
  • all : improved handling of default values when inlining (#8397)
  • all : made various improvements to the display API as usual
  • all : detect invalid #tokens in inactive code (#7108)
  • all : allowed function types in @:generic (#3697)
  • all : improved --help-defines and --help-metas
  • all : improved overall file finding (#8202)
  • all : improved server reaction to added and removed files (#8451)
  • all : improved memory handling of the compilation server (8727)
  • all : improved handling of native libraries on the compilation server (#8629)
  • all : support partial completion results (#8642)
  • all : improved support of hovering over inactive conditional compilation blocks
  • all : improved completion support in .platform.hx files
  • all : support hovering conditional compilation identifiers
  • all : improved and unified identifier checks for names, fields and types (#8708)
  • all : improved --times performance (#8733)
  • all : remove some redundant cast expressions (#8725)
  • all : added --server-connect (#8730)
  • lua : improved -D lua-vanilla
  • js : improved HTML externs

Bugfixes :

  • all : fixed various position and replace ranges in the display API
  • all : fixed compiler hang related to @:arrayAccess (#5525)
  • all : fixed bug regarding abstract this modification in inline methods (#8454)
  • all : fixed from Dynamic on abstracts (#8425)
  • all : fixed overeager recursive inline check (#8489)
  • all : fixed the pattern matcher allowing inexhaustive switches in value-places (#8277)
  • all : fixed pattern matcher allowing invalid abstract unification (#8579)
  • all : fixed local variable type information being lost on the compilation server (#8511)
  • all : don't generate return expressions in Void lambda functions (#6503)
  • all : fixed unification of recursive typedefs again (#8523)
  • all : fixed various hangs related to abstracts (#8588)
  • all : fixed various GADT-related problems (#7672)
  • all : fixed macro @:from methods allowing any return type (#8463)
  • macro : fixed Sys.programPath assertion failure (#8466)
  • js : fixed typed array APIs (#8422)
  • java : fixed on non-reference and unrelated types (#5168)
  • java/macro : fixed null-pointer exception in Reflect.getProperty (#4934)
  • java/jvm : fix switch on null string (#4481)
  • jvm : fixed boxed vs. unboxed comparison (#8577)
  • jvm : generate toplevel types to haxe.root like genjava does (#8590)
  • jvm : improved 32bit support (#8601)
  • cs/python : fixed various issues with code generation
  • cs : fixed NativeArray casting (#3949)

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: