Skip to content

Add support for native distribution artifacts#45

Open
mtf90 wants to merge 23 commits into
Walnut-Theorem-Prover:mainfrom
mtf90:dist
Open

Add support for native distribution artifacts#45
mtf90 wants to merge 23 commits into
Walnut-Theorem-Prover:mainfrom
mtf90:dist

Conversation

@mtf90

@mtf90 mtf90 commented Jun 23, 2026

Copy link
Copy Markdown
Member

This PR adds support for building and distributing native Walnut binaries. It does so by leveraging Java's module system and JDK's onboard tools jlink and jpackage to build native executables for the respective platforms.

The additional steps required for this are encapsulated in a dist profile typically only run by CI/CD. On publishing a GitHub release, a pipeline is triggered that runs the specific steps and attaches the resulting artifacts to the release (see https://github.com/mtf90/Walnut/releases for examples).

Positives

  • Executable Walnut binaries can now be obtained without having to locally setup Java or any other build tools.

Negatives

  • It requires Walnut's dependencies to support JPMS module definitions. Dependencies that to not support these (such as dk.brics:automaton and it.unimi.dsi:fastutil currently) need to be manually patched by the moditect-maven-plugin.
  • MacOS requires applications to be signed by an Apple development account in order to run out-of-the-box. The current pipelines do not support this, so MacOS downloads need to be explicitly exempted from quarantine (via xattr -cr /path/to/app) to run without issues.
  • MacOS applications require a version number in the x.y.z format (y and z are optional). Therefore, we cannot test native builds for development versions due to the -SNAPSHOT suffix. Currently, the CI pipeline only runs Linux containers.

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