Skip to content

Releases: paritytech/revive

llvm-21.1.8.emsdk-5.0.0-revive.7afd3af

19 Feb 23:04
d8d998c

Choose a tag to compare

LLVM is a dependency of revive. The LLVM releases are used by our CI to build revive.

llvm-21.1.8-revive.59ba21b

05 Feb 17:04
f24e2d8

Choose a tag to compare

LLVM is a dependency of revive. The LLVM releases are used by our CI to build revive.

v1.0.0

29 Jan 18:45
b080c1d

Choose a tag to compare

Changelog

Supported polkadot-sdk rev: unstable2507

Changed

  • Removed the revive-explorer utility.

Fixed

  • OOB access in calldataload and calldatacopy should always produce zero values instead of consuming all gas.
  • The superfluous byte swap in linkersymbol.
  • Compiling with --standard-json now compiles to PolkaVM bytecode only for the contracts explicitly requested in the outputSelection, significantly improving compilation time when none or a subset of files requests bytecode. PR#461
  • Compiling with --standard-json now outputs only the explicitly requested output (e.g. evm.assembly, evm.bytecode, ast, etc.). PR#461
// Example:
{
  "settings": {
    // ...
    "outputSelection": {
      "path/to/my/file1.sol": {
        // Contracts in this file will generate bytecode.
        // Only these fields of the JSON output selection will be in the `contracts` output.
        "*": ["abi", "evm.methodIdentifiers", "metadata", "evm.bytecode"],
        // Only this field of the JSON output selection will be in the `sources` output.
        "": ["ast"]
      },
      "path/to/my/file2.sol": {
        // No contracts in this file will generate bytecode.
        "*": ["abi", "evm.methodIdentifiers", "metadata"],
        // No `ast` will be in the `sources` output (only the automatically added `id`,
        // similar to solc as this is not a configurable output selection).
        "": []
      },
    }
  }
}

Note for macOS Users

The macOS binary is unsigned and it needs to be made runnable using xattr -c resolc-universal-apple-darwin.

v0.6.0

08 Jan 11:49
81ce306

Choose a tag to compare

Changelog

This is a development pre-release.

Supported polkadot-sdk rev: unstable2507

Added

Changed

  • Instruct the LLVM backend and linker to --relax (may lead to smaller contract code size).
  • Standard JSON mode: Don't forward EVM bytecode related output selections to solc.
  • The supported polkadot-sdk release is unstable2507.
  • The INVALID opcode and OOB memory accesses now consume all remaining gas.
  • Emit the call_evm and delegate_call_evm syscalls for contract calls.
  • The revive-runner can execute arbitrarily large contract blobs.
  • Set the default PolkaVM stack and heap size values to 128KB.

Fixed:

  • The missing STOP instruction at the end of code blocks.
  • The missing bounds check in the internal sbrk implementation.
  • The call gas is no longer ignored.
  • The settings.polkavm.memoryConfig object and its fields are now in camelCase.

Note for macOS Users

The macOS binary is unsigned and it needs to be made runnable using xattr -c resolc-universal-apple-darwin.

v0.5.0

03 Nov 15:18
046455d

Choose a tag to compare

Changelog

This is a development pre-release.

Supported polkadot-sdk rev: 2509.0.0

Added

  • Support for SELFDESTRUCT.

Changed

  • Emulated EVM heap memory accesses of zero length are never out of bounds.
  • Switched to newer and cheaper storage syscalls (omits reads and writes of 0 values).

Fixed

  • Introduced a workaround avoiding compiler crashes caused by a bug in LLVM affecting SDIV.
  • An off-by-one bug affecting SDIV overflow semantics.

Note for macOS Users

The macOS binary is unsigned and it needs to be made runnable using xattr -c resolc-universal-apple-darwin.

v0.4.1

08 Oct 12:20
2090830

Choose a tag to compare

Changelog

This is a development pre-release.

Supported polkadot-sdk rev: 2503.0.1

Changed

  • The ast output is no longer pruned in standard JSON mode (required for foundry).
  • Support standard_json.output_selection to also look at per file settings.

Note for macOS Users

The macOS binary is unsigned and it needs to be made runnable using xattr -c resolc-universal-apple-darwin.

v0.4.0

06 Oct 07:20
a57352f

Choose a tag to compare

Changelog

This is a development pre-release.

Supported polkadot-sdk rev: 2503.0.1

Changed

  • Remove the broken --llvm-ir mode.
  • Remove the unused fallback for size optimization setting.
  • Unlinked contract binaries are emitted as raw ELF objects.

Added

  • Line debug information per YUL builtin and for if statements.
  • Column numbers in debug information.
  • Support for the YUL optimizer details in the standard json input definition.
  • The revive-explorer compiler utility.
  • revive-yul: The AST visitor interface.
  • The --link deploy time linking mode.

Fixed

  • The debug info source file matches the YUL path in --debug-output-dir, allowing tools to display the source line.
  • Incosistent type forwarding in JSON output (empty string vs. null object).
  • The solc automatic import resolution.
  • Compiler panic on missing libraries definition.

Note for macOS Users

The macOS binary is unsigned and it needs to be made runnable using xattr -c resolc-universal-apple-darwin.

v0.3.0

28 Jun 10:47
ed60869

Choose a tag to compare

Changelog

This is a development pre-release.

Supported polkadot-sdk rev: 2503.0.1

Fixed

  • llvm-context: Bugfix the SAR YUL builtin translation.
  • runtime-api: Add the missing memset builtin.
  • npm package: Bugfix the exports field defined in the package.json.

Note for macOS Users

The macOS binary is unsigned and it needs to be made runnable using xattr -c resolc-universal-apple-darwin.

v0.2.0

03 Jun 13:56
e94432e

Choose a tag to compare

Changelog

This is a development pre-release.

Supported polkadot-sdk rev: 2503.0.1

Changed

  • Removed the license printer from the resolc binary.
  • EVM bytecode is no longer requested from solc (except in test utils) leading to less compilation work in the pipeline.

Fixed

  • solc-json-interface: Serializing of any custom key in the JSON input is only skipped if not provided.
  • npm package resolution no longer fails with an 'ERR_PACKAGE_PATH_NOT_EXPORTED' error for packages defining exports fields in the package.json.

Note for macOS Users

The macOS binary is unsigned and it needs to be made runnable using xattr -c resolc-universal-apple-darwin.

v0.1.0

27 May 10:15
4d659ac

Choose a tag to compare

Changelog

This is a development pre-release.

Supported polkadot-sdk rev: 2503.0.1

Added

  • Add the PolkaVM heap size, stack size and debug info CLI compiler options to the standard JSON settings. This makes the standard JSON input succint for reproducible builds.

Changed

  • Supported polkadot-sdk version is now 2503.0.1
  • The emsdk version is now 4.0.9

Fixed