{"id":13621072,"url":"https://github.com/crytic/solc-select","last_synced_at":"2025-05-14T01:04:28.637Z","repository":{"id":37431650,"uuid":"165721029","full_name":"crytic/solc-select","owner":"crytic","description":"Manage and switch between Solidity compiler versions","archived":false,"fork":false,"pushed_at":"2025-02-27T08:31:11.000Z","size":223,"stargazers_count":776,"open_issues_count":17,"forks_count":108,"subscribers_count":20,"default_branch":"dev","last_synced_at":"2025-04-05T14:01:30.461Z","etag":null,"topics":["ethereum","solidity"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/crytic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-01-14T19:24:59.000Z","updated_at":"2025-03-30T14:49:52.000Z","dependencies_parsed_at":"2022-08-09T18:41:41.809Z","dependency_job_id":"1741b6fc-4e24-4e2e-a1f0-75a5e26cc232","html_url":"https://github.com/crytic/solc-select","commit_stats":{"total_commits":160,"total_committers":25,"mean_commits":6.4,"dds":0.40625,"last_synced_commit":"0d7b6906e4219480b79b9c7440f08b1b1847f7fa"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crytic%2Fsolc-select","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crytic%2Fsolc-select/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crytic%2Fsolc-select/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crytic%2Fsolc-select/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/crytic","download_url":"https://codeload.github.com/crytic/solc-select/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248173817,"owners_count":21059594,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ethereum","solidity"],"created_at":"2024-08-01T21:01:02.308Z","updated_at":"2025-04-12T15:32:13.969Z","avatar_url":"https://github.com/crytic.png","language":"Python","funding_links":[],"categories":["Tools","dApps directory","八、开发工具（提效必备）"],"sub_categories":["Solidity Developer Tools","Development tools","2. 代码质量工具"],"readme":"# solc-select\n\nA tool to quickly switch between Solidity compiler versions.\n\nThe tool is split into two CLI utilities:\n\n- `solc-select`: manages installing and setting different `solc` compiler versions\n- `solc`: wrapper around `solc` which picks the right version according to what was set via `solc-select`\n\nThe `solc` binaries are downloaded from https://binaries.soliditylang.org/ which contains\nofficial artifacts for many historial and modern `solc` versions for Linux and macOS.\n\nThe versioned binaries are stored in `~/.solc-select/artifacts/`.\n\n## Quickstart\n\n```bash\npip3 install solc-select\n```\n\nTo automatically install and use a version, run `solc-select use \u003cversion\u003e --always-install`.\n\n### Running on ARM (Mac M1/M2)\n\n`solc` older than 0.8.24 requires Rosetta to be installed. See the FAQ on [how to install Rosetta](#oserror-errno-86-bad-cpu-type-in-executable).\n\n## Usage\n\nBy 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.\n\n```bash\nsolc\n```\n\nThe global version of `solc` will automatically be set to to the latest version. You can reset this with the `solc-select use \u003cversion\u003e` command:\n\n```shell\n$ solc --version\nsolc, the solidity compiler commandline interface\nVersion: 0.5.2+commit.1df8f40c.Linux.g++\n$ solc-select use 0.4.24\nSwitched global version to 0.4.24\n$ solc --version\nsolc, the solidity compiler commandline interface\nVersion: 0.4.24+commit.e67f0147.Linux.g++\n```\n\nUse `SOLC_VERSION` environment variable to override the global version:\n\n```shell\n$ solc --version\nsolc, the solidity compiler commandline interface\nVersion: 0.4.24+commit.e67f0147.Linux.g++\n$ SOLC_VERSION=0.5.2 solc --version\nsolc, the solidity compiler commandline interface\nVersion: 0.5.2+commit.1df8f40c.Linux.g++\n```\n\nBy 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.\n\n```shell\n$ solc-select use 0.8.1 --always-install\nInstalling '0.8.1'...\nVersion '0.8.1' installed.\n```\n\nYou can list all available versions with `solc-select install`:\n\n```shell\n$ solc-select install\nAvailable versions to install:\n0.3.6\n0.4.0\n...\n0.8.0\n0.8.1\n```\n\n## Getting Help\n\nFeel free to stop by our [Slack channel](https://empirehacking.slack.com/) for help on using or extending `solc-select`.\n\n## FAQ\n\n### OSError: [Errno 86] Bad CPU type in executable\n\nOn newer `solc-select` versions, this might show as `solc binaries for macOS are\nIntel-only. Please install Rosetta on your Mac to continue.` or `solc binaries\nprevious to 0.8.24 for macOS are Intel-only. Please install Rosetta on your Mac\nto continue.`\n\n`solc` releases earlier than 0.8.24 require Rosetta to be installed. To see\nwhether you have Rosetta installed on your Mac, run\n\n```bash\npgrep -q oahd \u0026\u0026 echo Rosetta is installed || echo Rosetta is NOT installed\n```\n\nIf it is not installed, it can be installed with the command\n\n```bash\n/usr/sbin/softwareupdate --install-rosetta --agree-to-license\n```\n\n### solc-version not changing after running `solc-select use [version]` or setting `SOLC_VERSION`\n\nUninstall 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.\n\n### \"Unsupported Platform\" on Windows\n\nYou 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.\n\n```bash\npip install --upgrade solc-select\n```\n\n## Known Issues\n\n### `SSL: CERTIFICATE_VERIFY_FAILED` on running `solc-select` commands [investigation ongoing]\n\n**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](https://stackoverflow.com/a/42334357) post for additional details.\n\nThe following commands may resolve the issue; adjust the Python version to the one installed on your system:\n\n```bash\npip3 install certifi\n/Applications/Python\\ 3.8/Install\\ Certificates.command\n```\n\n### `Connection refused` [investigation ongoing]\n\nOur `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. Apparently, [certain ISPs such as Jio](https://github.com/crytic/solc-select/issues/205#issuecomment-1825171056) may be blocking access to certain GitHub domains. If possible, try using a different Internet provider to see if it resolves the problem.\n\nAlternatively, try downgrading to `solc-select version 0.2.0`.\n\n```bash\npip3 uninstall solc-select\npip3 install solc-select==0.2.0\nsolc-select install\n```\n\n### `solc-select` version changes, but `solc --version does not match`\n\nUsers seem to be experiencing situations in which the following command is successful:\n\n```bash\nsolc-select use \u003cversion\u003e\n```\n\nHowever, when running the following command, it points to an older version of Solidity.\n\n```bash\nsolc --version\n```\n\n`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!.\n\nUninstall other versions Solidity from your computer.\n\n## License\n\n`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.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrytic%2Fsolc-select","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrytic%2Fsolc-select","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrytic%2Fsolc-select/lists"}