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
To automatically install and use a version, run solc-select use <version> --always-install
.
solc
older than 0.8.24 requires Rosetta to be installed. See the FAQ on how to install Rosetta.
By default, solc-select
will install the most recent available Solidity file for your version. This will automatically be done when you run solc
for the first time.
solc
The global version of solc
will automatically be set to to the latest version. You can reset 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.
You can list all available versions with solc-select install
:
$ solc-select install
Available versions to install:
0.3.6
0.4.0
...
0.8.0
0.8.1
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.24 for macOS are Intel-only. Please install Rosetta on your Mac to continue.
solc
releases earlier than 0.8.24 require Rosetta to be installed. 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.