Downloading Haxe 4.0.0-rc.3

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

The new Java Virtual Machine target is available! Generate JVM byte code directly from Haxe bypassing Java compilation step by adding -D jvm to your project targeting Java.

Unicode support was greatly improved across all targets.

Other than that, we fixed a lot of bugs and improved the quality of IDE services (compilation and completion server).

Also, we are considering different options about inline markup. The feature is subject to change in the future:

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

Thank you very much for your help!

Change Log

2019-06-13: 4.0.0-rc.3

New features:

  • all : added JVM target

General improvements and optimizations:

  • all : create temp vars in pattern matcher to avoid duplicate access (#8064)
  • all : support parsing dots in conditional compilation, e.g. #if target.sys
  • all : added @:bypassAccessor
  • all : improved various aspects of the display API
  • all : properly error on @:op(a = b) (#6903)
  • all : made @:using actually work
  • all : properly disallowed some modifier combinations related to final (#8335)
  • all : support @:pure(false) on variable fields (#8338)
  • flash : updated Flash externs to version 32.0 (now using final, enum abstract and haxe.extern.Rest)
  • flash : rework support for native Flash properties (#8241)
  • php : improved performance of various parser implementations (#8083)
  • cs : support .NET core target (#8391)
  • cs : generate native type parameter constraints (#8311, #7863)

Standard Library:

  • all : added StringTools.contains (#7608)
  • all : turned sys.thread.Thread into abstracts (#8130)
  • all : introduced Std.downcast as replacement for Std.instance (#8301)
  • all : introduced UnicodeString, deprecated haxe.Utf8 (#8298)
  • java : added java.NativeString (#8163)
  • cs : added sys.thread implementations (#8166)
  • js : moved various classes to js.lib (#7390)
  • Bugfixes
  • all : fixed issue with @:generic type parameters not being bound to Dynamic (#8102)
  • all : fixed various issues related to @:structInit
  • all : fixed top-down inference on abstract setters (#7674)
  • all : fixed DCE issue related to closures (#8200)
  • all : fixed and restricted various Unicode-related issues in String literals
  • all : fixed various priority issues regarding loops and iterators
  • all : fixed cast handling in try-catch expressions (#8257)
  • all : fixed inline new handling (#8240)
  • all : fixed pattern matcher issue with wildcards in or-patterns (#8296)
  • all : fixed @:allow(package) allowing too much (#8306)
  • all : fixed various issues with startIndex handling on String.indexOf and String.lastIndexOf
  • all : fixed infinite recursion related to printing of objects with circular references (#8113)
  • sys : fixed various Unicode issues (#8135)
  • macro : fixed Array.pop handling (#8075)
  • macro : fixed assertion failure when throwing exception (#8039)
  • macro : fixed various uncatchable exceptions being thrown
  • php : error on case-insensitive name clashes (#8219)
  • lua : fixed issue where Process output occasionally is missing some data
  • hl : fixed various String Unicode issues
  • java : fixed null exception in CallStack.exceptionStack (#8322)
  • js : fixed code generation issue related to negative abstract values (#8318)
  • flash : fix various issues, including native protected handling and method overloading


  • all : remove support for @:fakeEnum enums
  • all : disallowed \x with values > 0x7F (#8141)
  • all : consistently disallowed metadata in lambda function arguments (#7800)
  • all : removed --gen-hx-classes (#8237)

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: