Downloading Haxe 4.0.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, we are proud to announce the official release of the Haxe 4.0.0-rc.1! It is available along with the changelog at

The main new feature of this release is an experimental null-checker, which can be enabled for individual packages from command line by using --macro nullSafety("package.path"). We will post more information on this soon!

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

Thank you very much for your help!

Change Log

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 haxe4 define
  • all : do not require semicolon for XML literals (#7438)
  • all : made @:expose imply @:keep (#7695)
  • all : unified cast, catch and behavior of null-values (#7532)
  • macro : static variables are now always re-initialized when using the compilation server (#5746)
  • macro : support @:persistent to keep macro static values across compilations
  • js : improve js.Promise extern: now then callback argument types can be properly inferred (#7644)


  • 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


  • macro : deprecated Context.registerModuleReuseCall and onMacroContextReused (#5746)

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: