Change log for kotlinx.atomicfu

Version 0.16.0

  • Update Kotlin to 1.5.0.
  • Supported x86_64-based watchOS simulator target. (#177).

Version 0.15.2

  • Update kotlinx-metadata to 0.2.0.
  • Update Kotlin to 1.4.30.
  • Added kotlin space repository.

Version 0.15.1

  • Maven central publication (#173).
  • Binary compatibility with IR (#170).
  • Supported garbage-free multi-append in debug trace (#172).

Version 0.15.0

  • Tracing atomic operations (#20).
  • Supported delegated properties (#83).
  • Fixed visibility modifiers of synthetic fields and classes (#144).
  • Introduced size method for atomic arrays (#149).
  • Update Kotlin to 1.4.10.

Version 0.14.4

  • Fixed bug when Maven plugin wasn't published
  • Migrate to new Kotlin HMPP metadata for multiplatform projects
  • Update Kotlin to 1.4.0

Version 0.14.3

  • Update to Kotlin 1.3.71.
  • Enable HMPP and new JS IR backend compilation.

Version 0.14.2

  • Update to Kotlin 1.3.70.

Version 0.14.1

  • Fixed broken JVM transformer after upgrade to ASM 7.2.

Version 0.14.0

  • Updated to Kotlin 1.3.60.
  • Updated to ASM 7.2.
  • Support locks (SynchronizedObject and ReentrantLock).
  • Freezable atomics on Kotlin/Native.

Version 0.13.2

  • Added release notes.
  • Added the original classesDirs to the friend paths of test compilations.

Version 0.13.1

  • Better diagnostics when LockFreedomTestEnvironment fails to shutdown.
  • Fixed looking for local variables scope labels.

Version 0.13.0

  • Gradle version 5.6.1 with Gradle metadata format version 1.0 (stable) for native modules.
  • Optimized volatile-only fields in JVM.
  • Supported unchecked cast erasure (including array elements).
  • Fixed inline functions on array elements.
  • Fixed shutdown sequence of LockFreedomTestEnvironment.

Version 0.12.11

  • Support suspending functions in LockFreedomTestEnvironment.

Version 0.12.10

  • Updated to Kotlin 1.3.50

Version 0.12.9

  • Updated to Kotlin 1.3.40

Version 0.12.8

  • Fixed getting array elements by named index.
  • Fixed broken npm publishing.

Version 0.12.7

  • Fixed BooleanArray setValue.
  • Fixed removal of inline methods on atomicfu types from bytecode.
  • Adjust kotlin.Metadata in JVM classes to remove atomicfu references completely.

Version 0.12.6

  • Support additional configuration for dependencies and transforms.
  • Get array field fixed (see #61).

Version 0.12.5

  • Fixed Gradle plugin compatibility with kotlin-multiplatform plugin.

Version 0.12.4

  • Gradle plugin automatically adds dependencies.
  • Added support for inline extensions on AtomicXxx types.

Version 0.12.3

  • Updated to Kotlin 1.3.30

Version 0.12.2

  • Fixed to skip changing source path for unprocessed native output (see #51).
  • Fixed inlining of atomic operations on JS (see #52).

Version 0.12.1

  • Gradle 4.10 with metadata version 0.4.
  • No metadata for everything except native.

Version 0.12.0

  • Kotlin version 1.3.11.
  • Support top-level atomic variables.
  • Support arrays of atomic variables.
  • Project is built with kotlin-multiplatform plugin.

Version 0.11.11

  • Kotlin version Kotlin version 1.3.0-rc-146 (with K/N).
  • Gradle plugin supports projects that use kotlin-multiplatform plugin.
  • Disable Gradle metadata publishing for all but native modules.
  • JS transformer is more robust and retains line numbers (see #25).

Version 0.11.10

  • Kotlin version 1.3.0-rc-57 & Kotlin/Native 0.9.2

Version 0.11.9

  • Kotlin/Native version 1.3.0-rc-116 (0.9.3)
  • Kotlin version 1.2.71
  • Incremental JS compilation is fixed in plugin

Version 0.11.7

  • Fixed non-transformed AtomicBoolean and its tests
  • AtomicFUGradlePlugin: More consistent task naming & code refactoring

Version 0.11.6

  • Kotlin/Native version 0.9

Version 0.11.5

  • Gradle plugin for JS: Fixed paths on Windows

Version 0.11.4

  • JS: Transformer added. It is now a compile-only dependency just like on JVM.
  • JVM: Default transformation variant is changed back to JDK6-compatible “FU”.
    • atomicfu { variant = xxx } configuration section in Gradle can be used to change it.

Version 0.11.3

  • Fixed lost files during class analysis phase.

Version 0.11.2

  • Kotlin version 1.2.61
  • Kotlin/Native version 0.8.2
  • More user-friendly Gradle plugin for Kotlin/JVM and multi-release jar by default. See updated section in README.md
  • Supports internal atomic variables that are accessed from a different package in the same module.

Version 0.11.1

  • Kotlin version 1.2.60
  • Kotlin/Native version 0.8.1

Version 0.11.0

  • AtomicBoolean support (see #6)
  • Kotlin/Native 0.9-dev-2922, all platforms, published to Maven Central

Version 0.10.3-native

  • Kotlin 1.2.51.
  • Initial Kotlin/Native support:
    • Build for Kotlin/Native 0.8.
    • Only JS-like single-threaded applications are supported (no actual atomics).
    • Supported targets: “ios_arm64”, “ios_arm32”, “ios_x64”, “macos_x64”.
  • NOTE: This version is not available in NPM and Maven Central. Use this Bintray repository:
    • maven { url "https://kotlin.bintray.com/kotlinx" }

Version 0.10.3

  • Kotlin 1.2.50.

Version 0.10.2

  • JS: Main file renamed to kotlinx-atomicfu.js to match NPM module name.

Version 0.10.1

  • JS: NPM deployment.

Version 0.10.0

  • Kotlin 1.2.41.
  • Multiplatform:
    • Extracted common code into atomicfu-common module.
    • Basic support on JS via atomicfu-js module (boxed objects, Bintray publishing only).
  • JVM transformer:
    • Preserve annotations on atomic fields.
    • Ignore no-ops in flow analyzer (support more variety of code patterns).

Version 0.9.2

  • Replaced deprecated kotlin-stdlib-jre8 dependency with kotlin-stdlib-jdk8.

Version 0.9.1

  • Kotlin 1.2.0

Version 0.9

  • Support generation of VarHandle variant for Java 9.

Version 0.8

  • atomicfu-gradle-plugin introduced.

Version 0.7

  • Fixed lost ACC_STATIC on methods.
  • Publish to Maven Central.

Version 0.6

  • toString defined for debugging.

Version 0.5

  • Longer timeout to detect stalls in lock-free code, with shutdown logic that detected them even on short runs.
  • Kotlin 1.1.4

Version 0.4

  • Publish sources.
  • Provide top-level pauseLockFreeOp for debugging.
  • Stability improvements.

Version 0.3

  • Improved handling of compiler local variables for atomic fields.
  • Support atomicVar.value = constant (with LDC instruction).
  • Provide randomSpinWaitIntermission for lock-freedom tests.

Version 0.2

  • Support non-private atomic fields in nested classes that are accessed by other classes in the same compilation unit.
  • Support for lock-freedom testing on unprocessed code (other potential uses via interceptors in the future).

Version 0.1

  • Initial release.