arrow icon indicating copy to clipboard operation
arrow copied to clipboard

Use new `kotlin.concurrent.atomics`

Open serras opened this issue 9 months ago • 3 comments

Just trying, maybe we should only merge once this is out of experimental

serras avatar Mar 20 '25 21:03 serras

I don't think we should choose to keep API compatibility and make a wrapper class around k.c.a impl. We should follow kotlin stdlib API shape and create a new module like arrow.atomics2 while keeping package name. Moreover a wrapper class do harm performance.

revonateB0T avatar Mar 21 '25 03:03 revonateB0T

I don't think we should choose to keep API compatibility and make a wrapper class around k.c.a impl.

I think this is actually what we should do to keep our API compatible while at the same time making our maintenance work much less (instead of keeping 4 versions of the code, the new one just wraps the common one).

Moreover a wrapper class do harm performance.

I think the difference in this case (just one more indirection) is quite minimal, to be honest. Even more so because in almost every platform (except JVM) we may get a more performant implementation from Kotlin Team.

serras avatar Mar 21 '25 08:03 serras

Kover Report

File Coverage [85.58%]
arrow-libs/core/arrow-atomic/src/androidAndJvmMain/kotlin/arrow/atomic/Atomic.kt 100.00%
arrow-libs/core/arrow-atomic/src/androidAndJvmMain/kotlin/arrow/atomic/AtomicInt.kt 86.96%
arrow-libs/core/arrow-atomic/src/androidAndJvmMain/kotlin/arrow/atomic/AtomicLong.kt 91.30%
arrow-libs/core/arrow-atomic/src/commonMain/kotlin/arrow/atomic/Atomic.kt 100.00%
arrow-libs/core/arrow-atomic/src/commonMain/kotlin/arrow/atomic/AtomicBoolean.kt 85.00%
arrow-libs/core/arrow-atomic/src/commonMain/kotlin/arrow/atomic/AtomicInt.kt 86.96%
arrow-libs/core/arrow-atomic/src/commonMain/kotlin/arrow/atomic/AtomicLong.kt 91.30%
arrow-libs/core/arrow-atomic/src/jsMain/kotlin/arrow/atomic/Atomic.kt 100.00%
arrow-libs/core/arrow-atomic/src/jsMain/kotlin/arrow/atomic/AtomicInt.kt 86.96%
arrow-libs/core/arrow-atomic/src/jsMain/kotlin/arrow/atomic/AtomicLong.kt 91.30%
arrow-libs/core/arrow-atomic/src/nativeMain/kotlin/arrow/atomic/Atomic.kt 100.00%
arrow-libs/core/arrow-atomic/src/nativeMain/kotlin/arrow/atomic/AtomicInt.kt 86.96%
arrow-libs/core/arrow-atomic/src/nativeMain/kotlin/arrow/atomic/AtomicLong.kt 91.30%
arrow-libs/core/arrow-atomic/src/wasmJsMain/kotlin/arrow/atomic/Atomic.kt 100.00%
arrow-libs/core/arrow-atomic/src/wasmJsMain/kotlin/arrow/atomic/AtomicInt.kt 86.96%
arrow-libs/core/arrow-atomic/src/wasmJsMain/kotlin/arrow/atomic/AtomicLong.kt 91.30%
arrow-libs/core/arrow-autoclose/src/commonMain/kotlin/arrow/AutoCloseScope.kt 100.00%
arrow-libs/core/arrow-core/src/commonMain/kotlin/arrow/core/AtomicUtils.kt 100.00%
arrow-libs/core/arrow-core/src/commonMain/kotlin/arrow/core/MemoizedDeepRecursiveFunction.kt 69.23%
arrow-libs/core/arrow-core/src/commonMain/kotlin/arrow/core/raise/Builders.kt 69.84%
arrow-libs/core/arrow-core/src/commonMain/kotlin/arrow/core/raise/Fold.kt 100.00%
arrow-libs/core/arrow-functions/src/commonMain/kotlin/arrow/core/memoization.kt 100.00%
arrow-libs/fx/arrow-collectors/src/commonMain/kotlin/arrow/collectors/AtomicUtils.kt 100.00%
arrow-libs/fx/arrow-collectors/src/commonMain/kotlin/arrow/collectors/Collectors.kt 55.88%
arrow-libs/fx/arrow-fx-coroutines/src/commonMain/kotlin/arrow/fx/coroutines/AtomicUtils.kt 100.00%
arrow-libs/fx/arrow-fx-coroutines/src/commonMain/kotlin/arrow/fx/coroutines/CountDownLatch.kt 100.00%
arrow-libs/fx/arrow-fx-coroutines/src/commonMain/kotlin/arrow/fx/coroutines/CyclicBarrier.kt 82.54%
arrow-libs/fx/arrow-fx-coroutines/src/commonMain/kotlin/arrow/fx/coroutines/Resource.kt 79.59%
arrow-libs/fx/arrow-fx-coroutines/src/commonMain/kotlin/arrow/fx/coroutines/await/AwaitAllScope.kt 0.00%
arrow-libs/fx/arrow-fx-stm/src/commonMain/kotlin/arrow/fx/stm/TVar.kt 76.67%
arrow-libs/fx/arrow-fx-stm/src/commonMain/kotlin/arrow/fx/stm/internal/Impl.kt 91.67%
arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/CircuitBreaker.kt 87.63%
arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/Saga.kt 93.48%
Total Project Coverage 46.05%

github-actions[bot] avatar Mar 21 '25 09:03 github-actions[bot]