Releases: ivmai/bdwgc
7.6.4
Changes
- Add note of set_free_space_divisor, set_warn_proc ABI change after gc-7.1
- Change compiler invocation example in gc.man to use dynamic libgc
- Delete dont_ar_* build intermediate files on make clean (Makefile.direct)
- Do not declare dl_iterate_phdr as weak for DragonFly
- Fix 'cords' parallel build in Makefile.direct
- Fix 'undeclared identifier USRSTACK' compiler error on OpenBSD-6.2
- Fix error code in abort message if sem_wait failed in start_world (NetBSD)
- Fix GC allocation mutex in child after a fork
- Fix global operator delete definition for C++14 in gc_cpp
- Fix last_reclaimed..gc_no interval comparison to threshold in unmap_old
- Fix libgc version which was changed in linkage breaking way
- Fix missing EOLn output in threadlibs tool
- Fix threadlibs tool to output '-lpthread' for DragonFly
- Prevent DATASTART redefinition for NaCl
- Remove obsolete advice about linking with _DYNAMIC=0 (Linux)
Build status
Travis CI build
AppVeyor CI build
Coveralls status (code coverage)
Distribution Tarball
gc-7.6.4.tar.gz (see the Assets above)
7.4.10
Changes
- Fix error code in abort message if sem_wait failed in start_world (NetBSD)
Also, includes 7.2j changes
Build status
Travis CI build
AppVeyor CI build
Distribution Tarball
gc-7.4.10.tar.gz (see the Assets above)
7.2j
Changes
- Fix GC allocation mutex in child after a fork
- Fix last_reclaimed..gc_no interval comparison to threshold in unmap_old
- Fix libgc version which was changed in linkage breaking way
- Fix missing EOLn output in threadlibs tool
Build status
Travis CI build
AppVeyor CI build
Distribution Tarball
gc-7.2j.tar.gz (see the Assets above; includes a copy of libatomic_ops-7.2i)
7.6.2
Note
This release is not recommended for the downstream package maintainers (because of libgc version-info incompatible change).
Changes
- Add assertion that no hb_n_marks underflow occurs
- Add minimal testing of GC_MALLOC_[ATOMIC_]WORDS and GC_CONS (gctest)
- Add minimal testing of GC_set_bit (gctest)
- Add more cases to huge_test to cover sizes close to word-type maximum
- Add testing of new[]/delete[] (test_cpp)
- Adjust AO_HAVE_x check to match AO_fetch_and_add primitive variant used
- Adjust code indentation of calloc_explicitly_typed
- Align local_mark_stack in help_marker explicitly
- Allow custom TRACE_ENTRIES value
- Allow gctest and thread_leak_test with zero NTHREADS
- Avoid data race in finalized_count (gctest)
- Code refactoring of divide-by-HBLKSIZE occurrences
- Code refactoring of huge_test
- Code refactoring of tests/subthread_create regarding AO add primitive
- Compile thread_local_alloc only if multi-threaded build (Makefile.am)
- Delete preprocessor output on make clean (Makefile.direct)
- Disable implicit multi-threaded mode for Win32 to avoid LOCK crash
- Do not disable parallel mark for WRAP_MARK_SOME
- Do not enable mprotect-based incremental mode if unmapping is on (gctest)
- Do not install documentation if configure --disable-docs (new option)
- Do not use tkill (Android)
- Document base and size of objects allocated by finalized_malloc
- Document configure 'syntax error' issue in README
- Eliminate 'address of local variable returned' static analyzer warning
- Eliminate 'array vs singleton' code defect in typed_test (gctest)
- Eliminate 'assigned value never used' CSA warning in min_bytes_allocd
- Eliminate 'boolean result used in bitwise op' cppcheck false warning
- Eliminate 'C-style pointer casting' cppcheck style warnings in test
- Eliminate 'checking if unsigned variable is <0' cppcheck style warning
- Eliminate 'class member var with name also defined in parent' warning
- Eliminate 'comparison is always false' static analyzer warning in finalize
- Eliminate 'Condition 0==datastart always false' cppcheck warning (dyn_load)
- Eliminate 'condition is always true' cppcheck style warning
- Eliminate 'constructor with 1 argument is not explicit' cppcheck warning
- Eliminate 'CORD_*printf is never used' cppcheck style warnings (cordtest)
- Eliminate 'dereference of null' CSA false warning in array_mark_proc
- Eliminate 'function result not used' code defect in GC_mark_local
- Eliminate 'GC_collecting is set but never used' code defect (Win32)
- Eliminate 'GC_record_fault is never used' cppcheck style warning
- Eliminate 'integer shift by a negative amount' code defect in finalize
- Eliminate 'label not used' cppcheck false warnings in GC_mark_X
- Eliminate 'memory leak' code defect for scratch-allocated memory
- Eliminate 'memory leak' code defect in remove_specific
- Eliminate 'non-null arg compared to null' warning in toggleref_add (GCC)
- Eliminate 'non-reentrant function strtok called' cppcheck warning (POSIX)
- Eliminate 'possible integer underflow' code defect (cord-de)
- Eliminate 'potential overflow' static analyzer warning in test
- Eliminate 'printf format specifies type void*' GCC pedantic warnings
- Eliminate 'scope of variable can be reduced' cppcheck warnings
- Eliminate 'suspicious pointer subtraction' cppcheck warning (gc_cpp)
- Eliminate 'this statement may fall through' GCC warnings
- Eliminate 'unnecessary comparison of static strings' cppcheck warning
- Eliminate 'unsafe vsprintf is deprecated' compiler warning
- Eliminate 'unused formal parameter' compiler warnings in C++ code (MS VC)
- Eliminate 'unused variable' compiler warning in remove_all_threads_but_me
- Eliminate 'use of vulnerable sprintf' code defect in de_win test (cord)
- Eliminate 'value exceeds maximum object size' GCC warning in huge_test
- Eliminate 'value of CLOCK_TYPE unknown' cppcheck info message
- Eliminate 'value of DATASTART2 unknown' cppcheck info messages
- Eliminate 'value of GC_PTHREAD_EXIT_ATTRIBUTE unknown' cppcheck messages
- Eliminate 'value of GC_RETURN_ADDR_PARENT unknown' cppcheck info messages
- Eliminate 'value of NEED_FIXUP_POINTER unknown' cppcheck info messages
- Eliminate 'write to memory that was const-qualified' code analyzer warning
- Eliminate all 'scope of variable can be reduced' cppcheck style warnings
- Eliminate CSA warning about incorrect cast applied to HBLK_OBJS
- Eliminate CSA warning about narrowing cast in CleanUp of test_cpp
- Eliminate CSA warning of non-virtual destructor in test_cpp base class
- Eliminate CSA warning of staticroot that can be a local variable (tests)
- Eliminate CSA warning of unmodified non-const static var (disclaim_test)
- Eliminate redundant local variable in register_finalizer
- Eliminate TSan (Thread Sanitizer) warnings in gctest
- Eliminate UBSan warning of overflow during descr subtraction in mark_from
- Eliminate unreachable PROC/DEFAULT_VDB GC_printf calls in gctest main()
- Eliminate unsigned fl_builder_count underflow in mark_thread
- Enable GC_is_tmp_root for all platforms
- Execute more single-threaded GC tests by CMake
- Expand tabs to spaces in de_win.rc (tests)
- Export GC_dump_finalization/regions()
- Export GC_is_tmp_root() and GC_print_trace[_inner]
- Export GC_print_free_list()
- Fix '32-bit value shift followed by expansion to 64-bit' code defect
- Fix 'GC_written_pages never read' code defect (GWW_VDB)
- Fix 'label cannot be reached' static analyzer warning in disclaim_test
- Fix 'size of tv is unknown' error in brief_async_signal_safe_sleep (musl)
- Fix 'syntax error' reported by cppcheck for mach_dep
- Fix 'unknown type name GC_INNER' compilation error (FreeBSD)
- Fix 'variable assigned a value that is never used' cppcheck style warnings
- Fix 'void pointers in calculations: behavior undefined' cppcheck warning
- Fix assertion violation about disabled cancel in try_to_collect_inner
- Fix atomic_ops build in Makefile.direct for Solaris
- Fix Clang static analyzer warning about not found gc_priv.h in extra files
- Fix compilation error in get_main_stack_base (Emscripten)
- Fix compilation for winpthreads if HANDLE_FORK
- Fix compilation if configured with --enable-werror on OS X
- Fix cord/de build in Makefile.direct (Linux)
- Fix data race in a list referenced by A.aa (gctest)
- Fix data race in collectable_count (gctest)
- Fix data race in do_local_mark when comparing active_count to helper_count
- Fix data race in GC_suspend/resume_thread
- Fix data race in last_stop_count access (suspend_handler_inner)
- Fix data race in make_descriptor when setting explicit_typing_initialized
- Fix data race in mark_thread when updating mark_no
- Fix data race when getting object size in explicitly-typed allocators
- Fix deadlock in GC_suspend_thread
- Fix gctest failure for Darwin if CPPCHECK is defined
- Fix lack of barriers to synchronize memory for suspend_handler
- Fix marking of disclaim-reachable objects in the incremental mode
- Fix message of VDB implementation used if MPROTECT_VDB+GWW_VDB (gctest)
- Fix missing started_thread_while_stopped call from mark_some if GCC/Clang
- Fix null dereference in GC_stack_range_for if not DARWIN_DONT_PARSE_STACK
- Fix page calculation in checksums
- Fix parallel build in Makefile.direct
- Fix test_cpp and c++ parallel build in Makefile.direct
- Fix typo in comment of GC_mark_some
- Fix typos in cdescr.html and README.sgi
- Make GC_INIT optional for clients even if thread-local allocations enabled
- Match uclinux pattern in configure
- Move conditional GC_need_to_lock setting to gc_locks.h (refactoring)
- Move README.QUICK from DOC_FILES to OTHER_FILES in Makefile.direct
- New API function (GC_is_init_called) to check if BDWGC is initialized
- New target (check-cpp) in Makefile.direct
- Prevent abort in register_data_segments for Symbian and Emscripten
- Prevent multiple 'Caught ACCESS_VIOLATION in marker' per collection
- Print realloc_count value in gctest
- Put invariant name in quotes to make mark_state comments clearer
- Refine configure messages when checking for compiler option support
- Remove extraneous semicolons after AC_MSG_WARN (configure)
- Remove page_was_dirty and remove_protection duplicate definitions
- Remove unnecessary type casts of printf arguments to unsigned long
- Remove unused ALIGN_DOUBLE, USE_GENERIC_PUSH_REGS macros (TILE-Gx/Pro)
- Rename 'test' to 'check' target in Makefile.direct
- Replace deprecated rewind to fseek in cordxtra
- Report gcc/clang pedantic warnings (configure)
- Skip thread suspend/resume API testing for Tru64 (OSF1)
- Support AddressSanitizer (Clang/GCC) and MemorySanitizer (Clang)
- Support GC_init (and get_stack_base) from non-main thread on FreeBSD/NetBSD
- Suppress 'tainted string passed to vulnerable operation' false defects
- Suppress 'taking address of label non-standard' GCC/Clang pedantic warning
- Test GC initialization from non-main thread on FreeBSD and NetBSD
- Test GCJ object creation with length-based descriptor (gctest)
- Update comment in finalized_disclaim to match FINALIZER_CLOSURE_FLAG
- Update README regarding make cords with Makefile.direct
- Update README to use autogen.sh on build from the source repository
- Update shared libraries version info to differentiate against v7.4
- Use mprotect instead of mmap in GC_unmap() on Cygwin
- Use same style of include gc.h in documentation
- Workaround '!GC_page_size is always false' cppcheck style warning
- Workaround '#error' cppcheck error messages
- Workaround '32-bit value shift by >31 bits is undefined' cppcheck warnings
- Workaround 'array compared to 0', 'untrusted loop bound' false defects
- Workaround 'bad address arithmetic' static analysis tool false positive
- Workaround 'checking if unsigned value is negative' cppcheck warning
- Workaround 'checking unsigned value is negative' code defect in ...
7.4.8
Note
This release is not recommended for the downstream package maintainers (because of libgc version-info incompatible change).
Changes
- Eliminate 'this statement may fall through' GCC warnings
- Eliminate 'value exceeds maximum object size' GCC warning in huge_test
- Fix data race in make_descriptor when setting explicit_typing_initialized
- Fix marking of disclaim-reachable objects in the incremental mode
- Update comment in finalized_disclaim to match FINALIZER_CLOSURE_FLAG
Also, includes 7.2i changes
Build status
Travis CI build
AppVeyor CI build
Distribution Tarball
gc-7.4.8.tar.gz (see the Assets above)
7.2i
Note
This release is not recommended for the downstream package maintainers (because of libgc version-info incompatible change).
Changes
- Avoid data race in finalized_count (gctest)
- Fix assertion violation about disabled cancel in try_to_collect_inner
- Fix data race in a list referenced by A.aa (gctest)
- Fix data race in do_local_mark when comparing active_count to helper_count
- Fix data race in GC_init_explicit_typing
- Fix data race in last_stop_count access (suspend_handler_inner)
- Fix data race in mark_thread when updating mark_no
- Fix data race when getting object size in explicitly-typed allocators
- Fix lack of barriers to synchronize memory for suspend_handler
- Fix typos in cdescr.html, extend_size_map and ews4800 doc, README.sgi
- Prevent 'Unexpected heap growth' in single-threaded gctest (Linux/x64)
Build status
Travis CI build
AppVeyor CI build
Distribution Tarball
gc-7.2i.tar.gz (see the Assets above; includes a copy of libatomic_ops-7.2i)
7.4.6
Note
This release is not recommended for the downstream package maintainers (because of libgc version-info incompatible change).
Changes
- Add configure --enable-gcov option (enable code coverage analysis)
- Add configure check whether to define NO_GETCONTEXT
- Adjust GC_memalign comment
- Allow HAVE_DL_ITERATE_PHDR to be defined by client (musl)
- Allow PKG_CHECK_MODULES in configure.ac to be commented out easily
- Avoid busy waiting in mark_thread while GC_parallel is false
- Better document minimum value of size argument for typed allocations
- Change type of THREAD_TABLE_INDEX result to int in win32_threads.c
- Consistently use 'msec' instead of 'ms' in comments in pthread_support
- Do not define amiga_get_mem, MacTemporaryNewPtr unless really used (extra)
- Do not produce .tar.bz2 distribution file (configure)
- Do not require libatomic_ops for single-threaded builds (configure)
- Do not warn of missing PT_GNU_RELRO segment when custom DSO filter used
- Document GWW_VDB in gcdescr.html
- Eliminate 'cast to void* from int' compiler warnings (Darwin/x64)
- Eliminate 'conditional expression is always true' code defect in GC_init
- Eliminate 'FP divide-by-zero' static analyzer warning
- Eliminate 'incompatible function pointer' warning in mark_some (MinGW/x86)
- Eliminate 'ISO C forbids an empty translation unit' GCC pedantic warning
- Eliminate 'ISO C forbids object to function pointer conversion' warning
- Eliminate 'locally defined symbol imported' MS linker warnings (cord)
- Eliminate 'null dereference' code defect warning in register_finalizer
- Eliminate 'possible loss of data' compiler warnings (MS VC)
- Eliminate 'printf format specifier mismatch' compiler warning (tools)
- Eliminate 'type defaults to int in declaration' warning (REDIRECT_MALLOC)
- Eliminate 'value stored is never read' warning of Clang static analyzer
- Eliminate duplicate log messages in GC_mark_from
- Eliminate most of collisions in GC_threads on Linux/x64
- Ensure GC initialized when atfork_prepare is called by client
- Fix 'arg parameter might be clobbered by setjmp' compiler warning
- Fix 'bogus LR' detection in FindTopOfStack (Darwin)
- Fix 'execvp argument incompatible pointer type' compiler warning (tools)
- Fix 'GetVersion deprecated' compiler warning in os_dep (MS VC)
- Fix 'incompatible pointer' compiler warning in GC_init_dyld (OS X 64-bit)
- Fix 'incompatible ptr-to-int conversion' compiler warning in push_all_stack
- Fix 'ISO C90 does not support %lf, %lg gnu_printf formats' GCC warnings
- Fix 'ISO C90 forbids mixed declarations and code' compiler warning
- Fix 'missing libc-version.h' build error (uClibc/x86[_64])
- Fix 'replacement operator delete cannot be inline' GCC warning (Cygwin)
- Fix 'variable unused' compiler warning in FirstDLOpenedLinkMap
- Fix 'zero-size array is extension' Clang warning in os_dep (Linux/x86)
- Fix (adjust) GC_scratch_alloc actual argument type
- Fix deadlock in GC_help_marker caused by use of mark_cv of parent process
- Fix finalize.c compilation in 'strict ANSI' mode
- Fix GC shared library tests failure related to dl_iterate_phdr (musl)
- Fix gc.h compliance to strict ANSI (pthreads)
- Fix GC_bytes_allocd incrementation in case of allocation failure
- Fix GC_jmp_buf multiple definition
- Fix GC_noop6 definition to avoid its calls to be optimized away
- Fix gctest failure if PARALLEL_MARK (musl)
- Fix gctest thread stack overflow (musl-gcc)
- Fix initsecondarythread_test runtime failure if GC compiled w/o threads
- Fix lack of 2 trailing zeros in _MSC_VER numbers
- Fix local variable declarations in disclaim_bench
- Fix missing #error pragma
- Fix missing .exe for disclaim test filenames in Makefile (MinGW)
- Fix missing atomic/[un]collectable/realloc_count increments in gctest
- Fix missing new-line and redundant trailing dot in WARN messages
- Fix missing new-line at format strings end in subthread_create test
- Fix mixed include of GC public header and gc_priv.h in disclaim bench/test
- Fix potential overflow in decrement when computing GC_markers_m1
- Fix printf format specifiers in extra files (cppcheck warnings)
- Fix pthread_start compilation if single-obj-compilation (Linux)
- Fix register_finalizer call in disclaim_bench for GC_DEBUG
- Fix static assertion violation in LONG_MULT for 64-bit targets
- Fix tag collision between ENABLE_DISCLAIM and KEEP_BACK_PTRS
- Fix thread id leaks in subthread_create and threadkey_test
- Fix threaded tests runtime crash if GC_NO_THREAD_REDIRECTS supplied
- Fix tools/setjmp_t to prevent nested_sp inlining
- Fix typo in CHECK_GCLIB_VERSION name (test)
- Fix typos in comments/documentation (ews4800, extend_size_map, push_roots)
- Fix unchecked fork() result in gctest (Unix, Cygwin)
- Improve detection of internal libatomic_ops (configure)
- Move libraries version info to the beginning of Makefile.am
- Prevent abort in register_data_segments for Symbian
- Process all PT_LOAD segments before PT_GNU_RELRO segments (Glibc)
- Refine Makefile.direct comment about multi-threaded GC build
- Refine README about library source downloading
- Refine should_invoke_finalizers documentation
- Remove all generated files by NT_X64_THREADS_MAKEFILE 'clean' target
- Remove non-existent configure option in simple_example.html
- Replace C++ style comments to C ones, remove commented out code (extra)
- Support CFLAGS_EXTRA to pass extra user-defined compiler flags (configure)
- Support CFLAGS_EXTRA when checking for inline and dladdr (configure)
- Suppress 'tainted string passed to vulnerable operation' false defects
- Suppress MS VC warnings about unused param, const condition (NT_MAKEFILE)
- Update bdwgc mailing list online archive link in documentation
- Update shared libraries version info to differentiate against v7.2
- Use AC_DEFINE for defining NO_GETCONTEXT in configure
- Workaround 'index out of bounds' UBSan false warning in push_marked
- Workaround 'mmap() resource handle leak' static analyzer warning
- Workaround 'redundant assignment of *result to itself' cppcheck warning
- Workaround 'resource leak' error reported by cppcheck (tools, test)
Also, includes 7.2h changes
Build status
Travis CI build
AppVeyor CI build
Distribution Tarball
gc-7.4.6.tar.gz (see below)
7.2h
Note
This release is not recommended for the downstream package maintainers (because of libgc version-info incompatible change).
Changes
- Add gctest as a test (CMake)
- Change no-argument functions declaration style to ANSI C (extra files)
- Do not allow SHORT_DBG_HDRS if KEEP_BACK_PTRS or MAKE_BACK_GRAPH
- Ensure oom_fn callback executed on out-of-memory in calloc
- Fix '~' operator application to unsigned values shorter than word
- Fix 'context local variable might be clobbered by setjmp' compiler warning
- Fix 'doc' files installation folder
- Fix 'shift count >= width of type' compiler warning in GC_SQRT_SIZE_MAX
- Fix ALL_INTERIOR_POINTERS name in comments and documentation
- Fix AO_SRC_DIR target name in NT_*_MAKEFILE
- Fix assertion in GC_mark_from for non-heap regions
- Fix assertion in GC_steal_mark_stack for non-heap regions
- Fix assertion violation in GC_repeat_read if --enable-redirect-malloc
- Fix assertion violation in GC_wait_builder called from start_mark_threads
- Fix assertion violation in mark_local checking GC_mark_stack_top
- Fix bm_huge initialization for 64-bit targets (gctest)
- Fix broken external links in documentation
- Fix bytes count passed to add_to_our_memory in backgraph new_back_edges
- Fix calloc_explicitly_typed in case of lb*n overflow
- Fix CMake warning about CMP0054 by unquoting instances of HOST
- Fix conditional expression in pos_fetch, next non-macro definitions (cord)
- Fix configure --disable-munmap handling
- Fix CORD_substr_closure for the case when CORD_from_fn returns C string
- Fix crash in FirstDLOpenedLinkMap if app linked statically (Alpine Linux)
- Fix double multiplication of lb by n in calloc_explicitly_typed
- Fix enable_parallel_mark condition in CMake script
- Fix external libatomic_ops pkg-config-based detection
- Fix gc_allocator.h file name in new_gc_alloc.h comment
- Fix gc_backptr.h, gc_mark.h, GC_DS_TAGS names in documentation
- Fix gc_cleanup destructor for non-heap objects (gc_cpp)
- Fix GC_collect_or_expand to prevent allocation size value wrap-around
- Fix GC_incremental declaration/definition type mismatch
- Fix GC_mark_stack_top assertion violation properly in mark_local
- Fix GC_requested_heapsize increment in GC_init
- Fix GC_SIZE_MAX definition (Linux/musl-gcc)
- Fix GCJ support in CMake build script
- Fix gctest crash if configure --enable-handle-fork on Darwin
- Fix header filename in gcconfig.h comment
- Fix integer shift undefined behavior in GC_init_explicit_typing
- Fix leak_test crash in print_callers if free() is redirected
- Fix Makefile.direct recursive invocation
- Fix malloc routines to prevent size value wrap-around (fix CVE-2016-9427)
- Fix missing win32_threads.c compilation for Cygwin (CMake)
- Fix MS VC warning about compiling unused checksums and thread_local_alloc
- Fix name typos in GC_FAST_MALLOC_GRANS comment
- Fix null dereference in reclaim_block if DONT_ADD_BYTE_AT_END
- Fix OSF1 host pattern in CMakeLists.txt
- Fix PCR-Makefile by removing compilation of a missing file
- Fix potential data race in GC_SysVGetDataStart (SPARC)
- Fix potential integer overflow in GC_find_limit_* functions
- Fix push_complex_descriptor to avoid unlimited global mark stack growth
- Fix SIGSEGV in GC_is_marked when gc_cleanup is used in leak-finding mode
- Fix Solaris/sparc detection in case of strict C compliance is enforced
- Fix STACKBOTTOM for Solaris 11/x86
- Fix storage class of local variable in register_dynamic_libraries (Irix)
- Fix tools/setjmp_t hang (OS X)
- Fix typed_test to prevent fails in malloc_explicitly_typed (64-bit)
- Fix undefined HEAP_START in register_dynamic_libraries
- Fix various typos in comments, documentation and printed messages
- Handle load_segs overflow in register_dynlib_callback gracefully
- Prevent misleading AC_MSG_ERROR/AS_IF errors reported in configure.ac
- Replace (fix) 'objs' acronym in comments with 'objects' word
- Revert "Skip GC_DS_PER_OBJECT objs with negative descriptor in GC_mark_from"
- Update documentation about bugs reporting and new releases notification
- Update Download information in GC overview document
- Update shared libraries version info (v7.2)
- Workaround a bug in winpthreads causing parallel marks deadlock (MinGW)
- Workaround missing getcontext() in Docker osrf/ubuntu_32bit
Build status
Travis CI build
AppVeyor CI build
Distribution Tarball
gc-7.2h.tar.gz (see below; includes a copy of libatomic_ops-7.2h)
7.6.0
Changes
- ABORT_ARGn log details at INFO level (Android)
- Add 'pragma message' to gc.h to detect inconsistent WIN64/_WIN64 (MS VC)
- Add API function to calculate total memory in use by all GC blocks
- Add API function to set/modify GC log file descriptor (Unix)
- Add alloc_size attribute to GC_generic_malloc
- Add alt-stack registration support
- Add assertion for GC_new_kind boolean arguments
- Add assertion on lock status to GC_alloc_large and its callers
- Add build scripts for VC 9 (Win32/64)
- Add build system plumbing for building with -Werror
- Add incremental GC support for Darwin/arm64
- Add profiling callback events to indicate start/end of reclaim phase
- Add support for enumerating the reachable objects in the heap
- Add toggle-ref support (following Mono GC API)
- Added instructions to README.md for building from git
- Adjust code indentation of malloc/calloc/str[n]dup
- Allow fork() automatic handling on Android with API level 21+
- Allow specific TLS attributes for GC_thread_key
- Allow thread local allocations from within pthread TLS destructors
- Allow to force GC_dump_regularly set on at compilation
- Altera NIOS2 support
- Change 'cord' no-argument functions declaration style to ANSI C
- Check DATASTART is less than DATAEND even assertions off
- Check for execinfo.h by configure
- Code refactoring of GC_push_finalizer/thread/typed_structures
- Code refactoring regarding 'data start' definition for FreeBSD
- Consistently set type of DATASTART/END to ptr_t (code refactoring)
- Consistently use int[] type for '_end' symbol (code refactoring)
- Consistently use outermost parentheses for DATASTART/END, STACKBOTTOM
- Define GC_LINUX_THREADS, NO_EXECUTE_PERMISSION in configure for NaCl
- Define ROUNDUP_PAGESIZE, ROUNDUP_GRANULE_SIZE macros (code refactoring)
- Define public GC_GENERIC_OR_SPECIAL_MALLOC and GC_get_kind_and_size
- Do no declare kernel_id field of GC_Thread_Rep for 64-bit Android
- Do not allow SHORT_DBG_HDRS if KEEP_BACK_PTRS or MAKE_BACK_GRAPH
- Do not warn of missing PT_GNU_RELRO segment when custom DSO filter used
- Document GC_register_my_thread returned value
- Dump the block information in CSV format
- Eliminate redundant *flh check for null in GC_allocobj
- Enable atomic-uncollectable in operator new in gc_cpp.h
- Enable build with musl libc
- Enable gc.h inclusion by client without implicit include windows.h (Win32)
- Enable huge_test for Win64 (and LLP64 target)
- Enable thread-local storage for Android Clang
- Enable thread-local storage usage for GC_malloc/calloc_explicitly_typed
- Export GC_push_all_eager, GC_push_finalizer_structures
- Fix 'arg parameter might be clobbered by setjmp' compiler warning
- Fix assertion in GC_mark_from for non-heap regions
- Fix compilation for Android clang/arm with bfd linker
- Fix integer shift undefined behavior in GC_init_explicit_typing
- Fix missing new-line and redundant trailing dot in WARN messages
- Fix STACKBOTTOM for Solaris 11/x86
- Fix tag collision between ENABLE_DISCLAIM and KEEP_BACK_PTRS
- Fix unchecked fork() result in gctest (Unix, Cygwin)
- Fix user-defined signals drop by marker threads
- Fix various typos in comments and documentation
- FreeBSD/arm support improvement
- GC_make_descriptor code refactoring (eliminate two local variables)
- GC_malloc[_atomic] global and thread-local generalization with kind
- GC_malloc_[atomic_]uncollectable generalization
- GC_scratch_alloc code refactoring (and WARN message improvement)
- Group all compact fields of GC_arrays to fit in single page
- Handle load_segs overflow in register_dynlib_callback gracefully
- Harmonize OSX/iOS configuration; enable compiling for iPhone simulator
- Implement event callbacks for profiling (following Mono GC API)
- Implement the finalization extension API
- Implement thread suspend/resume API (Linux threads only)
- Improve documentation for disappearing links in gc.h
- Make heap growth more conservative after GC_gcollect_and_unmap call
- Mark fo_head, finalize_now with a single GC_push_all call (refactoring)
- Move MessageBox invocation code from GC_abort to a separate routine (Win32)
- NaCl/arm initial support; NaCl runtime fixes for other CPUs
- New macro (GC_ALWAYS_MULTITHREADED) to set multi-threaded mode implicitly
- New macro (NO_WINMAIN_ENTRY) to prefer main() instead of WinMain in test
- New macro (REDIRECT_MALLOC_IN_HEADER) to enable source-level redirection
- Process all PT_LOAD segments before PT_GNU_RELRO segments (Glibc)
- Re-implement GC_finalized_malloc using GC_malloc_kind
- Refactoring of android_thread_kill/pthread_kill calls
- Refactoring of GC_Xobjfreelist (use single array to keep free lists)
- Refactoring of thread-local *_freelists (use single array of free lists)
- Refine description in README how to build from source repository
- Refine GC_free_space_divisor comment regarding its initial value
- Reformat code of gc_cpp.cc/h
- Remove 'opp' local variable in GC_malloc_X
- Remove 'sig' argument of GC_suspend_handler_inner (code refactoring)
- Remove code commented out by 'ifdef UNDEFINED'
- Remove hb_large_block field (use 1 extra bit of hb_flags instead)
- Remove obsolete BACKING_STORE_ALIGNMENT/DISPLACEMENT macros for Linux/IA64
- Remove redundant casts in GC_generic_or_special_malloc and similar
- Remove unsupported FreeBSD/ia64 case from gcconfig.h file
- Remove unused GC_gcjdebugobjfreelist
- Rename ATOMIC_UNCOLLECTABLE to GC_ATOMIC_UNCOLLECTABLE
- Replace non-API occurrences of GC_word to word (code refactoring)
- Return GC_UNIMPLEMENTED instead of abort in GC_get_stack_base (OS/2)
- Show WoW64 warning message if running 32-bit on Win64 (enabled by macro)
- Standalone profiling callback for threads suspend/resume
- Support (add machine description for) TILE-Gx and TILEPro targets
- Support build for Android 64-bit (arm64, mips64, x86_64)
- Support FreeBSD/aarch64, FreeBSD/mips
- Support iOS7 64-bit (AArch64) and iOS8+ 32/64-bit (Darwin)
- Support MinGW build in scripts
- Turn off sigsetjmp workaround for Android/x86 starting from NDK r8e
- Use magic header on objects to improve disclaim_test
- Workaround 'sa_sigaction member missing' compiler error (Android/x32)
- Workaround 'unresolved __tls_get_addr' error for Android NDK Clang
- Workaround a bug in winpthreads causing parallel marks deadlock (MinGW)
Also, includes 7.4.4 changes
Distribution Tarball
Backup of BDWGC mailing lists
This is not related to this release actually, just a convenient place to keep the archives of the BDWGC announcements and technical discussions (Dec 2002 - Apr 2017):
7.4.4
Changes
- Allow GC_FAST_MALLOC_GRANS() multiple use in a function
- Also enable the TSX workaround for i386 (Linux)
- Avoid unstructured procfs on Solaris
- Change cord/de main() declaration style from K-R to ANSI C
- Change no-argument functions declaration style to ANSI C (cord)
- Do not include sigcontext.h and asm/sigcontext.h
- Eliminate 'divide by zero' compiler warning in cordtest
- Eliminate warning about 64-bit pointer-to-int cast (Win64/pthreads-w32)
- Eliminate warnings detected by Cppcheck in cord de[_win]
- Fix 'comparison of non-null parameter is always false' warning (Clang)
- Fix 'CORD_iter5 unused result' code defect in cordxtra
- Fix 'GC_generic_malloc_inner_ignore_off_page not used' compiler warning
- Fix 'implicit declaration of vsnprintf' GCC warning (if strict ANSI mode)
- Fix 'signed-to-bigger-unsigned value assignment' in GC_init_size_map
- Fix 'signed-to-bigger-unsigned value assignment' warning for hb_map
- Fix 'signed-to-bigger-unsigned value assignment' warning in GC_setpagesize
- Fix 'statement unreachable' compiler warning in GC_mark_from
- Fix 'statement unreachable' compiler warning in memalign
- Fix 'unused label' compiler warning in cord/de
- Fix 'value truncated' compiler warning in CORD_cat (MS VC)
- Fix 'variable unused' warning in GC_save_callers
- Fix 'visibility attribute not supported' GCC warning (IBM AIX)
- Fix CMake warning about CMP0054 by unquoting instances of HOST
- Fix Cygwin64 build
- Fix GC_REALLOC to call GC_FREE if new size is zero and pointer is non-NULL
- Fix Makefile.direct for Cygwin
- Fix alloc_size availability detection (Clang)
- Fix abort message in GC_move_long_link
- Fix and code refactoring of lock elision workaround (Linux/x64)
- Fix assertion on mark_lock_holder for non-unique NUMERIC_THREAD_ID
- Fix data race in GC_init_explicit_typing
- Fix gc.mak regarding msvc_dbg and test (MSVC)
- Fix missing error handling of pthread_attr_init/getstacksize
- Fix missing error handling of pthreads_mutex_init and cond_wait
- Fix missing numeric casts in cord
- Fix potential left shift overflows in finalize.c (64-bit targets)
- Fix pthreads-win32 name in comments and documentation
- Fix setup_mark_lock missing prototype
- Fix unchecked fcntl() result
- Fix unchecked pointer dereference in check_ints (gctest)
- Fix unchecked pthread_join() result in threadkey_test
- Fix unchecked sigdelset() result in pthread_support
- Fix undefined PTRFREE/NORMAL in gc_inline.h
- Prefix PREFETCH_FOR_WRITE with GC_ as used in gc_inline.h public header
- Relax mark_mutex attribute needed to disable elision (Linux/x64)
- Remove (deprecate) TODO file
- Remove code duplication in GC_realloc
- Remove duplicate new-line in OUT_OF_MEMORY message (cord)
- Remove references to missing linux_threads.c from documentation
- Revert "Move asm machine-dependent files to 'src' folder" (partly)
- Support Android API level 21
- Update compiler options in gc.mak (Win32)
- Use mmap instead of sbrk (Hurd)
- Workaround 'comparison is always false' GCC warning in GC_FAST_MALLOC_GRANS
- Workaround 'identical expr on both sides of bitwise op' warning
- Workaround Linux NTPL lock elision bug
- Workaround false warning about unreachable code path
- Workaround invalid '_end' symbol on Android clang 3.5+
Also, includes 7.2g changes