-
Notifications
You must be signed in to change notification settings - Fork 172
/
ChangeLog
1841 lines (1750 loc) · 86.3 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 2017.09.1
+ Assign variable in optimize_bb loop on its own line for clarity
+ Revert "Fix errors when running `make realclean" to unbreak build
using nmake
New in 2017.09
+ Allocate async process read buffer based on amount last read, with a
minimum size limit
+ Implement the Knuth-Morris-Pratt string search algorithm
+ Add error string to 'failed to resolve' exception
+ Fix usage of ARG5 in JIT on Windows to use stack instead
+ JIT param_rp_i and param_rp_o
+ Fix calculation for maximum array size
+ Correct ==/= mistake in container optimization
+ Ensure strings created with MVM_string_repeat are in NFG form
+ Avoid evaluating arguments to MVM_ASSERT_NOT_FROMSPACE when it's disabled
+ Add up to date string documentation
+ Remove old strings.markdown documentation file
+ Speed up `index` 9x when Haystack is strand, needle is 1 long
+ Add new cached grapheme iterator
+ Always cache even for flat haystacks with KMP
+ Generate stacktraces on Travis CI when getting a segfault
+ Add MVM_DEBUG_NFG in more places
+ MVM_string_utf8_decodestream: free the buffer on malformed UTF-8
+ Only run NFG_CHECK on concat result that *should* be normalized
+ Revise some comments in MVM_string_is_control_full()
+ Make sure MVMROOT'd pointer is initialized as NULL
+ Align MVM_TELEMETRY_LOG usage statement
+ Align --tracing usage statement
+ Update Unicode database for Unicode 10
+ MVM_IS_32BIT_INT(i) with explicit casts
+ JIT eqat(ic|im|icim)
+ Building .dasc files depends on dynasm version
+ Add minimal 'dynamic array' library using macros
+ Make the JIT Graph use dynamic arrays
+ Cleanup JIT graph after use
+ Replace explicit JIT function return frame check
+ Wrap dasm_State in MVMJitComiler structure
+ Fix unlikely but possible stack overflow from user input
+ Allow MVM_string_get_grapheme_at_nocheck to be inlined
+ Make `eqat` 1.7x-2.5x faster
+ Fix indentation of switch in substrings_equal_nocheck
+ Use PRIi64 macro instead of %lld in MVM_coerce_i_s
+ Replace all uses of sprintf with snprintf
+ Consistently use MVMuint16 for was_multi
+ Add some explanation of GET_REG and cur_op to interp.c
+ Use < or <= sign for all conditionals in strings/ops.c
+ Rework MVMNFGSynthetic to not store base separately
+ Only use MVMGraphemeIter_cached for strands in KMP index
+ Split out JIT compiler init/deinit
+ Organise architecture-specific JIT source files
+ Check return status of DynASM
+ Remove JIT intermediates in make clean
+ Add 'POP' dynamic array method
+ Flush log on oops
+ Refactor labelling in JIT
+ Add spesh iterator and replace JitGraphBuilder
+ Fix leak of JIT graph
+ Simple fix for duplicated labels
+ Use VECTOR macro arguments only once if possible
+ Add vector SHIFT method
+ Enable JIT breakpoint insertion
+ Use single DynASM build target
+ Compile less with --no-jit
+ Add old-style suffix rule for dynasm compilation
+ Atomic increment not required for JIT sequence nr
+ Move size check into COPY_ARRAY
+ Correct buffer handling in UTF-8 fast->slow path
+ UCD: For sequences, convert from \x{ } to the Unicode codepoints
+ Flush standard handles at exit
+ Flush output buffer where needed
+ Ensure write to unwritable handle fails right off
+ Don't try and sync when flushing is enough
+ Better if_o/unless_o optimization in some cases
+ Do dead BB elimination pass after branch deletion
+ Optimize MVM_string_gi_move_to
+ Don't decont native refs when spesh logging
+ Handle native refs better in spesh stats
+ Support spesh multi resolution involving nativeref
+ Set facts on nativeref deconts
+ A little refactoring of second optimization pass
+ Remove fact copy we most likely don't now need
+ Re-flow and better explain set elimination code
+ Fix bug in gi_move_to if not starting at 0
+ Introduce a binary format for heapsnapshot, wtih snapshots at the beginning
of the file
+ Immediately write heap snapshots to file instead of keeping them around in
memory
+ Write parts of types/static frames/strings incrementally into heap snapshot
file
+ Add gc_describe functions for new spesh data structures
+ Use grapheme iterator cached for ignorecase/ignoremark index ops
+ Take more care when eliminating set inside inline
+ Re-compute dominance tree before stage 2 opts
+ Add a reliable locals count for inlines
+ Move throw -> goto optimization to second pass
+ Mark GC blocked when acquiring I/O mutex
+ Only use grapheme iter cached if the Haystack is a strand for index*
+ Don't try to duplicate unreachable handlers on inline
+ Ensure gi->start is set to 0 for flat strings in MVM_string_gi_init
+ Fix a leak in CArray REPR
+ Merge Full Unicode Collation Algorithm Implementation
+ Remove unneeded file from UCA implementation
+ Nativecall: fix invalid pointer creation
+ Fix ignoremark with Prepend characters and ordbaseat op
+ For degenerate Synth's with Prepend and Extend set base cp to 1st cp
+ Fix case change when base cp isn't the first cp in synthetic
+ Fix elems of ConcBlockingQueue REPR
+ Implement getrusage op
+ Add documentation on UCA collation implementation
+ Include debug names in some wrong REPR errors
+ Fix MVMROOT in socket port/host code added in last release
+ In README, note that release tarballs won't work out of the box and point to
where to get working ones
+ Expose number of locks held by a thread through an op
+ Add missing concreteness checks in thread ops
+ Fix errors when running `make realclean
+ Store smallint value in 64bit if we negate them later
+ Fix segfault when compiling nqp with musl as libc
+ Avoid recursion in optimize_bb() when only 1 child node
New in 2017.08.1
+ Fix regression in Windows JIT build
+ Remove broken JIT of parameter operations
New in 2017.08
+ Dynamic optimization moved to a worker thread
+ Threads now write sequential logs into a log buffer, and send it to the
worker thread in a concurrent queue
+ Quota of logs to avoid excessive memory use, with a boost when entering
a new compilation unit for the sake of OSR
+ Added MVM_SPESH_BLOCKING environment variable to allow for reproducible
specialization results when debugging
+ Reworked installation of specializations
+ Reworked OSR implementation to account for specialization being done on
a worker thread
+ New statistics model for making better specialization decisions
+ Frames carry a correlation ID to allow reconstruction of call stack and
analysis on the specialization worker thread
+ Produce specializations based upon most common occurring types, not just
those sampled immediately after passing a threshold
+ Megamorphic code gets a non-type specialization and may be JIT-compiled
+ Remove hard limit on spesh candidate count
+ MVM_SPESH_DUMP updated to show statistics and planned specializations
+ Updated log analysis and guard insertion to use the new statistics model
+ New argument guard, based around a tree, which means less checks need to be
performed when deciding on with specialization to run
+ Add dumping of new argument guard structure
+ Log time that specialization work consumes
+ Add a script to sum up logged spesh times
+ Better organization of MVMInstance and MVMThreadContext fields
+ Removed now-unused cur_usecapture field
+ Avoid passing a real NULL as an object argument in stack unwind handling
+ Disable spesh in initial load/deserialize; there's no useful data at this
point
+ Add thread ID range check to GC debug mode
+ Deduplicate code from MVM_string_indexing_optimized
+ Start off collapsing strands as 8bit instead of 32bit
+ Concatenation improvements
+ When concat needs normalization only normalize one section
+ Don't trigger re_nfg on concat for base character + combiner
+ Add functions for iterating the codepoints of a grapheme
+ Don't re_nfg when last_a or first_b are synthetics in concat
+ Don't take the no re_nfg shortcut if a repetition contains a synthetic
+ Don't do re_nfg shortcut if either a or b are repeats
+ Use MVM_string_graphs_nocheck when able in concat
+ Fix conditional to check first instead of last strand of string b
+ Enable native callbacks on different threads
+ Fix double-decrement of unused args in inlining
+ More detailed dump of spesh slots
+ Don't NULL out spesh slots; they may be re-used
+ Make JIT include SC write barriers
+ Stronger validation of code objects in optimizer
+ Refactor code into iterate_gi_into_string() to reduce code duplication
+ Move collapse_strands() after iterate_gi_into_string()
+ NULL out registers on re-OSR
+ Only devirtualize REPR funcs in JIT when concreteness is known
+ Fix JIT of nqp::ordat and nqp::ordfirst
+ Update TinyMT to version 1.1
+ We always have threads now (thanks to specializer worker), so remove single
threaded VM instance lock avoidance paths
+ Improve GC thread sync-up
+ Simplify handling of the thread list
+ Introduce GC orchestration mutex/condvars, and use them to avoid busy
waiting when synchronizing threads for GC
+ Avoid many array searches for SC code refs
+ JIT param_sp and param_sn
+ Inability to open telemeh log shall not be fatal
+ Output spesh worker info on telemetry channel
+ Size of MVMFrame reduced
+ Eliminate effective_handlers field in MVMFrame
+ Eliminate effective_bytecode field in MVMFrame
+ Add function to encapsulate special return setup
+ Move special return into a frame extras
+ Move continuation tags into frame extras
+ Move invoked_call_capture to frame extras
+ Move dynamic lexical cache to frame extras
+ Eliminate throw_address from frames
+ Force MVMReturnType to be a single byte
+ Toss never-used nameds re-use logic
+ Eliminate need to memset MVMFrame
+ Remove historical, now-unrequired, nullings
+ Use a bit field for named args used when possible
+ Improve NFA memory performance
+ Small optimization to string_equal, remove repeated checks
+ Remove two invoke handler functions we don't need
+ Remove long-unused newlexotic/lexoticresult ops
+ Remove now-dead newlexotic functions
+ Remove now-unused pool_index in MVMStaticFrame
+ Eliminate now-unused Lexotic REPR, lexotic cache
+ Remove a dead field
+ Remove unused gotolexotic function
+ Move spesh data into a separate object from MVMStaticFrame, for less memory
use and better GC performance
+ Break MVM_sc_get_sc into inline and slow path
+ Delete unused var in MVM_string_ascii_encode_substr
+ Avoid range check on every SC object access
+ Delete unused var in MVM_string_latin1_encode_substr
+ Fix MVM_string_compare to support deterministic comparing of synthetics
+ Disable JIT when we're not allowed to make memory executable
+ Have MVM_string_codes iterate the string with codepoint iterator
+ Speed up attribute reads during invocation
+ Document the various op adverbs
+ Reduce duplication and simplify logic in invoke
+ Move checking part of force_to_heap into an inline
+ Allocate frames on heap that tend to need promotion anyway
+ Improve deopt logging output
+ Append, not prepend, moved deopt one annotations
+ Turn decont into a deoptonepoint and insert guards after decont
+ Store deopt one target directly in bytecode rather than calculating it each
time
+ Implement speculative pre-selection of specializations and inlining based on
guarding against the invocation target
+ When inlining, replace receive instruction instead of send instruction, to
better cope with register re-use
+ JIT pow_I
+ Validate range of branch target in spesh code-gen
+ Anchor inlinee handlers to inliner entry
+ Fix and expand dead basic block removal
+ Remove duplicate use of named arg checking
+ More sophisticated named arg handling in spesh, removing sp_namedarg_used op
+ Make it possible to cancel an async socket reader
+ JIT rand_I and also give it a smallbigint path
+ Ensure that serialized padding bytes are 0
+ Avoid uninitialized bytes in default tables
+ Avoid uninitialized bytes at the end of serialized tables
+ Add -Werror=pointer-arith for gcc
+ Put hard upper limit on bytecode size to optimize
+ Move annotations multiple basic blocks if needed
+ Eliminate "blocked by alias" propagation checks
+ End basic blocks after all throwish/invokish
+ Extra fflush so spesh log is written before crash
+ Ensure frame handler start/ends are BB boundaries
+ Don't explode on spesh dump when no facts
+ Cope with extra successors when inlining
+ Factor out and re-use dead BB elimination
+ Allow for GOTO handler to become unreachable
+ More precise CFGs for control exception handlers
+ Add indexim_s op and improve/fix bugs in eqatim_s
+ Further harden against removed handlers
+ Add debugging aid for spesh preselection
+ Make rebless deopt stack top frame also
+ Bump usage of writers in deopt instructions
+ Start storing/using static frame in inline table
+ Use register holding code ref for deopt purposes
+ Can never inline frames declaring state vars
+ Correct handler order when inlining
+ Implement inlining of basic lexical lookups
+ Tune the inline size
+ The listen callback shall also push socket and peer IP and port
+ Don't set a bit we're meant to be clearing in GC gen2 promotion
+ Harden listen_cancel against dupe calls
+ JIT nativecallcast, trunc_i32, extend_i32
+ Make sure the libffi callback can be reused
+ JIT the create op
+ Check ffi_closure_alloc() return value
+ Implement atomic ops
+ Provide a way to have an int type sized to the architecture's atomic
size
+ Implement cas for Scalar references and native integer references
+ Implement atomic load and store for Scalar references and native integer
references
+ Implement atomic increment, decrement, and add for native integer
references
+ Provide an op for doing a full memory barrier
+ JIT of the new atomic ops
+ Fix a bug in index/eqat(im) and in ord_getbasechar
+ Add nqp::coveragecontrol op
+ Remove two more unneeded strlen from nativecall.c
+ Only foldcase the needle for ignorecase operations
+ Remove impossible less than zero checks on unsigneds
+ Add GC debug check on frame heap promotion
+ Correct an MVM_ASSIGN to barrier the right target in continuation invocation
+ Root thread object while creating thread context
+ Correct invokewithcapture GC handling
+ Extra GC debug checks after frame promotion
+ Blacklist unhandled param ops in spesh args handling
+ Add hostname to failed to resolve error
+ JIT param_rp_o and param_rp_i
+ Introduce NFG_CHECK which checks string is in NFG form
+ Fix concatenation bug when renormalization needed
+ JIT setcodeobj and captureinnerlex
New in 2017.07
+ Full Unicode 9.0 and Emoji 4.0 text segmentation support
+ Improvements to segmentation of Emoji w/ GCB=Other
+ Use GCB instead of HST to avoid property lookup for Hangul
+ Reorder conditional in maybe_hangul() to be more clear
+ Work Hangul grapheme segmentation into GCB switches
+ Don't break after ZWJ for Emoji=True + GCB=Other
+ Make string_index 16% faster for non-identical string types
+ Greatly reduce the cases when string concatenation needs renormalization
+ Use normalize_should_break to decide if concat needs normalization
+ Rename should_break to MVM_unicode_normalize_should_break
+ Fix memory leak in MVM_nfg_is_concat_stable
+ If both last_a and first_b during concat are non-0 CCC, re-NFG
+ Improve the speed of normalization. Improves speed of slurping non-ASCII Unicode files
+ Speed up ccc by making ccc_relative using integer prop lookup
+ Rename is_control_beyond_latin1 to is_control_full
+ Use MVM_string_graphs_nocheck in more places throughout strings/ops.c
+ Rename relative_ccc to MVM_unicode_relative_ccc
+ Remove arbitrary string repeat limit
+ unicmp_s improvements
+ unicmp_s can now reverse any of the collation levels
+ Handle additional possible cases in collation
+ Store collation levels in an array not a single value
+ Handle quaternary collation level being both enabled and reversed
+ Improved instruction and basic block deletion handling to allow further code
elimination
+ Only compile in \n -> \r\n on Windows
+ JIT-compile write_fhb and encode ops
+ Include return type facts for the encode op
+ Implement setbuffersize_fh op, which sets up output buffering for synchronous
file handles
+ Fix error message for decodersetlineseps getting non-decoder
+ JIT open_fh, close_fh, read_fhb, decoderaddbytes, fc, chr, getcp_s, and
objectid
+ Remove synchronous process support
+ Add new asynchronous permit mechanism, which can be used to provide delayed
starting of reads and back-pressure
+ Implement permits handling for asynchronous processes
+ Convey file descriptors of stdout/stderr pipes when spawning an asynchronous
process
+ Add debug helpers: MVM_dump_bytecode, MVM_dump_bytecode_stackframe and
MVM_dump_bytecode_staticframe
+ Add gdb command to give a history of spesh optimization decisions
+ Improve specialization dump: less trailing spaces, chop up facts list by
register
+ Empty out instruction list of removed basic blocks
+ Eliminate duplicate code in utf8 decoder
+ Fix overflow in uniprop lookups
+ Fix ASCII streaming decode error handling
+ Make illegal synthetic an oops, not a panic
+ Make some fixes to the Unicode data file downloader
+ Use MVMint64 for MVM_string_chr (oplist/function mismatch)
+ Fix an accidental nested redeclaration in process handling
+ Tweak the format of oops messages
+ Improved debug output for serialization errors
+ Fix ARM build
+ Clear cached dynamics when taking continuation
+ Missing MVMROOT during an allocation
+ Remove never-assinged use_mode_frame field from CallCapture
+ Remove now-unused cur_usecapture per thread
+ Eliminate mode flag from CallCapture
+ Fix invokewithcapture to keep the used capture alive
+ Always copy callsite into an MVMCallCapture unless it's interned
+ Remove now-unrequired effective_callsite
+ Add decodertakecharseof op
+ Copy correct length in get_all_in_buffer
+ Fix ctxcode op to not leak a NULL
+ Fix decoder typos
New in 2017.06
+ Make coerce_s_n work more like the Perl 6 Str.Num method
+ Eliminate socket string I/O
+ Re-implement synchronous sockets without using libuv, enabling them to be
passed between threads
+ Add ability to get port from already bind-ed socket
+ Add cpucores op to get the number of CPU cores
+ Fix inconsistency in decode stream take bytes API, so it returns null if
that number of bytes is not available
+ Fix memory leak in syncpipe
+ Removed unsed header file in threads.c
* Remove unused args to bind_stdio_handle
+ Remove char-level I/O ops and the functions they called
+ Remove char-level I/O from synchronous I/O vtables
+ Remove unused encoding option in dir handle
+ Re-implement print/say debug output ops to encode and then use binary I/O
+ Eliminate use of libuv in synchronous file handles
+ Switch standard handles to use the new synchronous file handle code, which
means they can now be safely used from multiple threads also
+ Remove unused ->filename slot of syncfile
+ Debugging aid for introspecting P6opaque objects
+ Support merge_bytes in async proc ops, for reading STDOUT and STDERR
together
+ Support binding handles to file descriptors in async procs
+ Fix off-by-one in profiler node GC
+ Add string eqat/index ignorecase+ignoremark functions
+ Add new eqaticim_s and indexicim_s ops ignorecase+ignoremark
+ Use norm instead of n for the normalizer variable
+ Add improved support for GCB=Prepend
+ Improve Regional Indicators support during normalization
+ Serialize a Decoder REPR object into null, so incidental file handle
serialization in Perl 6 does not blow up
+ Improve named argument optimization, so we can specialize and throw out
instructions in more cases
+ JIT decodertakeline
+ Fix missed opportunity to run JITted code
+ Have inline log note what couldn't inline also
+ Remove successor when optional named argument is passed, so default code
can be eliminated
+ Flag writers that die when a basic block is eliminated, and disregard them
in PHI node analysis, provide more precise type information
+ Make a basic block elimination pre-pass before the main optimization work
+ Set dead writer when deleting instructions also, to further aid PHI merges
+ Track which basic blocks are part of a jump list
+ Delete pointless goto instructions (those at the end of a basic block that
simply go to the next block)
+ Remove bad Windows quoting option async proc code
+ Actually log inlines to stderr as the comment up top claims
+ Make find_separator only look at the last chars, which is far cheaper
+ Add help text for environment variables to Configure
+ Move NFG initialization into nfg.c
+ Cache CRLF grapheme value
+ Cache maximum separator length, to save recomputing it for every line that
is read
+ Cache a list of final separator graphemes, for faster stopper detection in
streaming decoders
+ Introduce a max final grapheme codepoint filter, for faster stopper
detection in streaming decoders
+ Add a UTF-8 decoding fast-path that doesn't need to go through the full
normalizer
+ Keep last freed chars buffer handy for re-use in streaming decoder
+ Make a smarter guess at decode result buffer size in streaming decoder
+ Don't copy when we can steal decoder output, saving a memory copy in most
line reading operations
+ Various micro-optimizations to UTF-8 decoding fast path
+ Fix newline translation in various encoding's streaming decoder
New in 2017.05
+ Mark profiler call graphs iteratively instead of recursively
+ Keep around line number annotations in spesh, for more accurate source
position information for coverage data in specialized code
+ Introduce "telemeh", a high-precision-time low-impact logger
+ Fix error reporting in chdir
+ Fix memory leak on error in chdir
+ Travis: readlink doesn't have `-f` on MacOS so make our own solution
+ Fix bug in index ignorecase and equal at ignorecase
+ Fix all known remaining bugs in indexic and eqatic
+ Zero slot when popping a VMArray, to avoid junk reads if it grows again later
+ Add can_fit_into_8bit funct, put logic used many places into one function
+ Use -1 instead of 0 when long right-shifting negative smallints
+ Remove workaround for tommath issue #56, which is now fixed upstream
+ Don't crash on reading a closed dir handle
+ Remove deprecated async string I/O ops
New in 2017.04
+ Shorten the nursery when creating large bigints, to bring GC forward and
resolve excessive memory use
+ Use correct format for repeat/concat errors
+ Fix bug in indexic_s if expanding codepoint is the last codepoint
+ Special case "\r\n" in MVM_nfg_is_concat_stable for performance reasons
+ Further optimize MVM_nfg_is_concat_stable to speed up concatenation
+ Do not set use rpath if installing into proper system locations
+ Optimize passes_quickcheck_and_zero_ccc to be much faster
+ Give this_repr constants more meaningful names to aid debugging
+ Streamline MVM_bigint_radix and MVM_radix for Nd Unicode #'s
+ Fix case-insensitive string compare bug when synthetics are in the haystack
+ Improve description for "should eventually be unreachable" error
+ Correctly detect and handle overflow in mp_get_int64
+ Split into mp_get_int64 and mp_get_uint64
+ Only allocate and normalize for cp's that require it in MVM_string_chr, and
short-circuit Unicode property test for codepoints below 0x300
+ Provide a better error when failing to encode surrogates in UTF-8
+ Add a cast to suppress a compiler warning in strings/ops.c
+ Factor out code from equal_at_ignore_case for use in index_ignore_case also
+ Use both hex and decimal for UTF8 encoding error messages
+ Add parentheses in various places to suppress compiler warnings
+ Use PRIu64 in fprintf's to fix compiler warning about incorrect types
+ Add a check that introspection->is_tty is not NULL, avoiding a crash
+ Mention debug_name in errors about uncomposed repr
+ Add new --coverage option for Configure.pl
+ First prototype of a per-line coverage reporter, enabled by setting
MVM_COVERAGE_LOG
+ Cope with a native type with no nativesize, but signedness
+ Remove two functions in normalize.c that have been superseded
+ Give collapse_strands a 5.4% speed boost under some workloads
+ Add MVM_string_graphs_nocheck funct, use it in places we previously already
checked
+ Have a two-part loop in collapse strands to make loop tighter when possible
+ Implement serialize/deserialize in VMHash REPR.
+ Use memmem in string index. Uses Knuth-Morris-Pratt on glibc, and adds the
FreeBSD memmem.c for use on Windows
+ Fix a join NFG bug when there was an empty string and an empty seperator
+ Reorder MVMStaticFrameBody to save 16 bytes according to pahole; similarly
save 16 bytes in MVMCompUnitBody, 24 bytes in MVMJitCode, 8 bytes in
MVMIOSyncStreamData, SerializationRoot and SerializationReader
+ Remove arbitrary and small length range check for reading bytes from a file
+ Remove unused defines in threadcontext.h
+ Greatly reduce contention in the fixed-size allocator for multi-threaded
programs, giving up to 40% speedup in some cases
+ Add continuous coverage analysis to Travis builds, along with other Travis
improvements
+ Mark thread GC blocked when doing synchronous writes
+ Add missing MVMROOT when reading bytes, which could result in occasional
data loss
New in 2017.03
+ Fix some missing variable initializations
+ Set effective_handlers in context-only frame
+ Streamline code in hash computation, hopefully fixing a Coverity warning
+ Detect and throw on over-size array
+ Put in a limit for codepoints in a grapheme, to avoid various overflows
+ Fix a missing NULL check at end of profiling
+ Panic when a new thread context can't create an uv_loop
+ Better handling of out of memory when creating a thread
+ Another attempt at silencing the pthread_yield warnings
+ Missing GC block marking in event loop starting, fixing a deadlock
+ Fix CArray marshalling of type objects
+ Provide a way to put Decoder in nl-translate mode
+ Ensure Decoder REPR never sees concurrent use
+ Debug option to detect concurrent VMArray use
+ Encode strings as UTF-8 in MVM_unicode_string_from_name
+ Reword exception message for read() outside original thread
+ Check that results of repeat/concat fit in an MVMString
+ Fix div_i JIT round to negative infinity
+ Ignore SIGPIPE by default
+ Only start readers if a process spawned OK
+ Remove deprecated char-mode async proc reading
+ Signal error to stdout/stderr on spawn failure
+ Do gen2 sweep before letting stolen threads go, fixing occasional SEGVs
+ Turn libtommath dependency into a submodule, use a MoarVM fork
+ Update libtommath fork to have expmod hang fix
+ Change MVM_string_equal_at_ignore_case to use fc
+ Fix MVM_string_equal_at_ignore_case when folding the haystack changes length
+ MVM_string_equal_at_ignore_case no longer applies a case changing
operation to the entire haystack. It now only changes case for as
much of the haystack length as is needed. ~30%+ or faster depending on on
haystack length.
+ Mention debug name and REPR name in "requires obj with repr X" errors
+ Remove unneeded variable in MVM_string_index
+ Add MVM_string_index_ignore_case function and indexic_s op
+ A range of improvements to the MoarVM GDB plug-in
New in 2017.02
+ Fix format strings that warn during compile
+ Implement missing cleanup of async task handles, fixing a memory leak
+ Make Unicode sequence and codepoint name lookup case-insensitive
+ Add Unicode sequences from NamedSequences.txt in the Unicode database
+ Remove second declaration of MVM_frame_destroy
+ JIT MVM_radix()
+ Make radix and radix_I 50% faster with Unicode Nd
+ Add East_Asian_Width prop
+ Fix memory leaks in synchronous sockets
+ Fix crashes in socket connect error handling
+ Don't leak memory in STable repossession
+ Missing MVMROOT around a lock acquisition
+ Refuse to form an NFA with a zeroed to-state
+ Add data section for JIT code, and use it for extop 'fake' registers
+ Correct typo in NFG trie node struct name
+ Fix overflow in div_i op
+ Implement support for synthetic graphemes in MVM_unicode_string_compare
+ Implement configurable collation_mode for MVM_unicode_string_compare
+ Use LDFLAGS in ld invocations
+ On Windows, create UTF-8 encoded argv upon program entry
+ On Windows, populate environment hash from Unicode environment
+ Some additional heuristics to cut down on cross-thread write log output
+ Fix abs_n op for negative zeros
+ Sort out semantics of closed async sockets
+ Fix overflow on 32-bit systems in is_full_collection()
+ Rename MVMArray file and constant to VMArray
+ Remove bogus indication that MoarVM builds on `cygwin`
+ Use utf8 for unicode_db files
+ Fix invalid read when GC was triggered in the string repeat op
+ Don't call MVM_string_graphs twice in indexing op, plus cleanup
New in 2017.01
+ Extract spesh block allocator from spesh, for wider use
+ Add a number of missing MVMROOTs, which could lead to outdated pointers;
also removed some unrequired MVMROOTs
+ Fix arg_flags allocation sizes
+ Remove an obsolete path from ldrpath
+ Check lexical accesses in GC debug mode 2 also
+ Add a #define to turn on inline logging
+ Fix callstack reset bug, which could corrupt deeply recursing callstacks
+ Don't allow re-compose of a P6opaque
+ Add a new unicmp_s op, which compares using the Unicode Collation Algorithm
+ Make sure we generate all values of the Line_Break property
+ Re-implement utf8-c8 encoding, fixing bugs and ensuring that non-NFC input
will round-trip properly also
+ Implement Bidi_Mirroring_Glyph as an integer property
+ Implement Emoji grapheme breaking and other combined codes
+ Add support for Grapheme_Cluster_Break=Prepend from Unicode 9.0
+ Make sure we break after Prepend if it's a control character
+ Add a script to download the latest version of all of the Unicode data
+ Missing rooting GC in rare exit handler case
+ Implement new setdispatcherfor op and add JIT for it
+ Use much faster atoi function in normalizer; 14% less CPU use when slurping
a file in UTF-8 encoding
+ For Decompose_Type, use int lookup instead of str for better performance
+ Fix heap snapshot crash on eventloop thread
+ Use /usr/bin/env perl for ./Configure.pl
+ Don't break after ZWJ or for MALE SIGN and FEMALE SIGN
+ Take into account actual allocated size of I/O buffers in gen2 promotion
statistics
+ Tweak full collection criteria in heap profiling
+ Free up spesh log slots after specialization, avoiding some leaks
+ Removed the getregref_ ops (unused by NQP or Perl 6)
+ Removed the continuationclone op (unused by Perl 6)
+ Enforce one-shot invocation of continuations
+ Greatly simplify handling of call frame working register lifetimes, leading
to consistently shorter lifetimes, less memory pressure, and faster calling
+ Eliminate now-unused `tc` field in MVMFrame, saving a pointer per callframe
+ Simplify args cleanup functions
+ Reduce number of checks in call frame marking, making it faster
+ Implement getstrfromname op, to get named Unicode sequences
+ Fix GC in spesh triggered by managed mutex use
+ Fix data race in inlining extop fixup
+ Fix data race in callsite fixup during inlining
+ Fix data race in string fixup during inlining
+ Fix charname lookups of LINE FEED and CARRIAGE RETURN
+ Remove Unicode 1 names and add Unicode Name Aliases
+ Convert MVM_malloc+memset to MVM_calloc
+ Clean out ancient "remove after rebootstrap" line
+ Fix typo in MVM_CALLSTACK_REGIONS_SIZE's name
+ Fix missing cleanup of managed DecodeStream
+ Have DecodeStrem clean leftover char buffers
+ Fix a typo in decode stream destroy function
New in 2016.12
+ Decode Latin-1 and UTF-8 strings to 8-bit width when possible
+ Teach a few string functions to compress results into 8-bit storage
+ Fix for AIX's INFINITY not being a constant
+ Unlink libmoar before (re)installing it
+ Add configuration for AIX
+ Support Perl older than 5.10 for Configure.pl
+ Use "pkgconfig --libs libffi" additionally to --cflags
+ Fix powerpc detection on AIX (gcc)
+ Make multidim error messages say they are multidim
+ Add comment about where to find UNIDATA
+ Implement captureinnerlex op, for fixing QUIT/LAST phaser scoping in Perl 6
+ Fix mis-sized free in the NFG trie that only showed up in 32-bit
+ Add GC debug helper to "find" a pointer in nurseries/gen2 bins
+ Make ASSERT_NOT_FROMSPACE check fromspaces of all threads
+ Fix missing MVMROOT around an allocation
+ Fix typo in nfg.h comment
+ Fix native callback and GC interaction when embedded
+ Add GC block management functions to the public API
+ Mark throwpayload* as :throwish in oplist
+ Optimize the check for negative bignums
+ Remove useless mp_neg calls
+ Fix premature free of UV socket handles
+ Fix premature handle free in async UDP sockets
+ Add a "check every register access" GC debug mode
+ Provide a #define to disable dynlex caching
+ Provide a #define for deopt logging
+ Invalidate dynlex caches during deopt
+ Fix pow_I when it takes an exponent larger than 2**32
+ Only do MVM_ASSERT_NOT_FROMSPACE in GC debug mode
+ Add a fromspace assertion in finalize
+ Avoid a number of spesh GC invariant violations
+ Panic if we try to GC when speshing/JITing
+ Ensure we don't leak partially deserialized objects
+ Fix unrooted frame around SC object lookup
+ Remove some GC debug code
+ Avoid reading nativerefs in spesh, since it can cause boxing and thus GC
+ Cope with push being used on concurrent queues
+ MVMROOT around putting work on concurrent queue
+ MVMROOT eventloop queue when polling it
+ Do MVM_ASSIGN_REF after block/unblock in concurrent queue
+ Fix more unrooted frame around SC object lookup
New in 2016.11
+ Workaround tommath issue #56 which affects random bigint numbers > 32 bits
+ Fix memory leaks in nqp_nfa_run
+ Fix a sizeof arg that allocated a much-too-big buffer for callsite arg names
+ Add missing breaks in MVMString's copy_to
+ Prevent null deref when calling MVM_string_utf16_encode
+ Corrections to mkdir on Windows
+ Introduce MVM_SPESH_LIMIT, which limits how many specializations will be
performed; this is useful for debugging which specialized block is to blame
for a bug
+ Make sure we never box a NULL filename when creating backtraces
+ Fix the nativecall attribute error messages
+ Remove (non-existent) num16 from error message
+ Make the fixed size allocator provide useful information to Valgrind
+ Implement serialization of SCRef
+ Include file/line of unserializable closure, to aid debugging
+ Add type info when failing to bind an attribute
+ Use ffi_arg type for libffi nativecall return types
+ Handle libffi return type more correctly
+ Work around missing libatomic_ops prototype on s390x
+ Panic when trying to GC a locked mutex
+ Make VM panic output state that a panic occurred
+ Fix JIT code generation bug in nqp::exception
+ Add missing rooting of value pushed to concurrent queue
+ Add src/gc/debug.h dependency to Makefile
+ Mark a thread GC-blocked while it is in native code
+ Have "Cannot * a type object" also outputs the type's debug name
+ Don't reveal partially deserialized method cache
+ Give a bunch of exception ops REPR and debug name output
+ Prevent segfault when null string used as hash key
+ Request POSIX.1.c compliance on solaris
+ Change to use readdir insteal of readdir_r
+ Use GCC on solaris by default
+ give diagnostic output when compiling fails
+ Handle current Solaris compiler not understanding -mt
+ Fixed readdir so it won't check old errno
+ Work around clock_gettime issue on OSX
+ Refactor hashes to no longer need to flatten ropes in string keys
+ Save 8 (64-bit) or 4 (32-bit) bytes per entry in the MVMHash REPR
+ Remove the deprecated flattenropes op
+ Remove now-unused MVM_string_flatten function
+ Don't treat an nread of 0 in libuv read callbacks as an error
+ Bump to latest libatomic_ops
New in 2016.10
+ Fix build without libtommath source
+ Make MVM_file_open_fh() throw if the file we opened was a directory
+ Fix bug and memory leaks in MVM_file_open_fh()
+ Add error message for likely MacOS build failure
+ Don't set inheriting process on inherited pipe, fixing a segfault
+ Update to the Unicode 9 database
+ Die on CStruct without any fields
+ Constant-fold unipropcode and unipvalcode
+ Use PRId64 instead of %d for 64 bit int format string args
+ "Cannot unbox type object" error gets debugname and native type info
+ Fix uninitialized arg_names of an MVMCallsite
+ Handle C++ constructors on libffi
+ Fix CUnion get_attribute treating inlined attrs as pointers
+ Fix 32 bit issue with rw args in NativeCall callbacks
+ Use better throw-away type for void nativecalls
+ Gracefully handle a 0 RSS reported by the Linux kernel
+ Fix "Invalid free()" in empty repossessed arrays
+ Make sure we mean "signed char" when we say "char"
+ Fix calculating structure sizes for arm64 and others
+ Disable JIT on x32, since it has a different calling convention
+ Fix pointer size unit in configure message
+ Use set_uint64 in from_num, otherwise we overflow on x32
+ Rewrite mkdir_p api, no function changes
+ Improve nativecall attribute error messages
+ Include debug_name in crossthreadwritelog and serialization errors
+ Deprecate async string I/O ops
+ Deprecate flattenropes op
+ Implement indexingoptimized op (replaces flattenropes, but is not in-place)
+ Fix memory leadk in ord_basechar_at
+ Ensure errno is grabbed before MVM_free is called
+ Make extra sure unlock only happens if lock happened
New in 2016.09
+ Do not crash when the container configuration can't be read
+ Correctly calculate the work_size when inlining between compilation units
+ Validate indices of param_ ops and require checkarity before param_*
+ Fix tautological comprison; snprintf returns an int, not a size_t
+ Fix tell for files that haven't been read from
+ Don't allow zero alignment in P6opaque storage spec
+ Index check lexicals when reading static flags
+ Add Decoder REPR and a number of ops that provide access to VM-backed
streaming decoding
+ Don't segfault when serializing an uncomposed p6opaque
+ Don't read_int into a size_t which is unsigned
+ Never leak sym_name from nativecall_build
+ Fix a couple of potential leaks in heap snapshots
+ Kick arg_ and argconst_ ops from the correct basic block when inlining
+ Use HASH_FIND_CACHE instead of HASH_FIND in MVMHash
+ Correct wording of named arguments error
+ Bounds check for hints in get_attribute and bind_attribute
+ Use hints for is_attribute_initialized, and null-check repr_data
+ Clean up various unused variables
+ Mark thread GC blocked while accepting a socket to prevent deadlocks
+ Configure.pl now has an explicit use lib "."
+ Fix missing finalization queue cleanup at thread exit
+ Mark SC used in bytecode loading as claimed to avoid keeping them around
for too long
+ Fix an error in multi caching of named arguments that could cause lookups
to fail and the cache to keep growing
New in 2016.08
+ Don't crash in P6opaque on NULL name_to_index_mapping
+ Fix off-by-one in grapheme iterator
+ Block/unblock thread for GC on semaphore wait
+ Mark blocked around some more lock acquisitions
+ Fix various cases of out-dated pointer reads on concurrency control constructs
+ Hold uv_sem_t at a level of indirection, so it won't move in memory
+ Add a flag for PIPE_MERGED_OUT_ERR; fix stdio setup for merge
+ Fix EOF detection when reading files from /proc and similar
+ Fix lost socket listen errors
+ Implement async cancellation completion notifications
+ Add some missing fact dependencies in spesh, fixing some wrong guard eliminations
+ Avoid use of possibly-invalidated decont facts in spesh
+ Remove keep_caller from MVMFrame
+ Correctly NULL-terminate the buffer in MVM_vm_dump_file
New in 2016.07
+ Implement a new multi-dispatch cache, structured as a tree, able to
hold more entries more memory-compactly, and able to cache dispatches
involving named parameters
+ JIT read_fhs op
+ Implement elems REPR function for MVMContext
+ Implement a BB-splitting manipulation function in the optimizer
+ Fix sha1 op to work with null bytes
+ Fix bad interaction between profiling and dead allocation elimination;
the presence of allocation logging would prevent the optimization, leading
to misleading profiler output results
New in 2016.06
+ Serialize the HLL role field of STables
+ Avoid VMNull setup memcpy/loop in specialized frame initialization
+ Stop caching MVMContext on a frame
+ Use frames directly when serializing closures, rather than having to create
an MVMContext wrapper for every one
+ Write SC index when deserializing, repossessing, and preparing to serialize,
saving a huge amount of linear scanning
+ Only used cached SC index if SC itself matches
+ Remove an unrequired memset to clear the args buffer
+ Inline args preparation into interpreter, and JIT it directly instead of
making a call to a tiny function
+ Mark getlexcaller as :noinline
+ Don't lose handlers during multi-level inlines
+ Eliminate loop in P6opaque's get_boxed_ref function, decreasing cost
+ Implement payload throw/handler support
+ Implement callerlex throwing mode
+ Make moar-gdb.py source-able, instead of only autoloadable
+ Fix inlining causing wrong lexical handler lookup
+ Make build in dir containing space work
+ Allow HLL handler for unhandled lexical exception
+ Add debug_name to "cannot iterate X with Y REPR" message
+ Give "this is not a X iterator" more info, too
New in 2016.05
+ Use MSVC-provided stdint.h and inttypes.h when possible
+ Improved various error messages to include the debug type name
+ Eliminate call frame reference counts, instead using a linear call stack for
frames that never become heap-referenced and using the garbage collector to
manage those that do
+ Tune number of gen2 sized bins
+ Improve error reporting in P6opaque's compose function
+ Improved GC debugging support to catch more problems
+ Fix a race between serialization context resolution and garbage collection
+ Add a missing MVMROOT in shell/spawn
+ Fix segfault when trying to serialize an uncomposed P6opaque type
+ Update the build system to autodetect system provided libs
+ Add missing rooting, since the instrumentation level barrier may allocate
+ Fix cleanup of temp roots at thread exit
+ Add missing rooting of exception message in `die`
+ Fix CUnion layout computation GC issues
+ Fix data race in clearing of "in inter-gen set" flag
+ Various improvements and fixes to the spesh_graph tool
+ Add missing optimization of decont_s and decont_u ops
+ Eliminate duplicate MVMContext creation code
+ Fix full cleanup crash: the NFG uses the FSA, so have to destroy NFG first
+ Close dynvar log filehandle in instance destroy
+ Clean up cross-thread write logging mutex
+ Free debug names in STables
+ Free the string_heap_fast_table in CompUnit bodies
+ Free permroot descriptions
+ Free thread's finalization queue in tc destruction
+ Add docs about MVMROOT
+ Fix crash when GCing an ended thread
+ Implement loadbytecodebuffer and loadbytecodefh ops
+ Speed up initialization of non-specialized frames
+ Use varints to make serialization of various integers more compact, reducing
size of compiled output
+ Ensure we always produce at least one snapshot when heap profiling
+ Remove debug output when taking heap snapshots
New in 2016.04
+ Implement heap snapshots support, exposed through the profiling API
+ Don't mark tc->cur_frame twice during GC
+ Move thread object mark into thread root mark, removing a special case in the
main collector
+ Add API for adding a permanent root together with a description
+ Mark thread blocked for GC when doing synchronous reads
+ Make MVM_bigint_from_num jit-friendly
+ JIT coerce_nI as a call to bigint_from_num
+ Set debug_name on a few more built-in types
+ Add REPR API for getting unmanaged size, implement it for many REPRs
+ Fix compile on FreeBSD 9
+ Handle single-char build directory names by changing capture to lookahead
+ Fix performance of reading very long lines
+ Fix utf8-c8 decode crash caused by off-by-1
+ Fix a full vs. partial collection detection bug
+ Factor unmanaged size into promoted bytes.
+ Enhance scheme for deciding when to do a full collect
+ Bail out if HLL name string index is invalid in bytecode unpack
+ Don't try to set flags beyond num_lexicals when reading in call frames
+ Adjust byte count when UTF-16 BOM marker consumed
+ Fix buffer overrun in utf8-c8 decoding
+ Initialize object registers with VMNull when allocating frames, to avoid a
number of possible segfaults
+ Fix incorrect boolification of "" under mode MODE_UNBOX_STR_NOT_EMPTY_OR_ZERO
+ Utilize debug_name in nativecall error messages
New in 2016.03
+ Fix the build when not bundling libtommath
+ Updates to moar-gdb.py (MoarVM GDB plug-in)
+ Add serialize and deserialize to CPointer REPR
+ Don't do cross-HLL inlining
+ Fix missing call optimization/inlining of non-multis in some cases
+ Remove dangerous/broken usecapture optimization, fixing a big memory leak
+ Lazily decode the string heap, improving startup time and reducing memory
+ JIT the atposref_* ops
+ All the ref ops now properly set up facts in spesh
+ Fix dyncall on raspberrypi for calls > 4 params
+ Don't allocate a thread's second GC semi-space until needed
+ Don't keep an MVMStaticFrame array in MVMCompUnit, saving memory
+ Fix primary composite table generation, in turn fixing a SEGV
+ Measure slurpy param and param autoboxing allocations in the profiler
+ Implement native descriptor introspection for pipes
+ Further support for function pointers in native calling
+ Add debug_name field to STable struct and setdebugtypename, to allow easier
debugging and analysis
+ Get directory listing in utf8-c8 encoding
+ Fix JIT compiler bug in string le/ge ops
+ Handle nonblocking stdout properly for --dump
+ Fix linelocs buffer overflow in bytecode dumping
+ Include type info of wval/wval_wide referenced objects in spesh log
+ Don't keep around barely-used bytecode maps, saving memory
+ Only allocate instrumentation state if needed, saving memory
+ Boost size of the multi-dispatch cache
New in 2016.02
+ Numerous fixes for places where --full-cleanup leaked
+ Free per-thread NFA evaluation memory and lexotic cache
+ Free SC root objects and dependencies array when freeing SC
+ Free arg_names when interning callsites
+ Free deserialization work index lists
+ Clean up decode stream separators on handles
+ Don't leak a replaced boolification spec
+ Fully clean up callsite re-use hash in assembler
+ Fix leak involving inlining handlers
+ Fix a couple of leaks when decoding strings
+ JITted calls to functions with MVMRegister argument don't want float calling
conventions
+ Fix leak in type parameterization.
+ Don't create partly-initialized callsites in nativecall callback handlers
+ Check for NULL in exception payload and return VMNull in getexpayload
+ Fix bug for inlined structures in strutures in nativecall code
+ Fix structure size calculation when other structures are inlined
+ Plug memory leak when shelling out without capturing
+ Fix leak on out-of-bounds multi-dim access
+ Make sure unused continuation tags get freed
New in 2016.01
+ Assorted code cleanups (unreachable code, duplicated includes, etc.)
+ Various update to MacPorts portfile and instructions
+ Only optimize istrue to unbox_i when known concrete
+ Bump libuv to 1.8
+ Add submodule sync before update in Configure.pl
+ Suggest build-essential if no gcc
+ Various fixes/updates to graph_spesh.p6
+ Don't install sha1 and tinymt headers; they're only used internally
+ Only install msinttypes on MS platform
+ Fix a gc bug in string concatenation
+ Add subsecond file time ops stat_time and lstat_time
+ Fix stat CREATETIME return value
+ Note graphs_s will be deprecated; dupe of chars
+ Re-order ops in interp.c to match oplist
+ Add compile-time platform check for JIT support, to handle universal binaries
New in 2015.12
+ Allow the backlog arg for socket listening to be set
+ Resize buffers as needed when taking a UTF-16 substring
+ Context-captured frames should remember caller
+ Re-use MVM_frame_context_wrapper for ctx op, to reduce code duplication
+ Fix bug with dynvar lookups when we fall out of JITted code
+ Clean up callsites in comp unit objects
+ Clean up interned callsites on interpreter shutdown
+ Clean up memory allocated by FSA
+ Copy callsites when inlining
+ Cleanup Unicode property lookups on shutdown
+ When async streams are done, emit sequence number but no data
+ Force SC initialization to allocate in gen2, fixing a deadlock
+ Add a sanity check for gen2 allocation flag
+ Allow NativeRef to spesh assign_i and decont_i
+ Implement sp_deref_bind/get_i64/n in the JIT