1# Change log for kotlinx.atomicfu 2 3# Version 0.23.1 4 5* Updated Kotlin to 1.9.21 (#361). 6* Update to Kotlin 1.9.21 fixes regression with klib incompatibility (#365). 7 8# Version 0.23.0 9 10* Updated Kotlin to 1.9.20 (#361). 11* Updated Gradle version to 8.3. 12* Supported transformations for Native targets (#363) . 13* Introduced WebAssembly target (`wasmJs` and `wasmWasi`) (#334). 14* Improved integration testing for `atomicfu-gradle-plugin` (#345). 15* Updated implementation of native atomics (#336). 16* Got rid of `previous-compilation-data.bin` file in META-INF (#344). 17 18# Version 0.22.0 19 20* Updated Kotlin to 1.9.0 (#330). 21* Updated gradle version to 8.1 (#319). 22* Updated kotlinx.metadata version 0.7.0 (#327). 23* Conditionally removed targets that are removed after 1.9.20 (iosArm32, watchosX86). (#320). 24* Removed obsolete no longer supported kotlin.mpp.enableCompatibilityMetadataVariant (#326). 25* Complied with new compiler restriction on actual declaration annotations (#325). 26 27# Version 0.21.0 28 29* Updated Kotlin to 1.8.20. 30* Updated Gradle to 7.3 (#300). 31* Updated kotlinx.metadata version to 0.6.0 (#281). 32* Minimal supported KGP(1.7.0) and Gradle(7.0) versions are set since this release. 33* Removed JS Legacy configurations for KGP >= 1.9.0 (#296). 34* Fixed class duplication (from original and transformed directories) in Jar (#301). 35* Original class directories are not modified in case of compiler plugin application (#312). 36 37# Version 0.20.2 38 39* Fix for unresolved `kotlinx-atomicfu-runtime` dependency error (https://youtrack.jetbrains.com/issue/KT-57235), 40please see the corresponding PR for more comments (#290). 41 42# Version 0.20.1 43 44* Fixed passing `kotlinx-atomicfu-runtime` dependency to the runtime classpath (#283). 45* AV/LV set to 1.4 to be compatible with Gradle 7 (#287). 46* Enable cinterop commonization (#282). 47 48# Version 0.20.0 49 50* Update Kotlin to 1.8.10. 51* Support all official K/N targets (#275). 52 53# Version 0.19.0 54 55* Update Kotlin to 1.8.0. 56* Update LV to 1.8 (#270). 57* Prepare atomicfu for including to the Kotlin Aggregate build (#265). 58 59# Version 0.18.5 60 61* Support JVM IR compiler plugin (#246). 62* Update Kotlin to 1.7.20. 63* Added more tests for atomicfu-gradle-plugin (#255). 64 65# Version 0.18.4 66 67* Fix KGP compatibility bug with freeCompilerArgs modification (#247). 68* Update kotlinx.metadata to 0.5.0 (#245). 69* Update gradle version to 6.8.3 (#244) 70 71# Version 0.18.3 72 73* Fix for atomicfu-gradle-plugin application to the MPP project (for Kotlin 1.7.20). 74 75# Version 0.18.2 76 77* In Kotlin 1.7.10 the name of `atomicfu-runtime` module was reverted back to `kotlinx-atomicfu-runtime`, 78 as the renaming was an incompatible change. 79 Fixed `atomicfu-gradle-plugin` to add `kotlinx-atomicfu-runtime` dependency directly. 80 81# Version 0.18.1 82 83* Fix for the compatibility issue: add `atomicfu-runtime` dependency directly since Kotlin 1.7.10. 84 85# Version 0.18.0 86 87* Update Kotlin to 1.7.0. 88* Fix kotlin 1.7 compatibility (#222). 89* Update JVM target to 1.8 (see KT-45165). 90* Fix for parsing Kotlin version in AtomicfuGradlePlugin. 91 92# Version 0.17.3 93 94* Adding compiler plugin dependency only for projects with KGP >= 1.6.20 (#226). 95* Compiler plugin runtime dependency fixes (#230). 96* Update README badges (#228). 97 98# Version 0.17.2 99 100* Update Kotlin to 1.6.20. 101* IR transformation for Kotlin/JS. (#215). 102* Update ASM to 9.3 for Java 18 support (#223) 103* Update kotlinx.metadata to 0.4.2. 104 105# Version 0.17.1 106 107* Support of `org.jetbrains.kotlin.js` plugin (#218). 108* Fixed configuration cache bug. (#216). 109* Bug fixes for delegated fields support (#179). 110 111# Version 0.17.0 112 113* Update Kotlin to 1.6.0. 114* Update ASM minimal api version to ASM7 (#203). 115* Add explicit module-info for JPMS compatibility (#201). 116 117# Version 0.16.3 118 119* Kotlin is updated to 1.5.30. 120* All references to Bintray are removed from artefacts POMs. 121* Added new Apple Silicon targets for K/N. 122 123# Version 0.16.2 124 125* Update Kotlin to 1.5.20. 126* ASM 9.1 for Java 15+ support (#190). 127* Removing extra atomicfu references from LVT. 128 129# Version 0.16.0 130 131* Update Kotlin to 1.5.0. 132* Supported x86_64-based watchOS simulator target. (#177). 133 134# Version 0.15.2 135 136* Update kotlinx-metadata to 0.2.0. 137* Update Kotlin to 1.4.30. 138* Added kotlin space repository. 139 140# Version 0.15.1 141 142* Maven central publication (#173). 143* Binary compatibility with IR (#170). 144* Supported garbage-free multi-append in debug trace (#172). 145 146# Version 0.15.0 147 148* Tracing atomic operations (#20). 149* Supported delegated properties (#83). 150* Fixed visibility modifiers of synthetic fields and classes (#144). 151* Introduced `size` method for atomic arrays (#149). 152* Update Kotlin to 1.4.10. 153 154# Version 0.14.4 155 156* Fixed bug when Maven plugin wasn't published 157* Migrate to new Kotlin HMPP metadata for multiplatform projects 158* Update Kotlin to 1.4.0 159 160# Version 0.14.3 161 162* Update to Kotlin 1.3.71. 163* Enable HMPP and new JS IR backend compilation. 164 165# Version 0.14.2 166 167* Update to Kotlin 1.3.70. 168 169# Version 0.14.1 170 171* Fixed broken JVM transformer after upgrade to ASM 7.2. 172 173# Version 0.14.0 174 175* Updated to Kotlin 1.3.60. 176* Updated to ASM 7.2. 177* Support locks (SynchronizedObject and ReentrantLock). 178* Freezable atomics on Kotlin/Native. 179 180# Version 0.13.2 181 182* Added release notes. 183* Added the original classesDirs to the friend paths of test compilations. 184 185# Version 0.13.1 186 187* Better diagnostics when LockFreedomTestEnvironment fails to shutdown. 188* Fixed looking for local variables scope labels. 189 190# Version 0.13.0 191 192* Gradle version 5.6.1 with Gradle metadata format version 1.0 (stable) for native modules. 193* Optimized volatile-only fields in JVM. 194* Supported unchecked cast erasure (including array elements). 195* Fixed inline functions on array elements. 196* Fixed shutdown sequence of LockFreedomTestEnvironment. 197 198# Version 0.12.11 199 200* Support suspending functions in LockFreedomTestEnvironment. 201 202# Version 0.12.10 203 204* Updated to Kotlin 1.3.50 205 206# Version 0.12.9 207 208* Updated to Kotlin 1.3.40 209 210# Version 0.12.8 211 212* Fixed getting array elements by named index. 213* Fixed broken npm publishing. 214 215# Version 0.12.7 216 217* Fixed BooleanArray setValue. 218* Fixed removal of inline methods on atomicfu types from bytecode. 219* Adjust kotlin.Metadata in JVM classes to remove atomicfu references completely. 220 221# Version 0.12.6 222 223* Support additional configuration for dependencies and transforms. 224* Get array field fixed (see #61). 225 226# Version 0.12.5 227 228* Fixed Gradle plugin compatibility with `kotlin-multiplatform` plugin. 229 230# Version 0.12.4 231 232* Gradle plugin automatically adds dependencies. 233* Added support for inline extensions on `AtomicXxx` types. 234 235# Version 0.12.3 236 237* Updated to Kotlin 1.3.30 238 239# Version 0.12.2 240 241* Fixed to skip changing source path for unprocessed native output (see #51). 242* Fixed inlining of atomic operations on JS (see #52). 243 244# Version 0.12.1 245 246* Gradle 4.10 with metadata version 0.4. 247* No metadata for everything except native. 248 249# Version 0.12.0 250 251* Kotlin version 1.3.11. 252* Support top-level atomic variables. 253* Support arrays of atomic variables. 254* Project is built with kotlin-multiplatform plugin. 255 256# Version 0.11.11 257 258* Kotlin version Kotlin version 1.3.0-rc-146 (with K/N). 259* Gradle plugin supports projects that use `kotlin-multiplatform` plugin. 260* Disable Gradle metadata publishing for all but native modules. 261* JS transformer is more robust and retains line numbers (see #25). 262 263# Version 0.11.10 264 265* Kotlin version 1.3.0-rc-57 & Kotlin/Native 0.9.2 266 267# Version 0.11.9 268 269* Kotlin/Native version 1.3.0-rc-116 (0.9.3) 270* Kotlin version 1.2.71 271* Incremental JS compilation is fixed in plugin 272 273## Version 0.11.7 274 275* Fixed non-transformed AtomicBoolean and its tests 276* AtomicFUGradlePlugin: More consistent task naming & code refactoring 277 278## Version 0.11.6 279 280* Kotlin/Native version 0.9 281 282## Version 0.11.5 283 284* Gradle plugin for JS: Fixed paths on Windows 285 286## Version 0.11.4 287 288* JS: Transformer added. It is now a compile-only dependency just like on JVM. 289* JVM: Default transformation variant is changed back to JDK6-compatible "FU". 290 * `atomicfu { variant = xxx }` configuration section in Gradle can be used to change it. 291 292## Version 0.11.3 293 294* Fixed lost files during class analysis phase. 295 296## Version 0.11.2 297 298* Kotlin version 1.2.61 299* Kotlin/Native version 0.8.2 300* More user-friendly Gradle plugin for Kotlin/JVM and multi-release jar by default. See updated section in [README.md](README.md#Gradle) 301* Supports `internal` atomic variables that are accessed from a different package in the same module. 302 303## Version 0.11.1 304 305* Kotlin version 1.2.60 306* Kotlin/Native version 0.8.1 307 308## Version 0.11.0 309 310* AtomicBoolean support (see #6) 311* Kotlin/Native 0.9-dev-2922, all platforms, published to Maven Central 312 313## Version 0.10.3-native 314 315* Kotlin 1.2.51. 316* Initial Kotlin/Native support: 317 * Build for Kotlin/Native 0.8. 318 * Only JS-like single-threaded applications are supported (no actual atomics). 319 * Supported targets: "ios_arm64", "ios_arm32", "ios_x64", "macos_x64". 320* NOTE: This version is not available in NPM and Maven Central. Use this Bintray repository: 321 * `maven { url "https://kotlin.bintray.com/kotlinx" }` 322 323## Version 0.10.3 324 325* Kotlin 1.2.50. 326 327## Version 0.10.2 328 329* JS: Main file renamed to kotlinx-atomicfu.js to match NPM module name. 330 331## Version 0.10.1 332 333* JS: NPM deployment. 334 335## Version 0.10.0 336 337* Kotlin 1.2.41. 338* Multiplatform: 339 * Extracted common code into `atomicfu-common` module. 340 * Basic support on JS via `atomicfu-js` module (boxed objects, Bintray publishing only). 341* JVM transformer: 342 * Preserve annotations on atomic fields. 343 * Ignore no-ops in flow analyzer (support more variety of code patterns). 344 345## Version 0.9.2 346 347* Replaced deprecated kotlin-stdlib-jre8 dependency with kotlin-stdlib-jdk8. 348 349## Version 0.9.1 350 351* Kotlin 1.2.0 352 353## Version 0.9 354 355* Support generation of `VarHandle` variant for Java 9. 356 357## Version 0.8 358 359* `atomicfu-gradle-plugin` introduced. 360 361## Version 0.7 362 363* Fixed lost ACC_STATIC on <clinit> methods. 364* Publish to Maven Central. 365 366## Version 0.6 367 368* toString defined for debugging. 369 370## Version 0.5 371 372* Longer timeout to detect stalls in lock-free code, with shutdown logic 373 that detected them even on short runs. 374* Kotlin 1.1.4 375 376## Version 0.4 377 378* Publish sources. 379* Provide top-level `pauseLockFreeOp` for debugging. 380* Stability improvements. 381 382## Version 0.3 383 384* Improved handling of compiler local variables for atomic fields. 385* Support atomicVar.value = constant (with LDC instruction). 386* Provide randomSpinWaitIntermission for lock-freedom tests. 387 388## Version 0.2 389 390* Support non-private atomic fields in nested classes that are accessed by other 391 classes in the same compilation unit. 392* Support for lock-freedom testing on unprocessed code 393 (other potential uses via interceptors in the future). 394 395## Version 0.1 396 397* Initial release. 398