Release 1.2.0 - #48
Merged
Merged
Conversation
Everything in Tier 6 except the published benchmark numbers, which is why the tier's milestone stays open and M30 keeps its board item. The release note leads with the upgrade cost rather than burying it. apiCheck reads this as additive, but a class that implemented QdrantClient or QdrantTransport against 1.1.0 breaks, and the fields added to CollectionInfo, ScrollRequest and Record change their generated copy. Source still compiles; STABILITY.md says in as many words that a 1.x upgrade is a recompile. Two things the reconciliation turned up. The ktlint 12 to 14 bump merged with an empty Unreleased section although it changed .editorconfig and rewrote two files, and the detekt threshold moved with M28; both are recorded under Internal now. The README status blockquote used a colon where the standard uses an em dash, and the Roadmap had grown a fourth label by keeping the 1.1.0 paragraph alongside the new one. Versions are the changelog's to own, so the roadmap keeps one Shipped paragraph and links there.
The Benchmarks workflow ran against Qdrant v1.18.2 and produced roughly eighteen thousand samples per benchmark, which is enough to quote: search p50 1.97 ms and p99 5.40 ms, upsert p50 3.37 ms and p99 9.81 ms. They are published with the conditions that make them a floor rather than a capacity figure. Client and server share a host, so there is no network in the number. A thousand points barely exercises HNSW. Nothing measures concurrency, which is exactly where gRPC wins and where the official client is the better tool. The run's AverageTime rows are left out because with five iterations their error bars are wider than their scores, and a number whose error exceeds it is not a measurement. M30 is complete with this, so 1.2.0 carries the whole of Tier 6.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Cuts
1.2.0with the whole of Tier 6: the work that merged in #47, plus the measured benchmark numbersthat were the last thing M30 was missing.
Upgrading from
1.1.0is a recompile, not a jar swap.apiCheckreads the release as additive,but new members on
QdrantClientandQdrantTransportbreak a class that implemented them against1.1.0, and the fields added toCollectionInfo,ScrollRequestandRecordchange their generatedcopy. Source stays compatible.STABILITY.mdnow states this as what a1.xupgrade guarantees,which is the reading this version number depends on.
The benchmark numbers
The
Benchmarksworkflow ran againstqdrant/qdrant:v1.18.2(run 30616391635) and produced
~18 000 samples per benchmark:
searchp50 1.97 ms / p99 5.40 ms,upsertp50 3.37 ms / p99 9.81 ms.They are published with the conditions that make them a floor rather than a capacity figure: client and
server share a host so there is no network in the number, 1 000 points barely exercises HNSW, and
nothing here measures concurrency, which is where gRPC wins. The run's
AverageTimerows are left outbecause their error bars are wider than their scores.
What moved
1.1.0→1.2.0,CHANGELOG.md[Unreleased]→[1.2.0] - 2026-07-31with fresh comparelinks, README status blockquote and install coordinate.
git log v1.1.0..HEADfound two changes that had merged with an empty[Unreleased]: the ktlint12.1.2→14.2.0bump, which changed.editorconfigand rewrote twofiles, and the detekt
LongParameterListthreshold that moved with M28. Both are recorded underInternal.library-template/STANDARD.md, both flagged byaudit-library.sh: thestatus blockquote used
Status:where the standard usesStatus —, and the Roadmap section hadgrown a fourth label by keeping the
1.1.0paragraph next to the new one. The standard allows three(
Shipped (X.Y.Z),Next,Later), and versions are the changelog's fact to own, so the roadmapnow carries one
Shippedparagraph and links to the changelog for the history. The audit reportsAt standard.
After the merge
The tag is mine to create once this lands:
git tag -a v1.2.0 -m "Tier 6 — Adoption gaps". The releaseworkflow then publishes to Maven Central and GitHub Packages, now with a SLSA provenance attestation
over the assembled jars. The
Tier 6 · Adoption gapsmilestone can close with it.Closes #22.