
== [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).


== [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.
* 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 ==

* Fix various bugs.
* Add atomic_ops primitives for different sized data.
* Add compare_double_and_swap_double and compare_and_swap_double.
* 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.
* Attempt to support PowerPC.
* Change atomic_ops include file structure.
* Change most platforms to use byte-wide test-and-set locations.
* Install under "atomic_ops" instead of "ao".
* Remove compiler_barrier workaround for gcc 3.4+.
* Renamed various types to end in _t.
* Use autoconf, automake.
