Release Notes
View blog post: https://moonrepo.dev/blog/proto-v0.60
💥 Breaking
- Configuration
- Split the
[settings.builtin-plugins]table into[settings.builtin-tools]and[settings.builtin-backends]tables. Thebuiltin-pluginstable is now deprecated, but will remain an alias forbuiltin-toolsfor backwards compatibility.
- Split the
- Lockfiles
- Reworked the
settings.unstable-lockfilesetting to be scoped to the.prototoolsconfig in which it was enabled, instead of applying to all nested configs (the previous workspaces-like behavior).- A
.protolocklockfile will only track tools with versions defined in its sibling.prototools(ad-hoc installed tools are tracked by the closest config). - Versions defined in nested
.prototoolsconfigs are no longer included in a parent's lockfile. To lock a nested config, enable the setting in that config as well. - Nested lockfiles no longer trigger an error.
- A
- Reworked the
- WASM API
- Reworked the
VirtualPathtype from the ground up. Is no longer an enum, but instead a newtype wrapper aroundPathBuf.- This allows for better interoperability with the Rust ecosystem, and makes it easier to work with virtual paths in general.
- Additionally, because of this change,
VirtualPathnow has access to allPathBufmethods, which was not possible before.
- Removed the
from_virtual_pathandto_virtual_pathextism host functions,into_real_pathandinto_virtual_pathwrapper functions, andreal_path!andvirtual_path!macros. Use the conversion utils instead (below). - Removed
PluginUnresolvedContext.tool_dirandversionfields. - Removed
LocateExecutablesOutput.exes_dirfield, useexes_dirsinstead. - Updated
CommandInstruction.cwdto be aVirtualPath. - Updated
ExecCommandInput.pathsto be aPathBuf.
- Reworked the
🚀 Updates
- Updated plugin function calls to run on a separate blocking thread, instead of blocking the main thread.
- Configuration
- Added
[tools.*.plugin]and[backends.*.plugin]fields for specifying a plugin locator for the respective tool or backend. This is an alternative to the[plugins.tools]and[plugins.backends]tables.
- Added
- Lockfiles
- Added a "Locked" column to the
proto outdatedandproto statustables, which displays the version locked for the configured spec. The column is only displayed when a tool has a matching lockfile record. Additionally, both commands now include alocked_versionfield in their--jsonoutput. - Updated
proto outdated --updateto also update matching records in the lockfile when versions are written to their respective configs. Since the new versions have not been installed yet, checksums are removed from the migrated records, and will be re-populated on the next install. - Updated
proto pin(andproto install --pin) to also update matching records in the lockfile. When the pinned version has been resolved, records are migrated to the new spec, otherwise records for the previous spec are removed. - Updated
proto unpinto remove matching records from the lockfile. - Updated
proto cleanto no longer remove records from the lockfile when cleaning stale versions, as the version may still be required by a config and used on other machines. - Checksums are now only removed from migrated records when the resolved version changes, instead of always.
- Added a "locked" label to
proto versionsoutput for versions that have a lockfile record, and alockedfield to its--jsonoutput. - Updated
proto debug configto render.protolockfiles alongside their sibling configs, and to include them in alocksfield in its--jsonoutput. - Updated
proto diagnoseto report lockfile health warnings: records missing a resolved version, duplicate records, and stale records that no longer match a configured version.
- Added a "Locked" column to the
- WASM API
- Added a
RealPathtype, which is a newtype wrapper aroundPathBufthat represents a real path on the host file system. This is a sibling to theVirtualPathtype, which represents a virtual path in the guest WASM environment. - Added
convert_to_virtual_pathandconvert_to_real_pathhelper functions for converting between real and virtual paths, using a list of host-to-guest path mappings.- Can also use
VirtualPathExt::to_real_pathandRealPathExt::to_virtual_pathextension traits for the same functionality.
- Can also use
- Added a
🐞 Fixes
- Fixed an issue where multiple
proto installcommands running concurrently could cause a race condition where they would all unpack to the same directory, clobbering the install.
🧩 Plugins
- Ruby
- Added support for installing pre-built Ruby binaries from
jdx/rubywhen available. This is now the default instead of build from source.
- Added support for installing pre-built Ruby binaries from
Install proto_cli 0.60.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/moonrepo/proto/releases/download/v0.60.0/proto_cli-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/moonrepo/proto/releases/download/v0.60.0/proto_cli-installer.ps1 | iex"Download proto_cli 0.60.0
| File | Platform | Checksum |
|---|---|---|
| proto_cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| proto_cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| proto_cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| proto_cli-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| proto_cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
| proto_cli-aarch64-unknown-linux-musl.tar.xz | ARM64 MUSL Linux | checksum |
| proto_cli-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |