You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Added file system locking to temporary files while downloading plugins. This should mitigate issues where multiple processes are attempting to download the same plugin at the same time.
Updated the OCI client to inherit settings from settings.http when applicable.
π Fixes
Fixed an issue where different URLs with the same file name could conflict while writing temporary files.
Install proto_cli 0.56.4
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/moonrepo/proto/releases/download/v0.56.4/proto_cli-installer.sh | sh
Reverted the proto exec --raw changes from v0.56 until we can properly handle all edge cases.
π Updates
Added in-memory locking for plugin downloads with the same URL, to avoid race conditions where multiple threads attempt to download/rename/copy files at the same time. This primarily applies to the npm, pnpm, and yarn plugins, as they all utilize the same underlying WASM plugin.
π Fixes
Fixed an issue where arguments with spaces or special characters were not quoted correctly when running in a shell, resulting in a syntax parse error.
Potential fix for the "Failed to load and create plugin: expected at least one module field" error.
βοΈ Internal
Updated Rust to v1.95.0.
Updated dependencies.
Install proto_cli 0.56.3
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/moonrepo/proto/releases/download/v0.56.3/proto_cli-installer.sh | sh
Added request retry support, that will retry up to 3 times with exponential backoff for transient errors (network issues, rate limits, etc).
Updated PowerShell commands to use -EncodedCommand instead of -Command to avoid quoting/escaping issues. Let us know if you run into any issues with this change.
π Fixes
Fixed an issue where file paths may be too long when downloading plugins, triggering an OS error.
π§° Tools
pnpm
Added support for pnpm v11 pn and pnx shims.
π‘οΈ Security
Fixed a zip slip vulnerability in the tar archive extraction logic.
βοΈ Internal
Updated dependencies.
Install proto_cli 0.56.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/moonrepo/proto/releases/download/v0.56.2/proto_cli-installer.sh | sh
Made some changes to the proto exec command as we no longer auto-quote/escape the command arguments.
Removed the --raw flag as it's not needed anymore.
If you need to use quotes/escapes, you can quote the entire command to execute:
Before: proto exec node -- node -e "console.log('hello world')"
After: proto exec node -- 'node -e "console.log('hello world')"'
Updated child processes executed from WASM plugins to not always run in a shell by default, as it adds too much overhead.
Removed the --on-init flag from proto activate, as the initialization hook now runs by default.
π Updates
Updated proto activate and proto exec to resolve and execute tools in dependency chain order, ensuring environment variables and PATH entries are set in the correct order.
This allows tools that depend on other tools to work correctly in these workflows. For example, npm depends on node, but npm should take precedence.
Added support for shell aliases, that will be injected into the environment during proto activate.
Aliases can be configured with the new shell.aliases setting.
Added support for base64 encoded data:// locators for plugins. This is primarily for tools built around proto, like moon.
Added dash shell support.
Improved performance of environment variable collection, and virtual path conversions.
Improved shim creation error handling.
WASM API
Added ExecCommandInput.paths field, which allows plugins to specify a list of real or virtual paths to prepend to the PATH environment variable when executing a command.
Added ExecCommandOutput.streamed field, which indicates whether the command was executed with streaming output or not.
Added PluginContext.working_dir and PluginUnresolvedContext.working_dir fields, which provide the current working directory as a virtual path.
When writing package.json files, we'll now respect .editorconfig settings.
π Fixes
Fixed a regression where bins/shims would not be created if the toolchain was restored from a cache and the tools were already installed. This only affects CI environments like GitHub Actions.
This release is light on new features, but a large portion of the internals were rewritten to better scale with Rust's borrow checker and ownership model. This should lead to less bugs, easier maintenance, and more extensibility in the future. This should be fully backwards compatible, but please report any issues you may find.
π Updates
Improved proto run to automatically detect when a requested command is a bin provided by another tool (e.g., npx from npm, bunx from bun) by checking the local shims registry, and redirect to the parent tool with the correct executable.
Added a --tool-native flag to proto pin that will pin the version to a native tool file using the tool itself (via a plugin call), instead of pinning to .prototools.
For example, proto pin node lts --tool-native will pin to package.jsondevEngines.
Added a --tool-native flag to proto unpin that will unpin the version from a native tool file using the tool itself (via a plugin call), instead of unpinning from .prototools.
WASM API
Added pin_version and unpin_version plugin functions.
Added PinVersionInput, PinVersionOutput, UnpinVersionInput, and UnpinVersionOutput types.
π Fixes
Fixed an issue with multi-proto install where if one tool failed to install, the others that required it would never resolve.
Fixed an issue with IPv6 IPs not resolving correctly during offline detection.