# RegistryInstances

Access the information in installed Julia registries.

## Background

Julia's package manager stores package metadata in registries, which
consist of TOML files in a directory structure. For Julia 1.0 to 1.6
it was fairly straightforward to access this information with just a
TOML reader. Julia 1.7 introduced an option to locally store the
registry in an archive format (for very good performance reasons) and
restructured the package manager (`Pkg`) code with an abstraction of
the registries (`RegistryInstance`). Thus it is now better and easier
to use the `RegistryInstance` abstraction, with the drawback that this
is considered an implementation detail in `Pkg` and may change between
Julia minor versions.

## About this Package

The whole purpose of RegistryInstances is to provide the
`RegistryInstance` abstraction without relying on `Pkg` internals. The
advantages of getting it from here instead of from `Pkg` are:

* Does not change with Julia minor versions.
* The key structs and functions are exported and part of the public
  API. Therefore breaking changes will follow semantic versioning
  principles.
* Works with Julia 1.6 and up.

Initially this was based on an exact copy of
[`Registry/registry_instance.jl`](https://github.com/JuliaLang/Pkg.jl/blob/74643bee0bf446bb649280c36749c29f6114aa33/src/Registry/registry_instance.jl)
from `Pkg` on August 12, 2021.

## Public API

The public API consists of the structs

* `RegistryInstance`
* `PkgInfo`
* `PkgEntry`

and the functions

* `reachable_registries`
* `registry_info`
* `compat_info`
* `treehash`
* `uuids_from_name`
* `isyanked`
