Split out of #181. Packaging prep (docs/PACKAGING.adoc) made the JS runtime packages JSR-publishable (@hyperpolymath/affine-js, @hyperpolymath/affinescript-tea — manual workflow scaffolded, not yet published). But #181 also says "publish compiler", and the compiler is a native OCaml binary, not a JSR/npm package.
Decision needed (one-way-door)
How is the compiler distributed so consumers (and affinescript-lsp, INT-10) can install it?
Options:
- GitHub Releases binaries — per-platform artifacts via the existing
release.yml (v* tags); install script / fetch-pin.
- Guix/Nix channel — aligns with the repo's primary packaging (
guix.scm/flake.nix); reproducible, but narrower audience.
- Thin JSR/npm shim — a small package that downloads a pinned, checksummed prebuilt binary on install (gives
deno/npm ergonomics without shipping OCaml source).
- Combination (e.g. 1 + 3).
Why filed, not guessed
Irreversible-ish (sets the install contract + the LSP distribution path, INT-10) and outside the bounded packaging-prep scope. The JS-package publish path is ready and independent of this.
Refs #181. Blocks INT-10 (affinescript-lsp distribution).
Split out of #181. Packaging prep (docs/PACKAGING.adoc) made the JS runtime packages JSR-publishable (
@hyperpolymath/affine-js,@hyperpolymath/affinescript-tea— manual workflow scaffolded, not yet published). But #181 also says "publish compiler", and the compiler is a native OCaml binary, not a JSR/npm package.Decision needed (one-way-door)
How is the compiler distributed so consumers (and
affinescript-lsp, INT-10) can install it?Options:
release.yml(v*tags); install script / fetch-pin.guix.scm/flake.nix); reproducible, but narrower audience.deno/npmergonomics without shipping OCaml source).Why filed, not guessed
Irreversible-ish (sets the install contract + the LSP distribution path, INT-10) and outside the bounded packaging-prep scope. The JS-package publish path is ready and independent of this.
Refs #181. Blocks INT-10 (affinescript-lsp distribution).