-
Notifications
You must be signed in to change notification settings - Fork 171
/
ChangeLog
3859 lines (3481 loc) · 176 KB
/
ChangeLog
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
New in 2020.12
6model:
+ [ce0cbf58,372e4341,ed15b258,1e98d73b,93aae582,93a1ba85,04063d19,
d65501b2,1b2867fb,1f695ac6,5048630d,d8ecb325,1dd5b3c7,c544ca9f,
897d2e98,3833c31e,9c527362,3ab21b9e,b3fa6df2]
Hash allocation as a single memory block
+ [730596d0,62828269,bd6b0b32,6fac5ab2,eb33fb55,c7811142,99aab70e,
2b20583f,52a516f6,358e7fd5,491e8dcd,46634be8,b432533e,2913e0ac,
30fbd9ab,00f29c72,7d6107e6,a024f543,37c2d2d6,7caffe8a,2e208823,
ffb2031b,fecfad19,d9dccf25]
Store some hash bits in the low bits of the hashtable metadata byte, with the
probe distance in the high bits, and the split between the two updated dynamically
+ [bed0a49f] Early exit gc_mark for VMArray+MVMHash if able
+ [9fbcdb4d] P6opaque's `spesh` must handle P6bigint values inline, as some are too big
+ [4cfde6ed,ac941c0d,8d68b18f] Eliminate static race condition
+ [5a21247e] Improve performance of repeated `unshift` calls
+ [b8653cae] Turn gen2 default allocation off on (de)serialization failures
Core:
+ [5f1712cb,741e6acd,868de8cc,9b9de0ab,60b47f62,175525ce,c2f3e04b,01c0950d]
Replace `MVM_box_{int,num,str,uint}` and `MVM_unbox_str` with calls to
`MVM_repr_box_{int,num,str,uint}` and `MVM_repr_get_str`
+ [490ee80d] Make curcode OP inlinable
+ [998ea76a] Calling `MVM_exception_throw_adhoc` in the spesh worker should be an oops
+ [fa9b6659] Use simpler stdio calls in exceptions.c where possible
+ [ec507862] Add `MVM_set_running_threads_context`
+ [0c3a38fa] Move `MVM_{set,get}_running_threads_context` to threadcontext.h
+ [34e06864] Simplify and inline `MVM_nativecall_find_thread_context`
Documentation:
+ [ae5f7ad4] Update some docs to Raku era
JIT:
+ [fbd386a0,7bdfb38b] On Apple Silicon with arch arm64, do not attempt to JIT
+ [3838247e] Add word and byte-sized return value macros to the lego JIT
Math:
+ [70cefcff] Minimally exact bigint/bigint => num conversion, including rounding
Strings:
+ [a6118ff2] New debug helper: `MVM_dump_string`
New in 2020.11
6model:
+ [af9ebffb,ffc8a269,75177470,38a2f815,2e8b5657] Fix interning of parametrics
+ [3c5deb2f] Implement serialize/deserialize of CStr REPR
+ [a37cd763,cbb92b03,dfbdcc9d] Eliminate pointer mismatch warnings on big endian systems
+ [2a98b8f3] MVM_nativeref_{read,write}_lex_i should handle uint8, uint16, uint32
+ [608b90eb] No need to MVMROOT `root` twice in `get_attribute`
Core:
+ [88722e8e] Fix zeroing of reallocated memory in MVM_recalloc
+ [1eda12a0] Use `foo(void)` instead of just `foo()` for functions that take no arguments
Platform:
+ [18e6f94e] Import pthread on Windows to get a type
Strings:
+ [cefec1fb] Regenerate Unicode database files for v13.0, v13.1
+ [2cac07c9] Regenerate unicode_db to fix minor comment difference
+ [4ced726f] Use MVM_{malloc,realloc,calloc,free} consistency
+ [55964708] `swap_bytes` in utf16.c needs to also swap bytes on big endian platforms
Tooling/Build:
+ [f212c081] Update generation scripts for Unicode 13.0, 13.1
+ [004e4bc7] The probe for `pthread_setname_np` needs prototypes from <string.h>
+ [6a2284e6,aa83051a] Report the lines that caused coverage
+ [7167b3d1,56fca429] Remove unused, unneeded and misspelled block filter
New in 2020.10
6model:
+ [fb992950] Add MVM_str_hash_iterator_target_deleted() for HASH_DEBUG_ITER
Core:
+ [df77d3cf] Simplify and optimize isprime_I
+ [8852896d] A more complete fix for the hash max probe distance bug
+ [a27c7882] Make lookup table in MVP_round_up_log_base2() based on uint8_t
+ [0015fd05] Re-instate meaningful hash iterator debugging inside HASH_DEBUG_ITER
+ [60070970] oops if MVM_fixed_size_alloc() is called for a size of 0 bytes
Debug Server:
+ [3c3a24bf] Fix two *printf size warnings reported on ILP32 platforms
IO:
+ [95d21703] Minor optimization of MVM_file_isexecutable on Windows
+ [882dbf04] Add a function to fix up the STD IO handles
Strings:
+ [a989f7b5] `char` can be unsigned. Rewrite the "is it ASCII?" test to handle this too
Tooling/Build:
+ [dc50eddd] For the pthread_setname_np probe, use an auto char array instead of malloc
+ [4f5787d3] Create a unicode.c with #include directives instead of generating it with cat
New in 2020.09
6model:
+ [497748f7] Split `flags` in struct MVMCollectable into `flags1` and `flags2`
+ [effc5549] P6int: make set_int and get_int globally available
+ [a526f424] Remove tiny indirection from MVMHash_at_key/bind_key
+ [9c6bb7ab] Deserialization: rely on MVMHash being the known repr
+ [f029d3c7] Deserialization: use P6int repr being known in read_ref
+ [88efde45] Deserialization: rely on P6str REPR being known
+ [b37770a7] Deserialization: rely on known REPR in read_array_var/int/str
+ [9caec0fc] Deserialization: rely on knowledge of owned_objects REPR
+ [2dfe1c53] Introduce MVMP6str_get_str and MVMP6str_set_str
+ [429bd31f] Introduce MVM_VMArray_bind_pos
+ [f01930b5] Introduce MVM_VMArray_push
+ [1fdfdf59] Fix endless recursion and segfault in dump_p6opaque
+ [124fe2be] copy_to should call MVM_gc_write_barrier with the *new* key's address
Core:
+ [381e3d69] MVMObjectId.gen2_add is now uintptr_t, instead of an actual pointer
+ [50d3311c] Better specialize boolification of boxed Num
Debug Server:
+ [fc9dd762] Reorder alloc/free of `c_key_name` in the debug server
IO:
+ [b243d017] Fix MVM_file_isexecutable() when being root
+ [96d32a1a] Don't duplicate file existence checks
Libraries:
+ [29ce8171] Update libuv to version 1.39.0
Other:
+ [b74b94d5,c61c18a2,2c294cbf,215854f8,040e9d63,2a271e16,aba462b2,
3043135c,0418b7af,9b423954,54899926,c3df90ea,07c7b4fe,5e146efb,
14d11334,2bf3a4e2,cff7a0cd,1aacf8f4,4af853d7,0f0d2103,ebd07472,
9d0f1b32,1b20ca88,2181d48d,e6e5cc90,41175efc,1413f9ce,2cce7319,
1ea0e520,04843cb1,a02c8e70,d85f38d8,d359a605,9f83de80,58193f0a,
d9c31aef,5660597a,e81219d4,be2f129c,b13d3de8,b08f8d45,f03ba463,
287d41eb,bac1ae1c,df72ab3d,d35c6e39,b0dac61c,ba847c25,754490c7,
390f30d4,a644e33f,2c7f96c2,282ea895,ac6c5be0,976a070c,0ac64285,
8a9586ee,8e24dc61,46d60c7b,3cf44324,6c4ba42f,e541297e,fbfc8a0f,
ef6a37b,e3ad7ced,590bac47,322c2e0b,25c70bfe] Introduce new hash implementation based on Robin Hood Hash
+ [8a3857,489ab696,63665640,004ce49c] make moar --dump use memmem to find "MOARVM\r\n" string
Platform:
+ [87ad486f,07721999] Fix MoarVM building on Sparc 64
Profiler:
+ [6441fa6b] Return `MVMHeapSnapshotSeen *` from seen in heapsnapshot.c
Tooling/Build:
+ [c3941772] Add 'macroify_mallocs.p6' script
New in 2020.08
Core:
+ [c0ed9e32] Make extop marks reachable again in MVM_op_get_mark
Debug Server:
+ [b78b523d][2a9f0f06] Implement `FindMethod` op and add a `name` field for it
+ [7a2881a8] Implement simplest case of `decont` op
+ [f6f12f5a] Fix compiler warnings
GC:
+ [da237717] Move MVM_malloc_trim call after MVM_gc_collect_free_gen2_unmarked call
Strings:
+ [393ae579] Fix case insensitive string matching with an empty string
Tooling/Build:
+ [6d5a3b02] Make `Configure.pl` executable again
+ [1f182b48] Add new `Configure.pl` flag `--dtrace` which allows to put DTrace points in the code
New in 2020.07
6model:
+ [32ce5f97] Constant-fold spesh-time-known unbox/decont_n/s
Core:
+ [44504309,8e75378f,1d52655e,d564695f] Introduce the setthreadname op
Debug Server:
+ [707f6ce7,12780324] Debugserver Protocol 1.2: add thread "name" field
GC:
+ [06d8cdd1] Fix compiler warning in GC debug code
JIT:
+ [19374884] Add JIT templates for return_(i|n|s)
Other:
+ [a4cb0c51,2a3290df,183becd2,0a0a9ba9,953bac6c] Give io loop thread and spesh thread a name
Spesh:
+ [9a9ca434] Propagate facts in set elimination in one more case
+ [af5b89b6] Give known type flag when turning return to box in inline
Unicode:
+ [e5d597d1] Eliminate $annotate_anyway, which is no longer used
+ [1d00a2b5] Don't add placeholders such as "<control>" to the Unicode names lookup hash
+ [07dbc19a] Don't change the name to NULL (occasionally, if it starts with '<')
+ [0369f512] Unwrap the generated codepoint_names to one entry per line
+ [cfe6ed8f] Consistent whitespace for the initialiser for codepoint_bitfield_indexes
+ [23dfde97] Fix building on older compilers by explicitly stating gnu99 usage
+ [67c8413f] Fix ucd2c.pl script error propagation
Tooling/Build:
+ [0c651c23] Fix downloading of Unicode data
New in 2020.06
6model:
+ [e4ff69495] Setup inlined CStruct assigned during construction
+ [57c8bb84e] Fix CStruct handling of inlined attributes
+ [55ee90b17][a5061624d] Add MVM_HASH_(BIND|GET)_FREE macros
+ [3149bbb4f] find_repr_by_name now holds mutex_repr_registry when reading repr_hash
+ [c70587551] Where possible, iterate over lexical_names_list instead of lexical_names
+ [290f518af] Free REPR data before throws and where appropriate, set `st->REPR_data` to NULL
+ [7a799da87] Copy lexical_names_list when copying a StaticFrame
+ [2922f3d1a] mutex_container_registry is held while reading from container_registry
+ [3fe584876] Use correct encoding for deserializing strings
+ [4d0da364d] Wrap all access to lexical_names with MVM_get_lexical_by_name
+ [3658e4cd1] Don't make a lookup hash for lexical names for frames with few lexicals
Core:
+ [de8955822] Fix segfault in bytecode dumper when local_types is NULL
+ [72f720788] Move check (return value+exit handler) earlier
+ [c1c25e33f] Remove the unused `tc` parameter of cleanup_all
+ [17969cfb5] Remove redundant if when reading bytecode
+ [396c90039] Don't obliterate lib_name in exception text of NativeCall
+ [9e12424fb] Show index of outer lexials in bytecode dump instead of ??
+ [520c35124] Allow for explicitly marking the mainline_frame in the bytecode
+ [5d98d8eb6] Remove name assignment in struct MVMDLLRegistry
GC:
+ [1a46b0ae7] Possibly fix MVM_panic from entering GC during spesh
IO:
+ [ee8f3af70] Always handle proc exec arguments verbatim on Windows
+ [780271899] Fix reading closed dir handles on Windows
+ [157387214] Fix closing a dir never read from on Windows
JIT:
+ [7f33af885] JIT atpos/bindpos for known i64 array
+ [680a8cc72] Remove prof_enter JIT template
+ [9b60b37ca] JIT getcurhllsym and gethllsym
Libraries:
+ [6ab7dab5f] Backport a change in libtommath to fix build on x86 Windows
+ [a4b195936] Update libuv to version 1.38.0
Other:
+ [8eb552323] Fix some possible double frees
+ [565e55ce1] Fix the order of some MVM_calloc arguments
+ [3f6e6582e] Convert MVM_free+NULL to MVM_free_null
+ [f47e6ee5a][6cf18281d][c1c25e33f][8cd9ca87c][e736c1fb8]
Free memory that had been allocated before a throw
+ [aeec50e0a] Simplify counting of lexical_names
+ [1bad1eff6] Simplify some MVM_string_ascii_encode calls
+ [9c758d5eb] Fix duplication of lists when MAST::Frames get written to bytecode multiple times
+ [a7f988940] Add methods WHICH and raku to MAST::Frame for easier debugging
+ [995c70ca8] Allow for MAST::CompUnit to share its lists with an outer compilation
+ [6c7ee4e8f] Add a method for clearing a cached index on a MAST::Frame
+ [c177e85cc] Remove two unused variables
Profiler:
+ [a48790029] Use FSA for alloc and dealloc counts
+ [2041902da] Remove a major source of space waste from alloc counts growth
+ [269d307a8] Add a layer of indirection between call graph and types/sf
+ [03c9154e8] Remove commented out profiler code
Spesh:
+ [9b60b37ca][af1475ec1] Spesh getcurhllsym and gethllsym
+ [12c7a44a8] Simplify MVMLexicalRegistry code
Tooling/Build:
+ [fc7922e5e][42a2424ba][eacb89a27][631008c61][932f5c208][b8506d45a]
[ac94564c7][a99ab1e4f][852576e7d] Add an AzureCI test setup
+ [bc904b8bd][0257ecac4][0dc625f18]
Add a new GCC plugin to find cases where an MVM_exception_throw_adhoc is possibly missing a free
+ [20a2a9114] Introduce UV_BSD to avoid duplication in Makefile
+ [06f041fb0][eafa7b39185a29f50271120b105d7087709f75f7] Fix build an FreeBSD
+ [fc092556b] Fix broken builds on older versions of GCC
New in 2020.05
+ [c59514234] Use the FSA for ConcBlockingQueue
+ [9294cbfcf] Use memcpy instead of strncpy
+ [bbb0cdbed,f03b23c63,12d572bb5,5863b0235] Fix some compiler warnings
+ [60a1a287e] Document cases where we know that no GC issues can appear
+ [070d0e66a] No longer MVMROOT MVMCompUnits as they are always allocated in gen2
+ [49ac793da,ad70770e1,e9baae8dc,a95e5ac32,845e8a3f1,a5e1fdd99,
651dc59de,8a7e56d9c,51ab0cb2f,c48e40b5b,62dc6c7f7,a39b63c99,
9b011b033,603831672,fd2742286,833339332,f9ca5cb05,f3cdc7575,
863e4104f,c2cf2f25b,7c7867c67,dae0220b0,142257b16,c93aa0098]
Fix numerous very rare but possible GC bugs
+ [4fbd2d0e2,57e798527,d4637c1a0,755309975,1fd9efae4,00def9fd9,
3ecce8be8,20c4a4a24,24e9082dc,899fff969,8edc0b506]
Add a proof of concept of a GCC plugin for detecting GC invariant violations
+ [ab089e947] Align offsets in P6opaque.c
+ 233609b52f] Fix some Clang compiler warnings in the profiler
+ [dcbdb571a] Fix SEGV in MVM_spesh_plugin_guard_list_mark
+ [bb27aeb11] Don't null-terminate string when stringifying int
+ [6546027a1] Improve handling of errors in native callbacks
+ [bceb3398a] Use smaller buffer for native int to str coercion
+ [ca6534d20] Fix deadlock when trying to report an unsupported NativeCall return type
+ [1aa555fe1] Fix segfault caused by freed comp unit strings when profiling
+ [dbed72d76,b6bba6945,54ca9090f] Improve memory usage of utf8-c8 encoding
+ [1c392b4e4,3758e9a82,5c9510c32] Make profiling more stable, resolving potential panics
+ [4dc99b55d] Add more ops to be profiled for allocations
+ [6975a6595] Fix bogus test
+ [e7fee00d1] Include system headers after headers local to MoarVM in the Makefile
+ [ec53e4dfc] Give MVMSpeshAnn an "order" field to improve diagnostic output
+ [05c290522,0ce4cbe94] Let encode take a preallocated buffer
+ [1bd5f19e0] Fix a tiny mistake in containers implementation
+ [6baf0de4a] Add a value_desc_cont container descriptor, which brings the needs of Rakudo's Scalar into the VM
+ [4fb85a017] Add missing break statement
+ [3438ad2a4,19a7154cf] Fix lego JIT implementation of takenextdispatcher
+ [24f663cf5] Free malloced data before leaving the function
+ [21fa394a8] Remove remnants of the old mast compiler to fix memory leak
+ [035eae193] Fix interned callsites getting leaked when fixing up inlines
+ [768e6c2f3] Fix invalid reads when freeing native callback cache
+ 282989882d] Fix a leak in JIT compiler
+ [92f1935d7] Fix potential segfault when failing to compile JIT code
+ [ada1cadaa] Fix a leak in the spesh thread
+ [ae71ac80d] Fix NativeCall leaking sym_name on cleanup
+ [c82ff9d73] Destroy vectors that were previously init'ed
+ [09b88efb0] Free some memory calloc'ed when making spesh plans
+ [48da6b291] Implement calculation of unmanaged size for CArray
+ [edb6f8726] Free compunits loaded from bytecode upon dealloc
+ [15e94eecb] Bounds check codepoint passed to chr
+ [a6bc2a2a6] Add missing args spesh coercion validation
+ [f2a52cf5d] Make OSR work in frames from invokewithcapture
+ [162b68b6b,b77aa1622] JIT nextdispatcherfor
+ [f47f53110] Update libuv to version 1.35.0
+ [9a706ba08,12a447318] Improve update-submodules.pl
New in 2020.02.1
+ [0596b8bad] Fix compiling with musl
New in 2020.02
+ [ca2a4c4c5] Resolve hostnames given a socket type, protocol, and passivity
+ [d606d9112,b1ff3d826,cf44a3686,cf44a3686,7920f2cc4,cfecd54bd,82f2719ce,e9a63e03f,296bedfa6,
3bbab8c4b,f56248139,5a2f4ed47,056c523db,192f0433c] Switch our libtommath to upstream's 1.2.0
+ [17935040a,1fbbb9335,a51428429,7877b0376,e67022405,10f98288c,f32b383cc,76d34faf1,d9c087f36]
Handle return values from libtommath functions
+ [1d80b6038] Fixes for MVM_bigint_pow
+ [dfdaf19a8] Use right size+sign in comparison in MVM_bigint_rand
+ [9709537d9] Serialize the names of closures
+ [f47f53110] Update libuv to version 1.34.2
+ [0814ab4d8] Negative numbers should not be prime
+ [2296bcaed] New libtommath that builds bn_mp_set_double.c...
+ [f7a3a5ccd] Implement `--git-cache-dir` Configure.pl option
+ [4d7c7e142] Clear callsite of bottom frame when uninlining
+ [657b536cf,2cc4d3027] Update dyncall submodule
+ [978480b28] Mark cmp_tc static to avoid linker errors
+ [a71eee4c2] Allow closing handle bound to async proc stdin
+ [dd20883c3] Align MVM_args_get_required_pos_num with what the JIT actually expects
New in 2020.01.1
+ [105d09d62] Fix NativeCall libraries losing state during repossession
+ [7b8ed6308,a3ec7f315,921c8de84,9d053b8e9,8ac8afcc2,611532317,0995f19b9,fce208cb1,72941ee22,
9166ea591,61ac671ea] Fix several more compiler warnings
New in 2020.01
+ [d7b6855d3,7a93b2897,fc41473c0,3806735a4,ae66545c7,34537cfd0,4bf923dbd,596a0b287] Fix
segfault caused by deopt all in NativeCall callback
+ [610e05fa0,c799de421,357adb45b,eb13ccad1,2ac1fa27f,ff1e55617] Fix relocatability of
modules using NativeCall
+ [0e0f5bf6d] Allow getting absolute epoch startup time of VM in vmeventsubscribe
+ [9442b1a7c] Add support for '−' (U+2212) minus for nqp::radix(_I)
+ [cd64bf94c,0074094c2] Clean up MVM_io_resolve_host_name and make it more portable
+ [e35bd5f0e] Fix segfaults caused by JITed takehandlerresult returning NULL
+ [e94893f89] Fix frame walker segfaults caused by deopt of a caller on a different thread
+ [8f2d0d781] Detect files that cannot be synched also on MacOS
+ [be5f206c8] Remove bogus debug assertion in the GC's process_worklist
+ [4924390c7,eb3d981d7,47892d379,3c2a933b5,1de3c40c0,5464dd47c,e556879ad,1f31143e7,31a1b22c6,
631d361c6,795b320b0,bed44f1d5,3d2f8d739,21f9c3284,133b34c03,26c9750c4,7f486360b,70a768c14,
487f39577,d0d99f85c,153771bc1,03833e369,f26a1783c,758ef58b0,d81e9218f,1e731b6f9,f35e1d8c5,
91e3530ac,cac9b9a9d,4ce5570e2,d91f86ba8,de1bebc72,8ac4ac2cf,13b618c25,f59f8f5de,20804df5b,
14f581683,a335add83,ef7d0ecf4,8a9444b11,d4f20a191,61205646b,4f4c304ba,a06a0edf3,29acd43f0,
0150c1d82,9a59fdc9a,b6327c603,a0d545b13,85f5604e7,5d5b86e30,9bce55092,9ba1c25a5,4bdc7638c,
119a3f847,163da25a8,412c5db96,6953ca60e,c68ed2b03,a566f53f8,a173cc0a2,6ddcc0bb3,21215b756,
740ac6e02,0a80653b5,0f9013a91,9ee85e7c5,caaf83db6,ca6012a68,af34daa42,8d0b50d3f,97615be0a,
1b2f72e5e] Move to C99, compile with -Wall -Wextra and fix preexisting compiler warnings
+ [ccfc14fcb] Fix function pointer return values treated like uchar when using libffi
+ [23daabadc] Fix memory corruption after cancelling signal
+ [836396c74] Jit ordbaseat
+ [f10a31b43,a26d7fff8] [JIT] Add missing breaks
New in 2019.11
6model:
+ [8a5cc88a,af76729d] Fix incorrect conditional in deserialize_context
+ [59fa3b82] Fix for run-away CORE context on closures
+ [1b0950e3] Give higher layers a way to check if a nativecall site is set up
+ [47cd6c66] Fix the CStr REPR's copy_to function
+ [d52282b2] Fix possible deadlock in finish_parameterizing
+ [fd2659ed] Fix possible access to fromspace in code_pair_configure_container_spec
+ [366a7b7a] Add missing write barrier to MVM_6model_get_how
+ [a4a599e3] Fix possible access to fromspace in MVM_code_location
+ [0864cb76] Don't crash with read-int/write-int on unsupported reprs
+ [177706fe] Better error message for P6opaque in multidim functions
+ [b7151da7,d76ebbe4] Fix possible memory corruption in CStruct's, CPPStruct's and CUnion's get_attribute
+ [289ccd8c] Don't segfault when trying to get the debug name of a NULL object
+ [1a973a37] Add elem count in ConcBlockingQueue to telemetry log
+ [4a90335f] Fix possible access to fromspace in CStruct's get_attribute
+ [39a4f05f] Fix possible segfaults related to corrupted CPPStruct STables
+ [23fd0449] Fix CStruct's compute_allocation_strategy leaving the allocate_in_gen2 flag on by accident
+ [ca9d44f2] Fix possible access to fromspace in MVM_repr_dimensions
+ [0a12e3c4] Fix ConcBlockingQueue possibly unshifting an outdated item pointer
Core:
+ [a5d553cd] Add missing concreteness checks to most array ops
+ [95f69be8] Implement serialization of NativeCall reprs with dyncall
+ [efeec455] Dynamic library loading works with unicody paths on Windows
+ [e0e3ea9f,fa2e4f21,fa2e4f21,01f85c8b,ddf5b56b] Add more context to error messages
+ [55b6f734] Make sure autobox on return and slurpy nameds uses int cache
+ [e9e0731a] Make sure intcache type is rooted
+ [9138c699] Fix possible access to fromspace in MVM_frame_move_to_heap
+ [3f97d73d] Fix a subtle bug in instrument_graph
+ [8622835b] Fix possible memory corruption in MVM_frame_capture_*
+ [90252a8f] Fix possible access to fromspace in MVM_args_set_result_(obj|str)
+ [1fd0fdcd] Fix stack simulation losing track in some cases
+ [cfc5d000] Give error message improvement to libffi as well
+ [703fd647] Fix a nativecall error message in dyncall
+ [3e715b42] NativeCall: output index of argument with repr mismatch (#1141)
+ [e2f57637] Fix bogus "Decoder may not be used concurrently" after exceptions
+ [00a1ddb9] Fix GC processing uninitialized data in autoclosing of frames
+ [2dbf6225] Fix comp units using obsolete pointers to their filename
+ [e0bc6e2f] Fix slurpy arg handling possibly accessing an outdated arg context
+ [64a6f69c] Fix possible invalid memory access when throwing exceptions
+ [4ab1d425] Fix autobox possibly writing to an outdated target
Debug Server:
+ [85ce8ecc] Better error if getaddrinfo in debugserver fails
+ [b1bb9349] Prepend "Debugserver:" to errors/output originating from the debugserver
Docs:
+ [56fa7a0c] Improve naming in documentation
+ [1eeae85f] Document heapsnapshot format version 3.1
+ [ee18678e] Update "Features" part of readme
GC:
+ [b0b3fc8c] Fix obscure deadlock in run_gc
+ [329f669c,ea9b29e8] Fix race condition with exited threads still in the thread list
+ [bcc785d2] Fix overflow objects still belonging to exiting thread
+ [aa2270c7] Fix overflow objects getting freed prematurely on thread exit
+ [68666832] Fix segfaults in GCDEBUG_LOGs
+ [539f1d03] Fix possible access to fromspace in finalize_handler_caller
+ [fdc5eacf] VMEvent: put gc_promoted_bytes_since_last_full in GCEvent
+ [aa934648] Fix swapped parameters in call to profiler_log_gen2_roots
+ [1850b6c5] GCEvent shall report gen2root count from all TCs
+ [6f72c92f] VMEvent: divide timing numbers by 1000
+ [3faf1985] Introduce vmevent, "VM Event Subscription"
+ [24e2986a] Do heapsnapshot/instrumented data gathering earlier in GC
+ [7e190207] Log GC start a little later to fix profiling
+ [35101eb8] New GC debug level (3) triggers the GC on each mem allocation
IO:
+ [acd1156b] Use more appropriate flags with getaddrinfo
+ [16485506] Fix format strings in calls to MVM_exception_throw_adhoc
+ [36c35db1] Make MVM_file_is_rwx honor root and groups
+ [379ec77a,d9a067d4,2f4798b8,3fa99b4d,2f4798b8,...] IP6NS Grant: Improve hostname resolution
+ [5dfed008] Fix possible SEGV in async_spawn_on_exit
+ [6926a492] Fixed file permission interpretation problems around groups
+ [241be06b] Fix possible access to fromspace in MVM_dir_open
+ [2c9a92e9] Add a missing gc root for asyncsocket listen setup
+ [9c896d6c] Add gc pressure for process output read ops
+ [606c4437] Fix possible access to fromspace in UDP socket setup
+ [57a6d475] Add a missing gc root for asyncsocket listen setup
+ [bf3c6a97] Fix warning about directive in format string
+ [93739d56] Improve error when failing to spawn process
JIT:
+ [d5f5185b] We should not overwrite assigned type
+ [97e26c01] Fix bug in takedispatcher
+ [e594fbcb] Add missing cast to sp_p6oget_bi
+ [f8eca66b] Fix exprjit sp_p6oget_bi
+ [17475350] Syntactically distinguish let keyword variants
- [27dcb378] Implement exprjit of sp_bind_o
+ [2ac137c3] Use the new deopt index for synthetic guards
+ [e4a756c6] Deoptimization in the expression JIT
+ [f8b05151] Use correct deopt index for guard opcodes
- [d79e7d5a] Revert template compiler back to v5.10
+ [10404ee5] Jit the log, exp and ceil ops
+ [7f828342] Handle NaN in FP branching comparisons
+ [6c622553] Fix floating point comparisons
+ [7f8061a5] Support floating point comparisons
+ [27e9f979] Functions that return floating point values
+ [fb75f9a6] Compile with numeric function argument
+ [09c0df4f] A few more numeric tiles
+ [4002c19b] Make jit-dump.pl useful again
+ [d79c8306] Use the correct registers for numeric tiles
+ [cebb89ce] Basic floating point templates and tiles
+ [c9aebedb] Handle floating point registers better
+ [a62a2ff2] Spill live range compatible with requested set
+ [6b00c2b3] Live ranges are given register set
+ [4d65e467] Support floating point registers in load, spill and copy
+ [87710a12] Floating point support in the register allocator
+ [821e8535] Make STORE polymorphic on input
+ [3069ed4b] More rigorous type checking
+ [05297fa6] Split type check from expr type resolution
+ [0f33b570] Basic expression support for floating point operators
+ [c3af0d66] Try to select the first input register as output register
+ [b58bbf0f] Enfore input/output registers better
+ [9d34cb64] Enforce output-operand form in register allocator
+ [43138989] Minor debugging / structure improvements
+ [ed1ed12b] Reorganize JIT register definitions
+ [cfd81276] Parse oplist operands
+ [4407f68a] Move JIT-compile support libs to tools/lib
+ [e5076fc5] Autogenerate tile predeclarations
+ [b49fa493] Use bitmap for free register set
+ [9c969b1b] Add missing write barrier to lego JIT implementation of setcodeobj
+ [f0978d6a] Jit getuniprop_(int|bool|str)
+ [e5321a36] Jit captureposarg_n
+ [9f679f32] Jit and add a template for smrt_intify
Libraries:
+ [0f05efbb] Update to libuv version 1.33.0
+ [d24f6952] Use updated dyncall library with "execstack" fix
+ [eed5fe14] [DynASM] Take in REX encoding fix
Math:
+ [c390b30c] Fix possible access to fromspace in MVM_coerce_sI
+ [a001b7e4] Fix many memory corruption issues in bigint operations
Ops:
+ [d189b29b] Make socket family handling portable
Other:
+ [bb239a91] Fix MVMSpeshPluginState type defined twice
+ [5f177f58] Make MVM_HASH_RANDOMIZE properly control hash rand
+ [ff4f6031] Factor out run_deserialization_frame() to avoid code repetition
+ [b26638eb] Add MVM_vm_run_bytecode() as alternative to MVM_vm_run_file()
+ [1a8988c0] Add "use 5.020" to expr-template-compiler.pl
+ [7d23bd26] update_ops.p6: properly deeply clone spans data
+ [e4b87265] Add reference to roast Unicode update instructions
Platform:
+ [87d7f58d] Deduplicate and shorten open and fopen wrappers
+ [e127b849] Improve Unicode handling with paths
+ [9d6f4493] Fix possible access to fromspace in MVM_platfrom_uname
Profiler:
+ [0b531f9c] Implement the MVM_CONFPROG_DEBUG env var which enables control of confprog
+ [70bcaf90] Make unicode path fixes compile on non-Windows
+ [6ecbf6e0] Profiler: Fix uninitialized field in MVM_profiler_log_gc_start
+ [9f24debe] Profiler: Prevent overflow in the 'total exclusive time' calculation
+ [81f9ccdf] Profiler: Fix call graph node getting missed by the GC
+ [8e7e1210,289e9dfc] Silence some clang warnings and fix "mixed code/declaration" error
+ [5534e95f,1e448ece,...] Add new heapsnapshot format with zstd support
+ [4ca494f5] Profiler: Expose number of stolen gen2 roots
+ [87912784] Profiler: Put "stolen" gen2roots in profiler data
+ [370b9a29] Heapanalyzer: add debug "DUMP_EVERYTHING_RAW" to v3
Spesh:
+ [0f0e6d3a] Work around MSVC not coping well with preprocessor instructions inside an MVMROOT
+ [c61236f9] Fix access to freed memory in resolve_using_guards
+ [acb04a44] Fix possible memory corruption in resolve_using_guards
+ [3d83cb46] Add a few missing static keywords before a few functions
+ [40fcdb7e] Fix incorrect return type in get_effective_size
+ [3e8652ea] Add missing root for VMEvent SpeshOverviewEvent
+ [189ef298] Update deopt idx if we clone the deopt annotation
+ [dfbc5a45] Make deopt use index rather than target address
+ [c3e38bb9] Turn pushes/pops into MVMROOT again
+ [cf3b545e] Reinstate callsite during uninlining
+ [38915b93] Tweak spesh logging's new compunit handling/quotas
+ [b2287bc4] Fix possible memory corruption of spesh plugin guards by untimely GC
+ [557056bf] Fix formatting code warning in an error path
+ [e7bad16e] Fix pointer type mismatch warnings with a cast
+ [204eb28f] VMEvent: new event type: SpeshOverviewEvent
+ [269b73ee] Add missing break statement
+ [03d3db93] Sanity check if hash ever gets an initialize func
+ [aa2e96c4] Comment when slurpy hash has been created
+ [43e3d114] Output duplicate getarg ops in spesh log
+ [46516af4] Lower slurpy positional args to a set of getarg ops
+ [09bd015c] Give arg spesh more comments for when it bails
+ [d1af2f2f] Handle arg spesh native param passed a Scalar
+ [5c787f37] Only getlexperinvtype → constant if only one type record exists
+ [5b174f52] Allow param_*_ins ops to spesh when Int/Num/Str present
+ [b3469f92] Actually optimize smrt_intify when able
+ [654a136d] Fix panic in spesh when deserialization causes GC during fact finding
+ [4227c713] Fix possible invalid access to fromspace in spesh worker startup
+ [f18bfadb] Add missing MVMROOT in MVM_spesh_plugin_register
+ [5d8095b8] Spesh optimize smrt_intify like smrt_(num|str)ify
Strings:
+ [da19661e] Reset utf8 pointer to point at original string before use
+ [ff007f2f] Use right types/format string, pull dup code out
+ [0e412038] Show chars near bad bytes in another encoding path
+ [fece31c5] Free the correct things in encoding error path
+ [5f14524a] Show correct bad bytes in encoding errors
+ [5cf5c56b] Simplify freeing of buffer in UTF8_REJECT cases
+ [07983e4c] Fix possible access to fromspace in MVM_string_flip
+ [b49b5202] Fix issue #1163, gb2313 clang warnings
+ [8211189c] Add the reference of GB18030
+ [986f3403] Add GB18030 encode, decode and decodestream support
+ [695a24de] Fix memory corruption caused by missing write barriers in string ops
+ [7d7a2b73] Remove large sections of zeros in the conversion table
+ [709bb7ed] Add comments about how the conversion tables are generated
+ [5ffa9264] Generate conversion table from a source file
+ [bca6f392,f46e5d7e,07f6305f,6730e51f,e78080f6] Fix possible access to fromspace in some string functions
+ [78164189] Remove bogus MVMROOT from MVM_unicode_string_compare
+ [b614a7b4] Update collation data to Unicode 12.1
+ [8f425147] Update Unicode to 12.1
+ [9e6abe46,fc56c02c] Use a decode_handler function for decodestream
+ [75f1c965] Fixed an overflow problem
+ [9213f2f0] Fix duplicate includes
+ [73f28d38] Add GB2312 encode, decode and decodestream support
Tooling/Build:
+ [32003eec] Use `make` exit status as own
+ [8efd3825] Make Configure.pl and tools/update_ops.p6 executable
+ [277676a1] Add better support of PEA to spesh bisect
+ [fcdb8433] Configure.pl: Add missing return in has_native_library
+ [2bcb911d] Separate includes from submodules from system-wide includes
+ [53a6308c] Get moar build working with spaces in path
New in 2019.07.1
Core:
+ [79d21189] Bump level until after instrumenting instead of before to fix various races
+ [36cb624e] Avoid various races in profile/coverage/debug
+ [cb5787aa] Fix possible memory corruption in bindkey_*
+ [e99af058] Fix pointer arithmetic in inlined CArrays in CStruct/CPPStruct REPRs
Debug Server:
+ [58c54a1f] Unbreak debugger instrumentation
+ [052966bb] Init debug socket for Windows
Platform:
+ [7360ee5d] Fix GC rooting in MVM_platform_uname
Profiler:
+ [1c274772] Don't return null from filename()
+ [df226330] Add band_i, bor_i, bxor_i ops
+ [8f4997b3] Fix dealloc profile logging by following any forwarder
Spesh:
+ [536cff8b] Put limits on local and inline counts for inlining
Tooling/Build:
+ [cfead8e2] Only use -fno-ret-protector with Clang on OpenBSD if the JIT is enabled
+ [2501678a] Fix Configure.pl failing when --prefix /usr is passed
New in 2019.07
6model:
+ [065b2b42] When there's no .^find_method nor method cache, output debug name
+ [36469a62] Throw an exception instead triggering a segfault when trying to HAS before a type is defined
+ [fe472ce9] Enforce wb in get_attribute of C repr. Fixes non-deterministic segfaults in anything that non-trivially uses CStruct/CPPStruct/CUnion reprs
+ [9ed86e4c] Eliminate an unused collectable flag
+ [24b3ef1a] Fix inlining CStruct and CUnion in CPPStruct REPR instances
Core:
+ [f2ee9baa] Add freemem and totalmem ops
+ [1c279a23] Don't needlessly install VMNulls into ->work to reduce cost of entry into spesh'd/JIT-compiled frames
+ [f8743c11] Add type name to exception if a thing can't be coerced
Debug Server:
+ [61f0b7e8] Silence clang dangling-else & return-type warnings
Documentation:
+ [145149c2] Update bytecode docs to define SC acronym
+ [807c2dab] Add contribution guidelines
IO:
+ [3241e9f5] Fix memory leak in socket_read_bytes
+ [6bc095d8] Move freeing of event_loop_wakeup to after uv_loop_close
JIT:
+ [6053919e] Add exprJIT template for strfromcodes
+ [b55658b9] Store first and then initialize in 'create' expr template to fix potential race
+ [69033692] Fix decodeconf and add decoderepconf legojit
+ [c160a22f,69033692] Add decodeconf and decoderepconf ops to legojit
Libraries:
+ [a515819b] Update libuv to version 1.29.1
Math:
+ [0e7599e7] Throw if MVM_is_prime called with too many rounds
+ [2fe2f588] Use a cheaper way to force_bigint
+ [aad6fdc0] Greatly reduce allocation churn on bigint ops
+ [c5545770] Use mp_set_int in force_bigint when we know we have a 32-bit int
Ops:
+ [c20f896f] Skip numification in mast nodes code
Other:
+ [5b5e7f19] Clean up CMP object files on Windows when running `make realclean`
+ [75602b0e] Add the ability to detect the malloc_trim() function
Platform:
+ [dc3f36c0] Remove compiler warning that was accidently left in
+ [aeae1033] musl does not have malloc_trim, so only use it w/ glibc
+ [42ea81f3,aeae1033,75602b0e,dc3f36c0] Ask malloc to free kernel pages on GC collection to reduce max memory usage
Profiler:
+ [fbd48017] Remove profiling overhead from profiles
+ [807b92f9] Use strndup instead of malloc+strncpy
Spesh:
+ [ed1ce32f] Silence -Wlogical-op-parentheses warnings
Tooling/Build:
+ [44b69939] Fix warning in Configure in non-relocatable builds
+ [55b27c2a] Fix -fno-ret-protector flag passing on OpenBSD
+ [5f29b094] Fail when being requested to do a relocatable build and we can't
+ [b5172363] Default to doing a non-relocatable build
New in 2019.05
Other:
+ [97e28f07] Implement --no-relocatable Configure.pl flag.
+ [2b75a2ff] Use a relative RPATH in moarvm.
+ [62b58164] Update libuv to 1.26
+ [8f8026b1] Add MVM_execpath() to public API, a forward to uv_exepath(). The function is helpful to implement wrapper programs
6model:
+ [8fef1999] Reject out-of-bounds unbox slot numbers
+ [275098a2] Don't accept out-of-range repr ids
+ [7b112da3] Guard SCRef initialize against null SC
+ [ab21dd17] Guard serialization read against < 0 offsets
+ [bacfcf96] Heapsnapshot: Calculate CStruct unmanaged size
+ [fab0c4bd] Only Opt 32/16/8 Bit Access On Signed Integers
+ [9a4bbda3] Activate getattr_i Optimization On CStruct
+ [834db592] MVMSpeshLog: implement describe_refs for heap profiler
+ [ea83e229] ConcBlockingQueue: implement unmanaged_size for heap profiler
Core:
+ [2e87a0a0] Use C bitfields to save space in MVMOpInfo, makes these structs go from 40 bytes to 32 bytes
+ [65441793] Activate 2nd argument count check for invocations
+ [c90bd6b4] Guard getdynlex against no caller frame
+ [a92be015] Guard some ops in interp against type objects
+ [35976e24] Fuzzing: guard frame invoke error against null outers
+ [c8a44b8d] Make sure invalid indices for lexical vivify throw
+ [c10fee65] Handle inlining of outer lexical binds
+ [64679b99] Allow selection of max inline size per HLL. Makes it possible to set a maximum inline size limit per HLL
+ [5f706515] Simplify abs_n to just use fabs and also jit it (#1073)
+ [d1590671] Add uname op
+ [b51bb132] Add a newmixintype op
+ [28e2b38b] Add a smrt_intify op
GC:
+ [3dff3a2a] Ensure only one thread can take a heap snapshot or dump data at the same time
IO:
+ [741779ac] Better error handling of process stdin writes. Detect the case that we already closed its stdin handle
+ [adefbe4d] Avoid unbounded growth of active async task list
+ [0a9ccb11] Use UV_MAXHOSTNAMESIZE as cross platform MAXHOSTNAMELEN
JIT:
+ [645a70c0] Add backtrace and backtracestrings lego and exprjit template (#1085)
+ [3c2e98d4] Add istty_fh legojit (#1084)
+ [9e5196d8] Add typeparameterat exprjit template (#1080)
+ [0c6b3b1b] Add indexingoptimized exprjit template (#1078)
+ [e1dc1b39] Add fileno_fh legojit and exprjit template
+ [d568e681] Add typeparameterized exprjit template
+ [6421e512] Add resume exprjit template
+ [0b45ec7b] Add replace exprjit template
+ [5a6b9ea3] Add clone exprjit template
+ [33751f43] JIT sp_bind_i32 And sp_get_i32
+ [c5e43265] Make JIT of sp_get_o match the interp
+ [bfbfd0c1] JIT sp_bind_i32
Ops:
+ [081823ff] MAST Ops: remove redundant range checks
+ [8eb232db] Fix lexical to locals debug_map getting written to bytecode files in random order
Profiler:
+ Introduce confprog to allow profiling of specific subroutines
+ [423a9cc7] Fix misc. problems with profiling
+ [95094ae2] Count deallocated objects categorized by life time
+ [38252329] Heapsnapshot: properly handle empty debug name
Spesh:
+ [9cd8a06d] Set the default inline max size to 192 bytes
+ [5e363398] Avoid a bunch of malloc/free churn in code-gen
+ [ade57cee] Learn Type Fact About nativecallcast
+ [0d2968e7] Also call optimize_bb for unspecialized inlines
+ [bc98cb94,0d2968e7] Run optimize_bb over inlined code, Also call optimize_bb for unspecialized inlines
+ [5994d89c] Add facts to null op during optimize
+ [ff9870ec] Lliberalize eliminate_set to cover inlines
+ [960f4b67] Chase PHIs when retaining deopt info for inlining. Otherwise, we might not keep things alive for deopt points that need them to be alive if it was the PHI itself that got marked with deopt usages
+ [e41e355e] Add vivifying non-p6o object ops: sp_getvt_o and sp_getvc_o
Strings:
+ [295cde4f] Avoid duplicate checks in hash access
Tooling/Build:
+ [cc06ad28] Never build a relocatable moar on OpenBSD. OpenBSDs implementation of $ORIGIN in rpath is unreliable
+ [49c1eb07] Check for mixed toolchain on macOS
+ [12bfa1b6] Never build a relocatable moar on AIX
+ [0cb5eca4] update_ops: don't generate prepargs, as nqp does it by itself
+ [0e94d75a] Temporarily use -fno-ret-protector when building on OpenBSD to prevent segfault
New in 2019.03
Spesh:
+ New partial escape analysis allows objects to be replaced by registers
+ [03d4271c] Spesh optimize get/bind attribute for int32
+ [ff9666bd] Fix predecessor pointers when merging basic blocks in spesh
+ [75d5bc6e] Fix memory leak in inlining
+ [d42fd895] MVMROOT before allocation
+ [9eac21cb,d42fd895] Fix broken macro expansion on Windows. Fixes issue #1048
+ [215430c4] Lower bindattr_i On CStruct Objects
+ [a37c0bff] Fix wrong type selection for push_* And pop_*
+ [a6dad31d] Copy deopt usage info when doing guard reg split
+ [3629362f] Add deopt uses as needed for scalar replacements
+ [2d936a5a] Remove unused variable
+ [c29536d7] Implement deopt materialization of native attrs
+ [4081221b] Log target register of eliminated allocations
+ [0f5e2441] Correct a thinko, remove an unused variable
+ [357b8abc] Distribute deopt usages when inlining
+ [6d01c3cb] Use correct indexes for deopt usage chain lookups
+ [84451aa3] Switch on using the PEA deopt mechanism
+ [166d0acf] Log deopt offset to index outcome
+ [b4e059bd] Don't forget synthetic annotations
+ [62a8ae10] Only add deopt in for allocations we replace
+ [9562c74e] Note if deopt offset -> index resolution fails
+ [4f08a861] Materialize objects with object attrs during deopt
+ [77f36083] Don't confuse deopt offsets and indices
+ [6e1bcce9] Merge materialization deopt info during inline
+ [f85ae3c2] Record registers holding attrs to use in deopt
+ [ae3de1b6] Sketch out creating deopt/materialization info
+ [edfc8ffe] Keep a set of tracked registers
+ [fe7930e4] Dump materialization data
+ [e9eb9b32] Target register goes with deopt point
+ [7ee34c23] Preparations for deopt materialization
+ [685ba324] Fix inline end annotation motion on BB deletion
+ [072bf4b6] Handle non-merge case of PHI
+ [ba1f7cf3] Make it easier to grep out the EA opts
+ [1bfdb947] Do guard elimination during scalar replacement
+ [d9a0dd8b] Allow flow control, but not loops
+ [c19afcd5] Walk graph in reverse postorder for PEA
+ [895b1b0e] Properly tweak CFG after control flow op rewrite
+ [66d96aec] Handle int64, num64, and str attributes in PEA
+ [ac8f2095] Implement minimal escape analysis and scalar replacement (PEA)
+ [4c191154] Add BOOTHash to spesh cheat list
+ [3f5204d7] Disable inlining when running the debug server
+ [7fc6be10] Add a limit on spesh plugin guard set size
+ [909d354c] Allow dead instruction elimination in inlines
+ [0fef86cb] Save deopt usage info when writing bytecode
+ [c5bc342e] Fix rakudo build failure on big endian architectures
+ [07fe8e4a] Teach optimize_smart_coerce About Boot Types
+ [16d03884] Put inline-preventing insturction in spesh log
6model:
+ [19515dbd] Fix segfault in dump_p6opaque when an attribute holds a VMArray
+ [d626337b] CStruct bindattr_i Opt Shall Release Its Temp Register
+ [6ecbeb1f] DU Chain Of CStruct bindattr_i Opt Was Wrong
+ [2bc5ce7b] Fix segfaults related to corrupted CStruct STables. Fixes issue #2564
+ [07de9219] Fix compiler warnings on some printf specifiers
+ [45d15efe] Turn elems On VMArray Into Direct Memory Access
Core:
+ [682ca82f] Fix nativecall refresh clearing used child object pointers
+ [a6939d7c] randscale_n and rand_I are not pure ops, so don't mark them as such
+ [5431d50f] Ensure last_payload and plugin_guard_args are valid so spesh plugins can be used outside speshresolve
+ [600ded2b] Only read debug lexicals in bytecode version 6
+ [8c8b0b0f,600ded2b] Minimal handling of bytecode format version 6, Only read debug lexicals in bytecode version 6
+ [473324ee] Notice Specializable Instructions Everywhere In Bytecode
+ [1404d516] Support endian switching in writenum and readnum
Debug Server:
+ [d66c0708] Use debug local names in debug server
Documentation:
+ [6f92a01d] Specify debug name mapping bytecode format changes
IO:
+ [631cfdf6] Call strerror for directory errors so we get error text not just an error code on POSIX platforms
JIT:
+ [7ca62826] JIT compile getlexref_u*
+ [ce8249a3] Fix JITed extend_u8 accidentally extending 16 bits.
+ [ac078196] Fix rw args of native calls not getting updated if JIT compilation fails
+ [f818bd6d] Support double type arguments in NativeCall JIT
+ [f55ecdec] Fix harmless off-by-one preventing optimization
+ [e459d36b] Also JIT stat and lstat
+ [d6d057a2] Jit (open|read|close)_dir
+ [30ab2af3] Add op name to JIT "bailed completely" error
+ [583a2de8] LDLIBS should go after the source files, before output to fix TravisCI
+ [2ee7596d] Fix call to memcpy with NULL *src in lego JIT compiler
+ [45cf9013] Compile minilua with only the needed flags so it doesn't need to be compiled every time. See issue #999
+ [c9cd9880] Fix JIT compiled getcodename not always dieing on type objects
+ [caf7e4ff] Fix jump condition in JIT compiled getcodename
Math:
+ [eccbc854] Make MoarVM compatible with old & new LibTomMath. Fixes issue #1034
+ [f7204a3e] Fix name collision with existing LibTomMath Function. Fixes issue #1032
Ops:
+ [cbb6abc5] Add debug map state to MAST::Frame
+ [03304a37] Remove internal ops from MAST NQP modules
Other:
+ [5ed7108d] Remove obsolete MAST compiler
+ [6b42653a] Add the MVM_SPESH_PEA_DISABLE envvar to turn PEA on/off
Profiler:
+ [64d41cc1] Integrate scalar replacement with profiling
Strings:
+ [ec8a240e] Remove some unused variables in utf16 decode to fix issue #1030
Tooling/Build:
+ [f938f08c] Add some safety checks for macOS due to homebrew binutils and Xcode incompatibilities
+ [a1cfd702] Configure.pl: fix cross-compilation
+ [60c152f6] Create a GNU type TAR archive to fix archive extract using AIX `tar`
New in 2018.12
6model:
+ [6788cab6] Fix repossessions that cause object size "changes"
Core:
+ [987269ea] Get readnum op working, try for 32-bit num support
+ [30088ed4] Fix memory leak of MVMFrameExtra
+ [1343702c] Fix segfault on {read,write}{uint,int} on a type object
+ [a8e63d2f] Sign extend values when reading less than 64 bit in readint
+ [8e078a2f] Improve handling of failure to join a thread, throw instead of
handling and provide exception text instead of just the error code
+ [437d5b01] Fix big endian (read|write)u?int of < qword on big endian systems
+ [35ea9581] Fix bytestream ops from always converting to big endian if a switch is
necessary
+ [1c3b0c93] Fix possibility of label id clash in bytecode compiler
IO:
+ [a50a9d0e] Use uv_os_gethostname instead of gethostname to ensure winsock is
initialized on Windows
+ [a994f88d] Use larger buffer for gethostname when available
+ [1dc540f5] Reimplement async socket introspection
+ [05384f21] Add a cancel handler for filewatch tasks to prevent leaking
filehandles
+ [7c5d93ef] STAT is already used by AIX, so rename to STAT_t. Fixes AIX
compilation issues
JIT:
+ [b8ba4707] Support endian switching in read{uint,int}
+ [73b079c3,b8ba4707 437d5b01 35ea9581 c32000ba 652b2f4a] Support endian
switching in write{uint,int} and read{uint,int}, fix big endian
{read,write}{uint,int} of < qword on big endian systems, use read_buf also when
switching endianness
+ [c2952f9e] JIT compile coerce_sI op
Platform:
+ [6455d1f6] Fix double free in platform/sys.c
Spesh:
+ [7d353030] Set callsite in frame for JIT spesh plugin resolve. Otherwise, we
won't properly mark the `args` buffer which can lead to us processing outdated
args
+ [0d5f389c] Don't dump "Facts" in "Before" part of spesh log
+ [c2640e1d] Discover type Facts of coerce_sI op
Strings:
+ [4a7da329] Fix a case where the UTF-16 decoder would have a corrupted final
codepoint
+ [fc495427] Use sys/machine.h on AIX systems in csiphash.h to fix compilation
on AIX
Tooling/Build:
+ [caf10703] Bring trace spesh optimizer GDB script up to date
+ [ef9e65ca] Make sure libatomicops build file is removed with `make realclean`
+ [7eb00c0b] Add missing libuv file to Makefile.in for AIX
+ [474b5264] Enable detection of 32 bit AIX systems in Configure.pl. This allows
the compiled program to use a large memory space
New in 2018.11
Other:
+ Rework the way bytecode is generated. Eliminate most of the MAST classes and
allow us to compile bytecode without having to have everything in memory at
the same time. The new compiler can walk the QAST tree and turn what used to
be multile MAST objects into a single buffer. Now the QAST is turned into
bytecode as directly as possible. This greatly decreases the maximum memory
used for this operation.
+ [d590f25b] Ensure make realclean removes minilua binary
+ [9ef725d5] Always rebuild minilua to work around issue #999
+ [d721125d] Fix MVM_operand_type_mask in lib/MAST. The old mask was not
extended when unsigned types were added.
6model:
+ [7ba02259] Correct named argument type tuple index calc. Fixes an
out-of-bounds memory access. Resolves issue #996
+ [9f19fffa] Add new write_buf repr function to speed up write* ops
Core:
+ [dcb1dce9] JIT compile param_rp_u
+ [65db5b4d] Implement writeuint op
+ [f6fb4646] Make bytecode dumper more resilient against invalid bytecode
Docs: