Giter Club home page Giter Club logo

solc-select's Introduction

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.

You can also install the latest version with solc-select install latest and use the latest version with solc-select use latest

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 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

pip install solc-select==1.0.0b1

Alternatively, for the most up-to-date version, clone this repository and run

pip install . --user

Known Issues

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

OS X

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 post for additional details.

Connection refused [investigation ongoing]

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 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. Contact us if you’re looking for an exception to the terms.

solc-select's People

Contributors

esultanik avatar arcz avatar b-m-f avatar woodruffw avatar elopez avatar 0xalpharush avatar samczsun avatar dguido avatar dependabot[bot] avatar montyly avatar tiktock avatar hacker-dom avatar ardislu avatar tommyz7 avatar pcowgill avatar kylebakerio avatar jeremyschlatter avatar ivanvpan avatar disconnect3d avatar dev1644 avatar damilolaedwards avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.