/
ChangeLog
526 lines (499 loc) · 24.4 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
New in 2015.03
+ Add a macports Portfile
+ Implement nativecallsizeof op
+ Rewrite MVM_file_copy so it handles files larger than 2GB
+ Mostly quiet MSVC warnings when compiling the JIT emitter
+ Chase libuv thread ID API change, and fix thread ID lookup on Windows
+ Teach profiler about native ref taking ops
+ Fix allocating an empty (no members) CStruct
+ JIT compilation for native reference related operations
+ Implement native register references
+ Support references to sized int and num lexicals
+ Fix missing GC rooting of callback object arguments
+ Fix big endian bug in if/unless optimization
+ Simplify known value handling in the optimizer
+ Make graph_spesh.p6 also show the dominance tree
+ Fix bugs in string_index_from_end
+ Bump dyncall revision
+ Fix big endian bug in the P6bigint REPR
+ Fix system detection in triple for cross compilation
+ Stop fiddling with slashes in openpipe on Windows
+ Make index('foo','') return 0, and handle null needle when start > 0
+ Type specialization for the bindattrs_s op
+ Optimize out many set instructions
+ Add helper functions so embedders won't need to poke into MVMInstance so much
+ Use CFLAGS, CPPFLAGS, and LDFLAGS from the environment, if set
+ Re-use allocated PHI node descriptors, to reduce allocations during optimization
+ Improve optimizer memory allocation block scheme to decrease waste
+ Allow STable changes in repossessed objects
+ Fix JIT of bindpos_n
+ Fix bogus pointer casts and libc name clashes to fix MinGW build
+ Fix a bug in iter optimization
+ Better armv6 and v7 detection
New in 2015.02
* Fix memory leak in P6bigint
* -O2 is now the default optimization level in clang/GCC
* Improve performance of SSA form calculation
* Dyncall dependency is now at version 0.9
* Better error messages in NativeCall
* CArrays are now zero-filled by default
* MVMArrays can now be casted and passed to native functions
* Addition of readlink and lstat ops, and general symlink compatibility
* libuv dependency is now at version 1.0.0
* P6int and P6num can now be "C sized"
* Implemented native references to lexicals, attributes, and array elements
* Added native_ref container specification
* Added iscont_[ins] and decont_[ins] ops
* Make multi-dispatch cache aware of native containers
* Mixin prefix test in P6opaque now disregards attribute-free parents
* Fix buffer overflow when trying to inline calls with many args
* Handle argconst_[ins] instructions in inlining
* Fix a crash from trying to unbox type objects passed to native args
* Decrement usage counts in some optimizations, killing more dead code
New in 2015.01
* Decrement usage of class type for setattr ops, enabling wval elimination
* Add missing concreteness checks in concurrency ops
* First operand of sp_guard* is r(obj) not int16
* Make ReentrantMutex not prevent serialization
* Fix various ops that could return real NULL pointers and cause SEGVs
* Spesh gethow (can be spesh slot lookup)
* Start documenting the parametric 6model design
* Implement parametric 6model ops
* Avoid calling MVM_callsite_get_common twice in many situations
* Use labs instead of abs to avoid truncation on 64-bit values
* Fix signed/unsigned warnings in bytecode handling
* Big signed/unsigned cleanup in string/buffer handling
* Fix leak when join returns early
* Fix missing free in args spesh
* Tweak fixed size alloc configuration for a small memory saving
* Improve missing SC code ref error reporting
* Start integrating 6model parametrics with serialization
* Don't delete BBs with handler annotations
* Handle assigning Str to a CArray[Str] slot (to assign NULL)
* Simplify and optimize varint serialization/deserialization
New in 2014.12
+ Various warnings produced by clang fixed
+ Fixed ceil_n and floor_n to return n64, not i64
+ Pass -faddress-sanitizer when --asan is set
+ Eliminate various unneeded set instructions
+ Properly update successors for non-passed optional parameters
+ Optimize can operations
+ When bindlex fails, we should report "bindlex", not "getlex"
+ Mark takeclosure as an popular allocating op in the profiler
+ Expose callsite interning for extops
+ JIT randscale_n
+ Dump lexical names when dumping spesh graph
+ Only look at MVM_NFA_DEB environment variable once, not every NFA run
+ Implement longest literal tie-breaker in NFA
+ JIT cmp_i
+ JIT isnanorinf
+ JIT cmp_n
+ Handle sometimes-allocating ops in the profiler
+ JIT invokewithcapture
+ Count allocs in spesh'd/jitted frames separately in profiler
+ Turn a bunch of can_s ops into can ops instead.
+ Give graph_spesh.p6 a little introduction text
+ Avoid a pointer getting outdated on the stack in environment access
+ Replace quicksort with insertion sort in NFA fate sorting
+ Fix MVMROOT of a non-collectable in state variable handling
+ Detect useless SUBRULE edges in NFA, and trap epsilons to 0
+ Mark callback Str parameters as not to be freed
+ Record size of gen2_roots list after each GC when profiling
+ Do not call srand() if not using rand()
+ Don't use filename to determine EOFness
+ Allow passing of length = -1 to MVM_string_utf16_encode_substr
+ Don't resolve symlinks by hand
+ Avoid some duplicate work in inter-gen root processing
+ Fix a use-after-free in openpipe, which occurred quite often on OSX
+ Don't include PHIs when rendering spesh graph diagrams
New in 2014.11
+ JIT multicacheadd, multicachefind, radix_I, bindpos_n, bindpos_s,
escape, blshift_i, brshift_i, write_fhs, cmp_I
+ Optimize out a bunch of unnecessary "set" instructions
+ Turn a bunch of const_s + findmeth_s into cheaper findmeth
+ Implement nqp::closefh_i which retuns the exit code of a pipe
+ Allow nativecasting a CStruct to another CStruct
+ Fix temp register usage in optimize_istrue_isfalse
+ Fix a regression by eagerly deserializing stables/objects
+ Added tool to colorize registers in spesh logs and another
to turn spesh logs into a data-flow and control-flow graph.
+ Let update_ops.p6 also write a perl6 module with ops data
+ Add --bindir, --libdir and --mastdir as Configure options
+ Create pkgconfig file as pkgconfig/moar.pc
New in 2014.10
+ Added op nativecallglobal
+ Update DynASM
+ [Configure] document --asan option,
Implement --has-linenoise, --has-dyncall and --has-dynasm
+ Build and install libatomic_ops conditionally
+ Improve usage, include environment variables.
+ Document bytecode directory environment flag
+ Add beginnings of a manual page in docs/moar.pod
+ Don't mark inlined locals for logging frames.
+ Fix crash upon trying to clone a type object.
+ Fix concreteness test for the reprconv
+ Fix handling of command line args on Win32
+ Build with jit by default, add --no-jit option
+ Prettify --enable-jit obsoletion notice
+ JIT savecapture, usecapture, getobjsc, sin, cos, tan, asin, acos, atan.
atan2_n, time_n, pow_n and sqrt_n, nativecallinvoke and numeric negation
+ Added MVM_calloc function
+ Make "cannot invoke" errors consistent.
+ Improve err msg about oob in io_read_bytes
+ Optimize out non-interned static callsites
+ Attempt interning the callsites we use in nativecall callbacks
+ Implement set_separator for syncfiles
+ Panic if MVM_platform_alloc_pages failed on posix system
New in 2014.09
+ Add an instrumenting profiler, recording profiling information at routine
level and tracking use of specialized/JITted code and inlinings
+ Support profiling allocations and GC runs
+ Use arc4random on platforms that support it
+ Fix numerous warnings
+ JIT more big integer ops: div_I, div_In, mod_I, gcd_I, coerce_In, and bool_I
+ Specialization and JIT-compilation of various iteration-related instructions
+ JIT curcode and getcodeobj
+ Include filename in spesh log
+ Fix negative division in JIT
+ Mark getlexouter as not inlinable
+ Add mechanism for objects to get a persistent ID, used in Perl 6's .WHICH
+ Fix regression on PowerPC
+ Add missing SC write barrier to MVM_repr_bind_attr_*
+ JIT getattrs_* and bindattrs_* ops
+ JIT more string operations: indexat, findcclass, and findnotcclass
+ Add JIT logging of inlines
+ Cleanly panic if allocation fails, rather than crashing
+ Fix the build on ARM 32 + gcc 4.8.2
+ Better style on arg count errors
+ Avoid unaligned reads on ARMv7
+ Conditionally set include dirs and install rules (e.g. --has-libuv)
+ Add type finalizer support to the GC
+ Update libuv from 0.11.18 to 0.11.29
+ Base full collections off promotion rate, often reducing full collections
+ Add force_gc instruction
+ Set up travis continuous integration
+ Fix mis-use of libuv: we are not supposed to open a child's pipe to our stdin
+ Fix pointer to pointer native cast
+ conditionally use/install our libtommath headers
+ Don't try to serialize file handles
New in 2014.08
+ Add support for JIT compilation on x64 (when configured with --enable-jit);
supports basic arithmetic and logical operations, branching, method finding,
invocation with argument passing, basic parameter handling, boxing/unboxing,
attribute access, array and hash access, some big integer operations, some
string operations, type checks, and more. Integrated with deoptimization,
OSR (On Stack Replacement), extension ops, and exception handling.
+ Specialize various cases of istrue/isfalse to remove some indirections
+ Add charrange handling to the NFA evaluator
+ Update Unicode database generation script with latest string API
+ Add char name lookup aliases (LF, FF, CR and NEL) as line separators
+ Update moar-gdb.py for new structure of MVMString
+ Add Configure support for ASAN
+ Fix multi cache bug for no positionals, some nameds case
+ Make spesh dump show numeric literals and lexicals properly
+ Assorted OSR fixes for frames that deoptimized, then hit OSR points
+ Fix a number of SSA/dominance memory leaks
+ Fix memory leak in inlining
+ Make dead code elimination not cause unrequired guards to be kept
+ Add an API for extops to be involved in fact discovery and specialization
+ Add type and no-container facts for bigint ops
+ Support inlining of frames with handlers
+ Enable inlining of lexotic (return) handlers
+ Allow addition of temporary registers when specializing
+ Specialize boxing and unboxing of args, both named and positional
+ Avoid repeatedly allocating memory for NFAs
+ Cache frame index in MAST assembly, to avoid a linear scan
+ Fix various dynamic variable and inlining interaction bugs
+ Add a dynamic variable lookup cache
+ Devirtualize serialization read/write functions
+ Make full frame deserialization lazy, reducing memory and startup time
+ Handle static lexical values far more efficiently
+ Identify MAST nodes in assembler by exact type, cheapening assembly
+ Specialize smart stringify/numify into simpler ops in some cases
+ MAST::Label works on identify now, not name matching
+ Make "allocate in gen2" mode reentrant
+ Support lazy deserialization of static lexical values, method caches, and
meta-objects
+ Remove some unused fields from STable
+ Optimize some simple control exceptions into gotos
+ Don't redo dead instruction elim on inlinees
+ Make sure inlined args are always marked as used, fixing a bug
+ Add an int -> str cache for 0..^64
+ Add asynchronous process spawning, I/O, and killing
+ Check dll cache before searching through libpath, saving many stats
+ Make a better guess at MAST assembly output buffer sizes
+ Add a mechanism for debugging strand issues
+ Fix bug in string repeat of an already repeated strand
+ Complain properly about missing late-bound methods
+ Clear special return data more eagerly, fixing a double-free
+ Refactor get_storage_spec
+ Fix P6bigint unbox portability bug
New in 2014.07
+ Make default file mode 0666
+ Auto-detect computed goto support and enable it when available
+ Implement On Stack Replacement for hot loops
+ Fix and enable isconcrete optimization
+ Use const_i64_16 in spesh-produced code for more compact output
+ Fix bug where [work|env]_alloc were not cleared, leading to mis-frees
+ Support inlining frames that use with extops
+ Add missing decl in header to quiet warnings
+ Fix logical bug in fixed-size-allocator
+ Fix capturelex race condition
+ Add missing MVMROOT in ConditionVariable setup
+ Don't share cached Lexotics over threads
+ Re-order code to avoid race on event loop startup
+ Add a bunch of missing MVMROOTing in asyncsocket
+ Make exit get out quickly
+ Close async sockets on event loop thread to avoid corruption
+ Make --no-optimize and --no-debug work in Configure
+ Implement (de)serializing of Array[uint]
+ Specialize getlexperinvtype_o (enables better roles optimization)
+ Allow pointer math using CPointer repr
+ Fix typo in CArray.elems error message
+ Add a cast to get rid of a warning in nativecall.c
+ Fix merging of inline table entries
+ Eliminate unused guard instructions at end of specialization
+ Update uthash to latest version
+ Correct computation of lexical vivifications
+ Add nativecallcast operation
+ Fix use-after-free bug with thread entry callsite
+ Cope with cross-deopt-point usage analysis
+ Give ContainerSpec a spesh function, use it for decont
+ Make various spesh things available publicly, for VM extensions
+ Significantly overhaul the strings code, fixing many performance issues
+ Optimize find_cclass and find_not_cclass
New in 2014.06
+ Correct closure semantics of native callbacks
+ Add ops for 2-possibility named parameter handling.
+ Start storing named argument names in callsite objects
+ Start interning callsites with named arguments
+ Specializer can turn named arg resolution to indexed lookups
+ Specializer can optimize named args
+ Specializer adds facts and guards for named args
+ Implement cancelling listening on a socket
+ Implement async bytes reads from sockets
+ Optimize invocation by pre-selecting callee spesh cand if possible
+ Pick a spesh threshold by bytecode size rather than a constant
+ Mark ops that are not suitable for inlining
+ Add an operand type for spesh slots
+ Implement basic inlining
+ Implement deoptimization of inlined calls, which uninlines
+ Make interp trace output more useful; include op
+ Have invoke/return end a basic block
+ Add a thread-safe fixed-size allocator
+ Use fixed-size allocator for frames/work/env.
+ Use fixed-size allocator for hash entries
+ Use fixed-size allocator for named used flags.
+ Don't refuse to spesh if we've a slurpy positional
+ Can do coerce_in of literals at spesh-time
+ Fix spesh frame handler end annotation motion in instruction deletion
+ Fix spesh fact marking bug
New in 2014.05
+ Add a libuv-managed event loop thread
+ Implement timers
+ Implement nqp::signal; support various signals
+ Add async read/write sections to IO op table
+ Implement async socket listen/connect
+ Implement async read/write ops
+ Implement chars case of async socket reads
+ Fix HLL mapping of type objects
+ Implement file watchers
+ Add infrastructure for cancellation
+ Implement cancellation of timers
+ stat the target of a symlink when we query for filesize
+ Dump deopt instruction spesh annotations
+ stat file descriptor in eof() when filename is unset
+ Serialize CStruct repr_data
+ Add MVMNull REPR and a singleton VMNull instance
+ Teach various parts of the VM about VMNull
+ Lazily allocate lexical containers
+ Optimize frame allocation
+ Remove BOM-discarding code from MVM_string_utf8_decode()
+ MVM_string_utf8_decode() should take a MVMuint8 *, not a char *
+ P6opaque now handles C structure member alignment, just like CStruct does
+ Steal P5's unlink magic for Windows; clear readonly flag when needed
+ Add lexical lookup lifetime hinting ops
+ Re-organize spesh to have log/specialize phases
+ Use spesh logging to emit guards into code
+ getlexstatic_o optimization in spesh
+ Better error on handler fixup failure in spesh
+ Implement op execname, which stores the path of the runner
+ Implement all vs. one deopt
+ Fix moving of handler annotations
+ Basic dumping of facts in spesh
+ Cope with annotations being moved to a phi
+ Make sure we don't clobber block handler setting in spesh
+ Iterate to fixed point when finding unused instructions, giving better results
+ Pre-invalidate all deopt target addresses, to catch fixup failures
+ Optimize simple calls and multi-dispatch at spesh time if possible
+ Add Makefile rules to generate pre-processed source
+ Add Makefile rules to generate assembler
+ Support for ARMv6. Don't try to read unaligned doubles or long longs
+ Ensure that MVMCompUnit can correctly free data_start
+ MVMStaticFrame now supports bytecode pointing to a private malloc()ed copy.
+ Do proper endian correction on bytecode
+ Add Ops for 32/16 bit 64 int literals
+ isnonnull op for use in spesh
+ turn islist/... into either isnonnull or a literal 0.
+ Teach spesh_diff.p6 about the new output of spesh dump
+ Teach spesh_diff.p6 about Facts
+ improve run time performance of spesh_diff.p6
+ Avoid using an uninitialized variable.
+ Harvest strings in facts discovery process
+ Specialise can and can_s ops into const_i64 when possible
+ Change the way we store SCs in object headers to allow faster lookups of indexes
+ Fix bigint bitops
+ Ensure spesh_alloc aligns on platforms needing it
+ Include SC identifiers in bytecode dump
+ Make dump_backtrace more widely available.
+ Merge the bodies of MVM_sc_get_{obj,stable}_sc and *_set_*
+ Change serialization context indexes to be unsigned. Use ~0 as a sentinel.
+ Add inline functions to wrap accesses to sc.sc_idx and sc.idx
+ Add struct MVMSerializationIndex to hold large STable indexes
+ Free any allocated MVMSerializationIndex structs
+ Add a probe to determine the pointer size
+ Conditionally compile the MVMSerializationIndex for 32 bit platforms only
+ Allocate a MVMSerializationIndex if sc_idx would overflow in the union
+ Specialize getattr_[ins] on P6opaque
+ Fix bigint upgrade check
+ Optimize object attribute accesses in spesh
+ Spesh indirect form of attr ops with known names
+ Rakudo Bug #121273 fixed - losing a 0 from end of exponent
+ Re-arrange various structures for memory saving
+ Add handler infrastructure for supporting labeled loop exceptions
New in 2014.04
+ Brought thread ops in line with nqp:: op API
+ No longer inherit caller chain when starting a new thread
+ Fix a range of parallel garbage collection bugs
+ Block/unblock threads for GC while sleeping
+ Implement reentrant mutexes
+ Implemented semaphores
+ Implemented concurrent blocking queue support
+ Implement condition variables
+ Main thread has ID 1 now
+ Move nursery corruption check to after inter-thread work passing
+ Fix a gen2roots compaction optimization bug
+ Add flag '--has-sha' option to Configure to use a system SHA-1 library
+ GC orchestration cleanups and extra logging
+ Compact the gen2 overflows list
+ Fix decodestream_bytes_to_buf eating too much data
+ Added some missing MVMROOTs on config setup
+ Removed duplicate gen2 root cleanup call
+ Small cleanups to serialization
+ Avoid an extra level of function call in various REPR allocate functions
+ Add locking for IO handles
+ Add the Configure flags '--has-libuv and '--has-libatomic_ops'
+ Shortcut shr when we have a small lhs but rhs is >= 32
+ Add logic to turn bytecode into SSA form, and from SSA back to bytecode
+ Added infrastructure for "spesh ops", to use in type-specialized bytecode
+ Start interning positional callsites
+ Keep a rough call count per static frame
+ Add bytecdoe specialization infrastructure
+ Optimize simple positional arg fetch in specialized bytecode
+ Resolve methods at specialization time when type is known
+ Add a monomorphic method cache
+ If MVM_SPESH_LOG is in env, log spesh work to it
+ Turn known-unrequired decont into set
+ Make MVM_SPESH_DISABLE env var disable spesh
+ Add :pure annotations to side-effect-free ops; eliminate dead code
+ Add a tool for splitting and diffing spesh log output
+ Add setmultispec mechanism for optimizing away only-star proto
+ Optimize optional positoin arguments in bytecode specialization
+ Optimize out istype for a spesh-time-known value or type
+ Optimize if_i and unless_i for known values
+ Corrected atan2 op signature.
+ Implement de-optimization on mixins
+ Don't lose HLL owner during serialization
+ Optimize away hllize when possible
+ Optimize away assertparamcheck when possible
+ Infrastructure to allow REPRs to participate in spesh
+ Optimize object creation in common cases with known types
+ Small fixes to MVM_string_(latin1|windows1252)_encode_substr
+ Optimize bindattr_o on P6opaque when possible.
+ Change the way lexotic is handled to avoid the need for allocation
+ Specialize empty named slurpy args.
+ Add a way to flag a frame as a "thunk".
+ Add ctx[outer|caller]skipthunks ops.
+ Make backtrace generation ignore thunks.
+ When readline/linenoise see EOF, mark handle EOF
+ Set hint for invokespec and multispec, improving invocation performance
+ Improve the VM exit strategy, so non-app-lifetime threads are waited on
+ Correctly handle temp roots stack in callbacks
+ add sched_yield for NetBSD
+ Fix callsite size calculation in tweak_cs
+ Fix buffer overflow in UTF-16 encoding
+ Trigger repossession on OP(push_*)
+ Fake up a final entry off the end of Unicode, fixing some lookup bugs
New in 2014.03
+ Implement a fast-path for string strand flattening
+ Fix character lookup by name sometimes giving wrong result
+ Control and printable now know about Latin-1 control characters
+ Fix bug in Latin-1 handling
+ Fix and optimize various character property lookups
+ Implement lookup of non-boolean Unicode properties
+ Implement character code to name lookup
+ Implement lookup of enum/stringy Unicode properties
+ Fix memory leak of active handlers in continuations
+ Clear up gen2 memory at exit
+ Clear up frame pool at exit
+ Don't leak static frame instruction offsets
+ Fix memory leak in MVMHash
+ Simplified/optimized frame reference count handling in continuations
+ Fixed missing exception resume reference count decrement
+ Correct "on stack" continuation reference count handling
+ Add missing cleanup in MAST assembler
+ Fixed used named args tracking memory leak
+ Fixed SEGV in eof of non-file-based filehandle
+ Pass STDIN to subprocess in shell()
+ Fixed resolution of IPv6 host names
+ Implemented native calling
+ Implemented CPointer representation
+ Implemented CArray representation
+ Implemented CStruct representation
+ Improve GDB plug-in string usage analysis
+ Make GDB plug-in aware of gen2 overflows
+ Clean-up and optimization of many REPR allocate functions
+ Fixed over-eager / to \ conversion in nqp::shell on Windows
+ Implemented native callbacks
+ Correct copy size of args buffer, avoiding reading unmapped memory
+ Updated to new liblinenoise and re-instated usage of it
+ Bump dyncall to latest version
+ Add --has-libtommath option to Configure for using system libtommath
New in 2014.02
+ Increased precision of num => str coercion
+ Mechanism for per-HLL handling of method resolution errors
+ Gave can the same null-check semantics as findmethod
+ Fixed various "not found" lexical lookup semantics
+ Use a more efficient encoding for integers in the serialization blob
+ Implemented reposession conflict resolution handling for objects
+ Optimized GC worklist processing to avoid unrequired barriers
+ Added a GDB plugin to help analyse VM data structures, heap use, etc.
+ Zeroed memory in a few places, to avoid reading junk and quiet Valgrind
+ Simplified and fixed UTF-16 encoding
+ Implemented unsigned native integer array support
+ Added various missing write barriers on STables
+ Added openpipe functionality, to support qx/qqx in Perl 6
+ Corrected accidental and potentially explosive use of REPR(...) on STables
+ Switched to using flag bits to mark liveness in GC
+ GC forwarder pointer used in nursery now overwrites existing object body,
saving 4 or 8 bytes on every collectable object
+ Added various GC sanity checking asserts to aid debugging
+ Encapsulated all serialization context accesses
+ Defined NDEBUG in optimized builds
+ P6bigint no longer uses libtommath for integers fitting within 32 bits
+ Optimized serialization of P6bigints fitting within 32 bits
+ Implemented link and symlink
+ Fixed mod_n op's behavior on negatives
+ Implemented floating point fallback case of the pow_I op
+ Fixed srand op to also control rand_I
+ Initialize the random seed at startup
+ Properly clean up active handlers that we unwind over
+ Radix parsing now returns an array of integers, not floating point
+ Huge refactor of I/O, fixing many bugs and leading to cleaner code
+ Proper handling of characters split over byte buffer boundaries in I/O
+ Corrected Latin-1 to be Latin-1, and added Windows-1252 encoding
+ Added a constant cache for boxing integers 0 through 15
+ Properly implemented synchronous client and server TCP socket support
+ Better estimate and perhaps shrink string memory for UTF-8 decode
+ Added probing to Configure to learn how the compiler does 'static inline'
+ Switched many macros over to static inline functions