Skip to content

Add Java linuxmusl-arm64 native runtime support - #2728

Open
edburns with Copilot wants to merge 4 commits into
mainfrom
copilot/add-linuxmusl-arm64-support
Open

edburns with Copilot wants to merge 4 commits into
mainfrom
copilot/add-linuxmusl-arm64-support

Conversation

Copilot AI commented Sep 18, 2026

Copy link
Copy Markdown
Contributor

Adds Java native runtime packaging, testing, and publishing support for linuxmusl-arm64, matching the existing native classifier pipeline.

  • Packaging

    • Add ARM64 musl Maven profiles for the runtime and SDK modules.
    • Validate ARM64 ELF architecture and musl loader.
    • Attach externally built linuxmusl-arm64 artifacts during publication.
  • CI and publishing

    • Exercise in-process mode on ARM64 Alpine.
    • Build and validate classifier JARs on ubuntu-24.04-arm.
    • Include the classifier in snapshot, release, and local publication assembly.
  • Coverage and documentation

    • Extend native host, artifact, and publication tests.
    • Document linuxmusl-arm64 as a supported in-process platform.

Copilot AI linked an issue Sep 18, 2026 that may be closed by this pull request
Co-authored-by: edburns <75821+edburns@users.noreply.github.com>
Copilot AI changed the title [WIP] Add support for linuxmusl-arm64 to copilot-sdk Add Java linuxmusl-arm64 native runtime support Sep 18, 2026
Copilot AI requested a review from edburns September 18, 2026 21:31
@github-actions

This comment has been minimized.

@edburns
edburns marked this pull request as ready for review September 21, 2026 20:28
@edburns
edburns requested a review from a team as a code owner September 21, 2026 20:28
Copilot AI balanced review requested due to automatic review settings September 21, 2026 20:28

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

The ADR’s earlier platform-scope section still incorrectly describes Linux musl as unsupported and publication as containing only six classifiers.

Get a fresh assessment by requesting another Copilot review.

Review effort: Balanced
Findings: 1 Low severity

Open (1)
What changed in this PR

Adds Java linuxmusl-arm64 native runtime support across packaging, validation, testing, publication, and documentation.

Changes:

  • Adds ARM64 musl Maven profiles and host validation.
  • Extends CI and publishing pipelines.
  • Updates tests and supported-platform documentation.
File Description
java/​sdk/​pom.xml Selects the ARM64 musl runtime.
java/​README.md Documents platform support and build commands.
java/​docs/​adr/​adr-007-native-bundling-strategy.md Adds the published classifier to the ADR.
java/​copilot-native/​scripts/​validate-native-host.test.mjs Tests ARM64 musl host acceptance.
java/​copilot-native/​scripts/​validate-native-host.mjs Recognizes the ARM64 musl classifier.
java/​copilot-native/​scripts/​validate-native-artifact.test.mjs Includes the classifier in publication fixtures.
java/​copilot-native/​scripts/​validate-local-publication.mjs Requires the classifier in complete publications.
java/​copilot-native/​scripts/​fetch-native.test.mjs Extends fetch tests to ARM64 musl.
java/​copilot-native/​pom.xml Packages and attaches the classifier JAR.
.github/​workflows/​java-sdk-tests.yml Tests and assembles ARM64 musl artifacts.
.github/​workflows/​java-publish-snapshot.yml Builds and publishes snapshot artifacts.
.github/​workflows/​java-publish-maven.yml Builds and publishes release artifacts.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

4. Loads it via [JNA](#references) using the C ABI entry points, per the [binding technology decision](#binding-technology-jna-over-panama-ffm) above. The JNA-specific code is confined behind an internal binding interface to preserve a future FFM migration path.
* A validated supported-host profile fetches the matching platform tarball from the pinned `github/copilot-cli` release, verifies its release SHA-256, and packages the version-matched runtime files.
* The current release work publishes the `linux-x64`, `linux-arm64`, `linuxmusl-x64`, `win32-x64`, `win32-arm64`, `darwin-x64`, and `darwin-arm64` classifiers. The planned classifier set expands to the other detected platforms.
* The current release work publishes the `linux-x64`, `linux-arm64`, `linuxmusl-x64`, `linuxmusl-arm64`, `win32-x64`, `win32-arm64`, `darwin-x64`, and `darwin-arm64` classifiers. The planned classifier set expands to the other detected platforms.
@github-actions

This comment has been minimized.

@edburns

edburns commented Sep 21, 2026

Copy link
Copy Markdown
Collaborator

Copilot review overview

🟡 Changes recommended

The ADR’s earlier platform-scope section still incorrectly describes Linux musl as unsupported and publication as containing only six classifiers.

Get a fresh assessment by requesting another Copilot review.

Review effort: Balanced Findings: 1 Low severity

Open (1)

What changed in this PR
Adds Java linuxmusl-arm64 native runtime support across packaging, validation, testing, publication, and documentation.

Changes:

  • Adds ARM64 musl Maven profiles and host validation.
  • Extends CI and publishing pipelines.
  • Updates tests and supported-platform documentation.

File Description
java/​sdk/​pom.xml Selects the ARM64 musl runtime.
java/​README.md Documents platform support and build commands.
java/​docs/​adr/​adr-007-native-bundling-strategy.md Adds the published classifier to the ADR.
java/​copilot-native/​scripts/​validate-native-host.test.mjs Tests ARM64 musl host acceptance.
java/​copilot-native/​scripts/​validate-native-host.mjs Recognizes the ARM64 musl classifier.
java/​copilot-native/​scripts/​validate-native-artifact.test.mjs Includes the classifier in publication fixtures.
java/​copilot-native/​scripts/​validate-local-publication.mjs Requires the classifier in complete publications.
java/​copilot-native/​scripts/​fetch-native.test.mjs Extends fetch tests to ARM64 musl.
java/​copilot-native/​pom.xml Packages and attaches the classifier JAR.
.github/​workflows/​java-sdk-tests.yml Tests and assembles ARM64 musl artifacts.
.github/​workflows/​java-publish-snapshot.yml Builds and publishes snapshot artifacts.
.github/​workflows/​java-publish-maven.yml Builds and publishes release artifacts.
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@copilot update the ADR to document what is now actually supported.

Co-authored-by: edburns <75821+edburns@users.noreply.github.com>

Copilot AI commented Sep 21, 2026

Copy link
Copy Markdown
Contributor Author

Copilot review overview

🟡 Changes recommended

The ADR’s earlier platform-scope section still incorrectly describes Linux musl as unsupported and publication as containing only six cl...

Updated the current platform scope to cover both musl classifiers and the eight-classifier publication flow in commit 0c8c4f7.

@github-actions

Copy link
Copy Markdown
Contributor

SDK Consistency Review — PR #2728

This PR adds a new native-runtime classifier (linuxmusl-arm64) for the Java SDK's experimental in-process mode, along with the corresponding CI workflow jobs (java-publish-maven.yml, java-publish-snapshot.yml, java-sdk-tests.yml), build scripts (validate-native-host.mjs, fetch-native.test.mjs, validate-local-publication.mjs, validate-native-artifact.test.mjs), Maven profiles (java/sdk/pom.xml, java/copilot-native/pom.xml), and documentation updates (java/README.md, ADR-007).

Findings:

  • All changes are scoped to the java/ directory and Java-specific GitHub Actions workflows.
  • No public API surface (method signatures, client behavior, tool/session APIs) is added or modified — this is purely native-artifact packaging/build infrastructure for Java's in-process mode (JNA-based native library loading).
  • The in-process/native-classifier bundling system is a Java-specific architectural choice (per ADR-007) with no equivalent construct in the Node.js, Python, Go, .NET, or Rust SDKs, so there is no parallel feature to keep in sync in those SDKs.
  • No cross-language API naming, parameter, or behavior inconsistencies were introduced.

Conclusion: No cross-SDK consistency issues found. This PR is an internal Java build/packaging enhancement and does not require corresponding changes in other language SDKs.

Generated by SDK Consistency Review Agent for #2728 · copilot · sonnet50 · 21.1 AIC · ⌖ 11.4 AIC · ⊞ 7.8K ·

This branch has not been deployed

No deployments
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.

[Java] Add support for linuxmusl-arm64

3 participants