Repository navigation
typetools/checker-framework 3.50.0 release - #2188
Conversation
Co-authored-by: Claude Sonnet 5.5 <[email protected]> Co-authored-by: Michael Ernst <[email protected]> Co-authored-by: Suzanne Millstein <[email protected]> Co-authored-by: Damika-Anupama <[email protected]> Co-authored-by: Vlastimil <[email protected]> Co-authored-by: Abhijit Kulkarni <[email protected]> Co-authored-by: Michael Ernst <[email protected]> Co-authored-by: Suzanne Millstein <[email protected]> Co-authored-by: Damika-Anupama <[email protected]> Co-authored-by: Damika-Anupama <[email protected]> Co-authored-by: Abhijit Kulkarni <[email protected]> Co-authored-by: Vlastimil <[email protected]> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Adapt the release Gradle tasks of the typetools 3.50.0 release, which replace the Ant targets in docs/developer/release/release.xml, to EISOP. release.gradle holds releaseVersion, the single source of truth for the version. The build's version is releaseVersion with -Prelease=true and releaseVersion-SNAPSHOT otherwise, so nightly snapshots keep working and a release no longer edits the version to drop -SNAPSHOT. updateVersionNumbers replaces update-checker-framework-versions. It keeps EISOP's behavior: the version regexp accepts the -eisopN suffix, it also rewrites eisopVersion and \ReleaseInfo, it uses the "d MMM yyyy" date format, it does not touch docs/examples (Renovate does), and it fails if a file it rewrites or a marker it keys off is missing. The zip, copyToWebsite, zipMavenExamples, and updateCopyMavenExample tasks replace the other Ant targets, with EISOP's file lists (README.md, front page, quick-start page, favicon, dataflow manual, executable checker/bin/javac) and EISOP's Maven-example version rewrite. buildAll now also builds the manuals; releaseBuild and releaseAndTest are gone. The Annotation File Utilities are not a subproject yet, so the AFU parts of these tasks are kept as NO-AFU comments. Co-Authored-By: Claude Opus 5.5 <[email protected]> Co-authored-by: Suzanne Millstein <[email protected]>
…t files Port the release scripts of the typetools 3.50.0 release to EISOP: release_build.py and sanity_checks.py call the Gradle tasks of release.gradle instead of the Ant targets, passing -Prelease=true to every Gradle command that builds release artifacts, and the scripts use pathlib and pass the repository's ruff configuration. Keep EISOP's adaptations: eisop repositories, URLs, and directories; ReleaseError; no Maven Central staging in release_push.py (publishing stays a manual step); EISOP's message keys in the sanity checks; the link-checker exit-status check; and the Annotation File Utilities release from eisop/annotation-tools, marked NO-AFU. Comparing release versions now understands the -eisopN suffix. Remove release.xml, release.properties, and the include/exclude lists, which release.gradle and build.gradle replace, and update the documentation that referred to them. Co-Authored-By: Claude Opus 5.5 <[email protected]> Co-authored-by: Suzanne Millstein <[email protected]> Co-authored-by: Michael Ernst <[email protected]>
…ts to it The release scripts already conform. gen-shapes.py and gen-sized-program.py produce byte-identical output for all shapes (checked for 67 argument combinations); only their structure and documentation changed. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Co-authored-by: Michael Ernst <[email protected]>
Fix descriptions that said the opposite of what the code does (the mustBeExact parameter of MethodValAnnotatedTypeFactory, the return value of InvocationTypeInference.notPertinentToApplicability), documented an enum as a boolean (WholeProgramInference.updateContracts), and read ungrammatically. Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
The release page misstates AFU packaging, the Maven example archive layout regresses, and a new documented command is invalid.
Review effort: Balanced
Findings: 1
Open (2)
What changed in this PR
Imports Checker Framework 3.50.0 into EISOP and adapts the release process while retaining EISOP publishing and separate AFU releases.
Changes:
- Imports upstream framework, checker, parser, and test changes.
- Replaces Ant release targets with Gradle tasks.
- Adopts Ruff and corrects imported Javadocs.
| File | Description |
|---|---|
checker/**, framework/**, dataflow/**, javacutil/** |
Imports upstream implementation and tests. |
annotation-file-utilities/** |
Adds upstream AFU sources without build integration. |
release.gradle, build.gradle |
Defines release versions, archives, and website tasks. |
docs/developer/release/** |
Migrates release scripts and documentation to Gradle. |
.ruff.toml, .claude/skills/cf-performance/** |
Adds Ruff configuration and conforms scripts. |
docs/** |
Updates manuals, release pages, examples, and changelog. |
| Remaining build and test files | Integrates upstream 3.50.0 across repository modules. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| description = 'Creates a zip archive for the Maven examples.' | ||
| archiveFileName = 'mvn-examples.zip' | ||
| destinationDirectory = layout.projectDirectory.dir(providers.gradleProperty('cfWebsite')) | ||
| from('docs/examples/MavenExample') |
There was a problem hiding this comment.
Valid. Upstream's release.gradle writes the example files at the archive root, and we took that over unchanged in the import. Our previous mvn-examples.zip had a top-level maven-examples-<version>/ directory, so we will restore it in the follow-up pull request for the next typetools release (an EISOP adaptation of one line in zipMavenExamples).
23702fe to
619af19
Compare


Merges the typetools Checker Framework 3.50.0 release into EISOP, the second step of the "Updating from a different fork" process in
docs/developer/README-eisop.md. The first step, #2186, imported the release intotypetools-3.50.0-fixesas one commit that keeps all upstream authors (the companion changes ineisop/jdk#153 andeisop/guava#17 are already merged). This pull request adds our own follow-up commits.Please merge this pull request with a merge commit, not a squash, so that the import commit with its co-authors stays separate from the follow-ups below.
Commits on top of the import
release.gradle. Adopts typetools' new release structure:release.gradleholdsreleaseVersion, which is the only place the version is set, andbuild.gradlederives the build version from it. Nightly-SNAPSHOTpublishing and-Prelease=truekeep working. The Gradle tasksupdateVersionNumbers,zip,zipMavenExamples,copyToWebsiteandupdateCopyMavenExamplereplace the Ant targets. The version pattern accepts our-eisopNsuffix.README-release-process.htmlfollow the new structure, keeping our setup (Central Portal publishing with./gradlew publish -Prelease=true --no-parallel,io.github.eisopcoordinates, eisop repositories and URLs). Also fixes a crash ofversion_number_to_arrayon-eisopNversions, which would have failed Step 1 ofrelease_push.py..ruff.toml) and conform the performance scripts to it.gen-shapes.pyandgen-sized-program.pyproduce byte-identical output for all shapes (checked for 67 argument combinations).mustBeExactwas documented backwards).Things to check or decide
eisop/annotation-toolsis kept in the release scripts, markedNO-AFU. Upstream dropped the separate release.release.gradlekeepsreleaseVersion = '3.49.5-eisop2', matching the top changelog entry. If the next release should be named after the typetools version it is based on (3.50.0-eisop1), changereleaseVersionand the changelog title together.zip,buildAllandcopyToWebsitetasks only with dry runs and without the manuals. The Python scripts only passedruffandpy_compile.checkCompilerMessages.🤖 Generated with Claude Code