website/blog/2023-09-11_proto-v0.17.mdx
This release implements two long requested features, Python language support and canary releases.
<!--truncate-->It's been quite a while since we've introduced a new language into proto, and we're excited to announce the highly requested language, Python! Since Python is now an officially supported language, installing Python (and pip) is as simple as:
$ proto install python
However, we're marking language support as experimental for the time being. We expect our implementation to work for modern Python versions, but may not work for older versions, especially Python 2. The reasons for this are as follows:
python-build is
available, we'll attempt to use it to build + install Python. This currently requires pyenv to
be installed, and does not work on Windows.cpython at the moment, and do not support pypy, jython, or
other Python implementations. It's unknown whether this functionality should be in the core Python
plugin, or another plugin entirely.In a future proto version, we want to support a true "build from source" approach for all tools. Once that functionality has landed, we can properly support Python on all platforms, but until then, let us know how this works for you!
A canary release is a mechanism for rolling out new features and changes to a small subset of users, without it being an official release on an official channel. This allows users to opt-in and test functionality if they so choose. Canary releases are not meant to be used in production, and may contain bugs or breaking changes. A canary is similar to a nightly (or weekly) release, depending on the tool.
We now support this workflow in proto. To install a canary release, simply use the
--canary flag when installing a tool:
$ proto install <tool> --canary
This will install the latest canary release to ~/.proto/tools/<tool>/canary, and only the latest
release can be used. Re-installing with --canary will overwrite the previous canary installation.
However, because we detect a version to run with at runtime, how should you actually run canary? The easiest way is to prefix the shim with an environment variable:
$ PROTO_BUN_VERSION=canary bun ./index.ts
Or to explicitly configure the version in .prototools:
bun = "canary"
View the official release for a full list of changes.
--help menus..prototools.proto install --pin.proto global.proto local.package.json engines.