Skip to content

Releases: Kotlin/binary-compatibility-validator

0.16.0

17 Jul 14:40
Compare
Choose a tag to compare

What changed:

  • Updated Kotlin Metadata JVM library to the latest version (now it's kotlin-metadata-jvm:2.0.0) #255
  • Various improvements in KLib ABI dumping API #253, #254

0.15.1

09 Jul 08:31
Compare
Choose a tag to compare

What changed:

  • Fixed a regression introduced in 0.15.0 affecting how enum entries from classes with non-public companions are dumped (#250)

0.15.0

08 Jul 08:17
Compare
Choose a tag to compare

This release finalizes what was added in the series of beta releases and adds Kotlin libraries (KLib) dumping and validation support.
See project's README for details on how to enable it for your project.

The release contains some breaking changes that were made to align and fix BCV behavior across all supported configurations:

  • BCV now (again) uses case-sensitive dump file names (#237);
  • Multiplatform projects having no release sources (for instance, test-only projects) now need to be either explicitly excluded or an empty dump file needs to be generated for them (#231);
  • Gradle tasks provided by the plugin changed their API to use Gradle Properties instead of plain Kotlin properties.

If any of these changes affect your projects, please check the migration guide for details on what needs to be done to update BCV to 0.15.0: 0.15.0 Migration Guide.

What changed:

From 0.15.0-Beta.3

  • Non-public markers are now correctly handled when applied to const vals (#90, #245)
  • Fixed KLib dump and validation behavior for empty projects (#246, #247); now apiDump will emit an empty file and apiCheck will successfully consume it

From 0.14.0 (brief overview of Beta.1 .. Beta.3 changes)

  • List<ClassBinarySignature>.dump now sorts declarations the same way the Gradle task does (#188)
  • API dump file names (for both JVM and Klib dumps) need to be case-sensitive (#231, #237)
  • Validation behavior for empty projects was aligned across all supported configurations (#243, #244); now, such projects must either contain API dump files or be explicitly excluded using ignoredProjects.
  • Experimental KLib ABI dumping and validation support was added (#183, #203, #196, #197, #234, #219, #214)

I want to give a shout-out to everyone involved! Special thanks to @benedekh, @adam-enko, @JakeWharton, @rickclephas, @lukellmann, @illarionov, @sandwwraith, @martinbonnin, @ilya-g and @shanshin for their feedback and contributions.

0.15.0-Beta.3

27 Jun 08:52
Compare
Choose a tag to compare

This release provides updated KLib validation support and fixes some previously reported KLib-related issues.

The release contains some breaking changes that were made to align and fix BCV behavior across all supported configurations:

  • BCV now (again) uses case-sensitive dump file names (#237);
  • Multiplatform projects having no release sources (for instance, test-only projects) now need to be either explicitly excluded or an empty dump file needs to be generated for them (#231);
  • Gradle tasks provided by the plugin changed their API to use Gradle Properties instead of plain Kotlin properties.

If any of these changes affect your projects, please check the migration guide for details on what needs to be done to update BCV to 0.15.0-Beta.3: 0.15.0 Migration Guide.

Compared to 0.15.0-Beta.2, the KLib ABI dump file format was changed to be more readable (#196, #197). The newer BCV version will successfully validate the ABI against golden dump files generated by previous versions, but the execution of the apiDump task will result in updated .klib.api files even if the ABI itself remains the same. Thus, it's recommended to update the plugin and dump files separately from changes affecting your code.

What changed:

  • KLib validation-related Gradle tasks were made public (#203, #204)
  • KLib ABI dump format was improved to group declarations by their type (#197, #224), and additional vertical spacing was added to improve reliability (#196, #225)
  • API dump file names (for both JVM and Klib dumps) need to be case-sensitive (#231, #237)
  • Validation behavior for empty projects was aligned across all supported configurations (#243, #244); now, such projects must either contain API dump files or be explicitly excluded using ignoredProjects.
  • Fixed issue with removed native targets not triggering ABI validation failure (#234, #236)
  • Improved KlibSignatureVersion.toString format (#219, #220)
  • Made apiValidation.klib extension Groovy-friendly (#214, #215)
  • Few other minor improvements and bug fixes (#221, #229, #238)

Thanks to everyone who tried KLib validation support. Special thanks to @JakeWharton, @illarionov, @aSemy, @sandwwraith for your feedback and suggestions!

0.15.0-Beta.2

04 Apr 08:37
Compare
Choose a tag to compare

This release fixes some issues found in 0.15.0-Beta.1 that were blocking KLib validation use.

What changed:

  • Fixed merged dumps parsing to correctly work with projects having no declarations shared among all supported targets (#201)
  • Fixed KLib ABI dumping and validation for targets that do not produce any artifacts (#199)
  • Improved KLib ABI dumping and validation for projects with generated sources (#206)

Thanks to all early adopters, especially to @JakeWharton, @rickclephas, and @lukellmann for provided feedback

0.15.0-Beta.1

20 Mar 11:46
Compare
Choose a tag to compare

This release add Kotlin libraries (KLib) dumping and validation support.
See project's README for details on how to enable it for your project.

What changed:

  • Experimental KLib ABI dumping and validation support (#183)
  • List<ClassBinarySignature>.dump now sorts declarations the same way the Gradle task does (#188)

Thanks to @benedekh and @adam-enko for contributions and feedback!

0.14.0

29 Jan 15:50
15fe830
Compare
Choose a tag to compare

The release contains changes potentially affecting dump's content (#144, #162, #161, #175).

What changed:

  • $EntriesMappings classes backing Kotlin's 1.9 Enum.entries are now filtered out (#144)
  • Companion class' annotation are now propagated to the corresponding Companion field (#162)
  • Interface's class-level annotations are now propagated to the corresponding DefaultImpls class (#161)
  • An option to setup a custom dump output directory (other that the default api/) is added (#170)
  • Packages annotated in Java package-info classes could be now filtered from the dump by adding these annotations to nonPublicMarkers (#175)
  • Fixed ignoredClasses behavior to avoid exclusion of classes whose name is a prefix of some ignoredClasses values (#136)
  • Gradle is updated to 8.5, build scripts and configs are refactored (#134, #167), strict API mode is enabled (#168)
  • ASM is updated to 8.6 to support classifies targeting Java versions (#173)
  • Tests were cleaned up to avoid hardcoded dump root paths (#154)
  • Badges in the README file were updated (#159)

Thanks to @qwwdfsad, @bryanlogan, @aSemy, @xtrm-en and @Goooler for contributions!

0.13.2

03 Jun 19:22
Compare
Choose a tag to compare
  • kotlinx-metadata is updated to 0.6.2 with the support of LV 2.0

0.13.1

18 Apr 10:33
Compare
Choose a tag to compare
  • Added support for explicit public API markers (#116)

0.13.0

16 Feb 13:18
Compare
Choose a tag to compare
  • Kotlin is updated to 1.8.10
  • kotlinx-metadata is updated to 0.6.0