Releases: exoego/uika
Releases · exoego/uika
Release list
v0.11.0
What's Changed
🚀 New features
- Configure the Mill plugin once on a UikaModule object in build.mill by @exoego in #412
- Set Clojure tool options once in the alias's :exec-args by @exoego in #408
- Configure the Gradle plugin once in a uika {} block, with -P properties overriding it by @exoego in #410
- Bazel users declare uika once with a single uika macro by @exoego in #409
- perf: Write classpath dumps about twice as fast with a fifth of the allocation by @exoego in #422
- perf: Cut pass-1 CPU by stopping class-header inflate near the header end by @exoego in #423
- perf: Lower peak RSS by reading jar entries in 256 KiB spans by @exoego in #424
- perf: Convert JFR class-load recordings about 20% faster with 29% less allocation by @exoego in #421
- perf: Make multi-module upgrade-check scan each shared jar once, not once per module by @exoego in #426
🐛 Bug fixes
- Maven: check a JDK move for modules that declare no release by @exoego in #414
- sbt dumps record the compiling JDK's release for modules that declare none by @exoego in #415
- Mill dumps record the JDK a module compiles on when it declares no release by @exoego in #413
- Check a JDK upgrade to 25 on JDKs that ship no jmods by @exoego in #406
- Exit 2 when the CLI crashes instead of reporting violations by @exoego in #403
- Skip a JFR recording given as a text class-load log by @exoego in #402
- Fail the check when a class directory cannot be read by @exoego in #401
- Exit 2 with a one-line error on Bazel usage mistakes by @exoego in #405
- Record rules_jvm_external artifacts in the Bazel baseline dump by @exoego in #404
- Stop the first check after a plugin upgrade from running a JDK pair nobody moved to by @exoego in #416
📖 Documentation
- Trim rationale and history from the tool and evidence pages by @exoego in #399
- Keep Bazel rule internals out of the Bazel page by @exoego in #398
- Keep maintainer rationale out of the shared build-tool and CLI pages by @exoego in #397
- State the Java 17, sbt 1.9 and Mill 1.1.8 floors the integrations need by @exoego in #384
- Correct the option table and the list of options only some tools have by @exoego in #383
- Tell sbt users to fork tests at ThisBuild scope for JFR collection by @exoego in #394
- Correct the Leiningen page on which CLI version wins by @exoego in #389
- Say that Bazel's exclude_files takes workspace paths, not labels by @exoego in #392
- Tell Clojure CLI users that dump-classpath builds nothing by @exoego in #391
- Show report examples the binary actually prints by @exoego in #396
- Correct four cli.md claims the binary contradicts by @exoego in #395
- Recommend AOT-compiling Clojure namespaces so uika sees them by @exoego in #400
- Say that a POM-configured surefire argLine ignores -DargLine by @exoego in #393
- Say -Duika.jdkRelease belongs on both Maven goals by @exoego in #388
- Stop the sbt, Mill and Leiningen PR gates from checking the base branch's classes by @exoego in #381
- Tell Gradle users the root project needs repositories by @exoego in #386
- Explain why Mill task bodies never show up in coverage by @exoego in #418
- Agent notes say an undeclared module records the JDK that compiles it by @exoego in #417
- Record the 2026-09-27 inflate and span round in the performance skill by @exoego in #425
📦 Dependency updates
- Update codecov/codecov-action action to v7.1.1 by @renovate[bot] in #379
- Update github/codeql-action action to v4.38.1 by @renovate[bot] in #380
🛠 Other changes
- Keep one agent notes file per directory by dropping the CLAUDE.md symlinks by @exoego in #420
- Load each build tool's agent notes only when working in that tool by @exoego in #419
Full Changelog: v0.10.0...v0.11.0
v0.10.0
What's Changed
🚀 New features
- Bound the inflate reservation by what the compressed bytes can hold by @exoego in #283
- Read a loose class file until the channel reports its end by @exoego in #282
- Fork directory lanes on demand instead of spinning by @exoego in #284
- Dump project dependencies as directories so the dump zips no jar by @exoego in #288
- Name the JSON path in classpath dump errors by @exoego in #324
- Report three upgrade breaks the bridge-method guard used to hide by @exoego in #320
- Check classes whose names hold an unpaired surrogate instead of dropping them by @exoego in #319
- Judge class access like the JVM, which ignores protected and private on a class by @exoego in #316
- Stop warning that an exclude rule matched nothing when it suppressed a JDK-move break by @exoego in #315
- Stop --draft-exclude-file from overwriting files it did not write, and drop Rust notation from errors by @exoego in #317
- Report a subclass that overrides a method its library newly made final by override by @exoego in #326
- Name the jar that cannot be read, and drop internal terms from jar warnings by @exoego in #331
- Share package prefixes between interned names by @exoego in #335
- Parse central directories straight into pooled columns by @exoego in #336
- Fill Huffman decode tables by doubling by @exoego in #333
- Identify scan targets by file key instead of real path by @exoego in #337
- Read jar spans of 1 MiB by @exoego in #338
- Keep later CRCs of a name in arena lists by @exoego in #339
- Grow class buffers to the request above 256 KiB by @exoego in #342
- Scan paths through a sliding window instead of chunk rounds by @exoego in #340
- Memoize supertype walks in the check tail by @exoego in #341
- Record the reference-bearing pool entries while walking the pool by @exoego in #343
- Look symbols up without the shard lock by @exoego in #334
- Keep the reason in service-provider read warnings by @exoego in #347
- Skip a corrupt entry in a fallback-read jar instead of failing the check by @exoego in #357
🐛 Bug fixes
- Point exclude file mistakes at the key path in TOML terms, not Rust types by @exoego in #325
- Reject a signed \u escape in dump JSON by @exoego in #349
📖 Documentation
📦 Dependency updates
- Lock file maintenance by @renovate[bot] in #235
- Update dependency org.apache.maven.plugins:maven-surefire-plugin to v3.6.0 by @renovate[bot] in #237
- Update taiki-e/install-action action to v2.87.3 by @renovate[bot] in #238
- Update taiki-e/install-action action to v2.87.4 by @renovate[bot] in #240
- Update dependency clojure to v1.12.6.1673 by @renovate[bot] in #241
- Update dependency rust to v1.98.1 by @renovate[bot] in #244
- Update dependency org.clojure/tools.deps to v0.31.1646 by @renovate[bot] in #243
- Update dependency org.clojure/clojure to v1.12.6 by @renovate[bot] in #242
- Update taiki-e/install-action action to v2.87.5 by @renovate[bot] in #245
- Update taiki-e/install-action action to v2.87.6 by @renovate[bot] in #246
- Update taiki-e/install-action action to v2.87.7 by @renovate[bot] in #247
- Update mavenPluginTools.version to v3.16.0 by @renovate[bot] in #248
- Update taiki-e/install-action action to v2.87.8 by @renovate[bot] in #250
- Update github-actions by @renovate[bot] in #256
- Update taiki-e/install-action action to v2.87.11 by @renovate[bot] in #259
- Update dependency org.codehaus.mojo:build-helper-maven-plugin to v3.6.2 by @renovate[bot] in #258
- Update taiki-e/install-action action to v2.87.12 by @renovate[bot] in #260
- Update dependency org.apache.maven.resolver:maven-resolver-api to v2.0.23 by @renovate[bot] in #261
- Update codecov/codecov-action action to v7.1.0 by @renovate[bot] in #277
🛠 Other changes
- Raise jvm-plugin-core test coverage by @exoego in #249
- Do not pass an empty failed JFR conversion to the CLI by @exoego in #251
- Fail the unchecked-truncation test instead of skipping it by @exoego in #252
- Tidy the JFR test helpers by @exoego in #253
- Test the dump's external coordinates and second classes dir by @exoego in #254
- Test classifier and coordinate-less notations in rehydration by @exoego in #255
- Reimplement the CLI in pure Java by @exoego in #262
- Report Java CLI coverage to Codecov by @exoego in #263
- Publish the Java CLI jar under the uika-cli coordinate by @exoego in #264
- Let UikaCli run the CLI jar by @exoego in #265
- Run the Java CLI from the Bazel rules by @exoego in #271
- Run the Java CLI from the Clojure tool and the Leiningen plugin by @exoego in #270
- Run the Java CLI from the sbt plugin by @exoego in #268
- Run the Java CLI from the Gradle plugin by @exoego in #266
- Run the Java CLI from the Mill plugin by @exoego in #269
- Run the Java CLI from the Maven plugin by @exoego in #267
- Clear the stub's records before each Maven IT run by @exoego in #273
- Match the Rust CLI's stderr on argument, dump and ct.sym errors by @exoego in #276
- Send a jar whose local header lies past the directory to the fallback by @exoego in #275
- Skip invokedynamic as a five-byte instruction in both scanners by @exoego in #274
- Bless the goldens and run the probe from the Java CLI by @exoego in #279
- Remove the native-binary helpers no integration uses any more by @exoego in #278
- Remove the Rust CLI by @exoego in #281
- Retire the Rust CLI: move the notes, then remove the crate by @exoego in #280
- Pin the tool pages to a shared shape and to every knob their tool accepts by @exoego in #286
- Test the command line end to end by @exoego in #285
- Re-measure every benchmark row with the shipped jar by @exoego in #289
- Test the JSON reader and writer by @exoego in #290
- Test the report wording and drop its dead branches by @exoego in #291
- Test the Modified UTF-8 decoder by @exoego in #292
- Test class-file parsing and reference extraction on malformed input by @exoego in #293
- Test intern hash collisions and drop the unused byteAt by @exoego in #294
- Read UIKA_THREADS through Env and test it by @exoego in #295
- Test class-load log edge cases and draft write failures by @exoego in #296
- Test the JDK API layer with stand-in homes, and drop impossible null checks by @exoego in #297
- Test the POM reader on malformed markup and drop two dead checks by @exoego in #298
- Test the remaining dump shape errors by @exoego in #299
- Test the argument parser, launcher and entry point edge cases by @exoego in #301
- Test exclude file read errors and unused rule echoes by @exoego in #300
- Test per-module run sharing, merging and JDK moves in upgrade-check by @exoego in #303
- Test check's scan targets, JDK layer and verdicts stream failures by @exoego in https://github.com/exoego/uika/pull/...
v0.9.0
What's Changed
🚀 New features
- feat: Stop claiming a dropped optional dependency was required by @exoego in #97
- Detect broken META-INF/services SPI providers by @exoego in #98
- fix: Correct SPI ServiceLoader semantics, vendor real break fixtures by @exoego in #102
- perf: Raise default pass-1 chunk size to 16x thread count by @exoego in #99
- Ingest runtime class-load logs as promote-only evidence by @exoego in #110
- Collect and consume runtime class-load logs in the build plugins by @exoego in #111
- Verify class-load evidence against a real JVM's log output by @exoego in #112
- Stop exclude drafts from waiving real breaks and cut evidence memory 20x by @exoego in #113
- Collect and read class-load evidence as JFR recordings by @exoego in #118
- Add a Mill build-tool plugin by @exoego in #123
- Add a Clojure CLI tool (clojure -Tuika) by @exoego in #124
- Add a Leiningen plugin (lein uika) by @exoego in #126
- Derive --jdk-release from what the modules compile for by @exoego in #130
- Expose --draft-exclude-file in both Clojure frontends by @exoego in #132
- Close three of the draft-exclude sharp edges by @exoego in #134
- Record the release the application runs on, per module by @exoego in #135
- Bazel and rules_jvm_external support by @exoego in #137
- Dump a whole Bazel workspace without listing its targets by @exoego in #141
- Fail on a manifest field carrying a delimiter by @exoego in #140
- Make a sweep dump name files that outlive the merge by @exoego in #143
- Publish the Clojure CLI tool to Maven Central and convert JFR in both Clojure frontends by @exoego in #146
- Read a Scala module's scalacOptions in the Mill release derivation by @exoego in #149
- Make jdk_release 0 actually switch the JDK API layer off in the Bazel check by @exoego in #148
- Read uikaFailOn, uikaExcludeFiles and uikaCliVersion at root-project scope by @exoego in #150
- Drop a blank :fail-on instead of handing clap an empty --fail-on by @exoego in #153
- Make a root-project-scoped uikaJfr reach every subproject's forked tests by @exoego in #151
- Report a malformed -PuikaJdkRelease with a uika-named error by @exoego in #158
- Use the unpublishable 0.0.0-dev placeholder in every JVM plugin build by @exoego in #157
- Keep unmanaged jars in the sbt dump by @exoego in #155
- Leave reactor-attributed artifacts out of the rehydration fetch by @exoego in #164
- Reject exclude_files entries the property ride cannot transport by @exoego in #167
- Define the sbt merge once in buildSettings by @exoego in #168
- Delete the temp file when extractBinary fails by @exoego in #166
- Consolidate the PR gate docs per tool and fail rehydration on unresolved artifacts by @exoego in #160
- Carry the comma rule into every hand-written JFR recipe and pin them to the composer by @exoego in #161
- Reject a non-numeric jdk_release in the Bazel macros by @exoego in #185
- Fail the Gradle dump on a configuration it cannot resolve by @exoego in #179
- Stop the sbt dump repeating a jar once per configuration by @exoego in #181
- Guard the Bazel check binary's arguments like its siblings by @exoego in #183
- Give Maven a command-line form for excludeFiles by @exoego in #187
- Treat a blank :cli-path or :cli-version as unset by @exoego in #188
- Let the four JVM plugins run a binary from UIKA_CLI_PATH by @exoego in #186
- Name the error each class-load break actually throws by @exoego in #209
- gradle: Let -PuikaExcludeFile name more than one file by @exoego in #223
- Check UIKA_CLI_PATH the same way in all seven integrations by @exoego in #220
- Unit-test the release derivation that is Maven's alone by @exoego in #226
- Give every tool the merged-classpath knob, and rename the CLI flag by @exoego in #227
- Pin the Clojure port of the CLI command line by @exoego in #221
- Stop dumping projects that compile nothing as modules by @exoego in #219
🐛 Bug fixes
- Revert the pass 1 owner-filter narrowing, and record why by @exoego in #136
- Parse the JDK 8 spelling of java.specification.version in the JVM probe by @exoego in #152
- Dump only the selected reactor projects under -pl by @exoego in #156
- Convert recordings handed to --classLoadLog, not only the --jfr value by @exoego in #154
- Read :javac-options in the lein release derivation by @exoego in #159
- Read UIKA_JFR back in the Mill check and guard the collection value shapes by @exoego in #163
- clojure: Reject a misspelled option in the Clojure tool too by @exoego in #222
📖 Documentation
- Give the PR gate table every tool the plugins cover by @exoego in #144
- Split the build-tool sections into per-tool pages under docs/ by @exoego in #145
- Document the uika.cli tag and the append semantics of the check flags by @exoego in #169
- Say that uika check is a CLI command, not a plugin task by @exoego in #194
- Point the Clojure usage hint at the documented invocation by @exoego in #190
- Document Mill's dump-side --jdkRelease by @exoego in #191
- Describe the Bazel check flags the rule actually has by @exoego in #184
- Split CLI usage into docs/cli.md by @exoego in #199
- Move runtime load evidence onto its own docs page by @exoego in #201
- Move the JDK upgrade section under what a check reports by @exoego in #202
- Fold the PR gate section into Usage by @exoego in #203
- Fold the JFR section into the violation tiers section by @exoego in #204
- cleanup doc by @exoego in #205
- Name the exception every detection throws in the README by @exoego in #206
- Fix README claims that contradict the report, and its reading order by @exoego in #208
- Move the JDK API layer out of How it works into docs/jdk.md by @exoego in #212
- Document the JFR evidence CI shape where it can be followed by @exoego in #216
- Correct the doc claims a run against the binary disproves by @exoego in #218
- Say the four things the pages were leaving to be rediscovered by @exoego in #229
📦 Dependency updates
- Update github/codeql-action action to v4.37.6 by @renovate[bot] in #95
- chore(deps): update jdx/mise-action action to v4.2.5 by @renovate[bot] in #104
- fix(deps): update junit-framework monorepo to v6.1.3 by @renovate[bot] in #100
- chore(deps): lock file maintenance by @renovate[bot] in #103
- chore(deps): update build toolchain (mise) by @renovate[bot] in #101
- chore(deps): update github/codeql-action action to v4.37.7 by @renovate[bot] in #105
- Lock file maintenance by @renovate[bot] in #119
- Update dependency org.clojure/clojure to v1.12.5 by @renovate[bot] in #125
- Update dependency gradle to v9.7.1 by @renovate[bot] in #142
- Update dependency org.apache.maven.resolver:maven-resolver-api to v2.0.22 by @renovate[bot] in #147
- Update dependency github:sbt/sbt to v1.13.0 by @renovate[bot] in #170
- Update dependency sbt/sbt to v1.13.0 by @renovate[bot] in https://github.co...
v0.8.0
What's Changed
🚀 New features
- Make the Gradle plugin configuration-cache compatible by @exoego in #79
- Order the upgrade check after dump and resolve in one invocation by @exoego in #80
- feat: Add a latent tier for uninvoked newly-abstract methods by @exoego in #82
- Say "throws" instead of "->" for the runtime error by @exoego in #83
- Fix unnatural English in the report output by @exoego in #84
- Use one kind vocabulary across diff, check and exclude by @exoego in #85
- Detect subclasses of a newly sealed type by @exoego in #89
- Detect a signature inherited as a default from two interfaces by @exoego in #90
- Check a JDK upgrade, from the CLI and the build-tool plugins by @exoego in #91
- Gate sealing on the old side and on unreadable attributes by @exoego in #92
📖 Documentation
- doc: cut redundancy from README and agent docs by @exoego in #93
- doc: move contributor docs out of README and cut duplication by @exoego in #94
📦 Dependency updates
- Update jdx/mise-action action to v4.2.4 by @renovate[bot] in #77
- Lock file maintenance by @renovate[bot] in #86
- Bump sbt to 1.12.15 by @exoego in #88
🛠 Other changes
- Skip build outputs in baseline dump examples by @exoego in #78
- Deny every clippy warning by @exoego in #87
Full Changelog: v0.7.0...v0.8.0
v0.7.0
What's Changed
🚀 New features
📦 Dependency updates
- Update dependency org.apache.maven.plugins:maven-jar-plugin to v3.5.1 by @renovate[bot] in #72
- Lock file maintenance by @renovate[bot] in #75
🛠 Other changes
- Cut Maven Central bundle from 114 to 76 files by @exoego in #69
- chore: fix jreleaser pgpg deprecation by @exoego in #68
- Split AGENTS.md into scoped files so less loads every session by @exoego in #70
- Halve the Maven Central deployment to 2.9 MB per release by @exoego in #71
- chore: keep the sbt plugin toolchain on sbt 1.x by @exoego in #74
Full Changelog: v0.6.0...v0.7.0
v0.6.0
What's Changed
🚀 New features
- feat: Per-module upgrade-check. judge each module against its own resolved classpath by @exoego in #62
📦 Dependency updates
🛠 Other changes
- chore(deps): require a 7-day minimum release age in Renovate by @exoego in #63
- Add CodeQL workflow for code analysis by @exoego in #66
- Fix CodeQL workflow settings and lint Scala with scalac by @exoego in #67
Full Changelog: v0.5.0...v0.6.0
v0.5.0
What's Changed
🚀 New features
- feat: add --exclude-file to suppress known false positives by @exoego in #19
- feat: Drop references from shadowed duplicate class definitions by @exoego in #21
- feat: Detect version-lag subclassing of a final class in a lagging sibling by @exoego in #22
- feat: Enable the JDK API layer by default in the build plugins by @exoego in #24
- feat: Add an opt-in JDK API layer from ct.sym (--jdk-release) by @exoego in #23
- feat: Detect InstantiationError and class/interface flips by @exoego in #25
- feat: Three-valued is_subclass and owner-only constructor resolution by @exoego in #26
- feat: Resolve members in JVMS 5.4.3.2/3.3 order by @exoego in #27
- feat: Pin one overload in exclude rules with a descriptor by @exoego in #28
- feat: detect AbstractMethodError (both shapes) and guard synthetic/bridge methods by @exoego in #31
⚡ Performance
- perf(cli): speed up the pass 1 scan by about 1.8x by @exoego in #43
- perf(cli): eliminate redundant work on duplicate classes by @exoego in #46
📖 Documentation
📦 Dependency updates
- chore(deps): update dependency sbt/sbt to v1.12.14 by @renovate[bot] in #35
- chore(deps): update github-actions by @renovate[bot] in #38
- fix(deps): update dependency org.apache.maven:maven-plugin-api to v3.9.16 by @renovate[bot] in #40
- fix(deps): update dependency org.apache.maven:maven-core to v3.9.16 by @renovate[bot] in #39
- chore(deps): update dependency scala to v2.12.21 by @renovate[bot] in #37
- chore(deps): update dependency org.apache.maven.plugins:maven-invoker-plugin to v3.10.1 by @renovate[bot] in #44
- chore(deps): update dependency org.apache.maven.plugins:maven-source-plugin to v3.4.0 by @renovate[bot] in #45
- fix(deps): update dependency org.apache.maven.resolver:maven-resolver-api to v1.9.27 by @renovate[bot] in #41
- fix(deps): update rust crates (non-major) by @renovate[bot] in #42
- chore(deps): update dependency org.codehaus.mojo:flatten-maven-plugin to v1.8.0 by @renovate[bot] in #47
- fix(deps): update junit-framework monorepo by @renovate[bot] in #49
- chore(deps): update rust crate toml to v1 with minimal features by @exoego in #54
- chore(deps): update rust crate zip to v8 with minimal features by @exoego in #55
- fix(deps): update dependency org.apache.maven.resolver:maven-resolver-api to v2 by @renovate[bot] in #57
- chore(deps): update junit to v6 by @exoego in #58
🛠 Other changes
- ci: add golden regression tests and a real-JVM probe harness by @exoego in #20
- test: cover the unused descriptor-pinned exclude rule message by @exoego in #30
- chore: add Renovate config (renovate.json5) by @exoego in #32
- chore: categorize auto-generated release notes by PR label by @exoego in #59
New Contributors
Full Changelog: v0.4.0...v0.5.0