Skip to content

Sync the MiMa binary-compatibility check - #11

Merged
halotukozak merged 1 commit into
mainfrom
sync-mima-binary-check
Aug 28, 2026
Merged

Sync the MiMa binary-compatibility check#11
halotukozak merged 1 commit into
mainfrom
sync-mima-binary-check

Conversation

@halotukozak

Copy link
Copy Markdown
Contributor

Moves the prototype validated on halotukozak-com/commons#38 into the shared config.

Recap of the prototype

  • .mima/bin-compat-check.scala — no MiMa plugin exists for scala-cli, so this calls `com.typesafe::mima-core`'s API directly (Scala 2.13 script, same pattern as `.scoverage/report.sc`). Compares the last released JAR against a freshly built `--library` JAR.
  • `shared/mima.yml` — resolves the baseline from the latest `v*` tag (via `publish.organization`/`publish.name` in `project.scala`, so it's fully generic), report-only: manages a `needs-major` label on a PR when there's a real backward incompatibility, never fails the build. Removes the label again once a later push is compatible.
  • Only backward compatibility gates the label — forward is printed for context but always shows "problems" whenever you add API (expected for any minor bump), so it can't be a failure signal.

Verified end-to-end on commons#38: label appears on a real backward break, disappears once reverted.

Sync targets

commons/made/mcodec/mrpc — same exclusions as `ci.yml`/`docs.yaml`:

  • regex — would need its own `--exclude "bench/**"` wired into the `scala-cli --power package`/`compile` calls first (same JMH-benchmark issue as before).
  • alpaca — Mill, entirely different build/publish/classpath story. Being done separately, not through this sync.

🤖 Generated with Claude Code

Validated on halotukozak-com/commons#38: report-only, manages a
needs-major PR label without failing the build. Confirmed both directions
— a real backward break gets labeled, fixing it removes the label again.

Synced to commons/made/mcodec/mrpc, same exclusions as ci.yml/docs.yaml:
regex needs its own --exclude "bench/**" wired in first, alpaca (Mill) is
being done separately since its build/publish/classpath story is entirely
different.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019awuXm5QZgXajLw3PvGo1s
@halotukozak
halotukozak merged commit afd1e3b into main Aug 28, 2026
@halotukozak
halotukozak deleted the sync-mima-binary-check branch August 28, 2026 18:41
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

Successfully merging this pull request may close these issues.

1 participant