Skip to main content

proto v0.6 - Unused cleaning and improved global binaries

· 3 min read
Miles Johnson
Founder, developer

With this release, we're expanding on our global binary support and providing quality of life improvements.

RFC: Plugins system

Since proto's inception, plugins have been top of mind, but runtime based plugins in Rust are difficult. The only viable solution to this problem is WASM, but most developers have never used WASM before, nor are they familiar with WASM tooling (myself included).

However, we're at a point in proto's life-cycle where the core is rather stable, and it's time to start investigating plugin support. To this end, we've introduced a small RFC outlining how plugins will be used, enabled, and implemented. It's not very in-depth as we want to avoid implementation details, but from a consumers perspective, we want to ensure that it makes sense.

We'd very much appreciate it if you could take a look at the RFC and provide feedback. If you have any experience in Rust runtime plugins, we'd love to hear your thoughts as well.

Cleaning stale and unused tools

Is your ~/.proto installation growing out of control? Are there old versions of tools that you don't use anymore? Or versions you never used? Unsure if you're using a tool at all or still need it?

To help avoid these questions and problems, we're introducing a new command that will uninstall stale and unused tools, proto clean. When ran, the command will launch an interactive session and scan the file system for old tools, prompting you to remove them.

$ proto clean

By default the command will uninstall tools that haven't been used in over 30 days, but this can be customized with the --days option.


Tools installed before v0.6 will most likely be considered stale, as we weren't tracking install and last used timestamps. However, everything will work as intended after running a tool or simply moving forward from this point.

Global binary improvements

In our previous release, we announced the proto install-global command for installing global dependencies that are unique per tool. Thanks to the community, this command has been updated to support installing multiple globals at once!

$ proto install-global node typescript webpack-cli

On top of this, we're also introducing another command that was requested by the community, proto list-global, that can be used to list all currently installed globals.

$ proto list-global node
tsc - ~/.proto/tools/node/globals/lib/node_modules/typescript/bin/tsc
tsserver - ~/.proto/tools/node/globals/lib/node_modules/typescript/bin/tsserver

Better error messages

We've spent most of the past week working on a new internal architecture called Starbase, which will be the new foundation for proto and moon moving forward. One of the major benefits of this new architecture is a rewritten error system that provides more context and better error messages.

Here's an example of this, albeit with a contrived situation: