1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818
|
== [7.10.0] 2025-11-28 ==
* 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
== [7.8.4] 2025-09-05 ==
* 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
== [7.8.2] 2023-12-15 ==
* 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
== [7.8.0] 2023-03-26 ==
* 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
* Update autotools for release tarball preparation (ac-2.71, m4-1.4.19)
* Use GCC atomic intrinsics for SPARC
* Use builtin_expect in AO_stack_push_explicit_aux_release
== [7.6.16] 2023-12-15 ==
* 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
== [7.6.14] 2022-08-25 ==
* 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
== [7.6.12] 2021-09-13 ==
* Allow to generalize bool-CAS for sparc (gcc)
* Declare argument of AO_load_next with const in atomic_ops_stack
* Describe double_compare_and_swap operation in README_details
* Document CAS operations better in README_details
* Fix gcc/sunc x86 AO_compare_double_and_swap_double missing side effect
* Fix library name in README_details
* Fix link fail caused by missing GCC char/short atomic primitives on riscv64
* Fix size of local variable passed to cas[x] (gcc/sparc)
* Implement fetch-CAS for sparc (gcc)
* Refactor gcc x86 memory constraints
* Refine and reformat description of size prefix in README_details
* Remove outdated notes in README_details
* Replace x86 setz instruction by asm flag output operand (gcc)
* Support MSYS host (configure)
* Turn off compare_double_and_swap_double_full PIC hack for GCC 5+ (x86)
* Update README_win32 to match Makefile.msft
* Use GCC atomic intrinsics for s390x (clang 8.0+ and gcc 5.4+)
* Use __alignof__ instead of sizeof in atomic variable alignment assertions
* Workaround assertion violation in AO_load/store on m68k
== [7.6.10] 2019-03-01 ==
* Eliminate 'my_chunk_ptr-AO_initial_heap out of bounds' cppcheck warning
* Fix 'AO_*_TS_T is not defined' compiler warnings (GCC-8)
* Fix 'duplicate symbol' error for test_malloc/stack with static libs (OS X)
* Workaround 'argument to function assert is always 1' cppcheck warnings
== [7.6.8] 2018-12-11 ==
* Eliminate 'casting signed to bigger unsigned int' CSA warning (test_stack)
* Eliminate 'redundant blank line at start/end of block' CodeFactor warning
* Fix 'Cannot implement CAS_full on this architecture' build error (nios2)
* Fix a typo in arm_v6.h
* Support aarch64-ilp32 (GCC) and UWP/arm64 (MS VC) targets
* Undefine AO_ARM_HAVE_* private macros after their usage
* Use standalone private macro to guard against AO_GCC_BARRIER redefinition
* Workaround 'condition my_chunk_ptr is always false' cppcheck false positive
== [7.6.6] 2018-08-07 ==
* COPYING: sync with FSF's gpl-2.0.txt
* Fix 'undefined reference to __atomic_load/store/cas_16' error (gcc-7/x64)
* Fix a typo in the overview section of README
* Fix comments style in configure.ac and Makefile.am
* Update copyright information in README and some header files
== [7.6.4] 2018-03-27 ==
* Add RISC-V support
* Convert atomic_ops_malloc.c and tests to valid C++ code
* Eliminate 'function is never used' cppcheck warning for load_before_cas
* Eliminate 'using argument that points at uninitialized var' cppcheck error
* Fix 'AO_pt_lock undefined' error if cross-compiling manually (MinGW)
* Fix public headers inclusion from clients C++ code
* Remove gcc/nios2.h file (include gcc/generic.h directly for nios2)
* Support MIPS rel6
== [7.6.2] 2017-12-24 ==
* Allow to alter DEFAULT/MAX_NTHREADS values in test_malloc/stack
* Allow to select almost-non-blocking stack implementation explicitly
* Annotate AO_malloc with 'alloc_size' and 'malloc' attributes
* Avoid misleading 'AO_t undefined' error if wrong atomic_ops.h included
* Define AO_TS_SET to 1 (true) if GCC atomic_test_and_set is used
* Disable workaround in stack_pop_acquire that was needed for ancient Clang
* Do not define AO_GCC_FORCE_HAVE_CAS for Clang 3.8+ (Aarch64)
* Do not disallow to define double_load using built-in atomics (Aarch64)
* Do not expose AO_GCC_FORCE_HAVE_CAS macro to client code (GCC)
* Do not install documentation if configure --disable-docs (new option)
* Do not produce .tar.bz2 distribution file (configure)
* Eliminate '-pedantic is not an option that controls warnings' GCC message
* Eliminate data race in cons() of test_malloc
* Eliminate GCC-5 ASan global-buffer-overflow false positive for AO_stack_bl
* Fill in allocated memory with values depending on thread id (test_malloc)
* Fix 'bad register name %sil' assembler error (GCC-4.4/x86)
* Fix 'unknown attribute no_sanitize' compiler warning for GCC
* Fix AO_malloc for sizes near CHUNK_SIZE
* Fix memory leak in test_malloc
* Fix test failures for Clang-3.8 and older (Aarch64)
* Fix test_stack failure if AO_PREFER_BUILTIN_ATOMICS (GCC/Aarch64)
* Fix typo in AO_REAL_NEXT_PTR comment
* Increase the default number of threads to 16 in test_malloc/stack
* Mark unallocated/freed memory as inaccessible using ASan functionality
* New macro (DONT_USE_MMAP) to support testing as if mmap() is unavailable
* New macro to select stack implementation based on CAS-double
* Place no_sanitize attributes in a GCC-compliant way
* Prevent too long run of test_atomic_generalized (especially with TSan)
* Simplify '#if' expressions in gcc/x86.h (code refactoring)
* Test smallest allocation of large type (test_malloc)
* Use __builtin_expect in atomic_ops_malloc
* Use built-in atomics for load/store/CAS for Clang by default (Aarch64)
* Use double-word atomic intrinsics for recent Clang versions (gcc/x86.h)
* Use GCC atomic intrinsics for Hexagon (clang 3.9+)
* Use generalized double-wide load/store if AO_PREFER_GENERALIZED (Aarch64)
* Workaround 'unused result' code defects in atomic_ops.c, list_atomic
* Workaround Thread Sanitizer (TSan) false positive warnings
Also, includes 7.4.8 changes
== [7.6.0] 2017-05-19 ==
* Add *_and/or/xor* and *_[fetch_]compare_and_swap* tests to test_atomic
* Add asm-based and/or/xor implementation for char/short/int (gcc/x86)
* Add asm-based char/short/int CAS implementation for gcc/x86[_64]
* Add configure '--disable-atomic-intrinsics' option
* Add dd_acquire_read case to test_atomic
* Add initial nios2 architecture support
* Add Makefile target (check-nolink) to compile all source without linking
* Add Makefile target to run all tests without test-driver
* Add test_atomic_generalized to Makefile and Makefile.msft
* Allow alternate CC (CROSS_CC) for AC_TRY_COMPILE (configure)
* Always define word-wide CAS for x86 (MS VC++ 8+)
* Avoid atomic_compare_exchange_n if no __GCC_HAVE_SYNC_COMPARE_AND_SWAP_n
* Avoid extra nop_full in stack_pop_acquire if atomic intrinsics used (x86)
* Basic support of TILE-Gx and TILEPro CPUs
* Code refactoring of int-wide primitives in gcc/x86.h
* Define AO_TS_SET as __GCC_ATOMIC_TEST_AND_SET_TRUEVAL if applicable
* Define CLANG/GNUC_PREREQ macros to check gcc/clang minimum version
* Do not define print_list() unless used (tests)
* Eliminate 'condition sizeof(long)>4 is always true' cppcheck style warning
* Eliminate 'ISO C90 does not support long long' compiler pedantic warning
* Eliminate 'scope of variable can be reduced' cppcheck warnings
* Eliminate redundant lwsync 2nd call in CAS_full on fail (gcc/PowerPC)
* Fix 'unknown attribute no_sanitize' compiler warning (clang prior to v3.8)
* Fix 'variable new value is never used' cppcheck style warning
* Fix missing double_compare_and_swap_dd_acquire_read
* Fix reporting about missing and/or/xor_dd_acquire_read (test_atomic)
* Hide AO_locks symbol
* Implement AO_CLEAR using atomic intrinsic (GCC)
* Implement CAS_acquire/release/full using __atomic_compare_exchange_n (gcc)
* Implement char and/or/xor and short CAS for msftc ARM and X86[_64]
* Implement char CAS and char/short add for msftc X86[_64] (VS 2013+)
* Implement compiler_barrier using __atomic_signal_fence (GCC)
* Implement int CAS/inc/dec for msftc/x86_64
* Implement short inc/dec directly for msftc ARM and X86[_64]
* Initial ibmc/powerpc (xlc) support
* New configure option (--enable-werror) to treat warnings as compiler errors
* New macro AO_PREFER_BUILTIN_ATOMICS to rely on GCC atomics fully (AArch64)
* Refine AO_nop_write comment for ARM big.LITTLE architecture
* Refine configure messages when checking for compiler options
* Refine documentation about _full memory ordering suffix
* Refine README how to build the library source from the repository
* Relax shareability domain for dmb st in AO_nop_write (ARM/AArch64)
* Remove redundant include windows.h from headers (msftc/x86[_64])
* Remove spaces at EOLn in asm code
* Report gcc/clang pedantic warnings (configure)
* Support NaCl/arm
* Suppress 'ISO C does not support __int128 type' GCC/Clang pedantic warning
* Test store/CAS emulation explicitly
* Update shared libraries version info to 2:0:1
* Use GCC atomic intrinsics for PowerPC 32/64 (GCC 4.8+ and clang 3.8+)
* Use GCC atomic intrinsics for x86, x64, ARM, MIPS (gcc 4.9+, clang 3.5+)
* Use generalized double-wide load/store if AO_PREFER_GENERALIZED (gcc/x86)
* Workaround '#error' cppcheck error messages
* Workaround 'condition always true', 'unused stored value' cppcheck warnings
* Workaround 'function is never used' cppcheck style warnings
* Workaround 'obsolescent ftime called' cppcheck style warning (POSIX)
* Workaround 'overflow in pointer subtraction' cppcheck warning
* Workaround 'shifting 32-bit value by 32 bits undefined' cppcheck warning
* Workaround 'uninitialized memory use' code analyzer false warning (tests)
* Workaround 'uninitialized variable' cppcheck error in hpc/hppa.h
* Workaround 'value of macro is unknown' cppcheck information messages
* Workaround a bug in double-wide intrinsics of Clang/x64 with ASan enabled
* Workaround MSan warning about uninitialized data read by generalized store
Also, includes 7.4.6 changes
== [7.4.20] 2023-12-15 ==
* 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
== [7.4.18] 2022-08-25 ==
* 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
== [7.4.16] 2021-09-13 ==
* Fix gcc/sunc x86 AO_compare_double_and_swap_double missing side effect
* Fix library name in README_details
* Fix size of local variable passed to cas[x] (gcc/sparc)
* Workaround assertion violation in AO_load/store on m68k
== [7.4.14] 2019-03-01 ==
* Fix 'AO_*_TS_T is not defined' compiler warnings (GCC-8)
== [7.4.12] 2018-12-11 ==
* COPYING: sync with FSF's gpl-2.0.txt
* Fix a typo in arm_v6.h
* Fix a typo in the overview section of README
* Support ILP32 in AArch64 assembly routines (GCC)
* Support UWP/arm64 target
== [7.4.10] 2017-12-22 ==
* Fix AO_malloc for sizes near CHUNK_SIZE
* Fix memory leak in test_malloc
* Fix typo in AO_REAL_NEXT_PTR comment
== [7.4.8] 2017-10-18 ==
* Fix 'missing select.h', 'undefined sigprocmask' compiler errors (Hexagon)
* Update README about bugs reporting and new releases notification
* Workaround misspelling in GCC to detect ARMv6KZ platform
== [7.4.6] 2017-05-18 ==
* Add assertion that double-wide CAS target is aligned (msftc/x86[_64])
* Add configure --enable-gcov option (enable code coverage analysis)
* Code refactoring of gcc/powerpc.h to avoid code duplication
* Eliminate 'cast to long from void*' compiler warning in test_atomic
* Eliminate 'implicit declaration of close' warning in 'strict ANSI' mode
* Eliminate 'missing braces around initializer' gcc warning (hppa)
* Eliminate 'printf format specifies type void*' GCC pedantic warnings
* Eliminate 'value shift followed by expansion' false code defect warning
* Enable limited testing in Makefile.msft without Cygwin
* Fix (delete) comment for AO_and_full (x86)
* Fix block_all_signals compilation in 'strict ANSI' mode
* Fix missing .exe for test filenames in Makefile (MinGW)
* Fix missing printed value names (test_stack)
* Implement fetch-CAS for s390[x] (gcc)
* Move libraries version info to the beginning of Makefile.am
* Refine documentation in Makefile.msft how to run all tests (MS VC)
* Refine README about library downloading
* Rename doc/README.txt to doc/README_details.txt
* Support AIX/ppc (gcc)
* Support CFLAGS_EXTRA to pass extra user-defined compiler flags (make)
* Support n32 ABI for mips64
* Update shared libraries version info for 7.4.6+ (to 1:4:0)
* Use 'inline code' format for commands in README.md
* Use LLD and SCD instructions on mips64
* Workaround 'resource leak' false positives in AO_malloc, add_elements
* Workaround 'uninitialized memory use' MemorySanitizer warning (test_atomic)
Also, includes 7.2h changes
== [7.4.4] 2016-05-24 ==
* Eliminate 'signed-to-unsigned value extension' compiler warning in malloc
* Eliminate 'variable set but not used' Cppcheck warnings in test_stack
* Fix GCC 5.x compatibility for AArch64 double-wide primitives
* Fix makefile preventing AO_pause undefined in libatomic_ops_gpl
* Fix missing casts to match printf format specifier in test_atomic
* Fix missing output folder on making auto-generated test files (Automake)
* Fix typo in configure.ac (in description of AO_ASM_X64_AVAILABLE)
* Minor fix of code alignment in mips AO_compare_and_swap
* Remove TODO file
* Restore contribution info in ChangeLog for authors not listed in git log
Also, includes 7.2g changes
== [7.4.2] 2014-05-02 ==
* Fix a typo in doc/README.txt (remove redundant "an" article)
* Update emails/links due to project site transition
Also, includes 7.2f changes
== [7.4.0] 2013-11-17 ==
* Add and/or/xor entries to list_atomic (tests)
* Add char/short/int/AO_double_t and dd_acquire cases to list_atomic (tests)
* Add compile-time assertion for size of 'standard' AO_double_t
* Add double_store pthread-based implementation and tests
* Add generalized CAS primitives of char/short/int size
* Add generalized atomic and/or/xor operations for char/short/int types
* Add generalized fetch_and_add_acquire/release (for ARMv6+)
* Add generic implementation of double_load primitives
* Add information about AO_ASSUME_VISTA to README_win32
* Add internal header containing only char/short/int/AO_t atomic loads
* Add load/store primitives generalization based on CAS
* Add lock-based implementation of char/short/int_fetch_compare_and_swap
* Add makefile rule to test list_atomic.template syntax (tests)
* Add missing 'const' in aligned-atomic XSIZE_load implementation
* Add missing double_compare_and_swap to generalization
* Add missing generalization of no-barrier CAS in template
* Add negative double-CAS test cases to test_atomic_include (tests)
* Add test_stack to Makefile.msft (tests)
* Adjust fprintf arguments type matching specifier in test_stack (tests)
* Adjust included filenames in atomic_ops_malloc and test_stack
* Adjust quotes in echo command of Makefile.msft (Win32)
* Always use 'mfence' for nop_full if target CPU supports SSE2 (gcc/x86)
* Better document configure THREADDLLIBS variable
* Cast away volatile on dereference in CAS-based generalization primitives
* Change policy regarding version numbers ("micro" part instead of "alpha")
* Convert README to Markdown format
* Define AO_NO_PTHREADS in configure if no pthreads (Win32 and VxWorks)
* Define AO_int_X operations for ARM and avr32
* Define double-wide ordered loads/stores for x86
* Define int_and/or/xor primitives in ao_t_is_int header
* Define nop_full as compiler barrier for pre-ARMv6 single-core case
* Do not duplicate BUILT_SOURCES entries in nobase_private_HEADERS (Makefile)
* Do not include standard_ao_double_t.h where double-CAS is unimplemented
* Do not report absence of meaningless nop, load and store in test_atomic
* Do not use deprecated AO_T and AO_TS_T (tests)
* Eliminate 'missing initializer' warning for AO_stack_t value initializer
* Eliminate 64-bit compiler warnings in atomic_ops_malloc
* Eliminate arithmetic shifts in double-CAS (gcc/arm, msftc/x86)
* Eliminate warning for fetch_and_add argument in test_atomic_include (tests)
* Enable Makefile.msft for Win64
* Enable build using toolchain without pthreads
* Enable double_compare_and_swap for non-cpp code (msftc/x86.h)
* Enable generalization of all variants of CAS via fetch_compare_and_swap
* Enable test_stack for pthreads-w32 and Win32 with native threads
* Fix generalized AO_char/short_compare_and_swap args (missing 'unsigned')
* Fix makefile sed rule for list_atomic (tests)
* Fix missing abort() usage in atomic_ops_malloc and tests on WinCE
* Generalize compare_double_and_swap_double using double_compare_and_swap
* Generalize double_load/store for x86_64 (GCC)
* Generate ao_t_is_int, 'loadstore' headers from templates
* Generate generalized AO_t load/store/fetch_and_add primitives from template
* Generate ordered_loads/stores_only headers from templates
* Group all X_acquire_release_volatile.h and X_[aligned_]atomic_load_store.h
* Implement and/or/xor, AO_double_load for ARM
* Implement atomic store using direct write by default on ARMv6+
* Implement char/short/int-wide primitives using GCC built-in atomic/sync
* Implement char/short/int_fetch_and_add for msftc/x86[_64] (Win32)
* Implement char/short_fetch_and_add, char/short_load for ARMv6+ (GCC)
* Implement char/short_store primitives at aligned addresses for ARM
* Implement compare_double_and_swap_double for SunCC/x86
* Implement double_load/store based on guaranteed x86 access atomicity
* Implement double_store for ARMv7 using LDREXD/STREXD
* Implement load/store via simple LDR/STR for ARMv6+ (msftc)
* Implement nop_full/write using 'dmb' instruction if available (gcc/arm)
* Improve debug printing in test_stack (tests)
* Log messages to stdout instead of stderr (tests)
* Make AO_ASSUME_VISTA also enables Win98 code in msftc/x86.h (Win32)
* Minimize gcc/generic-arithm template by factoring out barriers
* Move 'unsigned' keyword to XCTYPE in generalize-small template
* Move default compiler options to CFLAGS in Makefile.msft (Win32)
* Move definitions of ordered loads/stores to inner separate headers
* Move gcc-generic AO_t-wide primitives to generic-small/arithm headers
* Move generalized arithmetical primitives to 'generalize-arithm' template
* Optimize AO_spin manually to minimize compiler influence on its duration
* Parameterize list_atomic template with XSIZE (tests)
* Perform only few list reversals in test_malloc if AO based on pthreads
* Put autogen.sh to 'dist' package (Automake)
* Remote duplicate definition of test_and_set_acquire in generalize.h
* Remove X_aligned_atomic_load_store headers and template
* Remove duplicate AO_spin and AO_pause definition in atomic_ops_stack
* Remove gcc/x86_64.h eliminating code duplication of gcc/x86.h
* Remove nested AO_USE_PTHREAD_DEFS macro check in atomic_ops.h (gcc/arm)
* Remove redundant 'cc' clobber for LDREXD instruction (gcc/arm)
* Remove store_full from msftc/arm.h in favor of generalized primitive
* Remove sunc/x86_64.h eliminating code duplication of sunc/x86.h
* Remove unsafe emulation-based implementation of double CAS (SunCC/x86_64)
* Remove useless 'perror' call in run_parallel.h (tests)
* Reorder AO_double_t union elements for AO_DOUBLE_T_INITIALIZER portability
* Replace atomic_load_store.template with atomic_load and atomic_store ones
* Replace some FIXME items with TODO in atomic_ops.c and sysdeps headers
* Specify fetch_and_add/sub1 result as unused in test_atomic (tests)
* Support AArch64 (64-bit ARM) target (GCC)
* Support ARMv8 target (gcc/arm)
* Test double_compare_and_swap in test_atomic (tests)
* Use AO_ prefix for internal functions in arm_v6.h, hppa.h
* Use __atomic GCC built-in to implement generic double-wide CAS
* Use built-in __sync CAS for double-CAS if AO_USE_SYNC_CAS_BUILTIN for x86
* Workaround GCC 4.4.3 warning reported for 'val' of list_atomic.c (tests)
Also, includes 7.2e changes
== [7.3alpha2] 2012-05-11 ==
* Add '-no-undefined' to LDFLAGS in src/Makefile.am
* Add AO_and, AO_xor atomic operations
* Add AO_fetch_compare_and_swap primitives
* Add and fill in AUTHORS, TODO files
* Add autogen.sh file
* Adjust AO_..._H macros in public headers
* Code refactoring of gcc/arm.h by introducing AO_ARM_HAVE_x macros
* Define AO macros for libatomic_ops version identification
* Do not define NDEBUG if '--enable-assertions' passed to configure
* Eliminate compiler warnings in various functions and macros
* Generalize AO_compare_and_swap primitives via AO_fetch_compare_and_swap
* Generalize acquire/release/full CAS primitives for MIPS
* Implement fetch_and_add, test_and_set primitives for MIPS
* Improve Makefile for MS VC++; pass '-W3' option to MS compiler
* Include ao_t_is_int.h from atomic_ops.h after first generalization pass
* Merge all Makefile.am files in src tree
* Minor code refactoring of atomic_ops.c, generic_pthread.h
* Minor configure build improvements (e.g., ensure proper autoconf version)
* Place only major per-release changes description to ChangeLog (this file)
* Recognize AO_PREFER_GENERALIZED macro to favor generalization over assembly
* Remove all auto-generated files except for generalize-small.h from the repo
* Remove duplicate doc/COPYING and empty NEWS files
* Replace atomic_ops_malloc static mmap-related empty functions with macros
* Replace pointer relational comparisons with non-pointer ones
* Require autoconf 2.61 instead of v2.64
* Show extra compiler warnings (GCC only)
* Turn off AO primitives inlining if AO_NO_INLINE defined
* Use __builtin_expect in CAS failure loop condition checks (GCC only)
Also, includes 7.2 changes
== [7.2l] 2023-12-15 ==
* 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
== [7.2k] 2022-08-24 ==
* 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
== [7.2j] 2021-09-12 ==
* Fix a typo in arm_v6.h
* Fix asm constraints of primitives in sunc/x86_64.h
* Fix gcc/sunc x86 AO_compare_double_and_swap_double missing side effect
* Fix library name in README details
* Fix size of local variable passed to cas[x] (gcc/sparc)
* Workaround assertion violation in AO_load/store on m68k
== [7.2i] 2017-12-21 ==
* Fix 'missing select.h', 'undefined sigprocmask' compiler errors (Hexagon)
* Fix AO_malloc for sizes near CHUNK_SIZE
* Fix typo in AO_REAL_NEXT_PTR comment
== [7.2h] 2017-05-17 ==
* Add 'clean' target to Makefile.msft
* Enable Makefile.msft for Win64
* Exclude 'check' from nmake all (Makefile.msft)
* Fix 'Cannot implement CAS_full on this architecture' build error (cris)
* Fix 'doc' files installation folder
* Fix (improve) AO_REQUIRE_CAS description in README
* Fix AO_SIZE_MAX definition (Linux/musl-gcc)
* Fix assertions style in test_atomic_include
* Fix size value wrap around in AO_malloc_large
* Fix test_atomic failure caused unaligned AO_double_t access (x86)
* Fix type of general AO_TS_INITIALIZER
* Fix typo in comments in gcc/arm.h
* Fix typos in 'error' pragma messages
* Workaround test_stack failure on AIX/ppc
== [7.2g] 2016-05-23 ==
* Add disclaimer to README to favor C11/C++14 atomics over libatomic_ops use
* Regenerate configure files using official libtool release (v2.4.2)
* Remove inclusion of acquire_release_volatile.h on MIPS
* Remove obsolete information from README about C++0x standard future
* Update links due to project site transition
== [7.2f] 2014-05-02 ==
* Fix a typo in doc/README.txt (remove redundant "an" article)
* Regenerate configure files by new automake (v1.14.1), libtool (v2.4.2.418)
== [7.2e] 2013-11-10 ==
* Fix (remove) invalid include of read_ordered.h for ARM
* Fix AM_CONFIG_HEADER in configure for autoconf-2.69-1
* Fix AO_pause sleep delay for particular argument values (Win32)
* Fix ARMv7 LDREXD/STREXD double-wide operand specification (GCC/Clang)
* Fix LDREXD/STREXD use for pre-Clang3.3/arm
* Fix README regarding _acquire_read barrier
* Fix XSIZE_load/store definition order in generalize-small template
* Fix asm constraint of CAS memory operand for gcc/alpha, clang-3.1/mips
* Fix asm constraints of primitives in sunc/x86.h
* Fix cmpxchg16b-based compare_double_and_swap_double for SunCC/x86_64
* Fix compare_double_and_swap_double and double_ptr_storage for gcc/x32
* Fix compare_double_and_swap_double for clang3.0/x86 in PIC mode
* Fix compare_double_and_swap_double_full definition condition in emul_cas
* Fix generalize-small template adding missed CAS-based fetch_and_add
* Fix generalized fetch_and_add function
* Fix missing compiler barrier in nop_full for uniprocessor ARM
* Fix ordered_except_wr header inclusion for s390
* Fix return type of AO_int_X primitives defined in ao_t_is_int header
* Fix return type of char/short/int_load_read() in read_ordered.h
* Fix template-based headers regeneration order in src/Makefile
* Fix typos in ao_t_is_int, atomic_ops.h, generalize.h, msftc/arm.h comments
* Fix variable type to match printf format specifier in test_stack
* Fix visibility and initial value of 'dummy' variable in atomic_ops_stack
* Terminate tests with abort after error reported
== [7.2d] 2012-08-09 ==
* Fix AO_compare_double_and_swap_double_full for gcc-4.2.1/x86 in PIC mode
* Fix AO_compiler_barrier missing parentheses
* Fix missing 'unsigned' for generalized AO_char/short_fetch_and_add result
== [7.2] 2012-05-11 ==
* Add atomic_ops.pc.in and atomic_ops-uninstalled.pc.in to pkgconfig folder
* Define and use AO_PTRDIFF_T in tests for casts between pointer and integer
* Fix AO_compare_and_swap return type for s390 and PowerPC
* Fix AO_compare_double_and_swap_double_full for gcc/x86 (PIC mode)
* Fix AO_stack_push_release to workaround bug in clang-1.1/x86 compiler
* Fix AO_test_and_setXX in tests/list_atomic.template
* Fix AO_test_and_set_full (gcc/x86[_64].h) to work-around a bug in LLVM v2.7
* Fix AO_test_and_set_full on m68k
* Fix __ARM_ARCH_5__ macro handling for Android NDK (ARMv7)
* Fix configure for Cygwin, mingw-w64/32
* Fix configure to define __PIC__ macro explicitly if needed (GCC)
* Fix double_ptr_storage definition for GCC pre-v4 (x86_64)
* Fix for x32 by removing 'q' suffix in x86-64 instructions
* Fix generalization for IA-64 (regarding AO_or, AO_..._read/write primitives)
* Fix generalized AO_<type>_fetch_and_add() return type
* Fix test_atomic_include for the case of missing CAS primitive
* Fix test_malloc - allocate less memory in case of missing mmap
* Implement the basic atomic primitives for the hexagon CPU
== [7.2alpha6] 2011-06-14 ==
* Add missing AO_HAVE_ macros
* Add support of avr32 CPU
* Better support of various models of ARM
* Disable AO_compare_double_and_swap_double_full for SunCC x86 as not working
* Enable ARM Thumb-2 mode
* Fix AO_test_and_set_full for SunCC (x86)
* Fix bugs in tests
* Fix clobbers in AO_compare_and_swap_full (x86.h)
* Fix typos in identifiers and comments
* Improve AO_sync for PowerPC
* Improve make scripts (configure.ac)
* Make get_mmaped() in atomic_ops_malloc.c more portable
* Support Intel compiler
* Support NaCl target
* Suppress compiler warnings in various places
* Test more predefined macros (ARM, PowerPC)
* Use assembly code only for MS VC if available (x86_64)
* Use built-in __sync_bool_compare_and_swap if available (x86_64)
* Workaround bugs in LLVM GCC and SunCC regarding XCHG (x86, x86_64)
== [7.2alpha4] 2009-12-02 ==
* Fix typos in comments, identifiers and documentation
* Implement AO_compare_and_swap_full for SPARC
* Refine ARM-specific code
* Refine code and comments for MS VC
* Regenerate make scripts
* Share common code for all 32-bit CPUs (MS VC)
* Support DigitalMars and Watcom compilers
* Support MS VC for ARM (WinCE)
* Support SH CPU
* Support win32-pthreads
* Support x86 and x86_64 for SunCC compiler
== [7.2alpha2] 2009-05-27 ==
* Add MIPS support
* Add better support for m68k
* Add "const" to first parameter of load calls
* Add parentheses around address argument for various macros
* Add some platform-specific documentation to INSTALL
* Add untested 64-bit support for PowerPC
* Fix AO_compare_and_swap_double_acquire
* Fix AO_int_fetch_and_add_full (x86_64)
* Fix comments
* Fix s390 include paths
* Fix use of lwz instruction (PowerPC)
* Refine clobbers (PowerPC)
* Remove outdated info about Windows support in README
* Replace K&R-style function definition with ANSI C one
* add AO_compare_double_and_swap_double for ARMv6
* gcc/powerpc.h: Consider __NO_LWSYNC__
== [7.1] 2008-02-11 ==
* Add test_and_set, AO_double_compare_and_swap generalizations
* Conditionally add compare_double_and_swap_double (x86)
* Conditionally add compare_double_and_swap_double (x86)
* Fix AO_compare_double_and_swap_double_full (x86) for PIC mode
* Fix AO_load_acquire for PowerPC
* Fix double-width CAS (x86)
* Refine README (add more warnings about data dependencies)
* Refine double_ptr_storage type definition
* Support ARMv6+ in GCC
* Support ArmCC compiler
* Use _InterlockedExchangeAdd for MS VC (x86)
== [7.0] 2007-06-28 ==
* Add 64-bit version of AO_load_acquire for PowerPC (by Luca Barbato)
* Add support of x86 and x86_64 for MS VC
* Do not assume that "mfence" is always present (x86.h)
* Fix ARM AO_test_and_set_full
* Include windows.h (MS VC)
* Update README to reflect C++0x effort
== [1.2] 2006-07-11 ==
* Add prototypes to suppress compiler warnings
* Add simple VxWorks support
* Fix InterlockedCompareExchange proto usage
* Fix typos (ia64)
* Include all_acquire_release_volatile.h and all_atomic_load_store.h (ia64)
* Initial support for 64-bit targets
* Use "=q" for AO_test_and_set_full (x86)
* Use inline assembler to generate "mfence" and byte sized XCHG
* Use new intrinsics available in MSVC 2003 and MSVC 2005
== [1.1] 2005-09-27 ==
* Add and use read_ordered.h
* Change function naming from "byte" to "char"
* Fix AO_test_and_set for ARM; define AO_CAN_EMUL_CAS
== [1.0] 2005-03-21 ==
* Add atomic_ops primitives for different sized data
* Add compare_double_and_swap_double and compare_and_swap_double
* Add gcc/cris.h (originally comes from Hans-Peter Nilsson)
* Add gcc/m68k.h (contributed by Tony Mantler)
* Add gcc/powerpc.h (with help of Maged Michael, Doug Lea, Roger Hoover)
* Add initial support for atomic_ops for VC++/Windows/X86 and HP/UX
* Add minimal support for the Sun SPARC compiler
* Add support for platforms that require out-of-line assembly code
* Add support of int-wide operations on platforms with int-sized pointers
* Added libatomic_ops_gpl library with support for lock-free stack and malloc
* Change atomic_ops include file structure
* Change most platforms to use byte-wide test-and-set locations
* Define AO_CLEAR, __ldcw[_align] macros in gcc/hppa.h (by Carlos O'Donell)
* Fix various bugs
* Install under "atomic_ops" instead of "ao"
* Remove compiler_barrier workaround for gcc 3.4+
* Renamed various types to end in _t
* Replace AO_HAVE_NOP_FULL with AO_HAVE_nop_full (by Ranko Zivojnovic)
* Use autoconf, automake
|