-
Notifications
You must be signed in to change notification settings - Fork 2
/
CHANGES.txt
2737 lines (2416 loc) · 127 KB
/
CHANGES.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
2021-05-14 4.2.2:
Bugfixes:
all : fixed piping stdin/stdout in `--cmd` (#4660, #6726)
all : fixed rest args typing for overloaded functions (#10143)
all : fixed using `var` fields as static extensions (#10144)
all : fixed completion for a type in `expr is Type` (#10167)
all : fixed subtypes in `expr is Module.SubType` expressions (#10174)
all : fixed typing chains of calls with constrained type params (#10198)
all : fixed mixed constraints of anonymous structures and other types (#10162)
all : fixed operator overloading for enum abstracts (#10173)
hl : fixed debugging of `catch` blocks (#10109)
jvm : fixed manifest generation for cases with a lot of jar libraries (#10157)
js : fixed extending extern classes for es5 (#10192)
js : fixed checking `this` before `super` for es6 (#10193)
eval : fixed null pointer exception in `eval.NativeString.fromString(null)`
eval : fixed multiple locks of `sys.thread.Mutex` from the same thread (#10249)
2021-02-26 4.2.1:
General improvements:
threads : changed main thread initialization to make main event loop available during static initialization (#10114)
php : added extern for `number_format` function (#10115)
python : rewrote `sys.thread.Thread`, `Mutex` and `Lock` as classes instead of abstracts.
Bugfixes:
all : fixed compiler compatibility with OS X 10.13 (#10110)
all : fixed compiler hanging on `switch` for abstracts with implicit casts involving type parameters and constraints (#10082)
all : fixed inlining of `haxe.DynamicAccess.keyValueIterator` (#10118)
all : fixed rest arguments typing against type parameters (#10124)
analyzer : fixed side effect handling for enums (#10032)
cpp : fixed handling of `cpp.ConstCharStar` with analyzer enabled (#9733)
php : fixed failure with trailing slash in output dir (#6212)
hl : fixed call stack of rethrown exceptions (#10109)
2021-02-09 4.2.0:
New features:
all : implemented "classic" abstract classes and functions (see [haxe-evolution#69](https://github.com/HaxeFoundation/haxe-evolution/pull/69)) (#9716)
all : module-level static declarations (#8460)
all : implemented rest arguments (variadic functions) for all targets with `haxe.Rest` type (#9961)
all : per-thread event loops `sys.thread.Thread.events` (#9868)
all : added `@:inheritDoc` meta to inherit documentation for a type or field from another type or field (#9817)
all : support method overloading for extern methods on all targets (#9793)
all : constructors forwarding for abstracts with `@:forward.new` (#9735)
all : added `EIs` constructor to `haxe.macro.Expr` (#9689)
all : added variance forwarding with `@:forward.variance` (#9741)
all : treat `Any` as `Dynamic` in variance unification (#6649)
all : added some common exception types to `haxe.exceptions` package
all : support metadata in var declaration syntax (#9618)
all : added `StringTools.unsafeCharAt` (#9467)
eval : added libuv bindings under `eval.luv` package (#9903)
eval : added bindings to native `Int64` and `UInt64` implementations under `eval.integers` package (#9903)
cs : UDP socket implementation (#8498)
cs : added `cs.Syntax` module (#10051)
jvm : added `-D jvm.dynamic-level` to control the amount of dynamic support code being generated. 0 = none, 1 = field read/write optimization (default), 2 = compile-time method closures
java,jvm : support `--java-lib <directory>` (#9551)
python : threading API implementation (#9754)
General improvements:
all : `expr is SomeType` doesn't require parentheses anymore (#9672)
all : increased priority of @:using extensions (#9681)
all : allowed usage of static extensions with super (#10062)
all : allow @:noDoc on fields too (#9893)
all : made `Map` abstract transitive (#9877)
all : support `@:native` on enum constructors (#9806)
all : support `@:using` on typedefs (#9749)
all : changed multiline errors format to use "..." as a prefix for subsequent lines (#9651)
all : improved type inference with constrained monomorphs (#9549)
all : print no-argument function types as `()->...` instead of `Void->...` (#8148)
all : allow `function` as package name
all : improved object inlining (#9599)
display : narrow range for hover on parametrized types (#8073)
cs : added .NET 5.0 support (#10043)
cpp : support native constructors on extern classes (#9516)
php: `php.Syntax.customArrayDecl` (#9113)
php : added externs for various php functions and classes
php : optimized anonymous objects instantiation (#7916)
hl : skip compilation if no module has been changed (#9922)
lua : use hx-lua-simdjson for Lua json parsing (#9885)
jvm : less CPU consuming `sys.thread.Lock` implementation
Bugfixes:
all : fixed Template.resolve when current context is not an object (#9372)
all : `get` and `set` functions of `haxe.io.Float64Array` actually use 64-bit floats now (#9972)
all : treat empty blocks `{}` as object declarations in array comprehension (fixes #9971)
all : `haxe.format.JsonParser`: preserve Float-typed values when they are written as such in JSON (ie. "5.0" or "0.0") (#9844)
all : fixed priority of forwarded static extensions (#9680)
all : fixed some inconsistency in variance unification for abstracts (#9743)
display : fixed completion with platform-specific files (#9423)
cpp : fixed conversion of `cpp.Int64` to/from `haxe.Int64` (#10101)
cpp : fixed extending extern classes with `@:nativeGen` classes (#9431)
php : fixed generation with subdirectories in `-D php-front=subdir/index.php` (#10037)
php : fixed local vars with the same names as super global vars (#9924)
eval : allow full range of 32bit integers in `Std.random` (#9974)
js : fixed `haxe.CallStack.exceptionStack` (#9968)
js : fixed compatibility issue with closure compiler upon unused `catch` vars (#9617)
lua : fixed anonymous object printing issue with null fields on tables
hl : drop data of terminated threads (#9875)
macro : fixed `haxe.macro.Context.storeTypedExpr` for enum constructs (#9828)
macro : emit a deprecation warning upon a macro call instead of upon a macro function declaration (#9425)
macro : fixed uncatchable error from `haxe.macro.Context.getType` (#9449)
jvm : fixed `Type.resolveEnum` for enums in the root package (#9809)
jvm : fixed `Type.resolveEnumName` for enums in the root package (#9759)
cs : fixed cs.Lib.rethrow (#9738)
nullsafety : respect `@:nullSafety(Off)` on var declarations: `var @:nullSafety(Off) v`
nullsafety : respect `@:nullSafety(Off)` in closures in constructors (#9643)
nullsafety : fixed error "Type not found : haxe.macro._Compiler.NullSafetyMode_Impl_" (#9483)
2020-12-31 4.1.5:
General improvements:
all : added an argument to `haxe.CallStack.exceptionStack` to return full stack up to the topmost call (#9947)
php : compatibility with PHP 8
Bugfixes:
all : fixed empty object declarations in array comprehension (#9971)
jvm : fixed equality checks for `Null<Float>` and `Null<Int>` (#9897)
hl : fixed crash if a thread finishes without invoking `sendMessage`/`readMessage` (#9920)
php : fixed local vars with certain names (_SERVER, _GET etc) overriding super global values (#9924)
php : fixed generation with directories in `-D php-front`. For example `-D php-front=sub/index.php` (#10037)
macro : added return type hint to haxe.macro.MacroStringTools.formatString (#9928)
cs : fixed catching exceptions from static closures (#9957)
eval : fixed `Std.random(arg)` for `arg` values of more than 30 bits (#9974)
js : fixed `haxe.CallStack.exceptionStack` (#9968)
2020-09-11 4.1.4:
General improvements:
all : allowed `Any` as type parameter in `catch(e:SomeType<Any>)` (#9641)
all : improved compilation speed for `try..catch` expressions (#9848)
Bugfixes:
all : fixed `switch` typing error for arrow functions with `Void` return type (#9813)
all : fixed typing of arrow functions with empty blocks as bodies (closes #9843)
macro : fixed `haxe.macro.Context.getResources()` (#9838)
php : fixed false detection of `catch` vars in anonymous functions as captured from outer scope
php : fixed return type of extern definition for `fseek` function
cs,java : fixed generation of `@:generic` classes with anonymous functions (#9799)
jvm : fixed sending/reading messages with `sys.thread.Threads` for threads created outside of Haxe (#9863)
jvm : fixed multiplication of `Null<Float>` and `Int` (#9870)
flash : fixed loading swc libraries containing `Vector` without a type parameter (#9805)
hl : fixed messages being send to wrong threads with `sendMessage`/`readMessage` in `sys.thread.Thread` (#9875)
cpp : fixed `cpp.Lib.stringReference()` (#8457)
2020-07-22 4.1.3
General improvements:
all : added an error on `return` outside of a function (#9659)
php : support @:native("") for extern classes (#6448)
python : support @:native("") for extern classes (#6448)
Bugfixes:
all : fixed compilation server bug caused by removing `inline` from a method (#9690)
macro : fixed compiler crash if `@:genericBuild` meta is removed by a macro during building (#9391)
jvm : fixed "--java-lib-extern" (#9515)
flash : fixed var shadowing issue for variables captured in a closure inside of a loop (#9624)
flash : fixed `VerifyError` exception when `Void` end up as an argument type after inlining (#9678)
php : fixed runtime error "cannot use temporary expression in write context" for call arguments passed by reference
cs : fixed `cs.Lib.rethrow` (#9738)
nullsafety: fixed `@:nullSafety(Off)` in closures inside of constructors (#9643)
nullsafety: fixed "Type not found NullSafetyMode_Impl_" (#9483)
2020-06-19 4.1.2
Bugfixes:
all : added `contains` and `keyValueIterator` methods to haxe.ds.ReadOnlyArray
all : fixed super constructor call when extending externs (#7837, #9501)
all : fixed compiler crash for "--run" argument without a value (#9513)
all : fixed local variable name collision in `try..catch` (#9533)
all : fixed memory leak in completion server related to haxe.Exception (#9537)
display : fixed completion for out-of-bounds argument in a call (#9435)
display : fixed "find references" through interfaces (#9470)
display : optimized "find references" (#9504)
display : optimized "server/invalidate" requests (#9509)
analyzer : fixed compiler crash upon handling code branches with enums with optional arguments (#9591)
jvm : added "--java-lib-extern" to use jar files as externs without adding them to the compiled project (#9515)
macro : fixed type intersection syntax in macro reification (#9404)
eval : fixed exception message when catching compiler-generated `haxe.macro.Error` as `Dynamic` (#9600)
lua : fixed lua code generation without `--main` compilation argument (#9489)
php : added an overload signature for `session_set_cookie_params` function (#9507)
js : fixed name collisions for catch variables to avoid closure compiler errors (#9617)
nullsafety : fixed various scenarios of `if..else` branching (#9474)
2020-05-22 4.1.1
New features:
jvm : added `--jvm path/to.jar` CLI argument
Bugfixes:
all : fixed arguments ordering for @:structInit constructors (#9418)
all : fixed display/references completion server request for static fields (#9440)
all : fixed "Module not found" error reporting during macro execution in display requests (#9449)
all : fixed module name completion for target-specific modules like `Mod.js.hx` (#9423)
all : fixed completion for packages named "function" (#7697)
all : fixed recursive typedefs with optional arguments in `@:overload` functions (#9455)
cpp : fixed StringTools.endsWith() for unicode characters (#8980)
cpp : fixed broken externs in `cpp` package (#9452)
js/cpp : fixed catch var naming collision (#9413)
interp : fixed throwing `haxe.macro.Error` outside of a macro context (#9390)
lua : fixed lua.PairTools.ipairsMap method
php : fixed an edge case in String methods generation (#9464)
2020-05-13: 4.1.0
New features:
all : added tail recursion elimination (#8908)
all : added unified exception handling (#9124)
all : allow `try {} catch(e) {}` as a shortcut for `try {} catch(e:haxe.Exception) {}` (#9269)
eval : added SSL support (#9009)
jvm : the JVM target is no longer considered experimental
General improvements:
all : implemented different display support approach (#8962)
all : improved display services related to reference finding
all : added go-to-implementation support (#9043)
all : made various improvements to diagnostics
all : support completion for map keys (#9133)
all : improved parser robustness for incomplete syntax (#9148)
all : disallowed the combination of `@:overload` and inline (#3846)
all : improved renaming of local variables (#9304)
all : better inlining of for-loops with anonymous iterators (#8848)
all : remove redundant final `return` in `Void` functions (#6420)
all : remove redundant `continue` in loops (#8952)
all : improved various compilation errors reporting
all : allowed `(get,default)` property access combination (#6195, #8825)
all : allowed ++ and -- on member properties of abstracts (#8930)
js : use abstract type name for generating its implementation class (#9006)
js : improve haxe.ds.StringMap implementation (#8909)
js : improve interface checking and make it more minifier-friendly (#9178)
js : generate `let` instead of `var` when compiler with `-D js-es=6` (#9280)
js : optimize `.bind` on constructors (#9227)
jvm : rewrote function handling to me much faster and more portable (#9208)
jvm : generate interfaces for typedefs for improved performance (#9195)
jvm : added support for haxe.MainLoop
jvm : support `@:jvm.synthetic` and use it to hide some generated fields (#9213)
jvm : respect `@:private` and `@:protected`
lua : improve error handling behavior when throwing objects/instances
lua : optimize `haxe.iterators.StringIterator`
php : optimize `Std.isOfType` for String, Bool and Float
php : make Haxe Array implement native interfaces Iterator, IteratorAggregate, Countable (#8821, 9377)
cs : support `@:assemblyMeta` and `@:assemblyStrict` (#8347)
python : added `__contains__` and `__getitem__` implementations to generated python code for `_hx_AnonObject`, so it is subscribable and behaves like a python dict (#9109)
Standard Library:
all : negative `startIndex` argument of `String.indexOf` and `String.lastIndexOf` is unspecified (#8365)
all : changed Array.iterator() to return instances of haxe.iterators.ArrayIterator (#8987)
all : added Array.contains (#9179)
all : added Array.keyValueIterator (#7422)
all : added haxe.Constraints.NotVoid (#8357)
all : added Lambda.findIndex() (#9071)
all : added Lambda.foldi() (#9054)
all : added array access and key-value iteration support to haxe.ds.HashMap (#9056)
jvm : added JVM-specific versions of sys.thread.Lock and sys.thread.Thread
jvm : added JVM-specific version of haxe.ds.StringMap
java/jvm : use native versions of MD-5, SHA-1 and SHA-256 for `haxe.crypto` modules (#9298)
macro : added haxe.macro.Context.containsDisplayPosition(pos) (#9077)
nullsafety : treat Strict as a single-threaded mode; added StrictThreaded (#8895)
Deprecations:
all : deprecated `Std.is`; use `Std.isOfType` instead (#2976)
all : added a warning for an uninitialized variable usage captured in a closure (#7447)
js : deprecated `untyped __js__(code, args)`; use `js.Syntax.code(code, args)` instead
php/neko : deprecated neko.Web and php.Web; will be moved to hx4compat library later (#9153)
Bugfixes:
all : fixed display support for static imports (#9012)
all : fixed completion in macro mode picking up the wrong type (#7703)
all : fixed wonky analyzer transformation related to locals captured in closures (#9305)
all : allow `return;` in abstract constructors (#7809)
all : fixed static @:op([]) functions (#9347)
all : fixed `@:optional` handling in the inheritance of `@:structInit` classes (#7559)
all : support negative numbers as constant type parameters for `@:generic` types (#9149)
all : fixed false positive compilation server error with empty methods in inheritance (#9029)
all : fixed default values for manually defined @:structInit constructors (#9177, #9258)
all : fixed inference of `Void` return type for arrow functions (#9181)
all : fixed inconsistencies in wildcard imports resolution (#9189, #9190)
all : fix array comprehension for a chain of `if..else if` without final `else` (#9040)
all : prohibit @:structInit on interfaces (#9017)
macro : fixed handling `TAnonymous` in `haxe.macro.TypeTools.map` (#9147)
eval : fixed EReg.matchSub handling with negative length (#9333)
eval : fixed extern classes being generated and causing errors in some cases (#9366)
eval : fixed StringBuf.addSub unicode handling (#9382)
jvm : fixed Void being generated with the wrong casing (#8717)
jvm : fixed debugging-related data being generated in the wrong place
jvm : fixed switches on string values being too optimistic
jvm : fixed problems with Std.parseInt and Std.parseFloat
jvm : made sure type parameter types are boxed
jvm : fixed dynamic access on `null` yielding `null` (#8452)
cpp : fixed native compilation if there is a `hx` package in a project (#8543)
cs : fixed `null` to `0` conversion in parametrized functions for `Null<Int>` params (#7428)
cs : fixed integer division handling (#9232)
php : fixed closure creation out of fields with `null` value (#9316)
js : fixed interface generation for minification with Google Closure Compiler in advanced mode (#9172)
js : fixed a crash at startup in IE8 (#9062)
hl : fixed BLOB handling in SQLite (#9048)
2019-12-17: 4.0.5
Bugfixes:
java : fix boolean arguments for `Type.createInstance(cls, args)` (#9025)
jvm : fix static overloads (#9034)
java/cs : fixed `Reflect.makeVarArgs(fn)` for calls of `fn` without arguments (#9037)
js : fix multiple appearances of the first object added to `ObjectMap` is passed to `ObjectMap.set(obj, v)` multiple times (#9026)
js : automatically wrap compound expressions with parentheses when passed to `js.Syntax.code()` (#9024)
windows : fix adding neko to PATH env var running windows installer (#9021)
2019-11-29: 4.0.3
General improvements:
hl : profiler API
Bugfixes:
all : fixed EnumValue handling in constant propagation with analyzer enabled (#8959)
all : fixed compiler crash upon Void items in array declarations (#8972)
hl : fixed `sys.thread.Lock` implementation for Hashlink 1.11+ (#8699)
js/eval/java/jvm/cs/python/lua : fixed `Std.parseInt()` for hexadecimals with leading whitespaces (#8978)
java/cs : fixed `Reflect.callMethod(o, method, args)` for `args` not containing optional arguments (#8975)
cs : fixed Json.stringify for @:struct-annotated classes (#8979)
cs : fixed bitwise shifts for `cs.types.Int64` (#8978)
python : fixed invalid generation of some inlined code blocks (#8971)
std : fixed an exception from `haxe.zip.Huffman` on reading a zip (#8875)
windows : workaround windows installer being detected as a malware by some anti-virus software (#8951)
windows : fix PATH env var modification when running windows installer without admin privileges (#8870)
all : fixed null-safety checker for field access on a call to inlined function
2019-11-11: 4.0.2
General improvements and optimizations:
php : improved performance of `haxe.io.Bytes.get()` (#8938)
php : improved performance of serialization/unserialization of `haxe.io.Bytes` (#8943)
php : improved performance of enum-related methods in `Type` class of standard library
Bugfixes:
haxelib : Fixed too strict requirements to haxelib.json data for private libs
all : fixed `@:using` static extensions on `Null<SomeType>` (#8928)
php : fixed static methods with the same name in parent and child classes (#8944)
2019-11-04: 4.0.1
Bugfixes:
haxelib : fixed git dependencies in haxelib.json
neko : updated windows & osx installer to install Neko 2.3.0 (#8906)
jvm : fixed compilation failure caused by a specific usage of `Array<Dynamic>` (#8872)
all : fixed compiler crash on loops with `continue` in all branches of the body (#8912)
all : fixed erasing typedef in AST on field access to forwarded abstract fields (#8919)
2019-10-26: 4.0.0
General improvements:
js : updated externs for `Float32Array` and `Float64Array` (#8864)
php : added array access to `php.NativeStructArray` (#8893)
Bugfixes:
cs : fixed "This expression may be invalid" false warning (#8589)
php : fixed iterator fields on maps being removed (#8851)
php : fixed `-2147483648` as init value for static vars (#5289)
python : fixed modulo by a negative number (#8845)
java : fixed backslash escaping on `EReg.replace` (#3430)
lua : fixed `EReg.map` for unicode (#8861)
hl : fixed sqlite connection on OSX/Linux (#8878)
2019-09-12: 4.0.0-rc.5
General improvements and optimizations:
eval: improved performance of regular expressions (#8693)
Bugfixes:
all: fixed regression, which caused compiler to crash on enum abstracts with explicit casting (#8765)
all: fixed regression of macro `@:from` methods on abstracts (#8779)
all: fixed switching on `this` (#8781)
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 Context.info (#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 Std.is 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)
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
Removals:
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)
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)
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 markup literals (#7438)
all : made `@:expose` imply `@:keep` (#7695)
all : unified cast, catch and Std.is 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)
Bugfixes:
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
Removals:
macro : deprecated Context.registerModuleReuseCall and onMacroContextReused (#5746)
2018-10-13: 4.0.0-preview.5
New features:
all : support Unicode strings properly on all targets
all : support `for (key => value in e)` syntax for key-value iterators
all : added keyValueIterator to Map and its implementations
all : support loop-unrolling on `for (i in 0...5)` (#7365)
all : added support for write-mode `@:op(a.b)`
all : support `inline call()` and `inline new` expressions (#7425)
all : support `@:using` on type declarations (#7462)
all : support markup literal strings but require them to be macro-processed (#7438)
all : allow enum values without arguments as default function argument values (#7439)
lua : add -D lua-vanilla, which emits code with reduced functionality but no additional lib dependencies
General improvements and optimizations:
all : [breaking] reserved `operator` and `overload` as keywords (#7413)
all : made `final` on structure fields invariant (#7039)
all : [breaking] disallowed static variables that have no type-hint and expression (#6440)
all : added display/typeDefinition to display protocol (#7266)
all : fixed various display-related problems
all : made parser in display mode much more tolerant
all : allowed assigning `[]` where `Map` is expected (#7426)
all : unified various parts of the String API across all targets
php : Optimized haxe.ds.Vector (VectorData is not Array anymore)
php : Optimized `Map.copy()` and `Array.copy()`
php : Optimized iterators of `Map` and native arrays.
php : Support native PHP generators. See `php.Syntax.yield()` and `php.Generator`
js : updated HTML externs
eval : improved object prototype field handling (#7393)
eval : optimized int switches (#7481)
eval : improved IntMap and StringMap performance
eval : improved performance of instance calls
Removals :
all : disallowed get_x/set_x property syntax, use get/set instead (#4699)
all : disallowed default values on interface variables (#4087)
all : disallowed `implements Dynamic` on non-extern classes (#6191)
all : warn about expressions in extern non-inline fields (#5898)
all : removed `-D use-rtti-doc`, always store documentation instead (#7493)
all : disallowed macro-in-macro calls (#7496)
js : removed jQuery and swfobject externs (#7494)
Bugfixes:
all : fix GC compacting too often in server mode
all : [breaking] `function () { }(e)` is no longer parsed as a call (#5854)
all : fixed various minor inlining issues
all : disallowed `return null` from Void-functions (#7198)
all : fixed various pattern matching problems
all : fixed compiler hang in display mode (#7236)
all : fixed the XML printer trimming CDATA content (#7454)
all : fixed invalid visibility unification with statics (#7527)
php : Escape `$` in field names of anonymous objects (#7230)
php : Generate `switch` as `if...else if...else...` to avoid loose comparison (#7257)
cs : fixed bad evaluation order in structures (#7531)
eval : fixed various problems with the debugger
eval : fixed Vector.fromArrayCopy (#7492)
eval : fixed bad string conversions on invalid + operations
Standard Library:
all : [breaking] made Lambda functions return Array instead of List (#7097)
all : added haxe.iterators package
all : improved StringTools.lpad/rpad/htmlEscape implementation
2018-06-12: 4.0.0-preview.4
New features:
all : added JSON-RPC-based display protocol
all : allow `enum abstract` syntax instead of `@:enum abstract` (#4282)
all : allow `extern` on fields instead of `@:extern`
all : support signature completion on incomplete structures (#5767)
all : support auto-numbering and auto-stringification in enum abstracts (#7139)
all : support `Type1 & Type2` intersection syntax for type parameter constraints and structures (#7127)
General improvements and optimizations:
all : reworked CLI usage/help output (#6862)
all : implemented `for` loop unrolling (#3784)
all : metadata can now use `.`, e.g. `@:a.b`. This is represented as a string (#3959)
all : [breaking] disallow static extensions through abstract field casts (#5924)
all : [breaking] disallow static extensions on implicit `this` (#6036)
all : allow true and false expressions as type parameters (#6958)
all : improved display support in many areas
all : support `override |` completion
all : make display/references and display/toplevel actually work sometimes
all : allow `var ?x` and `final ?x` parsing in structures (#6947)
all : improved overall robustness of the parser in display mode
all : allow `@:commutative` on non-static abstract functions (#5599)
js : added externs for js.Date (#6855)
js : respect `-D source-map` flag to generate source maps in release builds
js : enums are now generated as objects instead of arrays (#6350)
eval : improved debugger, support conditional breakpoints
Removals:
all : moved haxe.remoting to hx3compat
js : moved js.XMLSocket to hx3compat
neko : moved neko.net to hx3compat
all : removed support for `T:(A, B)` constraint syntax
Bugfixes:
all : fixed various issues with diagnostics
all : fixed fields with default values for `@:structInit` classes (#5449)
all : fixed `Null<T>` inconsistency in if/ternary expressions (#6955)
all : fixed visibility check related to private constructors of sibling classes (#6957)
all : fixed @:generic naming (#6968)
all : fixed handling of type parameters in local functions (#6560)
all : fixed resolution order between `untyped` and type parameters (#7113)
all : fixed unification behavior in try/catch expressions (#7120)
all : fixed field type being lost for Int expressions on Float fields (#7132)
all : cleaned up `inline` handling (#7155)
display : fixed completion in packages starting with underscore (#5417)
php : fixed Reflect.callMethod with classes as first argument (#7106)
eval : fixed internal exception surfacing in some context calls (#7007)
eval : fixed Type.enumEq (#6710)
flash : fixed silently swallowing exceptions in getters/setters when invoked with Reflect methods (#5460, #6871)
Standard Library:
all : added `resize` to Array (#6869)
all : [breaking] removed `return this` from some haxe.Http methods (#6980)
2018-02-23: 4.0.0-preview.3
See full commit history at https://github.com/HaxeFoundation/haxe/compare/4.0.0-preview.2...4.0.0-preview.3, notable changes below:
New features:
all : added new function type syntax (`(a:Int, b:String)->Void`) (#6645)
all : added column to StackItem.FilePos (#6665)
all : added `-D warn-var-shadowing`
all : added haxe.Log.formatOutput (#6738)
js : added js.Syntax class for generating unsupported JavaScript syntax in a type-safe analyzer-friendly way
js : added js.Map and js.Set and js.JsIterator extern definitions (ES6)
hl : added hl.Format.digest, use it for native Sha1/Md5
General improvements and optimizations:
all : made all non-warning/non-error compiler messages output to stdout (#4480)
all : make DCE keep constructor if any instance field is kept (#6690)
all : make `final` in structures use class notation
display : added `this` and `super` to toplevel completion (#6051)
php : implemented direct method comparison. No need to use `Reflect.compareMethods()`
php : added `php.Syntax.code()` instead of deprecated `untyped __php__()` (#6708)
php : added methods to `php.Syntax` for each php operator: `??`, `?:`, `**` etc. (#6708)
python : add ssl support for http requests
python : improve Sys.print(ln) code generation (#6184)
js : generate faster code for `x.iterator()` calls (#6669)
js : rework exception handling, added js.Lib.getOriginalException (#6713)
js : generate `value instanceof MyClass` instead of `Std.is(value, MyClass)` (#6687)
js : use lazy getter for HaxeError.message instead of calling String(val) in the ctor (#6754)
Removals:
php : removed `php.Syntax.binop()` (#6708)
Deprecations:
php : deprecated support for `untyped __php__`, `untyped __call__` etc. Use `php.Syntax` instead.
Bugfixes:
all : delay interface accessor generation properly (#6225, #6672)
all : fixed unbound variable error in anonymous functions (#6674)
all : fixed abstract `@:to` used when `from` is available in a specific case (#6751)
all : sys.Http: fix chunked encoding handling (#6763)
all : fix some invalid Json being accepted by haxe.format.JsonParser (#6734)
all : fixed haxe.format.JsonPrinter for instances of classes to make it produce consistent result across targets (#6801)
all : fixed autogenerated constructor for extending @:structInit classes (#6822, #6078)
js : fixed saving setter to `tmp` var before invocation (#6672)
lua : fix toString behavior in the case of -0 (#6652)
lua : properly bind field functions when passed as arguments (#6722)
php : don't fail on generating import aliases for classes with the similar names (#6680)
php : fixed `Sys.environment()` to also return variables set by `Sys.putEnv()`
php : fixed `sys.net.Socket.bind()` (#6693)
php : fixed appending "sqlite:" prefix to the names of files created by `sys.db.Sqlite.open()` (#6692)
php : made php.Lib.objectOfAssociativeArray() recursive (#6698)
php : fixed php error on parsing expressions like `a == b == c` (#6720)
php : fixed multiple file uploads in php.Web.parseMultiPart() (#4173)
php : fixed an issue with "Object" used as a class name for PHP 7.2 (it's a new keyword in php) (#6838)
eval : don't lose dynamic function inits from parent classes (#6660)
cs : fix order-dependent enum type parameter issue (#6016)
2017-10-08: 4.0.0-preview.2
New features:
all : added final keyword (#6596)
General improvements and optimizations:
all : replaced some occurrences of List with Array
all : changed haxe.xml.Fast to an abstract
all : improved optimization when comparing against `null`
all : added support for `case var x` syntax and detect possible typos (#6608)
php : changed `--php-prefix`, `--php-front` and `--php-lib` to `-D php-prefix=`, `-D php-front=` and `-D php-lib=` respectively
Removals:
all : moved haxe.unit to hx3compat
all : moved haxe.web.Request to hx3compat
php : dropped php5 support; minimum supported php version is 7.0 now
Bugfixes:
all : fixed issue with various functions not being displayed in macro context (#6000)
all : fixed invalid static extension lookup on `super` (#3607)
all : fixed typing error when constructing enums with abstracts over functions (#6609)
all : fixed bug that skipped checking @:from typing in some cases (#6564)
all : fixed Int64 parsing of negative numbers that end in a zero (#5493)
all : fixed top-down inference when constructing enums (#6606)
eval : fixed bug with equality handling
eval : fixed issue with file creation not defaulting to binary
eval : fixed invalid override detection (#6583)
eval : fixed infinite recursion when printing arrays/vectors
cs/java : fixed DCE bug that would lose toString method of thrown objects
php/python : fixed some bit operators for Int32 (#5938)
php : fixed accessing `static inline var` via reflection (#6630)
php : fixed Math.min() and Math.max() for NAN on PHP 7.1.9 and 7.1.10
js : fixed js syntax error for `value.iterator--` (#6637)
Standard Library:
macro : added have.display.Position and PositionTools.toRange (#6599)
all : moved List to haxe.ds (#6610)
2017-09-12: 4.0.0-preview.1
New features:
all : reworked macro interpreter
all : added support for arrow functions
General improvements and optimizations:
js : improved generation of `break` inside `switch` inside loops (#4964)
cs : improved generation of enum classes (#6119)
sys : the `database` parameter of `Mysql.connect` is now optional
js : updated jQuery extern (js.jquery.*) for jQuery 1.12.4 / 3.2.1 support.
Makefile : default Unix installation location $(INSTALL_DIR) changed from /usr to /usr/local.
Makefile : default Unix std location $(INSTALL_STD_DIR) changed from $(INSTALL_LIB_DIR)/std to $(INSTALL_DIR)/share/haxe/std.
Removals:
all : removed --eval command line argument
sys : SPOD (sys.db.Object, sys.db.Manager and friends) was moved into a separate library `record-macros` (https://github.com/HaxeFoundation/record-macros)
js : js.JQuery and js.SWFObject were moved into hx3compat library (https://github.com/HaxeFoundation/hx3compat),
it's recommended to use more modern js.jquery.JQuery and js.swfobject.SWFObject classes.
all : moved haxe.web.Dispatch into hx3compat library (https://github.com/HaxeFoundation/hx3compat).
Bugfixes:
php7: fix Reflect.field() for strings (#6276)
php7: fix `@:enum abstract` generation without `-dce full` (#6175)
php7: fix using enum constructor with arguments as a call argument (#6177)
php7: fix `null` property access (#6281)
php7: fix setting values in a map stored in another map (#6257)
php7: fix haxe.io.Input.readAll() with disabled analyzer optimizations (#6387)
php/php7: fixed accessing enum constructors on enum type stored to a variable (#6159)
php/php7: fix "cannot implement previously implemented interface" (#6208)
php: fix invoking functions stored in dynamic static vars (#6158)
php: fix field access on `new MyClass()` expressions wrapped in a `cast` (#6294)
Standard Library:
all : added `EReg.escape` (#5098)
all : `BalancedTree implements `haxe.Constraints.IMap` (#6231)
2018-01-31: 3.4.5
General improvements and optimizations:
dce : optimized DCE performance (#6181)
Bugfixes:
dce : don't remove constructor if any instance field is kept (#6062)
js : fixed saving setter to `tmp` var before invocation (#6672)
php7 : don't fail on generating import aliases for classes with the similar names (#6680)
php7 : fixed appending "sqlite:" prefix to the names of files created by `sys.db.Sqlite.open()` (#6692)
php7 : made php.Lib.objectOfAssociativeArray() recursive (#6698)
php7 : fixed php error on parsing expressions like `a == b == c` (#6720)
php/php7 : fixed `sys.net.Socket.bind()` (#6693)
2017-10-08: 3.4.4
Bugfixes:
flash : fixed flash target broken when compiled with OCaml 4.05 (#6589)
php7 : fixed accessing `static inline var` via reflection (#6630)
js : fixed js syntax error for `value.iterator--` (#6637)
cpp : fixed evaluation order problem when constructing enums (#6643)
2017-09-10: 3.4.3
Bugfixes:
all : fixed DCE issue with interface fields (#6502)
cpp : fixed return typing for embedded closures (#6121)
php7: fixed `@:enum abstract` generation without `-dce full` (#6175)
php7: fixed using enum constructor with arguments as a call argument (#6177)
php7: fixed accessing methods on dynamic values (#6211)
php7: fixed `null` property access (#6281)
php7: fixed setting values in a map stored in another map (#6257)
php7: implemented `php.Lib.mail()`
php7: implemented `php.Lib.loadLib()`
php7: implemented `php.Lib.getClasses()` (#6384)
php7: fixed exception on `Reflect.getProperty(o, field)` if requested field does not exist (#6559)
php/php7: fixed accessing enum constructors on enum type stored to a variable (#6159)
php/php7: fixed "cannot implement previously implemented interface" (#6208)
php: fixed invoking functions stored in dynamic static vars (#6158)
php: fixed field access on `new MyClass()` expressions wrapped in a `cast` (#6294)
macro : fixed bug in addClassPath that overwrites macro class paths with context class paths
2017-03-20: 3.4.2
Bugfixes:
cpp : fixed issue with @:native names being prefixed with :: (#6086)
cpp : fixed issue with return type handling (#6103)
cpp : fixed inaccurate line numbers that threw off debugging
php7 : fixed generation of `[][0]` constructs (#6090)
2017-03-17: 3.4.1
New features:
php7 : added source maps generation with `-D source_map` flag.
General improvements and optimizations:
cpp : added cpp.Star and cpp.Struct to help with extern typing
lua : cleaned up various parts of the standard library
Bugfixes:
all : fixed compilation server issue with two identical @:native paths on extern abstracts (#5993)
all : fixed invalid inling in a specific case (#6067)
all : fixed various display related issues
all : fixed inline super() calls missing field initializations (#6097)
all : consider UNC paths to be absolute in haxe.io.Path.isAbsolute (#6061)
cpp : improved typing of some Function/Callable-related types
cpp : fixed problem with line numbers when debugging
hl : various fixes and improvements
php : fixed FileSystem.stat() for directories on Windows (#6057)
php/php7 : fixed invalid result of Web.getPostData() (#6033)
php7 : fixed invalid access to length of string in some cases (#6055)
php7 : fixed infinite recursion on MysqlConnection.close() (#6056)
2017-01-31: 3.4.0
General improvements and optimizations:
all : support completion for static extensions (#5766)
all : removed neko dependency for macros, use PCRE instead
all : disabled analyzer optimizations by default, re-enable with -D analyzer-optimize
php7 : generate native `$v instanceof MyType` instead of `Std.is(v, MyType)` where possible for better performance
php7 : added @:phpNoConstructor meta for externs which do not have native php constructors and yet can be constructed
php7 : greatly reduced amount of generated tmp vars
php7 : `Array` performance improvements
hl : made various improvements
Bugfixes:
all : fixed `using` picking up non-static abstract functions (#5888)
all : fixed issue with side-effect detection when optimizing (#5911)
all : fixed issue with zlib bindings causing zlib_deflate errors (#5941)
php7 : Allow user-defined modules in `php` package (#5921)
php7 : Dereference some of `php.Syntax` methods if required (#5923)
php : fixed assigning a method of dynamic value to a variable (#5469)
php : fixed missing initialization of dynamic methods in classes with empty constructors (#4723)
2016-12-24: 3.4.0-RC2
New features:
js : added API documentation to HTML externs (#5868)