Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased

  • No changes yet.

1.11.0 - 2023-05-02

Fixed

  • Fix Swap and CompareAndSwap for Value wrappers without initialization.

Added

  • Add String method to atomic.Pointer[T] type allowing users to safely print underlying values of pointers.

1.10.0 - 2022-08-11

Added

  • Add atomic.Float32 type for atomic operations on float32.
  • Add CompareAndSwap and Swap methods to atomic.String, atomic.Error, and atomic.Value.
  • Add generic atomic.Pointer[T] type for atomic operations on pointers of any type. This is present only for Go 1.18 or higher, and is a drop-in for replacement for the standard library's sync/atomic.Pointer type.

Changed

  • Deprecate CAS methods on all types in favor of corresponding CompareAndSwap methods.

Thanks to @eNV25 and @icpd for their contributions to this release.

1.9.0 - 2021-07-15

Added

  • Add Float64.Swap to match int atomic operations.
  • Add atomic.Time type for atomic operations on time.Time values.

1.8.0 - 2021-06-09

Added

  • Add atomic.Uintptr type for atomic operations on uintptr values.
  • Add atomic.UnsafePointer type for atomic operations on unsafe.Pointer values.

1.7.0 - 2020-09-14

Added

  • Support JSON serialization and deserialization of primitive atomic types.
  • Support Text marshalling and unmarshalling for string atomics.

Changed

  • Disallow incorrect comparison of atomic values in a non-atomic way.

Removed

  • Remove dependency on golang.org/x/{lint, tools}.

1.6.0 - 2020-02-24

Changed

  • Drop library dependency on golang.org/x/{lint, tools}.

1.5.1 - 2019-11-19

  • Fix bug where Bool.CAS and Bool.Toggle do work correctly together causing CAS to fail even though the old value matches.

1.5.0 - 2019-10-29

Changed

  • With Go modules, only the go.uber.org/atomic import path is supported now. If you need to use the old import path, please add a replace directive to your go.mod.

1.4.0 - 2019-05-01

Added

  • Add atomic.Error type for atomic operations on error values.

1.3.2 - 2018-05-02

Added

  • Add atomic.Duration type for atomic operations on time.Duration values.

1.3.1 - 2017-11-14

Fixed

  • Revert optimization for atomic.String.Store("") which caused data races.

1.3.0 - 2017-11-13

Added

  • Add atomic.Bool.CAS for compare-and-swap semantics on bools.

Changed

  • Optimize atomic.String.Store("") by avoiding an allocation.

1.2.0 - 2017-04-12

Added

  • Shadow atomic.Value from sync/atomic.

1.1.0 - 2017-03-10

Added

  • Add atomic Float64 type.

Changed

  • Support new go.uber.org/atomic import path.

1.0.0 - 2016-07-18

  • Initial release.