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