Skip to content

Say which two things 2.0.0 breaks - #68

Merged
tonytonycoder11 merged 1 commit into
mainfrom
fix/api-compat-claim-in-2-0
Jul 31, 2026
Merged

Say which two things 2.0.0 breaks#68
tonytonycoder11 merged 1 commit into
mainfrom
fix/api-compat-claim-in-2-0

Conversation

@tonytonycoder11

Copy link
Copy Markdown
Contributor

The 2.0.0 release notes claim the JVM public API is unchanged from 1.2.0, byte for byte. That is
wrong
, and it is published: the GitHub Release body is generated from CHANGELOG.md, so it carries
the claim too.

The mistake was mine and it is a specific one. I measured that the multiplatform migration changed no
API, which is true, and then wrote it up as if it were true of the whole release.

What the dump actually says

git diff v1.2.0 v2.0.0 -- kdrant-core/api/kdrant-core.api
  666 insertions, 8 deletions

The additions are cluster and sharding, formula and MMR reranking, shard-scope snapshots and the Koog
module, all merged after the 1.2.0 tag. The eight removals are the old constructor and copy
signatures of ScrollRequest and SearchRequest, which gained a shardKey parameter:

- copy (Filter;IPointId;WithPayload;Boolean;OrderBy;)ScrollRequest;
+ copy (Filter;IPointId;WithPayload;Boolean;OrderBy;ShardKey;)ScrollRequest;

Source still compiles, because the parameter is defaulted. copy() called against a 1.x jar does
not. That is precisely the case STABILITY.md already described under "what may still change in a
minor", arriving for real.

What changes here

CHANGELOG.md, STABILITY.md and the README now say the major is justified twice: the artifact
coordinate moving to kdrant-core-jvm, and those two copy signatures. The narrow claim survives
where it belongs, because it is the part that sounds like it should have broken something and did not:

git diff d4f8c26 v2.0.0 -- kdrant-core/api/kdrant-core.api   # empty

The corrected version is more useful than the one it replaces. A reader who calls copy() on either
type now learns they have to recompile, where before they were told nothing had changed.

After merge the v2.0.0 Release body needs regenerating from the corrected changelog, since it was
created from the old text.

The release notes claimed the JVM public API was unchanged from 1.2.0,
byte for byte. It is not, and the mistake is a specific one worth naming:
the multiplatform migration changed no API, I measured that, and then I
wrote it up as if it were true of the whole release.

Between v1.2.0 and v2.0.0 the dump gains 666 lines and loses 8. The
additions are cluster support, formula and MMR reranking, shard-scope
snapshots and the Koog module, all merged after the 1.2.0 tag. The eight
removals are the old constructor and copy signatures of ScrollRequest and
SearchRequest, which gained a shardKey parameter. Source still compiles,
because the parameter is defaulted, but copy() called against a 1.x jar
does not — which is exactly the case STABILITY.md already described in the
abstract, arriving for real.

So the major is justified twice over rather than once, and the honest
version is more useful than the one it replaces: a reader who calls copy()
on either type now learns they have to recompile, where before they were
told nothing had changed.

The narrow claim survives and is worth keeping, because it is the part
that sounds like it should have broken something: the multiplatform
migration's own diff on the api dump is empty.
@tonytonycoder11
tonytonycoder11 requested a review from a team as a code owner July 31, 2026 15:16
@tonytonycoder11
tonytonycoder11 merged commit 277aa5a into main Jul 31, 2026
7 checks passed
@tonytonycoder11
tonytonycoder11 deleted the fix/api-compat-claim-in-2-0 branch July 31, 2026 15:24
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