Skip to content

Publish mingwX64 artifacts — enable Windows-native Kotlin/Native consumers #911

Description

@michalharakal

Problem

SKaiNET's KMP modules publish linuxX64, linuxArm64, macosArm64, iOS and androidNative targets — but no mingwX64 (and no macosX64). A Kotlin/Native application targeting Windows cannot resolve skainet-lang-core, skainet-backend-cpu, or any skainet-io-* artifact, so a Windows-native binary using SKaiNET is impossible today; the only Windows story is the JVM.

Root cause / scope

Target lists are declared per-module in each build.gradle.kts (#902 — default hierarchy template — and #804 — a multiplatform convention plugin — would centralize this). The pure-Kotlin modules (lang-*, backend-cpu, compile-*, io-*, data-*) show no POSIX-specific code in their target matrix; expected work:

  • add mingwX64() to the shared target list,
  • provide expect/actual fills where linux/macos actuals exist (e.g. PlatformCpuOpsFactory.*, file access in io modules — kotlinx-io supports mingwX64),
  • a Windows CI lane (cross-compilation from Linux hosts works for mingwX64; tests need a Windows runner or Wine).

Proposal

  1. Add mingwX64 to the convention target list for skainet-lang-*, skainet-backend-api, skainet-backend-cpu, skainet-io-core/-gguf/-safetensors, skainet-data-api/-simple, and skainet-bom.
  2. Scalar CPU kernels first (parity with other K/N targets); SIMD is a separate concern (Vectorized eager CPU kernels for Kotlin/Native targets (native RTF 2.7–5.8x JVM on identical workloads) #910).
  3. CI: compile-only gate on Linux cross-compile + a nightly Windows test lane.

macosX64 is deliberately out of scope (Apple-Silicon-only decision downstream); it would ride the same convention change if ever wanted.

Why now

whisper-cli (Whisper + Moonshine ASR CLI on eager CPU; the downstream consumer behind #910) ships native executables for linuxX64/linuxArm64 with byte-identical-to-JVM transcripts, and needs Windows as a first-class native target — a concrete, testable consumer for the new artifacts.

Acceptance

  • sk.ainet.core:skainet-lang-core, :skainet-backend-cpu, :skainet-io-gguf resolve for mingwX64 from Maven Central (or snapshots).
  • A hello-tensor K/N mingwX64 executable (create tensor, matmul, read back) links and runs on Windows x64.
  • Downstream: whisper-cli links its mingwX64 CLI binary and produces a correct golden transcript on Windows.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions