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
~/.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
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
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
$ 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: