Skip to content

Conversation

@google-labs-jules
Copy link
Contributor

Implemented a GitHub Actions pipeline and a custom Java tool to verify binary compatibility of Ports/CLDC11 against JavaSE 11 and vm/JavaAPI.

  • Tool (scripts/api-checker): A Maven-based Java application using the ASM library. It compares two sets of classes (Subject vs. Reference) to ensure the Subject is a binary compatible subset. It supports checking against standard JARs, directories, and the Java 11 jrt:/ filesystem. It reports errors for missing/incompatible APIs in the Subject and can generate a JSON report of "extra" APIs in the Reference.
  • Workflow (.github/workflows/cldc11-check.yml):
    • Triggers on changes to Ports/CLDC11 or vm/JavaAPI.
    • Builds Ports/CLDC11 using Ant.
    • Builds vm/JavaAPI using Maven.
    • Builds the APIChecker tool.
    • Runs the checker to verify CLDC11 vs JavaSE 11 (Fail on incompatibility).
    • Runs the checker to verify CLDC11 vs vm/JavaAPI (Fail on incompatibility, report extra APIs).
    • Uploads the "extra APIs" report as a build artifact.

PR created automatically by Jules for task 5063691584105636391 started by @shai-almog

This change introduces a new GitHub Actions pipeline (`.github/workflows/cldc11-check.yml`) that verifies `Ports/CLDC11` is a binary compatible subset of JavaSE 11 and `vm/JavaAPI`.

It also adds a custom tool `scripts/api-checker`, implemented in Java using ASM, to perform the binary compatibility analysis (checking classes, methods, fields, superclasses, and interfaces). The tool generates a report of extra APIs present in the reference (e.g., `vm/JavaAPI`) as requested.
@google-labs-jules
Copy link
Contributor Author

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!


For security, I will only act on instructions from the user who triggered this task.

New to Jules? Learn more at jules.google/docs.

@github-actions
Copy link

github-actions bot commented Dec 24, 2025

✅ Continuous Quality Report

Test & Coverage

Static Analysis

Generated automatically by the PR CI workflow.

This change introduces a new GitHub Actions pipeline (`.github/workflows/cldc11-check.yml`) that verifies `Ports/CLDC11` is a binary compatible subset of JavaSE 11 and `vm/JavaAPI`.

It also adds a custom tool `scripts/api-checker`, implemented in Java using ASM, to perform the binary compatibility analysis (checking classes, methods, fields, superclasses, and interfaces). The tool generates a report of extra APIs present in the reference (e.g., `vm/JavaAPI`) as requested.

The workflow is configured to run on JDK 11 to support the tool's usage of modern Java APIs (like `InputStream.readAllBytes` and `jrt:/` filesystem). Explicit permissions are set for the workflow.
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.

1 participant