A tool to quickly switch between Solidity compiler versions.
The tool is split into two CLI utilities:
solc-select
: manages installing and setting differentsolc
compiler versionssolc
: wrapper aroundsolc
which picks the right version according to what was set viasolc-select
The solc
binaries are downloaded from https://binaries.soliditylang.org/ which contains
official artifacts for many historial and modern solc
versions for Linux and macOS.
The versioned binaries are stored in ~/.solc-select/artifacts/
.
pip3 install solc-select
uv tool install solc-select
To automatically install and use a version, run solc-select use <version> --always-install
.
solc-select
provides native ARM64 support for versions 0.8.5-0.8.23, and universal binary support for 0.8.24+. For versions older than 0.8.5, Rosetta is required. See the FAQ on how to install Rosetta.
# Install and set a specific Solidity version
solc-select use 0.8.19 --always-install
# Check the current version
solc --version
The global version of solc
will automatically be set to the latest version. You can change this with the solc-select use <version>
command:
$ solc --version
solc, the solidity compiler commandline interface
Version: 0.5.2+commit.1df8f40c.Linux.g++
$ solc-select use 0.4.24
Switched global version to 0.4.24
$ solc --version
solc, the solidity compiler commandline interface
Version: 0.4.24+commit.e67f0147.Linux.g++
Use SOLC_VERSION
environment variable to override the global version:
$ solc --version
solc, the solidity compiler commandline interface
Version: 0.4.24+commit.e67f0147.Linux.g++
$ SOLC_VERSION=0.5.2 solc --version
solc, the solidity compiler commandline interface
Version: 0.5.2+commit.1df8f40c.Linux.g++
By default, solc-select will halt if you try to use a version that you do not have installed already. Use the --always-install
flags to bypass this.
$ solc-select use 0.8.1 --always-install
Installing '0.8.1'...
Version '0.8.1' installed.
# List all available versions
solc-select install
# Install a specific version
solc-select install 0.8.19
# Switch to an installed version
solc-select use 0.8.19
# List installed versions
solc-select versions
# Install and switch to a version in one command
solc-select use 0.8.19 --always-install
Feel free to stop by our Slack channel for help on using or extending solc-select
.
On newer solc-select
versions, this might show as solc binaries for macOS are Intel-only. Please install Rosetta on your Mac to continue.
or solc binaries previous to 0.8.5 for macOS are Intel-only. Please install Rosetta on your Mac to continue.
solc
releases earlier than 0.8.5 require Rosetta to be installed. Versions 0.8.5-0.8.23 run natively on ARM64, and 0.8.24+ use universal binaries. To see
whether you have Rosetta installed on your Mac, run
pgrep -q oahd && echo Rosetta is installed || echo Rosetta is NOT installed
If it is not installed, it can be installed with the command
/usr/sbin/softwareupdate --install-rosetta --agree-to-license
Uninstall other installations of solc on your machine. solc-select
re-installs solc binaries for your operating system and acts as a wrapper for solc. With duplicate solc installations, this may result in your solc
version not being up to date.
You might be using an old version of solc-select
or Python if you are seeing this error message. The current stable release supports Windows; try upgrading your solc-select
installation with the following command.
pip install --upgrade solc-select
OS X: Python distributions on OS X has no certificates and cannot validate SSL connections, a breaking change introduced in Python 3.6. See StackOverflow post for additional details.
The following commands may resolve the issue; adjust the Python version to the one installed on your system:
pip3 install certifi
/Applications/Python\ 3.8/Install\ Certificates.command
Our 0.2.1
version of solc-select
pulls older Linux binaries from crytic/solc which seems to have introduced unexpected behavior in certain instances. Apparently, certain ISPs such as Jio may be blocking access to certain GitHub domains. If possible, try using a different Internet provider to see if it resolves the problem.
Alternatively, try downgrading to solc-select version 0.2.0
.
pip3 uninstall solc-select
pip3 install solc-select==0.2.0
solc-select install
Users seem to be experiencing situations in which the following command is successful:
solc-select use <version>
However, when running the following command, it points to an older version of Solidity.
solc --version
solc-select
is intended to work with custom binaries. This means that Solidity installed through other means (i.e: brew install solidity
) will not work!.
Uninstall other versions Solidity from your computer.
solc-select
is licensed and distributed under the AGPLv3 license. Contact us if you’re looking for an exception to the terms.