2 releases

0.1.1 Feb 10, 2021
0.1.0 Feb 10, 2021

#41 in #release

MIT/Apache

33KB
373 lines

Manifesta

Introduction

The Rust programming language uses deterministic versioning for toolchain releases. Stable versions use SemVer, while nightly, beta and historical builds can be accessed by using dated builds (YY-MM-DD).

cargo-msrv is a tool which can be used to determine the minimal supported Rust version (MSRV). In cargo-msrv I started by parsing the latest channel manifest, and then decreasing the minor semver version. This is not great for many reasons:

  • Except for the latest released version, we are left guessing the decreased version numbers actually exist
  • Only stable versions are supported, not nightly, beta, or other channels
  • Only 1.x.0 versions are supported

As a result of the above limitations, I decided to look for an actual index of releases. After doing some research I found the following options:

  1. Use the AWS index (e.g. aws --no-sign-request s3 ls static-rust-lang-org/dist/ > dist.txt)
    • Rate-limited (only obtaining the index took ~40 seconds)
    • source
  2. Build from individual release manifests
    • Requires parsing multiple documents
    • Approx. one week delay after a new release
    • Also has more specific toolchain information
    • source
  3. Parse Rust in-repo RELEASES.md
    • Note: stable only

Each of these options requires additional parsing, which is where this crate comes in: this crate provides an index of all Rust releases. It will eventually support all three options, but initially, only the second one will be supported.

Technical options

  • Bring your own download tool (planned, will be a cfg option in the future)
  • Optionally, use built in download tool

Crate name

Portmanteau of "manifest", referring to the Rust release manifests this crate pulls its (meta)data from and "festa", Portuguese for party.

Dependencies

~4.5–6MB
~141K SLoC