Files
vim-ale/COMPARISON.md

8.9 KiB

Go vs Node.js Cache Comparison

Systematic comparison of Go pipeline output (_cache/) vs Node.js production cache (LIVE_cache/). Generated by cmd/comparecache.

Key Observations

1. Classification Timing

The Node.js cache stores assets with empty os/arch/ext fields — normalize.js fills those at serve time. The Go pipeline classifies at write time. This means the Go cache has richer data per-asset, but the comparison must be done at the filename level, not the classified fields.

2. Meta-Asset Filtering

Go's isMetaAsset() filters out checksums, signatures, SBOMs, etc. Node.js includes them. This accounts for 43 packages showing live-has-meta differences. This is correct behavior — Go is more aggressive about filtering non-installable files.

3. Source Tarballs

Go includes GitHub source tarballs (tarball_url/zipball_url) for releases with no binary assets. Node.js does not. Affects 18 packages. Decision needed: should these be included?

4. Previously Unsupported Sources (NOW FIXED)

All custom source types are now wired into webicached. The only remaining go-missing packages are: dashd (alias), macos (no releases.conf), pg-essentials (meta-package), zig.vim (gittag with no raw data).

5. Version Depth

Go has deeper version history for most GitHub-sourced packages because it fetches all pages. Node.js limits to 30 releases per API call. This is a feature — Go provides complete histories.

Categories

Category Count Meaning
match 9 Identical asset filenames
go-missing 4 Go produces no output (alias, meta-package, or no config)
live-missing 16 Package exists in Go but not in live cache
go-extra-versions 52 Go has more version history (deeper fetch)
live-extra-versions 15 Live has newer data or uses a different source
go-extra-assets 64 Go includes assets that Node.js filters out
live-extra-assets 20 Node.js includes assets that Go filters out
live-has-meta 43 Node.js includes meta-assets (checksums, sigs)
go-has-source-tarballs 18 Go includes source tarballs for no-binary releases

Per-Package Checklist

Status: [x] reviewed, [-] known difference (acceptable), [ ] needs review

Exact Matches (8)

  • atomicparsley — match
  • awless — match
  • dotenv-linter — match
  • hexyl — match
  • koji — match
  • lf — match
  • sd — match
  • zoxide — match

Go Missing — Unsupported Source (4)

  • [-] dashd — alias_of=dashcore, skipped (correct)
  • [-] macos — no releases.conf
  • [-] pg-essentials — meta-package
  • [-] zig.vim — gittag source, 0 raw data?

Live Missing — Go-Only Packages (16)

  • [-] node-official — Go split, not in live cache
  • [-] node-unofficial — Go split, not in live cache
  • [-] pg — Go name, live uses postgres
  • [-] ripgrep — Go name, live uses rg
  • [-] rust.vim — symlink to vim-rust
  • [-] vim-airline — gittag packages not in live cache
  • [-] vim-airline-themes — gittag packages not in live cache
  • [-] vim-ale — gittag packages not in live cache
  • [-] vim-devicons — gittag packages not in live cache
  • [-] vim-go — gittag packages not in live cache
  • [-] vim-nerdtree — gittag packages not in live cache
  • [-] vim-prettier — gittag packages not in live cache
  • [-] vim-rust — gittag packages not in live cache
  • [-] vim-sensible — gittag packages not in live cache
  • [-] vim-shfmt — gittag packages not in live cache
  • [-] vim-syntastic — gittag packages not in live cache

Meta-Asset Only Differences (Go filters, Node.js keeps)

These packages differ only because Go strips checksums/sigs/SBOMs:

  • [-] curlie — live-has-meta(21)
  • [-] dashmsg — live-has-meta(1)
  • [-] dotenv — live-has-meta(1)
  • [-] ffuf — live-has-meta(50)
  • [-] gitdeploy — live-has-meta(1)
  • [-] gprox — live-has-meta(7)
  • [-] keypairs — live-has-meta(1)
  • [-] monorel — live-has-meta(3)
  • [-] ots — live-has-meta(28)
  • [-] runzip — live-has-meta(1)
  • [-] sclient — live-has-meta(1)
  • [-] sqlpkg — live-has-meta(7)
  • [-] xz — live-has-meta(1)

Custom Source Types (now wired, needs detailed review)

  • chromedriver — chromedist, live-extra-versions(1), go-extra-assets(5)
  • flutter — flutterdist, live-extra-assets(1), go-extra-assets(2082)
  • go — golang, version overlap differences
  • [-] gpg — gpgdist, match
  • iterm2 — iterm2dist, live-extra-versions(20), go-extra-assets(262)
  • julia — juliadist, live-extra-assets(1), go-extra-assets(1783)
  • mariadb — mariadbdist, go-extra-assets(11)
  • terraform — hashicorp, live-extra-assets(1), go-extra-assets(5550)
  • zig — zigdist, version differences

Version Depth + Extra Assets (needs detailed review)

These have real asset selection differences beyond version depth and meta filtering.

  • aliasman — go-has-source-tarballs(8), live-extra-assets(8), go-extra-assets(8)
  • arc — go-extra-versions(9), go-has-source-tarballs(18), go-extra-assets(18)
  • bat — go-extra-versions(13), go-extra-assets(85)
  • bun — go-extra-versions(210), live-extra-versions(30), go-extra-assets(85)
  • caddy — go-extra-versions(104), live-has-meta(3415), live-extra-assets(30), go-extra-assets(1180)
  • cilium — go-extra-versions(97), go-extra-assets(5)
  • cmake — go-extra-versions(280), go-extra-assets(4352)
  • comrak — go-extra-versions(60), live-extra-versions(1), live-extra-assets(6), go-extra-assets(194)
  • crabz — go-extra-assets(4)
  • dashcore — go-extra-versions(101), live-has-meta(327), go-extra-assets(896)
  • delta — go-extra-versions(29), go-extra-assets(304)
  • deno — go-extra-versions(338), live-extra-assets(1), go-extra-assets(4)
  • duckdns.sh — go-has-source-tarballs(6), live-extra-assets(6), go-extra-assets(6)
  • fd — go-extra-versions(15), live-extra-versions(1), live-extra-assets(21), go-extra-assets(66)
  • ffmpeg — go-extra-versions(11), live-extra-versions(2), go-extra-assets(68)
  • fish — go-extra-versions(35), go-extra-assets(182)
  • fzf — go-extra-versions(46), go-extra-assets(669)
  • gh — go-extra-versions(159), go-extra-assets(2644)
  • git — go-extra-versions(339), go-extra-assets(3724)
  • gitea — go-extra-versions(194), live-has-meta(1968), go-extra-assets(4600)
  • goreleaser — go-extra-versions(556), go-extra-assets(1657)
  • grype — go-extra-versions(161), live-has-meta(90), go-extra-assets(1840)
  • hugo — go-extra-versions(335), live-has-meta(30), go-extra-assets(8176)
  • hugo-extended — go-extra-versions(335), go-extra-assets(8206)
  • jq — go-extra-versions(15), live-extra-versions(12), go-extra-assets(7)
  • k9s — go-extra-versions(227), go-extra-assets(749)
  • kind — go-extra-versions(7), live-has-meta(7)
  • kubectx — go-extra-versions(15), go-has-source-tarballs(30), go-extra-assets(78)
  • kubens — go-extra-versions(15), go-has-source-tarballs(30), go-extra-assets(78)
  • lsd — go-extra-versions(2), go-extra-assets(188)
  • mutagen — go-extra-versions(82), go-has-source-tarballs(4), go-extra-assets(2478)
  • node — go-extra-versions(713), live-extra-assets(431), go-extra-assets(15208)
  • ollama — go-extra-versions(160), live-extra-assets(8), go-extra-assets(15)
  • pandoc — go-extra-versions(123), go-extra-assets(698)
  • pathman — go-extra-assets(1)
  • postgres — go-extra-versions(4), live-extra-versions(8), live-extra-assets(6), go-extra-assets(24)
  • psql — go-extra-versions(4), live-extra-versions(4), go-extra-assets(28)
  • pwsh — go-extra-versions(163), go-extra-assets(3407)
  • rclone — go-extra-versions(92), go-extra-assets(2548)
  • rg — go-extra-versions(44), live-has-meta(100), go-extra-assets(282)
  • sass — go-extra-versions(283), go-extra-assets(2194)
  • serviceman — live-extra-versions(1), live-extra-assets(18), go-extra-assets(12)
  • shellcheck — go-extra-versions(17), go-has-source-tarballs(34), go-extra-assets(34)
  • shfmt — go-extra-versions(22), go-extra-assets(360)
  • sqlc — go-extra-versions(7), go-has-source-tarballs(2), go-extra-assets(19)
  • sttr — go-extra-versions(4), live-has-meta(42), go-extra-assets(20)
  • syncthing — go-extra-versions(431), live-extra-assets(1), go-extra-assets(11983)
  • terramate — go-extra-versions(193), live-has-meta(421), go-extra-assets(1744)
  • tinygo — go-extra-versions(19), go-extra-assets(84)
  • trip — go-extra-versions(6), go-extra-assets(12)
  • uuidv7 — go-extra-assets(16)
  • vim-commentary — go-extra-versions(5), live-extra-versions(5), live-extra-assets(5), go-extra-assets(5)
  • vim-zig — go-extra-versions(1), live-extra-versions(1), live-extra-assets(1), go-extra-assets(1)
  • watchexec — go-extra-versions(83), live-extra-versions(2), live-has-meta(1407), go-extra-assets(671)
  • xcaddy — go-extra-assets(123)
  • xsv — go-extra-versions(35), go-extra-assets(36)
  • yq — go-extra-versions(134), go-extra-assets(17)