Conversation
Every job in this repository so far runs against a checkout with the engine built beside it and an environment variable pointing at the library. That is right for a test suite and it is no answer at all to the question a new reader asks, which is whether a pom and a JDK are enough. This adds the job that answers it somewhere else. A container with a JDK and Maven in it and nothing else. The script asserts what is not there before it starts: no rustc, no cargo, no compiler, no libzu anywhere on the filesystem, no header, no pkg-config file, no ZU_LIBRARY. Then it lifts the quickstart off the README character for character, lifts the dependency elements off the same page, writes a pom nobody here has touched, and builds against the artifacts this commit would publish, staged into a repository standing in for Central. It runs the program in an empty directory somewhere else and compares what it printed against the block the page says it prints. Two rows, because the claim this client makes that no other client of this engine makes is that it installs on 17 and on 25, over two different bindings, from the same dependency. zudb-ffm on JDK 25 and zudb-jni on JDK 17, and the page has to print a dependency element for both, so it now prints one for the JNI pair as well. The last step is the one that matters most. It takes the library artifact off the classpath and asserts the run fails naming the line to add, because a job that has only ever passed is a job nobody has watched fail. Running it turned up something the page was wrong about. From JDK 24 native access is granted by whoever starts the JVM, and the manifest attribute these jars carry only speaks for the jar that java -jar names. A -cp run needs the flag on the command line, whatever any dependency's manifest says. The README claimed the attribute covered the class path case and it does not, so the paragraph now says who grants it and where. The error the provider raises was already right about this, which is how the script found out.
tamnd
added a commit
to tamnd/zu
that referenced
this pull request
Aug 22, 2026
tamnd/zu-java#15 added the clean-machine install job: a container with a JDK and Maven in it and nothing else, the quickstart lifted off the README, the dependency elements lifted off the same page, and a build against the artifacts that commit would publish. Two rows, the Panama provider on JDK 25 and the JNI provider on JDK 17, because installing on both is the claim this client makes that the others do not. It asserts no compiler, no libzu, no header and no ZU_LIBRARY before it starts, and it ends by taking the library artifact away and checking the failure names the line to add. That is 70 to 80 on practice. leaks, api-map and perf are what is left.
22 tasks
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.
The clean-machine install item of the client scorecard, which the table words as a nightly install test in a container holding the language runtime and nothing else.
Every job here so far runs against a checkout: the engine is built beside it,
ZU_LIBRARYpoints at the library, and the suite is told where everything is so that it tests the binding rather than the search. That is the right shape for a test suite and it is not an answer to the question a new reader asks, which is whether three lines in a pom and a JDK are the whole of it.So this answers it somewhere else.
scripts/install.shruns inside a container that holds a JDK and Maven and nothing else. It asserts what is absent before it does anything: no rustc, no cargo, no compiler of any kind, no libzu anywhere on the filesystem, no header, no pkg-config file, noZU_LIBRARY. Then it lifts the quickstart offREADME.mdcharacter for character, lifts the dependency elements off the same page, writes a pom with nothing of ours in it, and builds against the artifacts this commit would publish, staged into a file repository standing in for Central. It runs the program in an empty directory somewhere else on the machine and compares what came out against the block the page says it prints.Two rows. The claim this client makes that no other client of this engine makes is that it installs on a JDK from 17 and on a JDK from 25, over two different bindings, out of the same dependency.
zudb-ffmon JDK 25 andzudb-jnion JDK 17 is what keeps that from being a paragraph. Both need a dependency element on the page to lift, so the page now prints one for the JNI pair as well, which a reader on 17 previously had to write from prose.The last step is the one that matters most. It takes the library artifact off the classpath and asserts the run fails saying which artifact is missing, because a job that has only ever passed is a job nobody has watched fail. Both rows print this on the way out:
Running it turned up something the page had wrong. From JDK 24 native access is granted by whoever starts the JVM, and the
Enable-Native-Accessattribute these jars carry speaks only for the jar thatjava -jarnames. A-cprun needs the flag on the command line whatever a dependency's manifest says. The README claimed the attribute covered the class path case, so that paragraph now says who grants it and where, and the comment inReadmeTestthat gave the wrong reason for passing the flag says the right one. The exception the provider raises was already correct about all of this, which is how the script found out.Verified on a machine with docker, both rows, against a libzu built from the engine at HEAD:
The full reactor is green beside it, 199 tests on the Panama provider, 197 on JNI, 12 on Arrow.
That is 70 to 80 on practice for this client. What is left is
leaks, which is apparatus, andapi-mapandperf, which are reports the release collects.