wpt967 bb4a4dddde [solidity,llvm-context] Improve support for debugging the compiler (#32)
Add option --recursive-process-input <filename> for use with
--recursive-process to specify the name of a file to use instead of
reading from stdin.

If --debug-output-dir is set, dump the file passed to the recursive
invocation of the compiler as a JSON file suitable for use with
--recursive-process-input.

These changes are intended to support debugging the compiler and are
only available with DEBUG builds.
2024-08-23 18:18:07 +02:00
2024-06-08 16:41:40 +02:00
2024-08-19 18:40:35 +02:00
2024-08-19 18:40:35 +02:00
2024-03-12 12:06:02 +01:00
2024-03-12 12:06:02 +01:00
2024-06-08 16:41:40 +02:00
2024-07-19 00:06:48 +02:00

CI

revive

YUL and EVM assembly recompiler to LLVM, targetting RISC-V on PolkaVM.

Frontend and code generator are based of ZKSync zksolc.

Status

This is experimental software in active development and not ready just yet for production usage.

Discussion around the development is hosted on the Polkadot Forum.

Installation

resolc depends on the solc binary installed on your system.

To install the resolc Solidity frontend executable:

bash build-llvm.sh
export PATH=${PWD}/llvm18.0/bin:$PATH
make install-bin
resolc --version

LLVM

revive requires a build of LLVM 18.1.4 or later including compiler-rt. Use the provided build-llvm.sh build script to compile a compatible LLVM build locally in $PWD/llvm18.0 (don't forget to add that to $PATH afterwards).

Development

Please consult the Makefile targets to learn how to run tests and benchmarks. Ensure that your branch passes make test locally when submitting a pull request.

Design overview

revive uses solc, the Ethereum Solidity compiler, as the Solidity frontend to process smart contracts written in Solidity. The YUL IR code (or legacy EVM assembly as a fallback for older solc versions) emitted by solc is then translated to LLVM IR, targetting a runtime similar to Polkadots contracts pallet.

S
Description
No description provided
Readme 26 MiB
Languages
Rust 87.9%
Solidity 5.8%
JavaScript 2.3%
Python 0.9%
C 0.9%
Other 2.1%