Skip to content

Conversation

@serras
Copy link
Member

@serras serras commented Mar 20, 2025

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

@serras serras requested a review from nomisRev March 20, 2025 21:26
@revonateB0T
Copy link

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.

@serras
Copy link
Member Author

serras commented Mar 21, 2025

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.

@github-actions
Copy link
Contributor

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%

@serras serras marked this pull request as draft May 21, 2025 09:27
@kyay10
Copy link
Collaborator

kyay10 commented Dec 27, 2025

I think this is a good temporary solution. To be honest, I don't see why anyone would use Arrow atomics instead of the stdlib ones, though. Maybe arrow-atomics should be deprecated, and instead, we should provide extensions for the stdlib atomics?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants