- Notifications
You must be signed in to change notification settings - Fork113
Manage and switch between Solidity compiler versions
License
crytic/solc-select
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
A tool to quickly switch between Solidity compiler versions.
The tool is split into two CLI utilities:
solc-select: manages installing and setting differentsolccompiler versionssolc: wrapper aroundsolcwhich picks the right version according to what was set viasolc-select
Thesolc binaries are downloaded fromhttps://binaries.soliditylang.org/ which containsofficial artifacts for many historial and modernsolc 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, runsolc-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 onhow to install Rosetta.
# Install and set a specific Solidity versionsolc-select use 0.8.19 --always-install# Check the current versionsolc --version
The global version ofsolc will automatically be set to the latest version. You can change this with thesolc-select use <version> command:
$ solc --versionsolc, the solidity compiler commandline interfaceVersion: 0.5.2+commit.1df8f40c.Linux.g++$ solc-select use 0.4.24Switched global version to 0.4.24$ solc --versionsolc, the solidity compiler commandline interfaceVersion: 0.4.24+commit.e67f0147.Linux.g++
UseSOLC_VERSION environment variable to override the global version:
$ solc --versionsolc, the solidity compiler commandline interfaceVersion: 0.4.24+commit.e67f0147.Linux.g++$ SOLC_VERSION=0.5.2 solc --versionsolc, the solidity compiler commandline interfaceVersion: 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-installInstalling'0.8.1'...Version'0.8.1' installed.
# List all available versionssolc-select install# Install a specific versionsolc-select install 0.8.19# Switch to an installed versionsolc-select use 0.8.19# List installed versionssolc-select versions# Install and switch to a version in one commandsolc-select use 0.8.19 --always-install
Feel free to stop by ourSlack channel for help on using or extendingsolc-select.
On newersolc-select versions, this might show assolc binaries for macOS are Intel-only. Please install Rosetta on your Mac to continue. orsolc 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 seewhether 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 yoursolc version not being up to date.
You might be using an old version ofsolc-select or Python if you are seeing this error message. The current stable release supports Windows; try upgrading yoursolc-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. SeeStackOverflow 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
Our0.2.1 version ofsolc-select pulls older Linux binaries fromcrytic/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 tosolc-select version 0.2.0.
pip3 uninstall solc-selectpip3 install solc-select==0.2.0solc-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) willnot work!.
Uninstall other versions Solidity from your computer.
solc-select is licensed and distributed under theAGPLv3 license.Contact us if you’re looking for an exception to the terms.
About
Manage and switch between Solidity compiler versions
Topics
Resources
License
Contributing
Security policy
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.