Exposes the following PolkaVM specific options via the standard json interface: - Heap size - Stack size - Whether to emit source level debug information Additionally it is now forbidden to specify those as CLI option in standard JSON mode. They are bytecode altering options and having multiple ways to specify them creates unnecessary room for confusion: The standard JSON input description should be sufficient and succint for reproducible builds. Closes #290 --------- Signed-off-by: xermicus <bigcyrill@hotmail.com>
6.9 KiB
Changelog
Unreleased
This is a development pre-release.
Supported polkadot-sdk rev: 2503.0.1
v0.1.0
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-sdkversion is now2503.0.1
Fixed
v0.1.0-dev.16
This is a development pre-release.
Supported polkadot-sdk rev:c29e72a8628835e34deb6aa7db9a78a2e4eabcee
Added
- Move the npm package from paritytech/js-revive, into this repo. The package
@parity/resolcwill be deployed to npm for each release. - Support for solc v0.8.30
Changed
- By default, heavy size optimizations are applied.
Fixed
- @parity/resolc: The solc dependency package is constrained to the latest supported version, preventing breaking the package ever time a new solc package was released.
- The resolc npm package no longer ignores the optimizer settings
v0.1.0-dev.14
This is a development pre-release.
Supported polkadot-sdk rev:c29e72a8628835e34deb6aa7db9a78a2e4eabcee
Added
- The
revive-runnerhelper utility binary which helps to run contracts locally without a blockchain node. - Allow configuration of the EVM heap memory size and stack size via CLI flags and JSON input settings.
Changed
- The default PVM stack memory size was increased from 16kb to 32kb.
Fixed
- Constructors avoid storing zero sized immutable data on exit.
v0.1.0-dev.13
This is a development pre-release.
Supported polkadot-sdk rev:c29e72a8628835e34deb6aa7db9a78a2e4eabcee
Added
- Support for solc v0.8.29
- Decouples the solc JSON-input-output type definitions from the Solidity fronted and expose them via a dedicated crate.
--supported-solc-versionsforresolcbinary to return asemverrange of supportedsolcversions.- Support for passing LLVM command line options via the prcoess input or providing one or more
--llvm-arg='..'resolc CLI flag. This allows more fine-grained control over the LLVM backend configuration.
Changed
- Storage keys and values are big endian. This was a pre-mature optimization because for the contract itself it this is a no-op and thus not observable. However we should consider the storage layout as part of the contract ABI. The endianness of transient storage values are still kept as-is.
- Running
resolcusing webkit is no longer supported.
Fixed
- A missing byte swap for the create2 salt value.
v0.1.0-dev.12
This is a development pre-release.
Supported polkadot-sdk rev: 21f6f0705e53c15aa2b8a5706b208200447774a9
Added
- Per file output selection for
--standard-jsonmode. - The
iroutput selection option for--standard-jsonmode.
Changed
- Improved code size: Large contracts compile to smaller code blobs when enabling aggressive size optimizations (
-Oz).
Fixed
v0.1.0-dev.11
This is a development pre-release.
Supported polkadot-sdk rev: 274a781e8ca1a9432c7ec87593bd93214abbff50
Added
Changed
Fixed
- A bug causing incorrect loads from the emulated EVM linear memory.
- A missing integer truncate after switching to 64bit.
v0.1.0-dev.10
This is a development pre-release.
Supported polkadot-sdk rev: 274a781e8ca1a9432c7ec87593bd93214abbff50
Added
- Support for the
coinbaseopcode. - The resolc web JS version.
Changed
- Missing the
--overwriteflag emits an error instead of a warning. - The
resolcexecutable prints the help by default. - Removed support for legacy EVM assembly (EVMLA) translation.
- integration: identify cached code blobs on source code to fix potential confusions.
- Setting base, include or allow paths in emscripten is now a hard error.
- Employ a heuristic to detect
address.transferandaddress.sendcalls. If detected, the re-entrant call flag is not set and 0 deposit limit is endowed.
Fixed
- Solidity: Add the solc
--librariesfiles to sources. - A data race in tests.
- Fix
broken pipeerrors. - llvm-builder: Allow warnings.
- solidity: Fix the custom compiler warning messages.
v0.1.0-dev.9
This is a development pre-release.
Added
Changed
- Syscalls with more than 6 arguments now pack them into registers.
Fixed
- Remove reloading of the resolc.js file (fix issue with relative path in web worker)
v0.1.0-dev.8
This is a development pre-release.
Added
- The
revive-llvm-buildercrate with therevive-llvmhelper utility for streamlined management of the LLVM framework dependency. - Initial support for running
resolcin the browser.
Changed
- Suported contracts runtime is polkadot-sdk git version
d62a90c8c729acd98c7e9a5cab9803b8b211ffc5. - The minimum supported Rust version is
1.81.0. - Error out early instead of invoking
solcwith invalid base or include path flags.
Fixed
- Decouple the LLVM target dependency from the LLVM host dependency.
- Do not error out if no files and no errors were produced. This aligns resolc closer to solc.
- Fixes input normalization in the Wasm version.
v0.1.0-dev.7
This is a development pre-release.
Added
- Implement the
GASPRICEopcode. - Implement the
BASEFEEopcode. - Implement the
GASLIMITopcode.
Changed
- The
GASopcode now returns the remainingref_time. - Contracts can now be supplied call data input of arbitrary size.
- Some syscalls now return the value in a register, slightly improving emitted contract code.
- Calls forward maximum weight limits instead of 0, anticipating a change in polkadot-sdk where weight limits of 0 no longer interprets as uncapped limit.
Fixed
- A linker bug which was preventing certain contracts from linking with the PVM linker.
- JS: Fix encoding conversion from JS string (UTF-16) to UTF-8.
- The git commit hash slug is always displayed in the version string.
v0.1.0-dev.6
This is a development pre-release.
Added
- Implement the
BLOCKHASHopcode. - Implement delegate calls.
- Implement the
GASPRICEopcode. Currently hard-coded to return1. - The ELF shared object contract artifact is dumped into the debug output directory.
- Initial support for emitting debug info (opt in via the
-gflag)
Changed
- resolc now emits 64bit PolkaVM blobs, reducing contract code size and execution time.
- The RISC-V bit-manipulation target feature (
zbb) is enabled.
Fixed
- Compilation to Wasm (for usage in node and web browsers)
v0.1.0-dev.5
This is development pre-release.
Added
- Implement the
CODESIZEandEXTCODESIZEopcodes.
Changed
- Include the full revive version in the contract metadata.
Fixed
v0.1.0-dev-4
This is development pre-release.
Added
- Support the
ORIGINopcode.
Changed
- Update polkavm to
v0.14.0. - Enable the
a,fast-unaligned-accessandxtheadcondmovLLVM target features, decreasing the code size for some contracts.