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

Consider moving BCV to Kotlin repo #223

Open
qwwdfsad opened this issue Apr 25, 2024 · 0 comments
Open

Consider moving BCV to Kotlin repo #223

qwwdfsad opened this issue Apr 25, 2024 · 0 comments
Labels
enhancement New feature or request

Comments

@qwwdfsad
Copy link
Member

qwwdfsad commented Apr 25, 2024

Currently, BCV is in a tough spot w.r.t the rest of the Kotlin tooling:

  • It is tightly bound to the underlying Kotlin version (esp. with klib validation), though it has a completely different versioning. And it's unlikely to ever be properly forward-compatible
  • Consequently, it means that we either have to make a release after each Koltin major release or use some non-trivial runtime dependency substitution to workaround the issue
  • The Gradle DSL evolves independently from the rest of the KGP, meaning that API divergence is likely to be present -- some Kotlin tools support annotation-based exclusions, some annotation-based inclusions, some have different APIs, some have different Gradle compatibility policies etc.
    • We also need some expertise in modern Gradle to properly maintain all that
  • This is de facto a standard Kotlin tool -- it leverages implementation knowledge, depends on the compiler internals and shapes/is shaped by our spec, and presumably should be used by most of the libraries in the wild. It's a bit awkward that some tools are available out of the box (i.e. testing, power asserts, JaCoCo coverage from Gradle) while BCV is an external dependency with awkward versioning and compatibility

It would be nice to make it part of the Kotlin offering by default, e.g. so users can write something like:

kotlin {
    ...
}

// Maybe in kotlin block. Mayble applied but disabled by default, maybe applicable via shorthand syntax like kotlin("api-validation")
abiValidation { 
    // Configure
}

@qwwdfsad qwwdfsad added the enhancement New feature or request label Apr 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant