Skip to content

Releases: bdwgc/libatomic_ops

7.10.0

28 Nov 07:32
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Changes

  • Add comment that overflow of a counter in AO_stack_pop is impossible
  • Add missed copyright header to ibmc/powerpc.h
  • Adjust/reformat copyright header in armcc/arm_v6.h
  • Build tests by default in CMake script
  • Change AO_REAL_NEXT_PTR() to accept argument as reference only
  • Change static initializer of initial_heap_ptr and spin_dummy to zero
  • Consistently use '__sparc' predefined macro w/o trailing underscores
  • Define AO_N_BITS to a bigger value if pointer type is larger than size_t
  • Define AO_uintptr_t and use it in AO malloc and stack (refactoring)
  • Define functions and variables of tests as static (refactoring)
  • Discontinue support of configure '--enable-gcov' option
  • Do not define AO_GCC_FORCE_HAVE_CAS for modern clang and gcc for RISC-V
  • Eliminate 'can be declared as pointer to const' cppcheck FP in test_atomic
  • Eliminate 'condition is always true' cppcheck style warnings in test_atomic
  • Fix 'libtool library used but LIBTOOL is undefined' autoreconf error
  • Give verbose error message if multiple include test_and_set_t_is_*_t.h
  • Guard against direct include of internal headers from outside (refactoring)
  • Hide AO_initial_heap internal symbol
  • Implement AO_fetch_compare_and_swap_full for sunc/sparc
  • Minor text improvement in README_details.txt and README_malloc.txt
  • New macro (AO_NO_ASM_XCHG) to use Win32 InterlockedExchange
  • Prefix/suffix no_sanitize attribute with double underscore (refactoring)
  • Provide AO_INITIAL_HEAP_CHUNKS macro to control AO_initial_heap size
  • Provide char/short-width CAS for RISC-V w/o '-latomic' if gcc v14+
  • Refine comment about AO_double_t size in standard_ao_double_t.h
  • Refine documentation when stack implementation is fully lock-free
  • Remove AO_stack_push/pop based on compare_and_swap_double
  • Rename CMake 'BUILD_SHARED_LIBS' option to 'AO_BUILD_SHARED_LIBS'
  • Replace CMake 'build_tests' option to standard 'BUILD_TESTING' one
  • Support RISC-V ILP32 ABI (rv64ilp32)
  • Support double-wide CAS on 64-bit RISC-V with Zacas extension
  • Support double-wide primitives on E2K (in 32- and 64-bit modes)
  • Support targets with double-wide pointers (CHERI, E2K protected mode)
  • Update autotools for release tar (ac-2.72, am-1.18.1, lt-2.5.4, m4-1.4.20)
  • Use AO_internal_ptr_t to operate link pointer inside AO stack and malloc
  • Use atomic_ops_sysdeps.S by configure on any SPARC with non-GCC compiler
  • Workaround 'memory leak in add_elements' cppcheck FP in test_stack

Build status

AppVeyor CI build
Github actions build
Travis CI build
Coveralls status (code coverage)

Distribution tarball

libatomic_ops-7.10.0.tar.gz (see the Assets, md5: 1de9631daa0781a8c5a8457053d57cf0)

7.8.4

05 Sep 20:59

Choose a tag to compare

Changes

  • Document Win32-specific AO_NO_ASM_XADD macro in README
  • Eliminate 'atomic_thread_fence is unsupported with tsan' gcc-11 warning
  • Eliminate 'munmap argument 1 from incompatible pointer type' gcc warning
  • Eliminate 'uninitialized memory use' gcc-13 warning in test_atomic
  • Fix all broken URLs in comments
  • Fix atomic_ops_sysdeps.S compilation for SunPro compiler in CMake script
  • Update URLs after repository transfer to bdwgc organization
  • Update CMake minimum required version to 3.10

Build status

Travis CI build
AppVeyor CI build

Distribution tarball

libatomic_ops-7.8.4.tar.gz (see the Assets, md5: e32047636a32bb9b1d3429965b949dbb)

7.8.2

15 Dec 21:43

Choose a tag to compare

Changes

  • Eliminate 'atomic_thread_fence is unsupported with tsan' gcc-11 warning
  • Eliminate 'comparing signed/unsigned values' lcc warning in add_chunk_as
  • Fix 'undefined reference to AO_pt_lock' if configure is using clang-16
  • Fix 'undefined reference to __atomic_load/store/cas_16' Mingw64-gcc error
  • Fix 'undefined reference' linker errors if shared build on OpenBSD (CMake)
  • Fix get_chunk for case of mmap area is located before AO_initial_heap
  • Fix typo in AO_HAVE_compare_and_swap_double name in atomic_ops_stack.h
  • Fix typo in comment of run_one_test of test_stack
  • Fix typos in comments of atomic_ops_malloc.c and atomic_ops_stack.c/h
  • Update cmake minimum required version to 3.5

Build status

Travis CI build
AppVeyor CI build
Coveralls status (code coverage)

Distribution Tarball

libatomic_ops-7.8.2.tar.gz (see the Assets, md5: d07b3d8369d7f9efdca59f7501dd1117)

7.6.16

15 Dec 20:09

Choose a tag to compare

Changes

  • Eliminate 'atomic_thread_fence is unsupported with tsan' gcc-11 warning
  • Eliminate 'comparing signed/unsigned values' lcc warning in add_chunk_as
  • Fix 'undefined reference to AO_pt_lock' if configure is using clang-16
  • Fix 'undefined reference to __atomic_load/store/cas_16' Mingw64-gcc error
  • Fix get_chunk for case of mmap area is located before AO_initial_heap
  • Fix typo in AO_HAVE_compare_and_swap_double name in atomic_ops_stack.h
  • Fix typos in comments of atomic_ops_malloc.c and atomic_ops_stack.c/h

Build status

Travis CI build
AppVeyor CI build
Coveralls status (code coverage)

Distribution Tarball

libatomic_ops-7.6.16.tar.gz (see the Assets, md5: 27a2aef8ee847703219192554e205fbe)

7.4.20

15 Dec 19:15

Choose a tag to compare

Changes

  • Eliminate 'comparing signed/unsigned values' lcc warning in add_chunk_as
  • Fix get_chunk for case of mmap area is located before AO_initial_heap
  • Fix typo in AO_HAVE_compare_and_swap_double name in atomic_ops_stack.h
  • Fix typos in comments of atomic_ops_malloc.c and atomic_ops_stack.c/h

Build status

Travis CI build
AppVeyor CI build

Distribution Tarball

libatomic_ops-7.4.20.tar.gz (see the Assets, md5: 20a8d6d7f2ee6f0b5246bf3ae8f0f259)

7.2l

15 Dec 18:35

Choose a tag to compare

Changes

  • Fix get_chunk for case of mmap area is located before AO_initial_heap
  • Fix typo in AO_HAVE_compare_and_swap_double name in atomic_ops_stack.h
  • Fix typos in comments of atomic_ops_malloc.c and atomic_ops_stack.c/h

Build status

Travis CI build
AppVeyor CI build

Distribution Tarball

libatomic_ops-7.2l.tar.gz (see the Assets, md5: 539b859fa7dc3905e4b44484ea93b15d)

7.8.0

28 Mar 04:32

Choose a tag to compare

Changes

  • Add AUTHORS file to the list of installed documentation
  • Add goal to Makefile.msft to build all tests but not execute them
  • Allocate marks[] dynamically and report all found errors in test_stack
  • Always export stack_init/push_release/pop_acquire from atomic_ops_gpl
  • Always use 'mfence' for nop_full if target CPU supports SSE2 (MS VC/x86)
  • Avoid 'cast increases required alignment' warnings in atomic_ops_malloc.c
  • Avoid breaking strict-aliasing rules in test_malloc and test_stack
  • Avoid code duplication in AO_stack_push_explicit_aux_release
  • Better document test_stack internals
  • Build atomic_ops.lib by Makefile.msft (MS VC)
  • Build test object and executable files in tests folder (MS VC)
  • Define AO_stack_t uniformly
  • Define double_compare_and_swap_full if MS VS 2017+ (x86)
  • Do not expose AO_REAL_HEAD/NEXT_PTR implementation in header by default
  • Document config macros in README_win32 and remove them from configure
  • Eliminate 'function is never used' cppcheck warning for AO_stack_init
  • Enforce most strict level of compiler warnings (MS VC)
  • Ensure atomic_ops.c global symbols are always declared as extern 'C'
  • Explicitly outline symbols exported in AO shared libraries with AO_API
  • Hide AO_free_list symbol
  • Implement AO_stack_init using memset
  • Implement AO_test_and_set using InterlockedExchange8 (MS VC)
  • Implement and/or/xor for AO_t, short and int types (MS VC)
  • Implement nf/acq/rel variants of primitives on Windows RT (MS VC)
  • Mention MIT near core library licensing terms in LICENSE file
  • Move all README_*.txt and license files to the top folder
  • Move all non-double intrinsic-based primitives to msftc/common32_defs.h
  • Move gcc-4/alpha workaround outside AO_stack_pop_explicit_aux_acquire
  • New AO_stack_is_lock_free API function
  • New configure option (--disable-gpl) to skip building of libatomic_ops_gpl
  • Print message of almost-lock-free implementation in test_stack if used
  • Refine LICENSE and README about code parts covered by MIT and GPL-2.0
  • Refine copyright terms in GPL source files
  • Reformat atomic_ops_stack.c/h files
  • Remove 'lib' prefix for atomic_ops_gpl.lib in Makefile.msft
  • Remove redundant assert in AO_stack_pop_explicit_aux_acquire
  • Remove redundant cast to AO_t in lock-free AO_stack_pop_acquire
  • Rename LICENSING.txt to LICENSE file
  • Rename VERBOSE macro to VERBOSE_STACK in test_stack (refactoring)
  • Rename fetch_and_add to fetch_then_add in test_stack (refactoring)
  • Replace obsolete AC_HELP_STRING with AS_HELP_STRING in configure
  • Replace obsolete AC_TRY_COMPILE with AC_COMPILE_IFELSE in configure
  • Split test_stack main into several functions (refactoring)
  • Support Elbrus 2000 (gcc/e2k)
  • Support build with CMake
  • Support double-wide CAS on armv7+ and UWP/arm64 (MS VC)
  • Support test_atomic with MS build w/o the need to run GNU make first
  • Use GCC atomic intrinsics for SPARC
  • Use builtin_expect in AO_stack_push_explicit_aux_release

Build status

Travis CI build
AppVeyor CI build
Coveralls status (code coverage)

Distribution Tarball

libatomic_ops-7.8.0.tar.gz (see the Assets, md5: a7e51e8041c3e60c298c037b2789c3fa)

7.6.14

25 Aug 19:18

Choose a tag to compare

Changes

  • Add note to README that AO malloc code has same license as AO stack
  • Adjust/reformat content of LICENSING.txt
  • Avoid AO_stack_t to cross CPU cache line boundary
  • Do not assume 'ordered except earlier write' for UWP/arm64
  • Do not name GCC intrinsics as C11 ones in ChangeLog and configure
  • Eliminate '-pedantic is not option that controls warnings' GCC-6.3 message
  • Ensure result of AO_test_and_set is always AO_TS_CLEAR or AO_TS_SET
  • Fix 'AO_malloc redefinition' MS VC warning caused by attributes mismatch
  • Fix 'use of undeclared SIG_BLOCK' Clang error if -std=c89 on Cygwin
  • Fix AO_compare_and_swap_full asm code for clang on sparc
  • Fix a typo in comment of AO_stack_push_explicit_aux_release
  • Fix code indentation in main() of test_stack.c
  • Refine AO_UNIPROCESSOR macro description in configure
  • Remove outdated comment about unsupported Win64 in atomic_ops_stack.h
  • Repeat black list check on CAS fail in stack_push_explicit_aux_release

Build status

Travis CI build
AppVeyor CI build
Coveralls status (code coverage)

Distribution Tarball

libatomic_ops-7.6.14.tar.gz (see the Assets, md5: ee8251f5091b7938d18be4dda843a515)

7.4.18

24 Aug 21:18

Choose a tag to compare

Changes

  • Avoid AO_stack_t to cross CPU cache line boundary
  • Do not assume 'ordered except earlier write' for UWP/arm64
  • Ensure result of AO_test_and_set is always AO_TS_CLEAR or AO_TS_SET
  • Fix 'use of undeclared SIG_BLOCK' Clang error if -std=c89 on Cygwin
  • Fix a typo in comment of AO_stack_push_explicit_aux_release
  • Fix code indentation in main of test_stack.c
  • Remove outdated comment about unsupported Win64 in atomic_ops_stack.h
  • Repeat black list check on CAS fail in stack_push_explicit_aux_release

Build status

Travis CI build
AppVeyor CI build

Distribution Tarball

libatomic_ops-7.4.18.tar.gz (see the Assets, md5: 8664722bcb476f92c070fc69fa32392f)

7.2k

24 Aug 18:30

Choose a tag to compare

Changes

  • Avoid AO_stack_t to cross CPU cache line boundary
  • Fix a typo in comment of AO_stack_push_explicit_aux_release
  • Fix code indentation in main of test_stack.c
  • Remove outdated comment about unsupported Win64 in atomic_ops_stack.h
  • Repeat black list check on CAS fail in stack_push_explicit_aux_release

Build status

Travis CI build
AppVeyor CI build

Distribution Tarball

libatomic_ops-7.2k.tar.gz (see the Assets, md5: eb5e5bae1edf4466961e30d91ec3e617)