* Tue May 01 2018 nine@detonation.org
- update to version 2018.04.1
+ Fix precision in Num and use Grisu3 algorithm for stringification
+ Use vectorization to speed up many string operations
+ Add support for the windows-932 variant of the ShiftJIS encoding
+ Fix bug in windows-1252 when a replacement occurs in the last position of the input stream
+ JIT expr templates for getstringfrom and getwvalfrom
+ JIT floor_n, continuationinvoke, ctx and a few ops that ThreadPoolScheduler uses
+ Measure and report time spent on JIT compilation
+ Ensure memory blocks in the nursery are aligned where necessary
+ Spot use of an item already put in a gen2 freelist
+ Suspend other threads during global destruction
+ Fix missing GC mark of deserializer contexts list
+ Optimize getrusage and log it in the profile
+ Add getsignals op, queries for valid signals
+ Guard against negative and zero signals in MVM_io_signal_handle
+ Make tryfindmeth not throw in some cases it did
+ Add missing write barrier enforcement in CPPStruct, CStruct
+ Use Fixed Size Allocator for all_scs list
+ Fix segfault on concurrent array access while resizing
+ Mark thread blocked around getaddrinfo
+ Convey the process ID of a started child
+ Fix optimization of wvals
+ Fix negated spesh of known type
+ Add optimize_unbox
+ Fix issues with optimization of boolean tests
+ Insert null-out-instructions before prof_enter
+ Cut module names out of filenames
+ Add metadata for ReentrantMutex and Semaphore
+ Fix loading bytecode on big endian systems
+ Correct lazy static lexical deserialization
+ Fix bytecodedump to understand inlines
* Tue Mar 20 2018 nine@detonation.org
- update to version 2018.03
+ Add remote debugging support, optionally enabled with the --debug-port option
+ Add getppid op. Allows a child process to get the parent process id, and thus
+ Use uv_fs_copyfile API in MVM_file_copy
+ Make IO signal handlers cancellable
+ Add an tryfindmethod op which evaluates to null in the event that the method
+ Ignore libuv-caused "fake" empty datagrams
+ Expose both hostname and port of received datagrams
+ Add proper support for strict decoding and replacements in decodestream for windows1252/1
+ Add some string consts in MVMStringConsts for MVMDecodeStream
+ optimize eq_s and ne_s against empty string in spesh
+ Bump libuv version 1.19.2
+ Add JIT templates for more than 50 ops
+ Fix several bugs in the expr JIT compiler
+ Only BAIL on DEOPT_ONE annotations on actual guard ops in expr JIT
+ Support for threaded profiling has been added, although it is not fully stable yet
+ Clean up one-shot timers after firing
+ Fix missing argument to syncsocket error message
+ Fix EOF detection on zero-size files
+ Add windows-1251 (Cyrillic) decode/encode support
+ Make MVM_spesh_manipulate_remove_handler_successors() public
+ Fix MVM_spesh_log_decont not logging anything
+ Don't spesh log if we have a spesh_cand
+ Don't optimize getattr unless known concrete
+ Implement unmanaged_size in MVMSpeshLog repr
+ Run basic facts discovery on inlined code
+ Clean up handler successors after throwish ops become non-throwing
+ Put inlined blocks between their caller and its successor
+ Fix an off-by-one in uninline
+ Remove superfluous DEOPT_ONE_INS annotation on some deconts
+ Work around a segfault caused by type tuple without type information
+ Revive removal of dead instructions after the first inlined function
+ Fix SEGV when opening MVM_*_LOG files
+ Better error in boxed ref for repr_id mismatch
+ Merge non-control-flow basic blocks so expr JIT has more code to optimize
* Thu Feb 01 2018 nine@detonation.org
- update to version 2018.01
+ Faster string searching and other string improvements
+ New expression JIT
+ JIT compilation of native calls
+ Update Unicode database for Unicode 10
+ Flush standard handles at exit
+ Flush output buffer where needed
+ Various improvements to spesh
+ Lots of bug fixes
* Mon Aug 21 2017 nine@detonation.org
- update to version 2017.08.1
+ Dynamic optimization moved to a worker thread
+ New statistics model for making better specialization decisions
+ New argument guard, based around a tree, which means less checks need to be
+ More efficient usage of memory in hot paths
+ Lots of bug fixes (around optimization and string handling)
+ JIT improvements
+ Performance improvements
+ Make precompiled byte code reproducible
+ Enable native callbacks on different threads
+ Update TinyMT to version 1.1
+ Implement atomic ops
+ Add nqp::coveragecontrol op
* Sat Jul 29 2017 nine@detonation.org
- update to version 2017.07
+ Full Unicode 9.0 and Emoji 4.0 text segmentation support
+ Lots of speed-ups, especially in string processing and JIT compiler
+ Numerous bug fixes
+ Remove support for character level I/O - taken over by high level code
+ Remove arbitrary string repeat limit
+ Remove synchronous process support - now done using async code
+ Re-implement synchronous sockets without using libuv
+ Add ability to get port from already bind-ed socket
+ Add cpucores op to get the number of CPU cores
+ Re-implement print/say debug output ops to encode and then use binary I/O
+ Eliminate use of libuv in synchronous file handles
+ Support merge_bytes in async proc ops, for reading STDOUT and STDERR
+ Support binding handles to file descriptors in async procs
+ Add string eqat/index ignorecase+ignoremark functions
+ Add new eqaticim_s and indexicim_s ops ignorecase+ignoremark
+ Add improved support for GCB=Prepend
+ Improve Regional Indicators support during normalization
+ Serialize a Decoder REPR object into null, so incidental file handle
+ Fix newline translation in various encoding's streaming decoder
* Wed Jun 07 2017 nine@detonation.org
- Explicitly state build requirement to fix build on Fedora
* Fri Jun 02 2017 nine@detonation.org
- update to version 2017.05
+ Mark profiler call graphs iteratively instead of recursively
+ Keep around line number annotations in spesh, for more accurate source
+ Introduce "telemeh", a high-precision-time low-impact logger
+ Fix error reporting in chdir
+ Fix memory leak on error in chdir
+ 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
* Tue Apr 18 2017 nine@detonation.org
- update to version 2017.04
+ Shorten the nursery when creating large bigints, to bring GC forward and
+ Use correct format for repeat/concat errors
+ Fix bug in indexic_s if expanding codepoint is the last codepoint
+ Speed up MVM_nfg_is_concat_stable
+ 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
+ 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
+ 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
+ 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
+ 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
+ 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
+ Remove arbitrary and small length range check for reading bytes from a file
+ Greatly reduce contention in the fixed-size allocator for multi-threaded
+ Mark thread GC blocked when doing synchronous writes
+ Add missing MVMROOT when reading bytes, which could result in occasional
- Remove moarvm-remove-rpath.diff as the issue has been fixed upstream.
* Sun Mar 19 2017 nine@detonation.org
- update to version 2017.03
+ Fix loads of performance and stability issues
* Sun Dec 18 2016 nine@detonation.org
- remove use of rpath in build
Patch is already included in upstream git and can be removed in the next
release.
new patch: moarvm-remove-rpath.diff
* Sun Dec 18 2016 nine@detonation.org
- replace patching in spec file by use of proper configure options
- update to version 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
* Thu Nov 24 2016 nine@detonation.org
- update to version 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
+ Introduce MVM_SPESH_LIMIT, which limits how many specializations will be
+ 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
+ give diagnostic output when compiling fails
+ Fixed readdir so it won't check old errno
+ 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
* Sun Oct 16 2016 nine@detonation.org
- update to version 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
* Fri Sep 30 2016 nine@detonation.org
- update to 2016.09
+ Fix various crasher bugs
+ Fix sprintf
+ Move string decoding to higher levels of the stack
+ Fix a couple of memory leaks
+ Fix deadlocks when accepting a socket
* Sun Aug 21 2016 nine@detonation.org
- update to 2016.08
+ Fix various concurrency issues
+ Don't crash in P6opaque on NULL name_to_index_mapping
+ Fix off-by-one in grapheme iterator
+ 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
+ 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
* Sun Jul 24 2016 nine@detonation.org
- update to 2016.07
* Numerous fixes for memory leaks
* Numerous performance improvements
* Fixes for NativeCall
* Updates to moar-gdb.py (MoarVM GDB plug-in)
* New heap profiler
* JIT compile more code paths
* Make the GC smarter
* Fixes for UTF8-C8 encoding and use it for directory listing
* Fixe a couple of SEGVs
* Further support for function pointers in native calling
* Implement loadbytecodebuffer and loadbytecodefh ops
* New multi-dispatch cache supporting calls with named parameters
* Fri Jan 29 2016 nine@detonation.org
- update to 2016.01
* Only optimize istrue to unbox_i when known concrete
* Bump libuv to 1.8
* 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
* Mon Jan 04 2016 nine@detonation.org
- update to 2015.12
* support for multidimensional arrays
* updated to Unicode 8 and lots of Unicode fixes
* C++ support for native calling
* proper support for unsigned native types
* threading fixes
* memory leak fixes
* Thu Jun 11 2015 mls@suse.de
- update to 2015.05
* instrumenting profiler
* many optimizations
* added documentation
* large file handling
* endian fixes
* lazy deserialization
* implement NFC/NFD/NFKC/NFKD Unicode normalization algorithms
* fix various memory leaks
- fix setup
* Fri Aug 22 2014 mls@suse.de
- update to 2014.08
* support for JIT
* specializer support
* async read/write
* lots of bugfixes