Skip to content
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

Atomicfu stabilization plan #342

Open
2 of 12 tasks
mvicsokolova opened this issue Aug 31, 2023 · 0 comments
Open
2 of 12 tasks

Atomicfu stabilization plan #342

mvicsokolova opened this issue Aug 31, 2023 · 0 comments

Comments

@mvicsokolova
Copy link
Collaborator

mvicsokolova commented Aug 31, 2023

This issue will track the progress of atomicfu stabilization.

✅ - Done
⏳ - Postponed for some reason
🛠️ - In progress
🟨 - Not started yet

Roadmap REVIEWED:

UPD 0.23.0 release:

After update to 1.9.20:

  • JVM: compiler plugin is enabled by default and may be turned off with a flag in atomicfu gradle extension, JVM bytecode transformer is deprecated and ready to be removed. ❌
    JVM IR compiler plugin transformations are not enabled by default yet, because not all main atomicfu users migrated to compiler plugin transformations yet (e.g. ktor). There is WIP migrating all the projects to IR transformations.
  • Native: compiler plugin may be enabled with a flag ✅.
  • JS: compiler plugin may be enabled with a flag, legacy JS transformer is deprecated and ready to be removed. ➖
    JS legacy transformer may be removed, because usage of JS Legacy target is an error since Kotlin 1.9.0. JS IR transformations were not enabled by default due to the remaining unresolved problems in the compiler plugin.

After update to 2.0:

  • JVM: JVM bytecode transformer is removed.
  • JS: legacy JS transformer is removed, compiler plugin is enabled by default.
  • Native: compiler plugin is enabled by default.

Update of the plan

I've updated the plan and restructured the focus a little. Here are the main priority tasks critical for stabilisation:

As it was stated previously kotlinx-atomicfu should get rid of bytecode legacy transformation and enable compiler plugin transformations by default. Prior to enabling compiler transformations by default, we should make sure that all major atomicfu users have compiler transformation already enabled, and figure out the reason if they still use legacy transformation. Here is the current status (more projects will be added).

  1. Enable compiler plugin transformations:

kotlinx.coroutines (flags):
JVM: ✅
Native: ✅
JS: ❌

  • incremental compilation bug (TODO: add a ticket here)

Compose (flags):
JVM: ✅ 🛠️ (with WA)
Native: ✅
JS: ✅

ktor (flags):
JVM: 🛠️
Native: 🛠️
JS: ❌

Here is the PR that enables JVM and Native compiler plugin transformations in ktor: ktorio/ktor#4018

  1. JVM bytecode transformation should be removed.
  1. Plugin application should become easy and documented:
  1. Documentation:

And here is the backlog that should be steadily fixed as well:

Compiler plugin:
Here is the backlog compiler plugin issues: #kotlinx-atomicfu

Library:

@mvicsokolova mvicsokolova pinned this issue Nov 20, 2023
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

No branches or pull requests

1 participant