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
+ Handle "is rw" pointers in native routines
+ Teach our guard op generator about NativeRef
+ Fix ordbaseat interaction with synthetics, and end of string semantics
+ make ordfirst and ordat consistent with ordbaseat
+ Add casts to resolve type warnings
+ Add UBSAN support to Configure.pl
+ Support native references to multi-dimensional indexes
+ Implement fileno_fh op
+ Implement async UDP sockets
+ Probe for _Bool, and expose bool/size_t to nativecall
+ Implement input newline translation, and translation on output on Win32
+ Validate lexical types properly
+ Implement truncate/extend ops for sized natives
+ Init cd->arg_flags so callsites_equal wont complain
+ Avoid memcpy(x, NULL, 0) in spesh
+ Ops to introspect type bits/unsignedness
+ Disable unaligned reads under UBSAN
+ Align bytecode sections to 8 bytes
+ Dump "known to be RW container" flag to speshlog
+ Add missing unsigned operand types; clean up unsigned int ops
+ Add box unsigned to REPR boxing API
+ A handful of extra unsigned int related ops
+ Teach assembler about unsigneds
+ JIT captureposprimspec, sized getlexref_, captureposelems, capturehasnameds
+ JIT jit eof_fh, readline[chomp]_fh, replace, gethllsym, objprimbits, say_fhs
+ JIT typeparameters, typeparameterized, typeparameterat
+ Coercion between num and unsigned int
+ Support boxing unsigneds in P6int REPR.
+ Recognize unsigned extop operands
+ Cheating native ref ops for unsigneds
+ Somewhat cheating unsigned parameter ops.
+ Kick out remaining unused arg_*/argconst_* ops after inlining
+ Fix bug that made Win32 throw on deleting nonexistent files

New in 2015.11

+ Fix const warnings about pointers to Unicode case table
+ Elide a few key-values from profiler data for default values
+ All Latin-1 controls are normalization terminators
+ NFG now uses Unicode Grapheme Cluster algorithm; "\r\n" is now one grapheme
+ Fix a canonical composition bug
+ Fix SEGV on nqp::chars on a null string.
+ Support multiple line separators on I/O handles
+ Support multi-grapheme line separators on I/O handles
+ Include \r\n synthetic in default line separators
+ Serialization writes string offsets as 2 bytes if possible
+ Used varints in a few more places in the serialization format
+ Serialize the STable mode flags in a single byte
+ Serialize the STABLE boolification_spec mode in 1 byte
+ Serialize the container and invocation spec flag bits with the bool spec
+ Implement readlinechomp_fh op, for reading lines without line ending
+ Fix moar build on DragonFly BSD
+ Fix join NFG bug when separator is empty
+ Improve normalizer performance on paths needing canonical combining class
+ Boost number of fixed size allocation bins, to handle more allocations
+ Fix encoding/decoding \r\n grapheme in all encodings
+ Make radix ops not blow up over synthetics
+ Fix normalizer to never re-normalize what was already considered
+ Encoders now throw exceptions on unencodeable characters by default
+ Allow specifying a replacement string for unencodeable characters
+ New UTF-8 Clean-8bit encoding for strings we exchange with the OS
+ Make escape handle \r\n properly
+ Handle files where stat falseley reports 0 bytes size
+ Provide a way for NFA to be given synthetics, not just codepoints
+ Teach NFA about ignoremark charrange case
+ Make MVMMultiCache container aware, including spesh/JIT gurd updates
+ isrwcont can now be jit-compiled
+ We can spesh isrwcont into a const now
+ Document ASAN_OPTIONS
+ Fix possible SEGV in getlex and bindlex when walking scopes
+ Release mutex in MVM_load_bytecode on exception
+ Allow named flattening args to show up amongst named args in callsites
+ Make later named args that are flattened in override earlier ones
+ Override setjmp to two-argument version on mingw64
+ fix a callsite memory leak
+ Fix ordfist/ordat JIT
+ JIT bigint ops or, and, xor, brshift, blshift and bnot
+ JIT hintfor op
+ Fix native call struct size calculation bug
+ Implement istty_fh op

New in 2015.10

+ Profiling: fix data collection when exiting
+ Profiling: improve timing calculation
+ NFG: Strip BOM from UTF-8
+ NFG: Implement casefolding
+ NFG: handle SpecialCasing
+ JIT: fix devirtualized REPR ops; devirt more ops
+ JIT: improve logging
+ Misc: Improve handling of state when spawning child processes
+ Code: Throw better exceptions in several cases
+ Code: linting, consting, avoid segfaults, etc.

New in 2015.09

+ Fix write to null handle on async socket
+ Add C++ support to native calling functionality
+ Make thread join force a GC run, preventing start/join loops eating memory
+ Remove more config and generated files in distclean target
+ Add MVM_CROSS_THREAD_WRITE_LOG to usage message
+ Try to get PC on valid instruction for cross thread write logging
+ JIT continuationreset and continuationcontrol
+ JIT string comparison ops
+ Don't devirtualize push_n or unshift_n for now
+ Async sockets: handle close,close and close,write
+ Differeniate when nativecasting to intN/uintN
+ Fix data race in frame reference count handling
+ Make findcclass and findnotcclass return one past end of string on non-match
+ Fix buffer overrun in assembler for labelled exception handlers
+ Free STables in a safer place, fixing a parallel finalization data race
+ Fix alignment of inlined structs/unions

New in 2015.08

+ Removed multiple internal data races
+ Add ctxcode op to get the code object of a context
+ Inlining in spesh will now check post-optimization size of code
+ Use a binary search in unicode block lookup
+ Unicode database file now compilable with newer MSVC
+ Lots of fixes for problems reported by linter software
+ Support for parsing Unicode numbers
+ Some potential segfaults fixed
+ New control exceptions "await", "emit" and "done"
+ Trying to unbox a bigint larger than 64 bit now throws
+ Fix "merge facts at phi" opt in spesh forgetting the first argument
+ Many memory leaks fixed
+ Properly close stdin handle when an async process dies
+ Async processes now have a "ready" callback
+ Sleep API now split into sleep and nanosleep

New in 2015.07

+ Support for multi-dimensional arrays
+ Improved support for pipes
+ Updated to Unicode 8
+ Die when we try to accept() or read() outside an originating
  thread (used to silently not work)
+ Instrumentation for findings writes without locks to objects
  originating from another thread
+ The profiler will now also show natively called functions
+ Support for libffi as an alternative to dyncall
+ exists_pos is no longer part of the REPR API
+ Accessing an object's HOW is now part of the API
+ libuv will now autoquote cmdline arguments on windows
+ Fixed some code object related ops that could segfault
+ New openpipe implementation that allows to read from and write
  to stdin/stdout/stderr
+ spesh will now track facts across BB nodes even through PHI
+ Fixed numerous memory leaks when C strings were included in exceptions
+ Implemented "free at next safepoint" mechanism for safely freeing memory
  from internal data structures in a threaded context, thus fixing NFG table
  growth in multi-threaded applications
+ Fix compile on FreeBSD 8.4 and probably earlier by detecting gcc
+ Fixes for build repeatability
+ Optimization of can op fixed and fully enabled
+ Fix async process handle closing
+ Numerous warning cleanups for various compilers

New in 2015.06

+ No longer use up a full core in some async situations.
+ Errors from nativecall include dlerror() output for clarity.
+ More verbose and aligned output in MVM_SPESH_LOG.
+ Several ops added to the jit.
+ Throwing and resuming ops for exceptions supported in the jit.
+ More places now go through the Int cache.
+ Support for str attributes in CUnion and CStruct.
+ Non-characters now correctly considered valid for UTF-8 encoding.
+ Fix exception handler resolution bug.
+ Introduced MVM_SPESH_NODELAY to set spesh thresholds very low.
+ Support for building with gmake and gcc on windows.
+ Support for GNU/kFreeBSD.

New in 2015.05

+ Add missing C prototype for MVM_string_windows1252_decodestream
+ Fix uniname out of range error reporting.
+ Fix SSA crash when huge number of basic blocks.
+ Implement normalization buffer grwoth handling.
+ Add missing frees on invalid UTF-8 decoding.
+ Integrate NFG with UTF-16 non-stream decode.
+ Remove linenoise/readline
+ Give a decode stream a normalizer.
+ Further integrate normalizer with decode stream.
+ Fix chr for our brave new NFG world.
+ Update macportfile to 2015.04 release
+ Make \n a "normalization terminator".
+ Ensure concatenation is closed under NFG.
+ Don't leak synthetics from ord.
+ Integrate NFG with UTF-8 non-stream decode.
+ Implement NFG for decode stream case of UTF-8.
+ Fix use-after-free in open file error reporting.
+ Display exactly what thread ID was passed.
+ Release allocated resources before returning
+ Free resources for **pieces before returning
+ Release 'signature' before returning from unmarshal_callback()
+ Free leaked resource `buffer` before returning
+ Remove fragile assumption about buffer size.
+ Fix UTF-8 encoder to handle NFG.
+ More robust NULL string checking.
+ Ensure we get NULL-terminated strings if needed.
+ Bytecode file stores Latin-1 when possible.
+ Optimize temporary root handling.
+ Cache and mark the backend config hash.
+ Dual-purpose comp unit string heap as SC one.
+ Re-order bytecode read struct to be smaller.
+ Don't repeatedly calculate limit in bytecode read.
+ Toss some bits of ut_hash we don't use.
+ Toss hash bloom test bits we don't use.
+ Optimize at level 3 by default.
+ Toss even more hash bits we don't use.
+ Re-implement MVMIter on hashes using buckets.
+ Toss HASH_FSCK addition order check.
+ Use a simpler "deleting the last item" check.
+ Eliminate double-linked-list in hashes.
+ Fix use-after-free if hash iter block frees nodes.
+ Be consistent with paren-ing in macro.
+ Eliminate a single-use macro.
+ Correct head replacement logic.
+ Re-implement simple say/print using MoarVM I/O.
+ Thread ID handling cleanup.
+ Fix an ABA bug in the fixed size allocator.
+ At least do a spinlock rather than a mutex.
+ Factor out code to avoid a "magic value" all over.
+ Concurrency control on multi-cache additions.
+ Show line numbers for deopt annotations
+ Give every BB in the spesh log a line number
+ Devirtualize bindkey and bindpos ops
+ Implement MVM_op_elems for devirtualization
+ Implement getattr_* and getattrs_* devirtualization
+ Implement pop_* and shift_*  for devirt
+ Implement bindattr and bindattrs ops for devirt
+ Fix a control flow thinko for logging
+ When failing from consume_reprop, do it loudly
+ No longer bail from many unhandled repr ops
+ Devirtualize setelemspos, existspos and existskey
+ Implement ordbaseat and eqatim_s ops for ignoremark
+ Silence warnings about pointer type mismatch
+ Increase stack space for call arguments.
+ More compact jit for add, sub, bor, band and bxor
+ Add lib install dir to rpath
+ Display "Inlined" flag in the spesh log
+ Add a missing barrier in multi-dispatch cache
+ Tweak error reporting of wrong outer frame
+ Include cuuid of invokee in error message.
+ Remove the frame pool
+ Spesh dump shows little words for fact flags
+ Spesh dump coderefs as filename + line number and "(closure)"
+ Handle LTM for ignorecase+ignoremark
+ Fix ref-count management of deserialized contexts.
+ Provide a "never repossess this" mechanism.
+ Fix a GC marking bug in parametric type setup.
+ Implement exception object creation from category.
+ Emit add, sub, bor, band, bxor with constant if possible
+ Kill duplicate getspeshslot ins for the same register
+ Formally bump minimum bytecode version to 5
+ JIT - check if constant value fits in 32 bit
+ Fix format type error in JIT logging
+ Add MVM_oops() function to panic with backtrace, used in spesh and JIT
+ Add op for disclaiming all objects of an serialization context (SC)
+ Check that owning object wasn't disclaimed by an SC.
+ Add support for CUnion repr to use with NativeCall
+ Add support for inlined CStructs and CUnions

New in 2015.04

+ Re-enabled lazy deserialization, decreasing Rakudo startup time and memory
+ Fix a possible buffer-overrun in MVMArray's existspos
+ Fix for ARMv5
+ Configure: add an option --ar
+ Mark existspos op as pure to allow better optimization
+ Tweak dynamic optimization and OSR thresholds to tune startup performance
+ Implement bounded serialization of parameterized types
+ Include file names in some deserialization errors
+ Clean up some unused functions and variables
+ Add __attribute__((format())) where appropriate
+ Correct some format strings
+ Allow nativecast from VMArray e.g. Blob/Buf
+ Output callsites in spesh log
+ Implement unsigned int types for native calls
+ Upgrade Unicode DB to Unicode 7.0
+ Include module that asked for stale dependency in error message
+ Handle 'is rw' params in native calls
+ Make some hot functions at startup time as always being inlined
+ Fix exception message when utf8 string is invalid from the start
+ Implement NFC/NFD/NFKC/NFKD Unicode normalization algorithms
+ Add op to normalize buffers of codepoints
+ Remove unused Unicode database script
+ Support cross-compiling with computed goto
+ Refactor pthread_yield detection
+ Add op "getcodelocation"; gets file and line of a MVMCode
+ Tweak istrue_s; every non-empty string is true now
+ Bump minimum serialization format version; remove code for old versions
+ Implement a more efficient varint serialization format
+ Remove the vestigial serialized 0 that used to be v-table length
+ Re-order struct MVMCollectable to slightly reduce L1 cache misses
+ Store the serialized reference type discriminator in 1 byte, not 2
+ Add missing IS_CONCRETE checks in serialization
+ Make unbox int/num/str functions test IS_CONCRETE always
+ Fix conflict with splice from bits/fcntl-linux.h
+ Fix missing frees of bytecode annotations
+ Serialize object headers more compactly
+ Serialize object references more compactly
+ Split codepoint iterator from grapheme iterator
+ Implement grapheme normalization algorithm (aka. "NFG")
+ Implement encoding of grapheme-level strings to bytes
+ Implement retrieving codepoints in different normal forms from NFG strings
+ Fake POSIX exit codes consequently on windows
+ Remove extra call to uv_run when closing a pipe
+ Loop over waitpid to get correct exit code for closed pipe
+ Basic implementation of case change with NFG
+ Make character class check on NFG synthetic uses base codepoint
+ Make Unicode property checks on NFG synthetics use base codepoint

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
