Skip to content

Remove the Kotlin/JVM implementation; the Rust CLI is now the only ba… - #484

Open
tinder-maxwellelliott wants to merge 1 commit into
Tinder:masterfrom
maxwellE:claude/remove-java-kotlin-rust-only-e90ypw
Open

Remove the Kotlin/JVM implementation; the Rust CLI is now the only ba…#484
tinder-maxwellelliott wants to merge 1 commit into
Tinder:masterfrom
maxwellE:claude/remove-java-kotlin-rust-only-e90ypw

Conversation

@tinder-maxwellelliott

Copy link
Copy Markdown
Collaborator

…zel-diff

The Rust implementation under src/ has shipped alongside the original Kotlin CLI as //:bazel-diff-rust and passes the same behavioral suite. This makes it the only implementation: //:bazel-diff now resolves to //src:bazel-diff, and everything that existed only to build, test, compare or publish the JVM CLI is gone.

Removed

  • cli/ (Kotlin sources, JUnit tests, ktfmt/format targets) and proto/ (the java_proto_library wrappers; the Rust build generates its bindings from rust/proto/*.proto via the cargo build script).
  • rules_java, rules_kotlin, rules_jvm_external, the maven extension, stardoc, rules_proto, grpc and the ktfmt repo from MODULE.bazel, plus the rules_kotlin LCOV-merger patch. MODULE.bazel.lock regenerated.
  • WORKSPACE support (WORKSPACE, WORKSPACE.bzlmod, repositories.bzl, constants.bzl, artifacts.bzl, extensions.bzl, maven_install.json): the Rust build is crate_universe/bzlmod-only, so nothing could be built through it.
  • The Kotlin-vs-Rust comparison tooling (tools/benchmark.py, tools/perf_gate.py, tools/perf_workload.py and their tests, the perf-gate workflow) and docs/kotlin-*.md, which have no second implementation to compare against.
  • The Kotlin half of the e2e splitter (tools/e2e), the ktfmt format cron and the JVM CI jobs (test-jre21, test-jre11-run-example's JDK setup, release.yaml's java-tests, the deploy JAR build and release asset).

Moved / repointed

  • E2E fixtures: cli/src/test/resources/{fixture,workspaces} ->
    tests/resources/, with .bazelignore, .gitattributes, tests/BUILD and tests/e2e/support/mod.rs following.
  • Formatter targets: cli/format -> tools/format (buildifier, rustfmt); //:format is now the rustfmt fixer.
  • //release:bazel-diff-rust -> //release:bazel-diff (asset file names keep the bazel-diff-rust-- prefix so existing download URLs still resolve). //:bazel-diff-rust stays as an alias for BCR verify_targets and existing consumers.
  • The serve harnesses, the Alpine stress container and the Firecracker bench/guest-image scripts run the static musl binary instead of the deploy JAR; the corresponding workflows build //release:bazel-diff --config=release-musl.
  • tools/coverage_check.py defaults to src/; CI's coverage matrix is now the coverage job and gates Rust and Go independently.
  • README regenerated from the template with the Rust CLI's help text; installation now covers prebuilt binaries and bzlmod only.

Verified: bazel build //:bazel-diff (Bazel 8.7.0) with the trimmed module graph, cargo test --lib --bin, and the Python tooling tests.

…zel-diff

The Rust implementation under src/ has shipped alongside the original
Kotlin CLI as `//:bazel-diff-rust` and passes the same behavioral suite.
This makes it the only implementation: `//:bazel-diff` now resolves to
`//src:bazel-diff`, and everything that existed only to build, test,
compare or publish the JVM CLI is gone.

Removed
- cli/ (Kotlin sources, JUnit tests, ktfmt/format targets) and proto/
  (the java_proto_library wrappers; the Rust build generates its bindings
  from rust/proto/*.proto via the cargo build script).
- rules_java, rules_kotlin, rules_jvm_external, the maven extension,
  stardoc, rules_proto, grpc and the ktfmt repo from MODULE.bazel, plus
  the rules_kotlin LCOV-merger patch. MODULE.bazel.lock regenerated.
- WORKSPACE support (WORKSPACE, WORKSPACE.bzlmod, repositories.bzl,
  constants.bzl, artifacts.bzl, extensions.bzl, maven_install.json): the
  Rust build is crate_universe/bzlmod-only, so nothing could be built
  through it.
- The Kotlin-vs-Rust comparison tooling (tools/benchmark.py,
  tools/perf_gate.py, tools/perf_workload.py and their tests, the
  perf-gate workflow) and docs/kotlin-*.md, which have no second
  implementation to compare against.
- The Kotlin half of the e2e splitter (tools/e2e), the ktfmt format cron
  and the JVM CI jobs (test-jre21, test-jre11-run-example's JDK setup,
  release.yaml's java-tests, the deploy JAR build and release asset).

Moved / repointed
- E2E fixtures: cli/src/test/resources/{fixture,workspaces} ->
  tests/resources/, with .bazelignore, .gitattributes, tests/BUILD and
  tests/e2e/support/mod.rs following.
- Formatter targets: cli/format -> tools/format (buildifier, rustfmt);
  `//:format` is now the rustfmt fixer.
- //release:bazel-diff-rust -> //release:bazel-diff (asset file names
  keep the bazel-diff-rust-<os>-<arch> prefix so existing download URLs
  still resolve). //:bazel-diff-rust stays as an alias for BCR
  verify_targets and existing consumers.
- The serve harnesses, the Alpine stress container and the Firecracker
  bench/guest-image scripts run the static musl binary instead of the
  deploy JAR; the corresponding workflows build
  `//release:bazel-diff --config=release-musl`.
- tools/coverage_check.py defaults to `src/`; CI's coverage matrix is
  now the `coverage` job and gates Rust and Go independently.
- README regenerated from the template with the Rust CLI's help text;
  installation now covers prebuilt binaries and bzlmod only.

Verified: `bazel build //:bazel-diff` (Bazel 8.7.0) with the trimmed
module graph, `cargo test --lib --bin`, and the Python tooling tests.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BBybxwigT5qLjL6iuXC463
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.

2 participants