-
Notifications
You must be signed in to change notification settings - Fork 64
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Native SynchronizedObject actualization split between Apple and Non-Apple source sets breaks dependent projects #520
Comments
For now, we at least have to rollback #499 from |
On the coroutines side, compilation fails with:
|
That is suspicious because I've explicitly tested and benchmarked #499 as part of the Kotlin/kotlinx.coroutines#4350 Could it be the case that #512 is the reason for the issue? |
It seems to be non-apple specific, probably reproducible on Linux. I've built the current |
Update: |
Steps to reproduce:
|
@stefanhaustein could you please take a look at the issue? It slipped through our CI at the time #499 was reviewed and merged. I didn't thought a possible fix through, but it seems like we need to continue providing a single |
I'll look into it -- I am assuming it's not super urgent as you are already rolling back? PS: It would be great if there would be a more straightforward test catching this... |
We rolled backed changes in a branch used in Kotlin release trains, but AFU's |
Klib API dumping is not enabled for this project. That should have caught this, right? |
Added a regression test here: https://github.com/Kotlin/kotlinx-atomicfu/blob/issue-520-reproducer/integration-testing/src/functionalTest/kotlin/kotlinx.atomicfu.gradle.plugin.test/cases/CoroutinesAlikeProjectTest.kt |
It's worth checking, I doubt it can catch this particular issue as the ABI should have remained the same across all the targets. It's sources being moved between source sets what cause compilation issues. |
I checked: changes in the dumped Klib ABI give zero clues on this particular problem. |
Thanks! I was assuming rolling back meant rolling back "everywhere". I look into addressing this tomorrow (= Friday). It might be feasible to address this by sharing more of the implementation. |
Update: This should be addressed in #517 now... |
PS Vesevold told me he is still seeing the problem, but the SynchronizedObject source is no longer split and I did not see the new test fail on #517... If anybody has ideas / suggestions, please don't hesitate to comment O:) |
I can't tell exactly what problem is Vsevolod seeing, but for me the regression test is passing, as well as |
@fzhinkin would you mind sharing your patch for building |
@stefanhaustein I ended up building it w/o any patches using commands from #520 (comment) |
Thanks, that worked for me. |
#499 split once single
SynchronizedObject
actualization between two source sets, apple and non-apple. On native,SynchronizedObject
actualization provides three additional functions (tryLock
,lock
,unlock
) and some projects, likekotlinx-coroutines
use these functions in their corresponding native source sets.After
SynchronizedObject
being split in two identical (in terms of public ABI) implementations in two different source sets, it is no longer possible to use those three functions from a common native source sets as they are only available in corresponding apple and native-non-apple source sets.This is a regression and we need to continue providing
tryLock
,lock
,unlock
functions innative
source set.The text was updated successfully, but these errors were encountered: