Skip to content

Replace PubGrub with Go binary for dependency resolution#798

Merged
andrew merged 1 commit intomainfrom
swap-resolution-to-go-binary
Mar 27, 2026
Merged

Replace PubGrub with Go binary for dependency resolution#798
andrew merged 1 commit intomainfrom
swap-resolution-to-go-binary

Conversation

@andrew
Copy link
Copy Markdown
Member

@andrew andrew commented Mar 27, 2026

Swaps the resolution engine from PubGrub to a Go binary (ecosyste-ms/resolve-cli) that runs real package managers to resolve dependencies.

The binary fetches runtime deps from the ecosyste.ms API, creates a temp project, runs the actual package manager (npm, bundler, cargo, uv, etc.), and parses the output into a normalized dependency graph.

  • Job#resolve shells out to the resolve binary via Open3
  • New ecosystem param as alternative to registry (accepts purl types like gem, npm, cargo)
  • New tree=true param for PURL tree output
  • Registry listing filtered to supported ecosystems
  • Dockerfile switched from Alpine to Debian with all major package managers installed

Depends on:

@andrew andrew force-pushed the swap-resolution-to-go-binary branch from 65f8bbe to 846fc12 Compare March 27, 2026 16:04
Swap the resolution engine from PubGrub (Ruby SAT solver querying
ecosyste.ms API) to a Go binary that runs real package managers.

The Go binary (ecosyste-ms/resolve-cli) fetches a package's runtime
deps from the ecosyste.ms API, creates a temp project, runs the actual
package manager (npm, bundler, cargo, etc.) to resolve the full
dependency tree, and returns JSON.

Changes:
- Job#resolve shells out to the `resolve` binary via Open3
- Add ecosystem and tree params (ecosystem as alternative to registry,
  tree=true for PURL tree output)
- Filter registry listing to supported ecosystems only
- Dockerfile: Debian-based with all major package managers installed
- Add linux-gnu platforms to Gemfile.lock for Debian Docker builds
@andrew andrew force-pushed the swap-resolution-to-go-binary branch from 846fc12 to a486631 Compare March 27, 2026 16:10
@andrew andrew marked this pull request as ready for review March 27, 2026 16:11
@andrew andrew merged commit 7315f72 into main Mar 27, 2026
1 check passed
@andrew andrew deleted the swap-resolution-to-go-binary branch March 27, 2026 16:12
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