Comments (6)
plugin's update in a project will make the dump invalid
Yes, and the good thing about it is that it's a conscious decision, so nothing surprising to the users here. It has happened several times in the past that updating the Kotlin plugin breaks the dumps (which is arguably more surprising), and at least for me personally it has never been more painful than forgetting to apiDump
after a code change.
Also, enabling the klib support flag (which I guess one day will be the default) already moves the dumps, so we may as well capitalize on this :)
from binary-compatibility-validator.
It indeed makes sense. This is rather a historical oddity where we first started with "what is public API" and then every other name just followed.
If we ever consider pushing BCV to 1.0 or merging it into Kotlin upstream, we definitely should consider the renaming
from binary-compatibility-validator.
I see, thanks. I was thinking that maybe because of the change in structure with the klib / KMP support, it might be a good time to change the extension too
from binary-compatibility-validator.
We thought about that too, but changing the name of JVM dump files would be painful for existing users, and having two files (for KLib and class files) with the (conceptually) same stuff inside but different names looked weird.
from binary-compatibility-validator.
changing the name of JVM dump files would be painful for existing users
In which way?
These files are updated each time an ABI change happens, so it's already part of the process to update them/commit them in some way. Making a source code change + apiDump
+ commit is as complicated as making a plugin version update + apiDump
+ commit. Git is quite good at recognizing the file even with a different name if the contents don't change. Is there something I am missing?
from binary-compatibility-validator.
In which way?
- If we change the file extension name, plugin's update in a project will make the dump invalid (well, the dump will not exists from plugin's POV) even if nothing had changed in the ABI;
git --follow
helps with renaming, but it's not something working out of the box.
Given that the new release introduces experimental feature useful for some developers (those who owns KMP projects), it's hard to justify why everyone else should be disturbed.
As Vsevolod said, it's something that could be done with a major release, but for now we decided to stick to existing naming convention.
from binary-compatibility-validator.
Related Issues (20)
- `KlibSignatureVersion.LATEST.toString()` is rendered as `KlibSignatureVersion(-2147483648)`
- Add Gradle version compatibility tests HOT 2
- Consider moving BCV to Kotlin repo HOT 3
- Description of a Syncs API task is uninformative HOT 1
- Add brief description to the top of .api dumps, to help explain the file and BCV
- Remove case-insensitive dump file names handling logic HOT 16
- Merge JVM and KLib ABI dumps into a single file
- Use a project/module-agnostic name for dump files
- Removing native targets did not cause API check to fail HOT 4
- Support Multi-Release JAR Files HOT 9
- allow apiDumpDirectory outside projectDir if inside rootProjectDir
- Allow `apiCheck` to run on all subprojects before failing HOT 2
- Migrate to newer kotlin-metadata-jvm HOT 9
- BCV behavior for an empty module is inconsistent between JVM and KMP
- JVM/Android-only modules create empty klib.api file on 0.15.0-Beta.3 HOT 1
- Include ABI version into dump
- KLib dumps merge: support dumps with different library names
- [0.15.0] Enum entries are not part of generated `.api` dump anymore if the enum contains internal companion object HOT 1
- Outer scope's visibility is not considered when dumping `const val`s
- Subprojects that contain the same name will be ignored
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from binary-compatibility-validator.