Skip to content

Package native binary via GraalVM (linux/macOS, brew distribution) #14

@syncended

Description

@syncended

Goal

Ship yapi as a standalone native binary so users can install it via Homebrew / a single download, without a JVM on their machine.

Status

Post-MVP. v0.1.0 ships as a JVM application (`installDist` / `distZip` from the Gradle `application` plugin). Native packaging unlocks proper Linux/macOS distribution and `brew install yapi`.

Scope

  • GraalVM native-image build for:
    • linux-x86_64
    • linux-aarch64
    • darwin-x86_64
    • darwin-aarch64
  • Resolve native-image surprises:
    • Reflection config for Ktor engine, kotlinx.serialization, mordant.
    • Resource includes (default config templates etc.).
    • Coroutine debug agent off in release.
  • CI:
    • Cross-compile/build matrix in GitHub Actions.
    • Upload binaries as release artifacts.
  • Distribution:
    • Homebrew tap / formula (`syncended/tap/yapi` or similar).
    • Linux: tarball release + optional AUR/deb later.

Out of scope

  • Windows binary (separate issue).
  • App bundle / signed installer for macOS.

Acceptance criteria

  • `brew install /yapi` installs and runs on macOS arm64 and x86_64.
  • A static-ish Linux binary runs on Ubuntu LTS and Alpine (musl variant if feasible) without a JVM.
  • Release workflow attaches per-platform binaries to GitHub Releases.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions