Skip to main content

proto v0.47 - New backend system & asdf support

· 3 min read
Miles Johnson
Founder, developer

In this release, we're stoked to release backends, a new type of plugin that enables the use of 3rd-party plugins.

New backend: asdf

Since proto's inception, we've been asked the question "how's this different than asdf?", or "why not just use asdf?". The answer to both of these questions is still the same 3 things:

  • To start, asdf isn't multi-platform, it's Unix only and doesn't support Windows (proto does).
  • Secondly, asdf is powered by Bash scripts, which means a bash-compatible interpreter or shell is required (proto uses WASM).
  • And lastly, proto is built on Rust, so it's extremely fast and reliable.

With all that said, asdf has a massive plugin registry compared to proto's, and it would take a really long time for proto to reach parity. Because of this, we've been working on a new plugin type called a "backend", which allows 3rd-party plugins to be utilized within proto for downloading and installing tools, locating executables, and more.

Of course, our first backend is asdf. To install a tool from asdf's registry, prefix the version in .prototools with asdf:, or configure the backend setting.

.prototools
# For this single version
zig = "asdf:0.13.0"

# For all versions
zig = "0.13.0"

[tools.zig]
backend = "asdf"

This backend implementation does not use the asdf binary itself, and instead emulates the environment as best we can. Because of this, some tools may not be usable through proto, especially those that rely on the exec-env script. Furthermore, the 2 bullet points above are unfortunately still restrictions: This is Unix only and requires Bash.

In the next release, we'll investigate the use of Scoop or Chocolatey as a potential backend for Windows users. If you're interested in this endeavor, send us a message in Discord!

New built-in tool: poetry

In v0.45 we introduced 3 new tools, and in this release, we're releasing 1 more! We want to expand our Python support, and since we already support pip and uv, we wanted to also support Poetry, which has been requested by the community many times now. Poetry installation works quite differently than other tools, so please report any issues or improvements.

$ proto install poetry

proto now shims itself

Until now, proto was a stand-alone binary that existed on PATH and was not coupled to proto's store (~/.proto) outside of possibly existing in ~/.proto/bin for convenience. Over the past couple of releases, we've been working on supporting proto as an official tool within proto, so commands like proto install proto and proto pin proto 0.45 actually function correctly.

Starting in this release, when proto is installed via proto, either through proto install or proto upgrade, a shim will be created at ~/.proto/shims/proto, allowing for runtime version detection and pinning. This basically means you can now pin a project to a certain version of proto like any other tool, for example:

.prototools
proto = "0.46"

Other changes

View the official release for a full list of changes.

  • Updated offline connection checks to also ping IPv6 addresses for Google & CloudFlare DNS.