Skip to main content

Manage multiple Solidity compiler versions.

Project description

# solc-select A tool to quickly switch between Solidity compiler versions.

The tool is split into two CLI utilities: - solc-select: manages installing and setting different solc compiler versions - solc: wrapper around solc which picks the right version according to what was set via solc-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 downloaded binaries are stored in ~/.solc-select/artifacts/.

## Quickstart

` pip3 install solc-select `

## Usage

The global version of solc can be set 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++ `

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 `

And install the one you need with solc-select install <version>: ` $ solc-select install 0.8.1 Installing '0.8.1'... Version '0.8.1' installed. `

Display the currently installed versions: ` $ solc-select versions 0.8.0 0.4.2 (current, set by /Users/artur/.solc-select/global-version) `

## Getting Help

Feel free to stop by our [Slack channel](https://empirehacking.slack.com/) for help on using or extending solc-select.

## FAQ

### solc-version not changing after running solc-select use [version] or setting SOLC_VERSION

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.

### “Unsupported Platform” on Windows

The solc-select version that supports Windows is currently in beta. Uninstall solc-select through pip3 uninstall solc-select and run

`bash pip install solc-select==1.0.0b1 `

Alternatively, for the most up-to-date version, clone this repository and run `bash pip install . --user `

## Known Issues

### SSL: CERTIFICATE_VERIFY_FAILED on running solc-select commands [investigation ongoing]

OS X `bash pip3 install certifi /Applications/Python\ 3.8/Install\ Certificates.command `

Python distributions on OS X has no certificates and cannot validate SSL connections, a breaking change introduced in Python 3.6. See [StackOverflow](https://stackoverflow.com/a/42334357) post for additional details.

### Connection refused [investigation ongoing]

`bash pip3 uninstall solc-select pip3 install solc-select==0.2.0 solc-select install `

Try downgrading to solc-select version 0.2.0.

Our 0.2.1 version of solc-select pulls older Linux binaries from [crytic/solc](https://github.com/crytic/solc) which seems to have introduced unexpected behavior in certain instances.

### solc-select version changes, but solc –version does not match

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.

## License

solc-select is licensed and distributed under the [AGPLv3](LICENSE) license. [Contact us](mailto:opensource@trailofbits.com) if you’re looking for an exception to the terms.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

solc-select-1.0.1.tar.gz (20.0 kB view details)

Uploaded Source

Built Distribution

solc_select-1.0.1-py3-none-any.whl (19.3 kB view details)

Uploaded Python 3

File details

Details for the file solc-select-1.0.1.tar.gz.

File metadata

  • Download URL: solc-select-1.0.1.tar.gz
  • Upload date:
  • Size: 20.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.7

File hashes

Hashes for solc-select-1.0.1.tar.gz
Algorithm Hash digest
SHA256 46c4e727f4fd5e24cd94972a8082282aff19f300ca6be5b074a1d98453ccd508
MD5 f09346d85137da90df0f0b6325f2d00c
BLAKE2b-256 2fac9b4eab45a899a558d186c1d6830997d35392d15477b083b71c26612e02d7

See more details on using hashes here.

Provenance

File details

Details for the file solc_select-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: solc_select-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 19.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.7

File hashes

Hashes for solc_select-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6714548db36470692e50b12981d3945f9692f14853109ad4852b00299cf32335
MD5 6b46ae8a87e922df378e6bb8cff9b4a7
BLAKE2b-256 10d5a93cab5ad690f351a585f3d4a9d3336971300b968252cdaa06500aefd2dd

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page