PackagingCon

Package registries for the Julia package manager
2021-11-09 , Room I

This talk discusses the current implementation of package registries for the Julia package manager and some of the lessons learned along the way.


A package registry is a collection of metadata for a set of packages.
Among other things, this includes:
- what versions are available for each package
- what dependencies each package version
- what package versions are compatible with other package versions

This information is used by the Julia Package manager's "resolver" when a package operation is performed (e.g. adding/updating packages). The task of the resolver is to return a set of package versions with "as high version as possible" under the constraints that all those versions are compatible with each other.

This talk discusses some of the lessons we have learned about package registries from
our experiences in developing the Julia package manager over many years.
This includes considerations like:

  • what file format to use
  • support for multiple registries
  • how to download/update the registry
  • performance considerations w.r.t the size of the registry/number of files

I'm a long-time contributor to the Julia language and its surrounding ecosystem (including its package manager).