Glide: What's New in 0.12.0

Glide v0.12.0 is here with some notable changes. As we use and learn more about dependency management, in practice, we’re able to, hopefully, make Glide better. This release is about doing just that.

A Shared Package Cache

Glide now uses a cache of packages, pulled from their remote locations, to hold the packages and use for dependency and version resolution. Storing version control metadata, scanning code, and working out versions all happens in the cache. Previously this had been in a projects vendor/ directory. This has some benefits:

  1. If you’re vendoring, that is storing the external dependencies in your VCS, Glide is now much faster.
  2. VCS metadata is now shared cross project rather than each project holding it’s own. This allows more sharing and less network activity.
  3. If Glide runs into a problem working out dependencies it’s doing the work outside of the vendor/ directory. It can exit while leaving the dependencies in their previous state. This limits the impact of a problem on the ability to build your application.

This also means that some flags, such as --update-vendored are no longer needed, because they just work now.

More Distributions

We’ve been getting requests to make is easier to install Glide in places such as ARM. More than a few Go users want to manage their dependencies on ARM and Go works there. So, with this release we’re providing distributions for ARM along with updates to the installer script to download the ARM version.

curl https://glide.sh/get | sh

This should now work on ARM and it’s thanks to Francisco Guimarães, who also happens to have made the Debian distributions happen.

In addition to ARM we’ve added builds for FreeBSD, OpenBSD, NetBSD, and Plan 9.

Mirrors

A very early request was to allow mirrors in Glide. This way something like a CI system to have a mirror of the upstream repository near by. This release of Glide brings a simple mirror system into play.

Each VCS endpoint can have a corresponding mirror that’s managed on a per user level. The mirrors are stored in a mirrors.yaml file that can be shared or otherwise stored.

This system is simple and we look forward to adding more functionality to it in the future. If you want to jump in and help here’s an issue you can start with.

Far More Changes Than These

These are just a few of the updates. For the full list of changes see the Changelog.