
== [8.2.10] 2025-10-18 ==

* Add missing test_cpp dependency on gc_allocator.h in build scripts
* Add Serenity OS to list of platforms with POSIX threads in configure
* Avoid abort on ResumeThread failure if Win32 DllMain closes thread handle
* Avoid code duplication in GC_dyld_image_add/remove on Darwin
* Do not define GC_SysVGetDataStart on AIX
* Do not produce '-lpthread' by threadlibs on Tru64/OSF1
* Do not search for data start using GC_find_limit on Haiku
* Do not use deprecated _dyld_bind_fully_image_containing_address (Darwin)
* Do not use deprecated get_etext and get_end on Darwin
* Do not use deprecated getsectbynamefromheader_64 (Darwin)
* Duplicate abort message in system app crash dialog on Haiku
* Eliminate 'allocating insufficient size 0 for char` gcc warning in gctest
* Eliminate 'compare signed/unsigned in check_finalizer_nested' bcc warning
* Eliminate 'conversion from void* to ptr_t' g++ warning in PS_ALLOCA_BUF
* Eliminate 'int-to-ptr cast' gcc warning in GC_push_all_stacks on Solaris
* Eliminate 'int-to-ptr cast' gcc warning in GC_restart_all on OpenBSD
* Eliminate 'int-to-ptr cast' gcc warnings in DEBUG_THREADS code
* Eliminate 'message number 726 is invalid' wcc warning
* Eliminate 'unused parameter fd' gcc warning in NOSYS GC_write
* Eliminate 'value exceeds maximum obj size' gcc warning in hugetest on x32
* Ensure no GC_proc_buf overrun on Solaris
* Export CMake libraries with aliases
* Fix 'cannot implement AO_compare_and_swap_full' error by wcc in tests
* Fix 'cannot locate assembly file' bcc32 error in CMake script
* Fix 'conflicting types for sbrk' gcc error on Solaris if redirect malloc
* Fix 'missing GNU-stack section in atomic_ops_sysdeps' ld warning
* Fix 'symbol undefined _snprintf' dmc linker error in cordtest
* Fix 'undefined STACKBOTTOM' preprocessor error for no-OS PowerPC target
* Fix 'undefined symbol GC_arrays` in tools on Solaris
* Fix 'undefined symbol sbrk' linker error on FreeBSD
* Fix all broken URLs in documentation (as of Nov 2024)
* Fix assertion violation about GC_mark_lock_holder in fork_child_proc
* Fix blocked signals in fork_prepare_proc on HP/UX
* Fix cast of struct-based pthread_t to void pointer on Win32
* Fix code blocks formatting in .md files
* Fix compilation error regarding locks initialization in GC_init on HP_PA
* Fix CPP_WORDSZ for LoongArch
* Fix deprecation warning about support of CMake older than v3.10
* Fix extraneous '#' symbol before comment near USE_WINALLOC for Cygwin
* Fix GC_GRANULE_BYTES for SPARC V9
* Fix GC_suspend abort when the thread is deleted by DllMain
* Fix GC_threads alignment caused by 1-byte global AO_TS_t variables (wcc)
* Fix GETPAGESIZE and USE_M[UN]MAP for Nintendo Switch
* Fix getting memory from OS on Haiku
* Fix I_HOLD_LOCK assertion violation in child process
* Fix mark lock in child process after fork
* Fix missing export for Symbian-specific GC_init_global_static_roots
* Fix missing parentheses in SIG_THR_RESTART macro definition
* Fix print_heap_obj call with the lock held in backgraph add_edge
* Fix pthread id stored in GC_threads of child process
* Fix pthread id stored in key thread_specific_data of child process
* Fix pthread_sigmask result checking in GC_start_mark_threads_inner
* Fix reading async proc maps when GC is single-threaded but process is not
* Fix rounding up in STACKBOTTOM for OSF1
* Fix stack base detection on Haiku by using pthread_getattr_np()
* Fix stack direction detection in setjmp_t on E2K
* Fix symbols alignment checking for CRIS and M68K
* Fix undefined reference to GC_objfreelist and GC_bytes_allocd
* Fix usage of new structured procfs interface on Solaris
* Fix various typos in comments and documentation
* Force use of spin locks to improve performance on Haiku
* Grow GC_proc_buf to required size in GC_proc_read_dirty instead of WARN
* Handle sparc-sun-solaris3 (SunOS6) in configure to use sparc_mach_dep.S
* Initial support of Serenity OS on x86[_64]
* Refine comment in fork_child_proc() about GC_allocate_ml attribute
* Refine description of 'more background' links in Overview document
* Remove always-false check if C++ allocator.allocate returns null in test
* Remove comment about limited support of memory unmapping
* Remove improper comment about returned value of CORD_extend_path
* Remove outdated comment about 'make distcheck' from Makefile.am
* Support RISC-V ILP32 ABI (rv64ilp32)
* Suppress 'missing return value' wcc warning for AO asm primitives
* Suppress 'unreachable code' wcc warnings in win32 threads ASSERT (CMake)
* Turn off thread suspend/resume API support explicitly
* Update libatomic_ops repo URL in README after repo transfer
* Update URLs in documentation after repo transfer to bdwgc organization
* Workaround '__stdcall__ ignored for this target' clang warning on Cygwin64
* Workaround 'array index 4096 is above bounds' gcc warning in malloc_kind
* Workaround 'REFERENCED_DYNAMICALLY flag' linker error on macOS 15.4
* Workaround incremental collection fails on Haiku
* Workaround tests crash if mprotect-based VDB is manually selected (bcc)
* Workaround undefined GC_ptr_store_and_dirty MinGW error in Makefile.direct
* Workaround vpush/vpop instructions generation for non-FPU ARMv5 target


== [8.2.8] 2024-09-08 ==

* Allow GC_size() argument to be null
* Disable backtrace saving at garbage collections if DONT_SAVE_TO_LAST_STACK
* Eliminate 'cast signed to bigger unsigned' CSA warnings in GC_find_limit
* Eliminate 'x might be clobbered by longjmp' gcc warning in setjmp_t.c
* Fix 'un-mprotect vdb failed' abort with out-of-memory reason on Linux
* Fix ADD_CALL_CHAIN() placement to follow GC_store_debug_info_inner call
* Fix GC_debug_realloc to support custom kind
* Fix GC_is_visible for case of arg pointing exactly to object upper bound
* Fix GC_print_trace_inner to print the last element of the circular buffer
* Fix cordtst2.tmp file deletion in cordtest on Windows
* Fix double lock in GC_malloc called from backtrace()
* Fix handling of page-unaligned boundaries in soft_set_grungy_pages
* Fix heap blocks size computation by GC_get_memory_use
* Fix indent of a closing curly braces in GC_apply_to_all_blocks
* Fix infinite resend lost signals if a thread is restarted by SIGQUIT
* Fix null pointer dereference in GC_is_visible if type_descr is null
* Fix per_object_helper() after changing hb_sz units
* Fix pointer relational comparison in GC_do_enumerate_reachable_objects
* Fix poor thread-local allocation performance because of double EXTRA_BYTES
* Fix potential GC_add_roots_inner call with an overflowed pointer (Win32)
* Fix potential address overflow in GC_add_to_heap
* Fix potential buffer overrun during read in GC_text_mapping
* Fix various typos in comments
* Prevent GC_noop_sink from scanning by the collector
* Prevent redirected malloc call from a garbage collection routine
* Redirect malloc_usable_size() in leak_detector.h
* Remove redundant dirty/reachable_here calls in GC_malloc_explicitly_typed
* Update and fix diagrams describing the tree structure for pointer lookups
* Use atomic store to set GC_first_nonempty in GC_do_parallel_mark
* Use atomic store to set entry id and update cache_ptr in slow_getspecific
* Workaround '.obj file not found' error reported by watcom wlib


== [8.2.6] 2024-02-04 ==

* Avoid unexpected heap growth in gctest for the case of VERY_SMALL_CONFIG
* Change gc.man to include gc/gc.h
* Check for out-of-memory on every memory allocation in tests
* Do not compile pthread_start.c on Cygwin even if build shared libs (CMake)
* Eliminate 'alloc_small declared but unused' gcc warning in gctest
* Eliminate 'make_key is defined but unused' gcc warning in threadkeytest
* Eliminate 'old_segv_handler is defined but unused' gcc warning on OpenBSD
* Eliminate 'rand() may return deterministic values' warning
* Eliminate 'unused parameter' compiler warnings reported by MS clang
* Eliminate 'unused parameter' gcc warning in free() if IGNORE_FREE
* Eliminate 'unused value' gcc warnings in init_global_static_roots (Symbian)
* Eliminate GCC warning of unsafe __builtin_return_address(1) in Cmake script
* Eliminate compiler warning of missing cast in LONG_MULT after shift
* Eliminate warning of unused expression result in GC_FreeBSDGetDataStart
* Ensure _GNU_SOURCE is defined if HAVE_DLADDR is defined by configure
* Fix 'g++ not found' error on OpenBSD (Makefile.direct)
* Fix 'implicit declaration of function pthread_atfork' gcc error on MinGW
* Fix 'implicit declaration of function sbrk' gcc error on Symbian
* Fix 'implicit declaration of iscntrl()' warning in cord/de_win (MinGW)
* Fix 'info' buffer potential overrun in GC_save_callers
* Fix 'l-value specifies const object' MSVC error in GC_push_many_regs
* Fix 'linker input unused' error inside check_c_compiler_flag (CMake)
* Fix 'missing binary operator before token' gcc error in gcconfig.h
* Fix 'missing sysconf() prototype' gcc error in setjmp_t tool (OpenBSD)
* Fix 'sigset_t undeclared' MS VC error if pthreads-w32 is used
* Fix 'undefined reference' linker errors if shared build on OpenBSD (CMake)
* Fix 'unused GC_set_and_save_fault_handler' warning on OS X
* Fix GC_push_stack_for() to push also Xmm registers on Windows/x64
* Fix GC_set_handle_fork(1) on Darwin when MPROTECT_VDB but no threads
* Fix MACH_TYPE macro redefinition on Symbian/arm
* Fix SVR4 macro definition order
* Fix asm constraint in LONG_MULT for gcc/x86
* Fix assertion violation in GC_get_maps on Linux if malloc redirection
* Fix back graph and checksums support in WCC_MAKEFILE
* Fix bitwise negation and rounding direction in setjmp_t tool
* Fix checksums GC_record_fault invocation on Darwin
* Fix closing bracket placement for case statement in configure
* Fix deprecation warning about support of CMake older than v3.5
* Fix extra 'extern C' for include signal.h in gcconfig.h
* Fix getcontext() detection by CMake on OpenBSD
* Fix handling of GC_gc_no counter wrap in GC_clear_stack
* Fix handling of GC_gc_no counter wrap in GC_notify_or_invoke_finalizers
* Fix indent of a closing curly brace in GC_forward_exception
* Fix lock assertion violation in GC_try_to_collect_inner on OS X
* Fix missing GC_pthread_sigmask on FreeBSD and NetBSD
* Fix missing _setjmp() on djgpp
* Fix missing atomic barriers in CORD_from_file_lazy
* Fix missing outermost parentheses in CORD_pos_cur_char_addr and hugetest
* Fix missing redirect and implementation of pthread_sigmask() on OpenBSD
* Fix missing type widening before left shift in GC_MAKE_PROC
* Fix misspelled GC_HEADERS_H macro in gc_priv.h
* Fix null dereference in check_finalizer_nested if redirect malloc on Linux
* Fix posix_memalign() to overwrite pointer storage only on success
* Fix race in init_lib_bounds on Linux with glibc v2.34+ if redirect malloc
* Fix skipped removal of page protection in case of address hash collision
* Fix typos in comments
* Fix undefined GC_real_pthread_sigmask if redirect malloc on OS X
* Fix update of last_back_trace_gc_no if KEEP_BACK_PTRS is not defined
* Handle GC_gc_no counter overflow properly in GC_print_trace
* Include Darwin CoreFoundation.h only if 32-bit ARM
* Make gc_allocator<void> members public
* Re-enable incremental mode on OS X (arm64)
* Remove .log and cordtest .tmp files by 'make clean' (Makefile.direct)
* Remove a redundant check of HOST_ANDROID in gcconfig.h
* Remove duplication of random numbers generator formula
* Specify constexpr in GC allocators if C++20 or later
* Support NetBSD/riscv64
* Support non-msys MinGW build by CMake
* Turn on handle fork by default on Darwin (multi-threaded only)
* Use AO primitives in GC_RAND_NEXT instead of no_sanitize attribute
* Workaround 'malloc inconsistent dll linkage' MS VC error in CMake script
* Workaround MS Clang failure to compile de_win.rc
* Workaround mark stack overflow in GC_push_finalizer_structures on MinGW


== [8.2.4] 2023-05-26 ==

* Abort with appropriate message if first call of mmap fails with EPERM
* Adjust CORD_ec comment placement in ec.h
* Adjust WoW64 workaround to work on UWP/WinRT
* Adjust naming of Win32/64 and x86/64 words in comments and documentation
* Avoid potential race between realloc and GC_block_was_dirty
* Do not double-clear first two words of object in GC_generic_malloc
* Do not mention FASTLOCK in comment
* Do not mix debug and non-debug allocations in disclaim tests
* Do not prohibit threaded builds with malloc redirection on non-Linux
* Do not prohibit zero proc argument in GC_register_disclaim_proc
* Eliminate '&array may not produce intended result' wcc warnings
* Eliminate 'GC_unmap_end declared but unused' bcc warning in disclaim_bench
* Eliminate 'ISO C++17 does not allow register specifier' gcc warning
* Eliminate 'cast signed to bigger unsigned' CSA warning in WARNs, new_thread
* Eliminate 'n obtained from untrusted source' code defect FP in test_cpp
* Eliminate 'skipping config since MAXSIG/_NSIG is unknown' cppcheck FP
* Eliminate data race FP between remove_protection and write_fault_handler
* Eliminate data race FP reported in need_unreachable_finalization by TSan
* Ensure 'new' system header is included by gc_cpp.h if GC_INCLUDE_NEW
* Ensure GC_NO_PTHREAD_SIGMASK defined if no GC_pthread_sigmask prototype
* Fix 'EMSCRIPTEN macro redefined' compile error
* Fix 'ISO C90 forbids mixed decl and code' warning in SOFT_VDB dirty_init
* Fix 'call to undeclared pthread_setname_np' errors in configure and cmake
* Fix 'failed to create new win32 semaphore' Cygwin fatal error at fork
* Fix 'operator new is missing throw(bad_alloc)' clang warning in gc_cpp.h
* Fix 'overflow in conversion from word' g++ warning in GC_init
* Fix 'unknown option --no-undefined' linker error in cmake script (OS X)
* Fix 'unresolved _end' linker error when targeting Android bitcode
* Fix CORD_next() indent inside loop in test_basics() of cordtest
* Fix DCL_LOCK_STATE placement in GC_set_oom_fn
* Fix GC_excl_table overrun on overflow in GC_exclude_static_roots
* Fix GC_thread_is_registered for finished threads
* Fix GC_unreachable_finalize_mark_proc to ensure its unique address
* Fix GC_unregister_my_thread call before GC functions usage in gctest
* Fix IRIX5 defined wrongly on FreeBSD/mips, WinCE/mips, Tandem S-Series
* Fix allocated objects count increment in alloc8bytes of gctest
* Fix alt-stack handling in GC_push_all_stacks if stack grows up
* Fix comparisons to heap boundary in GC_get_back_ptr_info and GC_mark_from
* Fix data race in GC_heapsize_at_forced_unmap variable
* Fix description of client promise for IGNORE_OFF_PAGE allocated objects
* Fix disabling of automatic dynamic libraries registration
* Fix double initialization of main thread local free lists on Win32
* Fix gccpp and gctba library names in gcinterface.md
* Fix infinite loop in disable_gc_for_dlopen and GC_wait_for_gc_completion
* Fix infinite wait in pthread_join/detach if thread already finished (Win32)
* Fix joinable threads shutdown on NaCl
* Fix loop condition over dll_thread_table in GC_lookup_pthread (Win32)
* Fix missing GC_CALLBACK for GC_waitForSingleObjectInfinite
* Fix missing extern C for __asan_default_options
* Fix missing libalphagc.so dependency in Makefile.direct
* Fix missing lock while updating GC_in_thread_creation in GC_exit_check
* Fix missing recovery from faults in GC_mark_some on Win64 if MinGW
* Fix missing result check of pthread_attr_getdetachstate in pthread_create
* Fix mistyped function name in documentation of REDIRECT_REALLOC
* Fix negative heap size values reported in WARN
* Fix null pointer dereference in TRACE_TARGET
* Fix of GC_bytes_allocd increment in GC_generic_malloc_inner
* Fix overlapping region assertion in mark_some if malloc redirect on Linux
* Fix potential SIGSEGV on out-of-memory in gctest
* Fix signals delivery fail in find-leak mode if init from non-main thread
* Fix stack top/bottom print order in GC_push_all_stacks if stack grows up
* Fix store-and-dirty call in GC_CONS
* Fix unregistering of thread created by intercepted pthread_create on NaCl
* Fix unused GC_parse_version if no SOFT_VDB and no parallel mark on Linux
* Fix use of unset errno after pthread_create/sigmask calls
* Fix various typos in comments and documentation
* Increment allocated objects count after GC_GCJ_MALLOC() in gctest
* Invoke GC_oom_fn if GC_make_array_descriptor failed because of no memory
* Make Emscripten Asyncify feature optional
* Mention gctba library in README.cmake
* Prevent 'function should return a value' BCC error in CMake script
* Provide meaningful error message in case of Emscripten threaded build
* Reduce local variable scope in resend_lost_signals_retry for cppcheck
* Remove disable-warning options from WCC_MAKEFILE unrecognized by wcc v2.0
* Remove false warning of missing libpthread.so on Linux
* Remove redundant 'ifdef THREADS' around LOCK/UNLOCK in call_with_alloc_lock
* Remove redundant GC_ATTR_UNUSED for GC_mark_and_push
* Remove unused GC_old_sig_mask from gc_locks.h
* Replace WARN in GC_mark_some wrapper back to GC_COND_LOG_PRINTF
* Specify throw and noexcept for operator new/delete in gc_cpp.h for MS VC
* Support Hurd/x86_64
* Support client-defined stack pointer adjustment before thread stack push
* Suppress 'unreachable code' wcc warning in I_HOLD_LOCK assertion (CMake)
* Update autotools for release preparation (ac-2.71, am-1.16.5, m4-1.14.19)
* Update dump function name in GC_DUMP_REGULARLY variable documentation
* Use emscripten_stack_get_base instead of emscripten_scan_stack
* Use sbrk() to get OS memory on Emscripten
* Workaround 'writing into region of size 0' gcc warning in suspend_handler
* Workaround CSA null pointer dereference FP in invalidate_map of cord/de
* Workaround a malfunction of soft-dirty bits clearing on Power9


== [8.2.2] 2022-08-26 ==

* Abort if no progress with thread suspend/resume signals resending
* Add CMake option to force libatomic_ops headers usage
* Add _PROP suffix to CORD/GC[CPP]_VERSION variables in CMake script
* Allow not to bypass pthread_cancel hardening in pthread_start
* Allow to start marker threads in child of single-threaded client
* Avoid potential race in GC_init_real_syms after GC_allow_register_threads
* Avoid potential signal loss before sigsuspend in suspend_handler if TSan
* Define SUNOS5SIGS macro for kFreeBSD
* Distribute gc_gcj.h and some other headers in single-obj-compilation
* Do not assert that GC is initialized at DLL_THREAD_DETACH (Win32)
* Do not call SET_HDR() to remove forwarding counts if none exists in hblk
* Do not call mprotect/mmap to GC_unmap/remap (Linux)
* Do not count unmapped regions if GC_unmap is madvise-based (Linux)
* Do not define NEED_FIND_LIMIT in case of OpenBSD user threads
* Do not fail tests if pthread_create returns resource unavailable error
* Do not name GCC intrinsics as C11 ones
* Do not probe to find main data root start if dl_iterate_phdr exists
* Do not send signal to thread which is suspended manually
* Do not use usleep between signals resend if ThreadSanitizer
* Eliminate '-pedantic is not option that controls warnings' GCC-6.3 message
* Eliminate '/GS cannot protect parameters' MS VC warning in msvc_dbg
* Eliminate 'R_AARCH64_ABS64 used with TLS symbol' linker warning (clang)
* Eliminate 'buffer overflow detected' FP error in realloc_test
* Eliminate 'extension used' clang warning in sparc_mach_dep.S (configure)
* Eliminate 'function/data pointer conversion in expression' MSVC warning
* Eliminate 'implicit decl of _setjmp' gcc warning if -std=c11 on Cygwin
* Eliminate 'layout of aggregates has changed in GCC 5' warning in test_cpp
* Eliminate 'new_l may be used uninitialized' gcc warning in os_dep (Cygwin)
* Eliminate 'old_gc_no is initialized but not referenced' MS VC false warning
* Eliminate 'possible loss of data' compiler warning in GC_envfile_getenv
* Eliminate 'potentially uninitialized local variable tc' warning (MSVC)
* Eliminate 'skipping config since MAX_HEAP_SECTS is unknown' cppcheck FP
* Eliminate 'unused but set variable' gcc warnings in cpptest
* Eliminate 'value exceeds maximum size' warnings in debug_malloc, huge_test
* Eliminate 'writing into region of size 0' gcc FP warning in realloc
* Eliminate ASan stack-buffer-underflow FP in GC_mark_and_push_stack (E2K)
* Eliminate code defect about incorrect size of allocated object (leaktest)
* Eliminate data race reported by TSan in GC_have_errors
* Eliminate division-by-zero FP warning in GC_ASSERT in reclaim_block
* Eliminate stringop-overflow gcc-12 warning in CORD__next
* Ensure typed objects descriptor is never located in the first word
* Fix 'GC_greatest_stack_base_below is defined but not used' warning (IA64)
* Fix 'GC_text_mapping not used' GCC warning if redirect malloc w/o threads
* Fix 'ISO C forbids conversion of function pointer to object' warning
* Fix 'undeclared getpagesize' compiler warning on AIX and OSF1
* Fix 'undefined reference to __data_start' linker error on Linux/aarch64
* Fix 'unresolved __imp__wsprintfA' linker error in msvc_dbg.c (MSVC)
* Fix 'unresolved symbol GetModuleHandle' error in win32_threads.c (UWP)
* Fix (workaround) stack overflow in gctest on Alpine Linux/s390x
* Fix GC_ATTR_NO_SANITIZE_THREAD definition for GCC
* Fix GC_allocate_ml incorrect cleanup in GC_deinit if pthreads (MinGW)
* Fix GC_dirty() argument in GC_malloc_explicitly_typed_ignore_off_page
* Fix GC_make_descriptor for zero length argument
* Fix GC_suspend_thread if called before thread destructor
* Fix GC_unmapped_bytes update in GC_unmap for Sony PS/3
* Fix SIGSEGV caused by dropped stack access from child process in gctest
* Fix SUNOS5SIGS documentation to match macro definition in gcconfig.h
* Fix abort in Win32 DllMain if PARALLEL_MARK
* Fix abort when GC_repeat_read returns zero
* Fix assertion about built-in AO_test_and_set_acquire on sparc64 (gcc-12)
* Fix assertion violation in GC_allow_register_threads on Windows
* Fix assertion violation of GC_thread_key alignment if pthread-based TLS
* Fix comment in GC_init regarding GC_init_parallel call
* Fix context saving when GC_suspend_thread(self)
* Fix data race in fail_proc1 of gctest
* Fix hang in GC_free if GC_PREFER_MPROTECT_VDB (Mingw64)
* Fix hang in select() called from suspend signal handler if TSan
* Fix hang on sem_wait in GC_suspend_thread if thread was resumed recently
* Fix hb_obj_kind type in documentation (ASCII diagram) describing hblkhdr
* Fix incremental mode enabling in gctest if TEST_MANUAL_VDB
* Fix linking of tests in case of finalization is off
* Fix lock assertion violation in GC_find_limit if always multi-threaded
* Fix memory return to OS in GC_unmap
* Fix missing lock when GC_generate_random_valid_address is called
* Fix missing write() declaration if CONSOLE_LOG (Watcom)
* Fix nodist_libgc_la_SOURCES value in Makefile.am for Solaris/sparc
* Fix oldProc initialization in gc_cleanup and eliminate related warnings
* Fix parallel_initialized assertion violation in initsecondarythread (Win32)
* Fix potential race if start_mark_threads called from threads in child
* Fix propagation of out-of-memory occurred in GC_make_sequence_descriptor
* Fix pthread_setname_np and dladdr detection by CMake
* Fix race between calloc_explicitly_typed and push_complex_descriptor
* Fix typos in comments and debugging.md
* Fix undefined __stack_base__ on UWP/arm64 (llvm-mingw)
* Force GC_with_callee_saves_pushed in suspend_handler if NO_SA_SIGACTION
* Link with rt library to get clock_gettime where necessary
* Make finalizer_closure pointer read/write atomic in malloc and callback
* Move platform-specific sleep call to GC_usleep (refactoring)
* Pass -lrt linker option in CMake script on HP/UX, NetBSD
* Prevent (fix) parallel custom mark procs run in single-threaded clients
* Prevent changing of GC_markers_m1 value while collection in progress
* Refer to Makefile.direct instead of deleted Makefile file in README
* Relax assertion of hb_n_marks in reclaim_block if more than two markers
* Remove IF_IA64 macro in pthread_stop_world (refactoring)
* Remove checking of RS6000 completely
* Remove duplicate check of MSWIN_XBOX1 in os_dep.c
* Remove duplicate include gc_tiny_fl.h in gc_priv.h
* Remove non-working check of M68K in gctest
* Remove useless TSan W/A about read of mark_lock_holder for Windows
* Replace RAISE_SIGNAL macro with a static function (refactoring)
* Replace SSH cloning with HTTPS one in README
* Retry pthread_kill if EAGAIN (Linux)
* Revert "Check real-symbols are already initialized in pthread_join/detach"
* Revert "Remove nested always-false ifdef for HPUX and FREEBSD"
* Revert addition of msvc_dbg.h in include.am
* Set default build type to RelWithDebInfo (CMake)
* Start configure help messages with a lower case letter
* Support 'z' format modifier by CORD_vsprintf
* Support Elbrus 2000 (Linux/e2k)
* Support GCC MCF thread model (mcfgthreads) in configure (MinGW)
* Support GC_remove_roots on Win32
* Support OpenBSD/riscv64
* Support build using Makefile.direct on Linux/sparc
* Support space-separated flags in CFLAGS_EXTRA passed to CMake
* Update README.win32 about default build configuration (configure, cmake)
* Update documentation of GC_RATE and MAX_PRIOR_ATTEMPTS
* Use SIGRTMIN+6 as suspend signal if sigrt-signals on OpenBSD
* Use SIGUSR1/2 on FreeBSD/arm64
* Use compiler TLS on NetBSD only if at least gcc-4.4 or clang-3.9
* Workaround 'info is not assigned' cppcheck FP if assertions on (OS X)
* Workaround SIG_SUSPEND delivery to thread inside mutex_lock fail if TSan
* Workaround TSan FP about race between generic_malloc and array_mark_proc
* Workaround TSan FP in acquire_mark_lock called from fork_prepare_proc
* Workaround TSan FP warning in finalized_malloc, push_unconditionally
* Workaround TSan FP warning in fork_prepare_proc
* Workaround TSan FP warning in push_marked1/2/4, ptr_store_and_dirty
* Workaround Thread Sanitizer (TSan) FP warning in is_valid_displacement
* Workaround call stack size exceeded in gctest (Wasm)
* Workaround crash in FreeBSD rand() by avoiding its concurrent usage
* Workaround gctest hang if test compiled as C++ code by MSVC (CMake)
* Workaround msvc_dbg.c build failure on arm[64] (MSVC)


== [8.2.0] 2021-09-29 ==

* Add API for accessing incremental GC time limit with nanosecond precision
* Add API function to force start of incremental collection
* Add GC_ prefix to scan_ptr and some other static variables (refactoring)
* Add GC_get/set_disable_automatic_collection API
* Add I_HOLD_LOCK assertion to expand_hp_inner and related functions
* Add assertion on free-list argument and result of GC_new_kind
* Add assertion that GC is initialized to base incremental_protection_needs
* Add assertions that GC_page_size is initialized
* Add cordtest, staticrootstest, test_cpp, tracetest, disclaim tests (CMake)
* Add debug messages on thread suspend/resume (Win32)
* Add dummy testing of GC_incr_bytes_allocd/freed
* Add table of contents in gcdescr.md
* Add testing of GC_CALLOC/MALLOC_EXPLICITLY_TYPED (gctest)
* Adjust formatting of numbered lists in README.md to match other .md files
* Adjust highlighting of API prototypes in gcinterface.md
* Adjust macro def/usage for AVR32, CRIS, NETBSD, OPENBSD, SH4 in gcconfig.h
* Adjust printf calls in gctest check_heap_stats so that each has new-line
* Allow incremental GC on Cygwin
* Allow memory unmapping in case of MPROTECT_VDB
* Allow to disable GWW or mprotect-based VDB at build
* Allow to disable Glibc FPU exception mask and TSX workarounds (Linux)
* Allow to disable __builtin_return_address(1) usage (x86 and x64)
* Allow to specify custom value of LOG_PHT_ENTRIES
* Always abort on failure to access /proc/self/maps (Linux)
* Always define default_push_other_roots (code refactoring)
* Avoid gcc stringop-overflow warning for intended overflow in smashtest
* Avoid initial 3ms pause on world stop/start with GC_retry_signals (Linux)
* Build cord.lib by Makefile.direct, NT_MAKEFILE, OS2_MAKEFILE, WCC_MAKEFILE
* Build gc as a shared multi-threaded library by default (CMake)
* Build gccpp library by Makefile.direct, NT_MAKEFILE and WCC_MAKEFILE
* Build gctba library
* Build shared libraries by default (WCC_MAKEFILE)
* Change CLOCK_TYPE to timespec for Nintendo Switch (code refactoring)
* Change EMSCRIPTEN macro for internal use to no-underscore format
* Change log_size fields of finalizer to unsigned type (code refactoring)
* Change type of toggleref_array_size/capacity to size_t (code refactoring)
* Check leak of objects allocated by CRT malloc in gctest (MS VC)
* Check real-symbols are already initialized in pthread_join/detach
* Collapse multiple includes of windows.h (code refactoring)
* Comments reformatting in mark.c to properly delimit sentences
* Compile de test GUI app with resources (CMake)
* Compile gc.c unless building static libraries (NT_MAKEFILE, WCC_MAKEFILE)
* Compile msvc_dbg.c by CMake script (MS VC)
* Declare API function and print amount of memory obtained from OS
* Define GC_win32_free_heap API function for all Windows targets
* Define STATIC macro to static by default
* Depend number of fork_a_thread calls on NTHREADS (gctest)
* Detect dladdr() presence in CMake script
* Detect presence of execinfo.h system header in CMake script
* Detect presence of getcontext and dl_iterate_phdr in CMake script
* Detect sigsetjmp() availability in CMake script
* Disable Clang/GCC aliasing optimization in CMake script by default
* Do not build tests by default (Makefile.direct and other Makefiles)
* Do not build the tests by default (CMake)
* Do not call GC_push_conditional unless PROC_VDB
* Do not call add_to_our_memory with null pointer (refactoring)
* Do not compile pthread_*.c files in Cygwin or MSYS (CMake)
* Do not define GC_write_cs for Xbox One target
* Do not define HAVE_NO_FORK for all Unix-like systems
* Do not hard-code CMAKE_DL_LIBS value and install paths (CMake)
* Do not hard-code finalizable objects limit which triggers GC
* Do not update scratch_last_end_ptr unless used by reg dynamic libraries
* Document GC_incr_bytes_allocd/freed API function
* Eliminate '(long)size<=0 is always false' cppcheck FP
* Eliminate 'Consecutive return is unnecessary' cppcheck style warning
* Eliminate 'accessing GC_dont_gc without lock' in GC_init code defect FP
* Eliminate 'bytes_freed access w/o lock in incr_bytes_free' code defect FP
* Eliminate 'checking if unsigned i < 0' cppcheck FP in is_heap_base
* Eliminate 'hash_val value is never used' cppcheck false positive
* Eliminate 'passing tainted var maps_buf to tainted sink' code defect FP
* Eliminate 'retry_cnt is assigned value but never used' cppcheck FP
* Eliminate 'stop variable is always 0' compiler warning in print_callers
* Eliminate 'struct member os_callback is never used' cppcheck warning
* Eliminate 't->flags not atomically updated' code defect FP
* Eliminate 'tmpl might be accessed at non-zero index' cppcheck error
* Eliminate GCC warning of unsafe __builtin_return_address(1)
* Eliminate code duplication in reclaim_clear and disclaim_and_reclaim
* Eliminate double lock code defect false positive in generic_lock
* Eliminate memory leak reported in add_current_malloc_heap at exit (Win32)
* Emscripten single-threaded support (detect stack base, push registers)
* Enable CMake-based build for Borland and Watcom compilers
* Enable compilation without C runtime (Win32)
* Enable fork testing in single-thread builds (Unix-like)
* Enable mprotect-based incremental GC for Linux/arm and Linux/aarch64
* Enable true incremental collection even if parallel marker is on
* Enable use of __builtin_unwind_init() if clang-8 or later
* Ensure ELFSIZE is defined in dyn_load.c for OpenBSD (code refactoring)
* Ensure add_to_heap_inner arguments are valid (refactoring)
* Ensure all getters and setters are run at least once by gctest (pthreads)
* Export CMake targets with namespace BDWgc
* Fix 'const obj must be initialized if not extern' error in gc_alloc_ptrs.h
* Fix ./libgc.la dependency on FreeBSD (Automake)
* Fix HOST determination in CMake script
* Fix copyright message in de_win.rc, gc_cpp.cc, ec.h and specific.h
* Fix missing OS_TYPE definition for some targets
* Fix mmap(PROT_NONE) failure if RLIMIT_AS value is low (Linux)
* Generate cordtest and de executable files in GC base folder
* Generate pkg-config metadata file (CMake)
* Get rid of some non-ELF ifdefs (code refactoring)
* Handle potential incomplete buffer read in GC_linux_main_stack_base
* Implement GET_TIME for Nintendo Switch
* Increase NTHREADS value in tests if code coverage analysis
* Install docs and man page if enable_docs (CMake)
* Install gc_gcj.h and gc_pthread_redirects.h only if appropriate
* Log abort message details even if not print_stats (unless SMALL_CONFIG)
* Mark buffer returned by get_maps as const (code refactoring)
* Move C++ GC_ATTR_EXPLICIT and GC_NOEXCEPT definition to gc_config_macros.h
* Move GC state non-pointer variables into GC_arrays (code refactoring)
* Move GC state pointer variables into GC_arrays
* Move GC_scratch_recycle_inner() to alloc.c (refactoring)
* Move GC_throw_bad_alloc definition to new C++ file
* Move QNX and Emscripten macro definitions to proper place in gcconfig.h
* Move definition of GC_n_mark_procs and GC_n_kinds from mark.c to misc.c
* New API (GC_set_markers_count) to control number of parallel markers
* New API function to clear GC exclusion table
* New API function to get size of object debug header
* New API standalone functions to acquire and release the allocator lock
* New CMake option (disable_gc_debug) to remove debugging code
* New CMake option (disable_handle_fork) to disable fork handling completely
* New macro (CONSOLE_LOG) to enable logging to console on Win32
* New macro (GCTEST_PRINT_VERBOSE) to enable verbose logging in test.c only
* New macro (NO_MSGBOX_ON_ERROR) to avoid message box on GC abort (Win32)
* OpenBSD does not use ELF_CLASS (code refactoring)
* Pass -D GC_DLL -fvisibility=hidden if default configure build is requested
* Pass -no-undefined linker flag if building shared libraries (CMake)
* Print pid of child processes if verbose logging (gctest)
* Read environment variables from a file on WinCE (CMake script)
* Reduce stack-allocated buffer in get_nprocs from 4KB to 1.7KB
* Refine flags field comment in pthread_support.h
* Reflect result of VDB selection at runtime in incremental_protection_needs
* Reformat code of GC_push_roots
* Reformat gc.man (wrap long lines)
* Reformatting and code refactoring of CMake script
* Remove 'current users' section from overview.md
* Remove 'distributed ports', 'scalable versions' sections from overview.md
* Remove AC_MSG_RESULT for THREADDLLIBS (dgux386)
* Remove Borland-specific Makefile and gc.mak script
* Remove GC_eobjfreelist variable in typd_mlc.c (code refactoring)
* Remove GC_gcj_malloc_initialized variable (code refactoring)
* Remove Linux-specific commands for building cord/de from Makefile.direct
* Remove Win32 main_thread static variable if threads discovery is disabled
* Remove code duplication between GC_unmap and GC_unmap_gap (refactoring)
* Remove code duplication between PROTECT and UNPROTECT macros (refactoring)
* Remove commented out assignment of gc_use_mmap in configure (refactoring)
* Remove dash characters comprising prefix of some verbose logs (gctest)
* Remove dependency on user32.dll import library from static libgc (Win32)
* Remove documentation specific to particular old BDWGC releases
* Remove duplicate Linux-related macro definitions in gcconfig.h
* Remove duplicate macro definitions in gcconfig.h except for Linux
* Remove gcmt-dll generation, rename libgc-lib.a to libgc.a (CMake)
* Remove goto statement in print_callers (code refactoring)
* Remove limit on number of heap sections
* Remove new_gc_alloc.h file
* Remove redundant GC_with_callee_saves_pushed call in multi-threaded builds
* Remove redundant check of GC_free argument in register_finalizer
* Remove redundant type casts in backgraph HEIGHT_UNKNOWN/IN_PROGRESS
* Remove unused GC_prev_heap_addr (refactoring)
* Remove unused STACK_GRAN macro definitions (code refactoring)
* Remove unused sparc_sunos4_mach_dep.s file
* Remove useless empty statements after block ones (refactoring)
* Remove weakobj_free_list variable in disclaim_weakmap_test (refactoring)
* Rename READ to PROC_READ in os_dep.c (code refactoring)
* Rename cord/cord test executable to de (CMake)
* Rename ext_descr to typed_ext_descr_t (code refactoring)
* Rename gc64.dll to gc.dll and gc[64]_dll.lib to gc.lib in NT_MAKEFILE
* Rename gc68060.lib to gc.lib, cord/cord68060.lib to cord.lib in SMakefile
* Rename make_as_lib option to enable_static in NT_MAKEFILE and WCC_MAKEFILE
* Rename nothreads option to disable_threads in NT_MAKEFILE
* Repeat run_one_test NTHREADS times by gctest if single-threaded
* Replace "msecs" with "ms" in all comments and messages
* Replace 'stack base' with 'stack bottom' in the documentation
* Replace SN_TARGET_ORBIS to PLATFORM_* and GC_NO_* macros
* Replace _M_AMD64 macro with _M_X64 (code refactoring)
* Replace find_limit_openbsd to find_limit_with_bound (OpenBSD 5.2+)
* Replace obsolete AC_HELP_STRING with AS_HELP_STRING (refactoring)
* Replace push_one calls with push_many_regs one for Win32 thread context
* Report memory region bounds and errno on GC_unmap/remap failure
* Report presence of process fork testing (gctest)
* Report time with a nanosecond precision where available
* Retry suspend/resume signals on all platforms by default
* Run tree and typed tests in child process (gctest)
* Set GC_collecting hint for GC_collect_a_little_inner calls (pthreads)
* Set name of GC marker threads
* Set so-version for installed shared libraries (CMake)
* Simplify logged message in scratch_recycle
* Simplify loops of collect_a_little/stopped_mark invoking mark_some
* Support -fvisibility=hidden option in CMake script
* Support CFLAGS_EXTRA to pass extra user-defined compiler flags (CMake)
* Support FreeBSD/RISC-V, Linux/arc, LoongArch, OpenBSD/powerpc64
* Support header files installation (CMake)
* Support most configure options in CMake script
* Suppress warnings in test_tinyfl() of gctest reported by Watcom C complier
* Take nanoseconds into account when updating full_gc_total_time
* Turn off C++ API by default, export it in gccpp library (CMake)
* Turn on automatic fork() handling by default on Android
* Update README.cmake regarding Unix, C++ and tests
* Update libgc.so version info to differentiate against v8.0.x
* Update the ASCII diagrams describing the tree structure for pointer lookups
* Update the documentation to match the current GC implementation
* Upgrade cmake_minimum_required(version) to 3.1
* Use CreateThread without GC_ prefix in gctest (code refactoring)
* Use KB/MB/GB abbreviations uniformly across entire documentation
* Use USE_MMAP_ANON when USE_MMAP is configured on OpenBSD
* Use a specific Emscripten allocator for Tiny
* Use atomic primitives for Sony PlayStation Portable 2 and PS4
* Use better precision Windows timers
* Use clock_gettime() instead of clock() on Cygwin and Linux
* Use compiler TLS on FreeBSD and NetBSD
* Use mprotect-based VDB on PowerPC and S390 (Linux)
* Use soft dirty bits on Linux (x86, powerpc, s390, x64)
* Workaround 'condition result<=0 is always false' cppcheck FP in get_maps
* Workaround 'push_regs configured incorrectly' error (GCC-11)
* Workaround 'same value in both branches of ternary operator' cppcheck FP
* Workaround various cppcheck false positives


== [8.0.16] 2025-10-17 ==

* Add missing test_cpp dependency on gc_allocator.h in build scripts
* Avoid abort on ResumeThread failure if Win32 DllMain closes thread handle
* Do not define GC_SysVGetDataStart on AIX
* Do not produce '-lpthread' by threadlibs on Tru64/OSF1
* Eliminate 'allocating insufficient size 0 for char` gcc warning in gctest
* Eliminate 'compare signed/unsigned in check_finalizer_nested' bcc warning
* Eliminate 'int-to-ptr cast' gcc warning in GC_restart_all on OpenBSD
* Eliminate 'int-to-ptr cast' gcc warnings in DEBUG_THREADS code
* Eliminate 'unused parameter fd' gcc warning in NOSYS GC_write
* Eliminate 'value exceeds maximum obj size' gcc warning in hugetest on x32
* Eliminate 'writing into region of size 0' gcc warning in suspend_handler
* Fix 'cannot implement AO_compare_and_swap_full' error by wcc in tests
* Fix 'missing GNU-stack section in atomic_ops_sysdeps' ld warning
* Fix 'symbol undefined _snprintf' dmc linker error in cordtest
* Fix 'undefined STACKBOTTOM' preprocessor error for no-OS PowerPC target
* Fix 'undefined symbol sbrk' linker error on FreeBSD
* Fix blocked signals in fork_prepare_proc on HP/UX
* Fix code blocks formatting in .md files
* Fix GC_GRANULE_BYTES for SPARC V9
* Fix GC_suspend abort when the thread is deleted by DllMain
* Fix GETPAGESIZE and USE_M[UN]MAP for Nintendo Switch
* Fix missing parentheses in SIG_THR_RESTART macro definition
* Fix print_heap_obj call with the lock held in backgraph add_edge
* Fix pthread id stored in GC_threads of child process
* Fix pthread_sigmask result checking in GC_start_mark_threads_inner
* Fix rounding up in STACKBOTTOM for OSF1
* Fix symbols alignment checking for CRIS and M68K
* Fix undefined reference to GC_objfreelist and GC_bytes_allocd
* Fix usage of new structured procfs interface on Solaris
* Fix various typos in comments and documentation
* Refine comment in fork_child_proc() about GC_allocate_ml attribute
* Remove always-false check if C++ allocator.allocate returns null in test
* Remove comment about limited support of memory unmapping
* Remove improper comment about returned value of CORD_extend_path
* Remove outdated comment about 'make distcheck' from Makefile.am
* Update libatomic_ops repo URL in README after repo transfer
* Update URLs in documentation after repo transfer to bdwgc organization
* Workaround '__stdcall__ ignored for this target' clang warning on Cygwin64
* Workaround tests crash if mprotect-based VDB is manually selected (bcc)


== [8.0.14] 2024-09-07 ==

* Disable backtrace saving at garbage collections if DONT_SAVE_TO_LAST_STACK
* Fix infinite resend lost signals if a thread is restarted by SIGQUIT

Also, includes 7.6.22 changes


== [8.0.12] 2024-02-04 ==

* Eliminate 'make_key is defined but unused' gcc warning in threadkeytest
* Ensure _GNU_SOURCE is defined if HAVE_DLADDR is defined by configure
* Fix 'implicit declaration of function pthread_atfork' gcc error on MinGW
* Fix 'missing binary operator before token' gcc error in gcconfig.h
* Fix GC_set_handle_fork(1) on Darwin when MPROTECT_VDB but no threads
* Fix checksums GC_record_fault invocation on Darwin
* Fix extra 'extern C' for include signal.h in gcconfig.h

Also, includes 7.6.20 changes


== [8.0.10] 2023-05-26 ==

* Abort with appropriate message if first call of mmap fails with EPERM
* Avoid potential race between realloc and GC_block_was_dirty
* Do not prohibit zero proc argument in GC_register_disclaim_proc
* Eliminate '&array may not produce intended result' wcc warnings
* Eliminate 'cast signed to bigger unsigned' CSA warning in GC_new_thread
* Ensure 'new' system header is included by gc_cpp.h if GC_INCLUDE_NEW
* Fix 'overflow in conversion from word' g++ warning in GC_init
* Fix description of client promise for IGNORE_OFF_PAGE allocated objects
* Fix infinite loop in disable_gc_for_dlopen and GC_wait_for_gc_completion
* Fix missing extern C for __asan_default_options
* Fix store-and-dirty call in GC_CONS
* Fix typo in comment of GC_Thread_Rep.dummy
* Fix use of unset errno after pthread_sigmask calls
* Increment allocated objects count after GC_GCJ_MALLOC() in gctest
* Remove redundant GC_ATTR_UNUSED for GC_mark_and_push
* Workaround CSA null pointer dereference FP in invalidate_map of cord/de

Also, includes 7.6.18 changes


== [8.0.8] 2022-08-26 ==

* Avoid potential race in GC_init_real_syms after GC_allow_register_threads
* Define SUNOS5SIGS macro for kFreeBSD
* Distribute gc_disclaim.h in single-obj-compilation
* Do not assert that GC is initialized at DLL_THREAD_DETACH (Win32)
* Do not name GCC intrinsics as C11 ones
* Do not send signal to thread which is suspended manually
* Eliminate 'buffer overflow detected' FP error in realloc_test
* Eliminate 'extension used' clang warning in sparc_mach_dep.S (configure)
* Eliminate 'function/data pointer conversion in expression' MSVC warning
* Eliminate 'implicit decl of _setjmp' gcc warning if -std=c11 on Cygwin
* Eliminate 'new_l may be used uninitialized' gcc warning in os_dep (Cygwin)
* Eliminate 'old_gc_no is initialized but not referenced' MS VC false warning
* Eliminate 'possible loss of data' compiler warning in GC_envfile_getenv
* Eliminate 'value exceeds maximum size' warnings in debug_malloc, huge_test
* Eliminate 'writing into region of size 0' gcc FP warning in realloc
* Eliminate division-by-zero FP warning in GC_ASSERT in reclaim_block
* Eliminate stringop-overflow gcc-12 warning in CORD__next
* Ensure typed objects descriptor is never located in the first word
* Fix 'GC_greatest_stack_base_below is defined but not used' warning (IA64)
* Fix 'GC_text_mapping not used' GCC warning if redirect malloc w/o threads
* Fix 'ISO C forbids conversion of function pointer to object' warning
* Fix 'undeclared getpagesize' compiler warning on AIX and OSF1
* Fix 'undefined reference to __data_start' linker error on Linux/aarch64
* Fix GC_allocate_ml incorrect cleanup in GC_deinit if pthreads (MinGW)
* Fix GC_dirty() argument in GC_malloc_explicitly_typed_ignore_off_page
* Fix GC_make_descriptor for zero length argument
* Fix GC_suspend_thread if called before thread destructor
* Fix GC_unmapped_bytes update in GC_unmap for Sony PS/3
* Fix SIGSEGV caused by dropped stack access from child process in gctest
* Fix SUNOS5SIGS documentation to match macro definition in gcconfig.h
* Fix abort in Win32 DllMain if PARALLEL_MARK
* Fix assertion about built-in AO_test_and_set_acquire on sparc64 (gcc-12)
* Fix assertion violation in GC_allow_register_threads on Windows
* Fix assertion violation of GC_thread_key alignment if pthread-based TLS
* Fix context saving when GC_suspend_thread(self)
* Fix data race in fail_proc1 of gctest
* Fix get_maps failure when GC_repeat_read returns zero
* Fix hang in GC_free if GC_PREFER_MPROTECT_VDB (Mingw64)
* Fix hang in select() called from suspend signal handler if TSan
* Fix hang on sem_wait in GC_suspend_thread if thread was resumed recently
* Fix hb_obj_kind type in documentation (ASCII diagram) describing hblkhdr
* Fix incremental mode enabling in gctest if TEST_MANUAL_VDB
* Fix lock assertion violation in GC_find_limit if always multi-threaded
* Fix missing lock when GC_generate_random_valid_address is called
* Fix nodist_libgc_la_SOURCES value in Makefile.am for Solaris/sparc
* Fix oldProc initialization in gc_cleanup and eliminate related warnings
* Fix parallel_initialized assertion violation in initsecondarythread (Win32)
* Fix potential race if start_mark_threads called from threads in child
* Fix propagation of out-of-memory occurred in GC_make_sequence_descriptor
* Fix race between calloc_explicitly_typed and push_complex_descriptor
* Fix stack overflow in gctest on Alpine Linux/s390x
* Fix typo in debugging.html
* Fix typos in comments of .c files and gc.h
* Fix undefined __stack_base__ on UWP/arm64 (llvm-mingw)
* Make finalizer_closure pointer read/write atomic in malloc and callback
* Prevent (fix) parallel custom mark procs run in single-threaded clients
* Prevent changing of GC_markers_m1 value while collection in progress
* Refer to Makefile.direct instead of deleted Makefile file in README
* Relax assertion of hb_n_marks in reclaim_block if more than two markers
* Remove checking of RS6000 completely
* Remove duplicate check of MSWIN_XBOX1 in os_dep.c
* Remove non-working check of M68K in gctest
* Remove useless TSan W/A about read of mark_lock_holder for Windows
* Replace SSH cloning with HTTPS one in README
* Revert "Remove nested always-false ifdef for HPUX and FREEBSD"
* Revert addition of msvc_dbg.h in include.am
* Support 'z' format modifier by CORD_vsprintf
* Update documentation of GC_RATE and MAX_PRIOR_ATTEMPTS
* Use SIGRTMIN+6 as suspend signal if sigrt-signals on OpenBSD
* Workaround TSan FP about race between generic_malloc and array_mark_proc
* Workaround TSan FP warning in finalized_malloc, push_unconditionally
* Workaround TSan FP warning in push_marked1/2/4, ptr_store_and_dirty
* Workaround Thread Sanitizer (TSan) FP warning in is_valid_displacement
* Workaround crash in FreeBSD rand() by avoiding its concurrent usage (tests)


== [8.0.6] 2021-09-28 ==

* Add loop to handle abort error like in suspend logic on Darwin
* Add support of OpenBSD/aarch64
* Add threading libraries to bdw-gc.pc
* Allocate start_info struct on the stack in GC_pthread_create
* Allow GC_PAUSE_TIME_TARGET environment variable values smaller than 5 ms
* Avoid compiler warning about unused d in GC_CALLOC/MALLOC_EXPLICITLY_TYPED
* Avoid gcc stringop-overflow warning for intended overflow in smashtest
* Check _MSVC_LANG macro in addition to __cplusplus (MS VC)
* Compile C++ code with exception handling enabled in NT_MAKEFILE
* Define OS_TYPE and DATAEND for UWP targets
* Disable mprotect-based incremental GC if /proc roots are used (Linux)
* Do not report 'Incremental GC incompatible' warning more than once
* Do not use Manual VDB mode if C malloc is redirected
* Do not use iOS private symbols
* Eliminate 'GC_non_gc_bytes is deprecated' warning in new_gc_alloc.h
* Eliminate 'GC_old_bus_handler defined but not used' compiler warning
* Eliminate 'cast between incompatible func types' warnings for FARPROC vars
* Eliminate 'comparing signed and unsigned values' BCC warning in cordtest
* Eliminate 'gc_pthread_redirects.h should contain header guard' code defect
* Eliminate 'implicit declaration of sbrk' gcc warning if -std=c11 on Cygwin
* Eliminate 'possible loss of data' BCC and MS VC warnings
* Eliminate 'static GC_sysinfo definition has incomplete type' Clang warning
* Eliminate 'unused function' compiler warnings (GC_add_map_entry, GC_lock)
* Eliminate 'while clause does not guard' GCC warning in GC_parse_map_entry
* Enable sbrk-to-mmap fallback on major supported Unix-like platforms
* Ensure process is running on one CPU core if AO ops are emulated with locks
* Explicitly zero-initialize trace_buf (fix trace_buf initialization)
* Fix 'ACCESS_VIOLATION in marker' GC warning on Win32 async thread start
* Fix 'GC_generic_malloc must be available' GCC error in new_gc_alloc.h
* Fix 'ISO C++17 does not allow dynamic exception spec' clang-8 error
* Fix 'Wrong __data_start/_end pair' if -Bsymbolic-functions used (Linux)
* Fix 'condition pred!=NULL is always true' compiler warning
* Fix 'external linkage required for var because of dllimport' error on MinGW
* Fix 'ulong undefined' compilation error on AIX
* Fix 'undefined reference to __data_start' linker error on RISC-V
* Fix 'use of undeclared BUS_PAGE_FAULT' compilation error on FreeBSD 12
* Fix 'write to GC log failed' error (Cygwin)
* Fix 'wrong finalization data' gctest failure on Windows
* Fix CMake build on macOS Catalina
* Fix GC_OPENBSD_THREADS definition (OpenBSD/hppa)
* Fix GC_proc_fd value in child process at fork (Solaris)
* Fix GC_with_callee_saves_pushed for Android NDK r23 (clang-12)
* Fix MPROTECT_VDB definition for single-threaded GC builds
* Fix OS_TYPE and USE_MMAP_ANON definitions for Cygwin/x64
* Fix STACKBOTTOM on 32-bit HP/UX 11.11
* Fix abort in GC_printf when gctest is built as WinMain executable (Cygwin)
* Fix assertion violation in register_dynlib_callback on Android
* Fix build for OS X (CMake)
* Fix building of shared library with C++ support on MinGW
* Fix compiling by Makefile.direct on OpenBSD/UltraSparc
* Fix configure message about 'AIX gcc optimization fix'
* Fix cordtest build in SMakefile.amiga
* Fix data race regarding *rlh value in generic_malloc_many
* Fix first_thread stack_base initialization if custom GC_stackbottom (Win32)
* Fix gc_allocator.h compilation by Clang
* Fix gc_cflags variable name in configure (HP/UX)
* Fix handling of areas smaller than page size in GC_scratch_recycle
* Fix incorrect markup formatting in documentation
* Fix misaligned tlfs passed to AO_load on m68k
* Fix missing GC_quiet declaration in pcr_interface.c
* Fix missing gc_dlopen.c and specific.c in CMake script
* Fix missing scratch_last_end_ptr update (Irix)
* Fix mmap() failures on AIX, HP/UX and Haiku
* Fix overflow of scratch_free_ptr value
* Fix page_was_[ever_]dirty() for static roots (Solaris)
* Fix printf format specifier in simple_example.md
* Fix save_callers for multi-threaded case if built-in backtrace unavailable
* Fix subexpression widening in memhash() of disclaim_weakmap_test
* Fix test_cpp failure caused by arbitrary link order (Win32)
* Fix test_cpp failure when gc_cpp resides in a dll (Borland, Watcom)
* Fix various typos mostly in documentation files
* Fix word size, data start and alignment for OpenBSD/mips64(el)
* Include <alloca.h> when using alloca on AIX
* Limit number of unmapped regions (Linux and DragonFly)
* New macro to avoid system-wide new/delete inlining in gc_cpp.h (Win32)
* Prevent GetThreadContext failure (Windows)
* Prevent WARN of incompatible incremental GC if default or manual VDB
* Reduce a time period between GetExitCodeThread and SuspendThread (Win32)
* Refactoring of WoW64 workaround (Win32)
* Refine GC_INIT documentation about its multiple invocation
* Refine GC_parallel documentation in gc.h
* Refine do_blocking() documentation in gc.h
* Remove a misleading comment about Solaris in gc.h
* Remove cord .h files from list of non-installed headers (Automake)
* Remove dead part of condition to define NEED_FIND_LIMIT in gc_priv.h
* Remove gcmt-lib generation by CMake
* Support MSYS builds by CMake and configure
* Update documentation about the incremental collector support
* Use HEURISTIC2 on OpenBSD when single-threaded
* Use pstat_getprocvm to determine main stack bottom on HP-UX
* Workaround 'expression is only useful for its side effects' WCC warning
* Workaround clang-3.8/s390x bug when processing __builtin_frame_address
* Workaround fread fail after enable_incremental if malloc redirected (Linux)


== [8.0.4] 2019-03-02 ==

* Avoid a full GC when growing finalizer tables if in incremental mode
* Avoid potential race in hb_sz access between realloc and reclaim_block
* Avoid test.o rebuild on tests folder timestamp change (Makefile.direct)
* Avoid unexpected heap growth in gctest caused by GC_disable
* Ensure result of every variant of MS_TIME_DIFF has unsigned long type
* Fix 'duplicate symbol' error for tests using multiple static libs (OS X)
* Fix 'undefined reference to __data_start' linker error (Android/aarch64)
* Fix 'unexpected mark stack overflow' abort in push_all_stack
* Fix 'wrong __data_start/_end pair' error on Android
* Fix BSD_TIME variant of MS_TIME_DIFF for the case of a.tv_usec < b.tv_usec
* Fix GetThreadContext stale register values use if WoW64 (Win32)
* Fix invalid initializer of CLOCK_TYPE variables if BSD_TIME
* Fix thread_info() count argument value (OS X)
* Support de_win.c compilation by Makefile.direct (cord/de)


== [8.0.2] 2018-12-23 ==

* Abort with appropriate message if executable pages cannot be allocated
* Add initial testing of GC_enable/disable, MALLOC[_ATOMIC]_IGNORE_OFF_PAGE
* Add paths to filenames mentioned in the copyright section in README
* Add test using disclaim notifiers to implement a weak map
* Adjust #error messages format
* Allow to force executable pages allocation in gctest
* Avoid potential 'macro redefinition' errors for config.h macros
* Call real pthread_sigmask instead of its wrapper in start_mark_threads
* Check result of pthread_mutex_unlock in specific.c
* Default to a single-threaded build for Nintendo, Orbis, Sony PSP targets
* Default to non-executable memory allocation across all make scripts
* Define GC_ATOMIC_UNCOLLECTABLE and JAVA_FINALIZATION in all make scripts
* Do not prevent GC from looking at environment variables (BCC_MAKEFILE)
* Do not use 'ifndef AO_CLEAR' in mark, pthread_support and gctest
* Do not use spin locks if AO test-and-set is emulated (pthreads)
* Document HANDLE_FORK macro optional usage in Makefile.direct
* Document assertion in the setters that used to return old value
* Eliminate 'assigned value never used' compiler warning in test_cpp WinMain
* Eliminate 'casting signed to bigger unsigned int' CSA warning
* Eliminate 'different const qualifiers' MS VC warnings in cordbscs
* Eliminate 'function is never used' cppcheck warning for calloc/realloc
* Eliminate 'non-virtual destructor for class with inheritors' CSA warning
* Eliminate 'pointer targets differ in signedness' compiler warning (Win32)
* Eliminate 'struct member is never used' cppcheck warnings in os_dep
* Eliminate 'uninitialized var' cppcheck false positive in mach_dep, os_dep
* Eliminate 'unreferenced formal parameter' compiler warning in msvc_dbg
* Eliminate redundant check in backwards_height
* Fix 'USE_MUNMAP macro redefinition' error for NaCl
* Fix 'collecting from unknown thread' abort in leak-finding mode for Win32
* Fix 'mprotect remapping failed' abort on NetBSD with PaX enabled
* Fix 'too wide non-owner permissions are set for resource' code defect
* Fix GC_VSNPRINTF in cordprnt for DJGPP and MS VC for WinCE
* Fix GC_register_disclaim_proc for leak-finding mode
* Fix a deadlock in write_fault_handler if AO_or is emulated
* Fix comment typo in CMakeLists.txt
* Fix concurrent bitmap update in GC_dirty
* Fix deadlocks in write and suspend handlers if AO test-and-set is emulated
* Fix executable memory allocation in GC_unix_get_mem
* Fix hbp overflow in GC_install_counts
* Fix linkage with a system libatomic_ops shared library
* Fix lock assertion violation in get_index if GC_ALWAYS_MULTITHREADED
* Fix marking of finalizer closure object
* Fix marks and hb_n_marks consistency when disclaim returns true
* Fix memory allocation on GCF (Linux/x64)
* Fix missing curses.h in cord/de when compiling manually (MS VC, MinGW)
* Fix test_cpp assertion violation in find-leak mode
* Fix tests linkage with internal atomic_ops.o
* Fix unneeded end_stubborn_change/ptr_store_and_dirty in disclaim_test
* Guard against potential buffer overflow in CORD_next and CORD_pos_fetch
* New macro to suppress printing of leaked objects
* Pass -Wall -Wextra -Wpedantic to g++ if supported (configure)
* Prefix internal durango_get_mem symbol with 'GC_'
* Prevent double inclusion of javaxfc.h and private/specific.h
* Print relevant message in tests not appropriate for leak detection mode
* Reduce scope of local variables in GC_remove_all_threads_but_me
* Refine HIDE_POINTER documentation for the case of the leak-finding mode
* Refine documentation in gc_disclaim.h
* Remove extra USE_MMAP definition for Interix
* Remove redundant header double-inclusion checks in the private headers
* Remove strlen calls with a constant string argument in msvc_dbg
* Specify register_disclaim_proc and finalized_malloc argument as non-null
* Support UWP/arm64 target
* Test marking of finalizer closure object in disclaim_test
* Turn off leak detection mode explicitly in cord/de
* Turn off parallel marker, thread-local allocation if used AO ops emulated
* Turn on gcj functionality in BCC, DMC, NT, OS/2, WCC makefiles
* Turn on memory unmapping in BCC/DMC/NT/WCC makefiles and Makefile.direct
* Update NO_EXECUTE_PERMISSION documentation
* Update documentation about arm64 ABI in gcconfig.h
* Use AO_or in async_set_pht_entry_from_index if available
* Use GC_WORD_MAX macro across all C source files
* Use macro to operate on a flag residing in GC_stop_count
[--snip--]
