kvpanch
b6a19c97b1
Fetch LLVM release according to branch in llvm submodule ( #418 )
...
This change is essential first step to unblock gracefully enable LLVM 21
in revive compiler as current action blindly fetched latest LLVM binary
from the list of releases on our page.
The change queries release version from the submodule and uses it. Next
step: build LLVM 21 release binary
Next next step: switch revive compile to LLVM 21 after all issues are
fixed
2025-11-21 11:12:00 -05:00
xermicus
d97d094a8a
Update the Rust dependencies ( #420 )
...
The `Cargo.lock` kept changing locally on all my hosts. Not sure why
exactly - maybe it got forgotten in a recent PR. I took it as an
opportunity to quickly update the Rust dependencies.
---------
Signed-off-by: xermicus <bigcyrill@hotmail.com >
2025-11-21 15:34:21 +01:00
xermicus
975b610d9f
Add the LLVM dir to the .ignore file ( #419 )
...
LLVM is now a submodule and no longer in `.gitignore`. Thus, some dev
tools I use, like `rg` and `fd`, now consider the `llvm/` directory.
This PR fixes that by adding `llvm/` to the `.ignore` file.
Signed-off-by: xermicus <bigcyrill@hotmail.com >
2025-11-21 14:43:44 +01:00
LJ
ad61b6e3c9
Implement resolc end-to-end compilation benchmarks ( #406 )
...
# Description
Closes [#403 ](https://github.com/paritytech/revive/issues/403 )
Adds compilation time benchmarks for resolc end-to-end.
The benchmarks can be run from the root via:
```sh
make bench-resolc
```
HTML reports will be generated under `target/criterion`, and a summary
of the results at
[crates/resolc/BENCHMARKS_M4PRO.md](https://github.com/paritytech/revive/blob/lj/compilation-benchmarks/crates/resolc/BENCHMARKS_M4PRO.md )
(currently from running on a Mac M4 Pro).
2025-11-19 12:16:07 +01:00
kvpanch
e78f3cc419
add LLVM 18.x as a git submodule ( #399 )
...
This changeset is based on https://github.com/paritytech/revive/pull/346
2025-11-18 16:10:15 -05:00
xermicus
a1090cfa5a
revive-yul: fix the code block exit ( #414 )
...
This PR fixes the missing `STOP` instruction at the end of `code`
blocks.
---------
Signed-off-by: xermicus <bigcyrill@hotmail.com >
2025-11-17 18:47:58 +01:00
xermicus
dd48baadc7
resolc: fix the Yul test utils ( #413 )
...
- Fixes multiple bugs in the Yul test util helpers.
- The simple Yul builder utility helper now returns the contract builds.
Signed-off-by: xermicus <bigcyrill@hotmail.com >
2025-11-17 17:45:03 +01:00
dependabot[bot]
a3a5c7380d
Bump js-yaml from 4.1.0 to 4.1.1 ( #412 )
...
Bumps [js-yaml](https://github.com/nodeca/js-yaml ) from 4.1.0 to 4.1.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md ">js-yaml's
changelog</a>.</em></p>
<blockquote>
<h2>[4.1.1] - 2025-11-12</h2>
<h3>Security</h3>
<ul>
<li>Fix prototype pollution issue in yaml merge (<<)
operator.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/nodeca/js-yaml/commit/cc482e775913e6625137572a3712d2826170e53a "><code>cc482e7</code></a>
4.1.1 released</li>
<li><a
href="https://github.com/nodeca/js-yaml/commit/50968b862e75866ef90e626572fe0b2f97b55f9f "><code>50968b8</code></a>
dist rebuild</li>
<li><a
href="https://github.com/nodeca/js-yaml/commit/d092d866031751cb27c12d93f3e2470ad74d678b "><code>d092d86</code></a>
lint fix</li>
<li><a
href="https://github.com/nodeca/js-yaml/commit/383665ff4248ec2192d1274e934462bb30426879 "><code>383665f</code></a>
fix prototype pollution in merge (<<)</li>
<li><a
href="https://github.com/nodeca/js-yaml/commit/0d3ca7a27b03a6c974790a30a89e456007d62976 "><code>0d3ca7a</code></a>
README.md: HTTP => HTTPS (<a
href="https://redirect.github.com/nodeca/js-yaml/issues/678 ">#678</a>)</li>
<li><a
href="https://github.com/nodeca/js-yaml/commit/49baadd52af887d2991e2c39a6639baa56d6c71b "><code>49baadd</code></a>
doc: 'empty' style option for !!null</li>
<li><a
href="https://github.com/nodeca/js-yaml/commit/ba3460eb9d3e4478edcbc29edabe17c2157fc9ce "><code>ba3460e</code></a>
Fix demo link (<a
href="https://redirect.github.com/nodeca/js-yaml/issues/618 ">#618</a>)</li>
<li>See full diff in <a
href="https://github.com/nodeca/js-yaml/compare/4.1.0...4.1.1 ">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores )
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/paritytech/revive/network/alerts ).
</details>
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-17 10:54:36 +01:00
xermicus
79aaca1a85
std json: do not request EVM bytecode ( #410 )
...
These compiler outputs are irrelevant for the `resolc` compilation
pipeline. It can also break the compilation pipeline. For example, solc
may reject the code without via-ir or fail during the EVM codegen phase
with stack too deep errors - which is not relevant to us.
---------
Signed-off-by: xermicus <cyrill@parity.io >
2025-11-13 10:32:32 +01:00
PG Herveou
8ee1860f12
js: rm default process.env.RESOLC_BIN ( #411 )
...
Ran into this today, my env was set and pointing to an old version
so it's a breaking change, but I think we are better off not hardcoding
the env here, the user can do whatever they want when they invoke
compile
2025-11-13 10:16:34 +01:00
xermicus
878ca91689
RISCV relaxations ( #408 )
...
This PR enables RISC-V relaxations and changes to internal linkage for internal function and global symbols.
See also:
https://github.com/llvm/llvm-project/issues/167381#issuecomment-3513830043
Signed-off-by: xermicus <cyrill@parity.io >
2025-11-11 17:27:53 +01:00
xermicus
046455db06
release v0.5.0 ( #401 )
...
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com >
v0.5.0
2025-11-03 16:10:20 +01:00
xermicus
70037e1136
initial SELFDESTRUCT support ( #400 )
...
Note:
- The unstable interface in `v2509.0.0` of `polkadot-sdk` is required.
- The differential test fails against EVM in `v2509.0.0` of
`polkadot-sdk`.
---------
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com >
2025-11-03 15:04:04 +01:00
xermicus
c0cdde5a5a
llvm-context: fix off-by-one in SDIV overflow semantics ( #398 )
...
- Fix the wrong predicate (the negative side in 2s complement has one
more bit)
- Increase test coverage
Signed-off-by: xermicus <cyrill@parity.io >
2025-10-31 14:07:01 +01:00
xermicus
df1921ba93
runtime-api: sync syscall function signatures with pallet ( #397 )
...
This PR synchronizes the syscall function signatures in the runtime-api
with the current revive pallet API surface.
Signed-off-by: xermicus <cyrill@parity.io >
2025-10-30 14:43:55 +01:00
xermicus
84018c18ae
switch to the new storage API ( #396 )
...
This PR switches to the new `get_storage_or_zero` and
`set_storage_or_clear` syscalls which are more tailored towards
Solidity.
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com >
2025-10-30 14:13:37 +01:00
xermicus
42cac55be8
update cargo dependencies ( #395 )
...
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com >
2025-10-29 10:01:05 +01:00
kvpanch
6549a4f825
Strip minsize attribute from functions with large div/rem ( #390 )
...
That's a workaround to avoid LLVM backend crash while selecting
instruction for 256-bit integer division.
The workaround needs to be removed after we switch to newest inkwell
that has a fix in RISC-V backend
---------
Signed-off-by: kvp <mammal_windier8j@icloud.com >
2025-10-21 10:35:40 +02:00
xermicus
f46bea6a96
llvm-context: do not trap zero length OOB heap access ( #389 )
...
Fixes https://github.com/paritytech/contract-issues/issues/120
---------
Signed-off-by: xermicus <cyrill@parity.io >
2025-10-15 22:39:42 +02:00
xermicus
2090830858
release 0.4.1 ( #388 )
...
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com >
v0.4.1
2025-10-08 14:04:48 +02:00
Pavlo Khrystenko
93c6387dae
Fix output selection issues for Foundry ( #386 )
...
### Description
Fixes output selection issues for `Foundry` usage.
- pruning to look at per file settings
- source to include `ast`
### Note
`Selection.files` field is reintroduced because that's the way `foundry`
functions. it uses per-file output selection
---------
Co-authored-by: xermicus <cyrill@parity.io >
2025-10-08 12:48:41 +02:00
xermicus
7346d82dfa
do not prune the AST output in standard JSON mode ( #385 )
...
- do not prune the AST output in standard JSON mode (required for
foundry)
- do not serialize the output format if there was not blob produced
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com >
2025-10-07 15:27:44 +02:00
Alexander Samusev
39a6db7266
ci: add reusable action for release workflows ( #382 )
...
Let's check how good `claude` is.
fix https://github.com/paritytech/revive/issues/359
2025-10-06 17:08:25 +02:00
xermicus
8240163be0
release resolc 0.4.0 ( #384 )
...
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com >
2025-10-06 09:12:34 +02:00
xermicus
b560d72139
Prevent frontend function confusion ( #383 )
...
Function symbols can clash as we compile multiple YUL `object`
definition into the same `LLVM` module.
- Disambiguate via unique function symbols based its location (runtime
or deploy code).
- Use `LinkOnceODR` linkage for compiler builtin helpers.
---------
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com >
2025-09-29 23:05:57 +02:00
xermicus
6858cb9a61
mark internal functions linker private ( #381 )
...
Prevents unused functions in the emitted ELF object. Drive-by add a
missing test case (which misses a relocation under `-Oz` when all
internal functions are marked as private).
---------
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com >
2025-09-29 17:55:29 +02:00
xermicus
1cc4f967b4
vet cargo docs on CI ( #380 )
...
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com >
2025-09-29 13:39:09 +02:00
xermicus
713b7e5409
Nightly release workflow fix ( #378 )
...
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com >
2025-09-28 13:12:10 +02:00
dependabot[bot]
ffc13697ed
Bump brace-expansion ( #377 )
...
Bumps and
[brace-expansion](https://github.com/juliangruber/brace-expansion ).
These dependencies needed to be updated together.
Updates `brace-expansion` from 1.1.11 to 1.1.12
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/juliangruber/brace-expansion/releases ">brace-expansion's
releases</a>.</em></p>
<blockquote>
<h2>v1.1.12</h2>
<ul>
<li>pkg: publish on tag 1.x c460dbd</li>
<li>fmt ccb8ac6</li>
<li>Fix potential ReDoS Vulnerability or Inefficient Regular Expression
(<a
href="https://redirect.github.com/juliangruber/brace-expansion/issues/65 ">#65</a>)
c3c73c8</li>
</ul>
<hr />
<p><a
href="https://github.com/juliangruber/brace-expansion/compare/v1.1.11...v1.1.12 ">https://github.com/juliangruber/brace-expansion/compare/v1.1.11...v1.1.12 </a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/44f33b47c5c6a965d507421af43e86cf5971d711 "><code>44f33b4</code></a>
1.1.12</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/c460dbd68e428d147b2080622d8ce126c7a08570 "><code>c460dbd</code></a>
pkg: publish on tag 1.x</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/ccb8ac6d4292b7661b677fe048ba6690c877f51f "><code>ccb8ac6</code></a>
fmt</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/c3c73c8b088defc70851843be88ccc3af08e7217 "><code>c3c73c8</code></a>
Fix potential ReDoS Vulnerability or Inefficient Regular Expression (<a
href="https://redirect.github.com/juliangruber/brace-expansion/issues/65 ">#65</a>)</li>
<li>See full diff in <a
href="https://github.com/juliangruber/brace-expansion/compare/1.1.11...v1.1.12 ">compare
view</a></li>
</ul>
</details>
<br />
Updates `brace-expansion` from 2.0.1 to 2.0.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/juliangruber/brace-expansion/releases ">brace-expansion's
releases</a>.</em></p>
<blockquote>
<h2>v1.1.12</h2>
<ul>
<li>pkg: publish on tag 1.x c460dbd</li>
<li>fmt ccb8ac6</li>
<li>Fix potential ReDoS Vulnerability or Inefficient Regular Expression
(<a
href="https://redirect.github.com/juliangruber/brace-expansion/issues/65 ">#65</a>)
c3c73c8</li>
</ul>
<hr />
<p><a
href="https://github.com/juliangruber/brace-expansion/compare/v1.1.11...v1.1.12 ">https://github.com/juliangruber/brace-expansion/compare/v1.1.11...v1.1.12 </a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/44f33b47c5c6a965d507421af43e86cf5971d711 "><code>44f33b4</code></a>
1.1.12</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/c460dbd68e428d147b2080622d8ce126c7a08570 "><code>c460dbd</code></a>
pkg: publish on tag 1.x</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/ccb8ac6d4292b7661b677fe048ba6690c877f51f "><code>ccb8ac6</code></a>
fmt</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/c3c73c8b088defc70851843be88ccc3af08e7217 "><code>c3c73c8</code></a>
Fix potential ReDoS Vulnerability or Inefficient Regular Expression (<a
href="https://redirect.github.com/juliangruber/brace-expansion/issues/65 ">#65</a>)</li>
<li>See full diff in <a
href="https://github.com/juliangruber/brace-expansion/compare/1.1.11...v1.1.12 ">compare
view</a></li>
</ul>
</details>
<br />
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/paritytech/revive/network/alerts ).
</details>
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-28 13:06:55 +02:00
xermicus
94ec34c4d5
Separate compilation and linker phases ( #376 )
...
Separate between compilation and linker phases to allow deploy time
linking and back-porting era compiler changes to fix #91 . Unlinked
contract binaries (caused by missing libraries or missing factory
dependencies in turn) are emitted as raw ELF object.
Few drive by fixes:
- #98
- A compiler panic on missing libraries definitions.
- Fixes some incosistent type forwarding in JSON output (empty string
vs. null object).
- Remove the unused fallback for size optimization setting.
- Remove the broken `--lvm-ir` mode.
- CI workflow fixes.
---------
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com >
Signed-off-by: xermicus <bigcyrill@hotmail.com >
Signed-off-by: xermicus <cyrill@parity.io >
2025-09-27 20:52:22 +02:00
xermicus
13faedf08a
link to readme in the build utils llvm error message more ( #373 )
...
Signed-off-by: xermicus <cyrill@parity.io >
2025-09-02 14:21:54 +02:00
LJ
2f89c743ce
Implement Rust CLI tests ( #372 )
...
# Description
Closes #365
Ports all `resolc` CLI tests to Rust and removes the CLI TypeScript
tests.
2025-08-19 16:04:05 +02:00
LJ
ea0ea711ad
Update workflows to skip tests for only .md files ( #371 )
...
When updating documentation Markdown files, long-running tests still run
unnecessarily. With these changes, it will skip running test workflows
when PRs only containing changes to such files are opened.
Co-authored-by: xermicus <cyrill@parity.io >
2025-08-12 16:12:14 +02:00
LJ
b31e8a0d74
Fix llvm-builder installation docs ( #370 )
...
Updated installation instructions for the llvm-builder.
2025-08-11 21:48:40 +02:00
xermicus
903cbd7159
YUL tree visitor interface ( #369 )
...
- Implement the visitor interface. This simplifies working with the AST,
for example transformations into other IRs or collecting and analyzing
various statistics.
- Switch the explorer to use the visitor interface.
- Add the reciprocal function name conversion for function names.
- Some drive-by cosmetic fixes.
---------
Signed-off-by: xermicus <bigcyrill@hotmail.com >
2025-08-10 00:08:25 +02:00
dependabot[bot]
72f9e4f66e
Bump @eslint/plugin-kit from 0.3.3 to 0.3.4 ( #367 )
...
Bumps
[@eslint/plugin-kit](https://github.com/eslint/rewrite/tree/HEAD/packages/plugin-kit )
from 0.3.3 to 0.3.4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/eslint/rewrite/releases "><code>@eslint/plugin-kit</code>'s
releases</a>.</em></p>
<blockquote>
<h2>plugin-kit: v0.3.4</h2>
<h2><a
href="https://github.com/eslint/rewrite/compare/plugin-kit-v0.3.3...plugin-kit-v0.3.4 ">0.3.4</a>
(2025-07-21)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>potential quadratic runtime in regular expression (<a
href="https://redirect.github.com/eslint/rewrite/issues/240 ">#240</a>)
(<a
href="https://github.com/eslint/rewrite/commit/b283f64099ad6c6b5043387c091691d21b387805 ">b283f64</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/eslint/rewrite/blob/main/packages/plugin-kit/CHANGELOG.md "><code>@eslint/plugin-kit</code>'s
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/eslint/rewrite/compare/plugin-kit-v0.3.3...plugin-kit-v0.3.4 ">0.3.4</a>
(2025-07-21)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>potential quadratic runtime in regular expression (<a
href="https://redirect.github.com/eslint/rewrite/issues/240 ">#240</a>)
(<a
href="https://github.com/eslint/rewrite/commit/b283f64099ad6c6b5043387c091691d21b387805 ">b283f64</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/eslint/rewrite/commit/380c2248711f5277e56c2977b6b440577b210023 "><code>380c224</code></a>
chore: release main (<a
href="https://github.com/eslint/rewrite/tree/HEAD/packages/plugin-kit/issues/242 ">#242</a>)</li>
<li><a
href="https://github.com/eslint/rewrite/commit/17276ff19cec952ecbe7a1bacfaed67bc134b20c "><code>17276ff</code></a>
docs: Update README sponsors</li>
<li><a
href="https://github.com/eslint/rewrite/commit/b283f64099ad6c6b5043387c091691d21b387805 "><code>b283f64</code></a>
fix: potential quadratic runtime in regular expression (<a
href="https://github.com/eslint/rewrite/tree/HEAD/packages/plugin-kit/issues/240 ">#240</a>)</li>
<li><a
href="https://github.com/eslint/rewrite/commit/46cd5dab8f47b4be65a9aa9202a38603da85f186 "><code>46cd5da</code></a>
docs: Update README sponsors</li>
<li><a
href="https://github.com/eslint/rewrite/commit/9677965292cd5b670ef0e4aa7b9b57028a26a0ee "><code>9677965</code></a>
docs: Update README sponsors</li>
<li><a
href="https://github.com/eslint/rewrite/commit/20799b5802db906bc43308108986e0508febe58f "><code>20799b5</code></a>
docs: Update README sponsors</li>
<li>See full diff in <a
href="https://github.com/eslint/rewrite/commits/plugin-kit-v0.3.4/packages/plugin-kit ">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores )
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/paritytech/revive/network/alerts ).
</details>
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: xermicus <cyrill@parity.io >
2025-08-08 11:36:16 +02:00
xermicus
a96e1a4233
fix new Rust 1.89 warnings ( #368 )
2025-08-08 11:14:26 +02:00
dependabot[bot]
56aadce0a9
Bump @eslint/plugin-kit from 0.3.1 to 0.3.3 ( #363 )
...
Bumps
[@eslint/plugin-kit](https://github.com/eslint/rewrite/tree/HEAD/packages/plugin-kit )
from 0.3.1 to 0.3.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/eslint/rewrite/releases "><code>@eslint/plugin-kit</code>'s
releases</a>.</em></p>
<blockquote>
<h2>plugin-kit: v0.3.3</h2>
<h2><a
href="https://github.com/eslint/rewrite/compare/plugin-kit-v0.3.2...plugin-kit-v0.3.3 ">0.3.3</a>
(2025-06-25)</h2>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated
<ul>
<li>dependencies
<ul>
<li><code>@eslint/core</code> bumped from ^0.15.0 to ^0.15.1</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2>plugin-kit: v0.3.2</h2>
<h2><a
href="https://github.com/eslint/rewrite/compare/plugin-kit-v0.3.1...plugin-kit-v0.3.2 ">0.3.2</a>
(2025-06-09)</h2>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated
<ul>
<li>dependencies
<ul>
<li><code>@eslint/core</code> bumped from ^0.14.0 to ^0.15.0</li>
</ul>
</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/eslint/rewrite/blob/main/packages/plugin-kit/CHANGELOG.md "><code>@eslint/plugin-kit</code>'s
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/eslint/rewrite/compare/plugin-kit-v0.3.2...plugin-kit-v0.3.3 ">0.3.3</a>
(2025-06-25)</h2>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated
<ul>
<li>dependencies
<ul>
<li><code>@eslint/core</code> bumped from ^0.15.0 to ^0.15.1</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2><a
href="https://github.com/eslint/rewrite/compare/plugin-kit-v0.3.1...plugin-kit-v0.3.2 ">0.3.2</a>
(2025-06-09)</h2>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated
<ul>
<li>dependencies
<ul>
<li><code>@eslint/core</code> bumped from ^0.14.0 to ^0.15.0</li>
</ul>
</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/eslint/rewrite/commit/0496201974aad87fdcf3aa2a63ec74e91b54825e "><code>0496201</code></a>
chore: release main (<a
href="https://github.com/eslint/rewrite/tree/HEAD/packages/plugin-kit/issues/229 ">#229</a>)</li>
<li><a
href="https://github.com/eslint/rewrite/commit/f5e6d683ee00b24b98777291c0a9a83719fe3402 "><code>f5e6d68</code></a>
chore: hoist cli tools to root level (<a
href="https://github.com/eslint/rewrite/tree/HEAD/packages/plugin-kit/issues/224 ">#224</a>)</li>
<li><a
href="https://github.com/eslint/rewrite/commit/48b1f849476582257e1b6a110c4af55adbbec2e8 "><code>48b1f84</code></a>
chore: release main (<a
href="https://github.com/eslint/rewrite/tree/HEAD/packages/plugin-kit/issues/216 ">#216</a>)</li>
<li><a
href="https://github.com/eslint/rewrite/commit/147afec6be22b6ed4151c1e0a8fc40c061d626d6 "><code>147afec</code></a>
chore: update <code>package.json</code> to follow template (<a
href="https://github.com/eslint/rewrite/tree/HEAD/packages/plugin-kit/issues/225 ">#225</a>)</li>
<li><a
href="https://github.com/eslint/rewrite/commit/0a6aad0a70cc7261a303df614a4466e0b1f525b8 "><code>0a6aad0</code></a>
docs: fix bun command and update documentation (<a
href="https://github.com/eslint/rewrite/tree/HEAD/packages/plugin-kit/issues/222 ">#222</a>)</li>
<li><a
href="https://github.com/eslint/rewrite/commit/2a8913cdae0aa57dfea993256dbe6a04029909da "><code>2a8913c</code></a>
docs: Update README sponsors</li>
<li><a
href="https://github.com/eslint/rewrite/commit/cb858ffb8b77ea76187a857546c7a838a1fb4881 "><code>cb858ff</code></a>
refactor: update and fix error types in JSDoc comments (<a
href="https://github.com/eslint/rewrite/tree/HEAD/packages/plugin-kit/issues/213 ">#213</a>)</li>
<li><a
href="https://github.com/eslint/rewrite/commit/4ec089e5b60d64f695d09a973dbc4eb72026f112 "><code>4ec089e</code></a>
docs: Update README sponsors</li>
<li><a
href="https://github.com/eslint/rewrite/commit/1ddb2ed129e2999c2164f933282d8df1884bbd6c "><code>1ddb2ed</code></a>
docs: Update README sponsors</li>
<li><a
href="https://github.com/eslint/rewrite/commit/aa6a48b789a5a48eb405c03502a71e5879905876 "><code>aa6a48b</code></a>
docs: Update README sponsors</li>
<li>See full diff in <a
href="https://github.com/eslint/rewrite/commits/plugin-kit-v0.3.3/packages/plugin-kit ">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores )
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/paritytech/revive/network/alerts ).
</details>
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: xermicus <cyrill@parity.io >
2025-07-22 18:45:52 +02:00
xermicus
9751481f6b
the revive-explorer utility ( #364 )
...
A maintainable and more precise version of what was a hacky but useful
script, exploring the compilers YUL lowering unit.
It analyzes a given shared objects from the debug dump and outputs:
- The count of each YUL statement translated.
- A per YUL statement break-down of bytecode size contributed per.
- Estimated `yul-phaser` cost parameters.
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com >
2025-07-22 09:17:55 +02:00
xermicus
c285a6ec3d
add columns to debug information ( #362 )
...
- Add column numbers to debug information.
- Do not build allocas at entry for now.
---------
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com >
2025-07-17 09:53:54 +02:00
xermicus
a0396dd6d0
solc-json-interface: support for YUL optimizer details ( #361 )
...
- Add support for the YUL optimizer details in the standard json input
definition.
- Make optimizer settings optional. They can be omitted and solc will
pick default values ([see here for
reference](https://docs.soliditylang.org/en/latest/using-the-compiler.html#input-description )).
For example allows to use the
[`yul-phaser`](https://github.com/ethereum/solidity/blob/0917604a5ec7cff8bd40a1137f4fcb303fb90527/tools/yulPhaser/README.md?plain=1 )
utility. I did a single search with slightly adjusted costs (just made
some educated guess) and after an hour or so this already found an
optimizer sequence
(`OESsShMxeoufcSTvlFxtelTfnfEvicdFxnsvopgCaIeLcnvsTtUrUgdVTUttaeUomccTTTuujsVVvVDvvueUrTjUOmjrrhuuTtj`)
which shrinks the size of the `EndpointV2.sol` from LayerZero by 10%.
---------
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com >
Signed-off-by: xermicus <cyrill@parity.io >
2025-07-14 11:25:45 +02:00
Alexander Samusev
141a8b752c
Make nigthly version semver compliant ( #360 )
...
cc https://github.com/paritytech/revive/pull/357
2025-07-08 17:17:05 +02:00
Alexander Samusev
7c932f719b
Generate nightly builds and json files ( #357 )
...
PR adds a nightly release pipeline.
Since the logic for the nightly build and release differs significantly
from the usual pipeline, I decided to put it in a separate file. The
same applies to the Python script that generates JSON files.
The nightly pipeline runs at 01:00 UTC every day, producing artefacts
and retaining them for 40 days if commits are made the day before it
runs.
cc https://github.com/paritytech/revive/issues/355
cc https://github.com/paritytech/devops/issues/4141
2025-07-07 17:46:55 +02:00
xermicus
b238913a7d
emit YUL builtins debug line info and fix debug info source file ( #358 )
...
This PR fixes and enhances debug info generation:
1. Adds line information for each lowered YUL builtin and the `if`
statement.
2. Fixes the debug info source path to match the YUL file of the
contract dumped to the `--debug-output-dir`.
This improves inspection of the generated code a lot. Excerpt from
`llvm-objdump -Sl /tmp/dbg/contracts_EndpointV2.sol.EndpointV2.so`:
```
; /tmp/dbg/contracts_EndpointV2.sol.EndpointV2.yul:203
; let _1 := memoryguard(0x80)
13c3e: 3aa5b023 sd a0, 0x3a0(a1)
13c42: 38a5bc23 sd a0, 0x398(a1)
13c46: 38a5b823 sd a0, 0x390(a1)
13c4a: 08000513 li a0, 0x80
13c4e: 38a5b423 sd a0, 0x388(a1)
; /tmp/dbg/contracts_EndpointV2.sol.EndpointV2.yul:204
; mstore(64, _1)
13c52: 3885b503 ld a0, 0x388(a1)
13c56: 3905b603 ld a2, 0x390(a1)
13c5a: 3985b683 ld a3, 0x398(a1)
13c5e: 3a05b703 ld a4, 0x3a0(a1)
13c62: 38e5b023 sd a4, 0x380(a1)
13c66: 36d5bc23 sd a3, 0x378(a1)
13c6a: 36c5b823 sd a2, 0x370(a1)
13c6e: 36a5b423 sd a0, 0x368(a1)
13c72: 04000513 li a0, 0x40
13c76: 65d9 lui a1, 0x16
13c78: a605859b addiw a1, a1, -0x5a0
13c7c: 95a6 add a1, a1, s1
13c7e: 00000097 auipc ra, 0x0
13c82: 000080e7 jalr ra <__runtime+0x1de>
0000000000013c86 <.Lpcrel_hi27>:
; /tmp/dbg/contracts_EndpointV2.sol.EndpointV2.yul:205
; if iszero(lt(calldatasize(), 4))
13c86: 00000517 auipc a0, 0x0
13c8a: 00053503 ld a0, 0x0(a0)
13c8e: 4108 lw a0, 0x0(a0)
13c90: 4591 li a1, 0x4
13c92: 06b56263 bltu a0, a1, 0x13cf6 <.Lpcrel_hi27+0x70>
13c96: a009 j 0x13c98 <.Lpcrel_hi27+0x12>
```
---------
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com >
2025-07-04 19:56:52 +02:00
xermicus
ed608699af
release resolc v0.3.0 ( #354 )
...
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com >
v0.3.0
2025-06-28 12:32:48 +02:00
xermicus
75fc23c810
add the missing memset builtin ( #353 )
...
Closes #350
- Add the missing `memset` builtin which was accidentally deleted in a
previous PR.
- Add a compilation test to ensure the `memset` builtin is present.
---------
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com >
2025-06-28 12:01:34 +02:00
xermicus
486c9c28a1
new clippies ( #352 )
...
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com >
2025-06-28 11:48:24 +02:00
PG Herveou
7656c6a8b4
js: Add stats and override options ( #348 )
...
- Add `RESOLC_BIN` env variable to force use a binary compiler instead
of the wasm
- Add `--diff-stats` options to print file path
e.g
```
~/github/redstone-oracles-monorepo main*
❯ npx @parity/resolc@latest --diff-stats \
--base-path . \
--include-path node_modules \
--bin packages/evm-connector/contracts/samples/SampleWithEvents.sol
┌─────────┬──────────────────────────────────────────────────────────────────────────┬───────────────────────────────┬────────────┬────────────┬───────────┐
│ (index) │ file │ contract │ polkavm │ bin │ diff │
├─────────┼──────────────────────────────────────────────────────────────────────────┼───────────────────────────────┼────────────┼────────────┼───────────┤
│ 0 │ 'packages/evm-connector/contracts/core/CalldataExtractor.sol' │ 'CalldataExtractor' │ '4.31 kB' │ '2.53 kB' │ '70.12%' │
│ 1 │ 'packages/evm-connector/contracts/core/RedstoneConstants.sol' │ 'RedstoneConstants' │ '0.80 kB' │ '0.17 kB' │ '368.18%' │
│ 2 │ 'packages/evm-connector/contracts/core/RedstoneDefaultsLib.sol' │ 'RedstoneDefaultsLib' │ '0.90 kB' │ '0.31 kB' │ '189.06%' │
│ 3 │ 'packages/evm-connector/contracts/libs/BitmapLib.sol' │ 'BitmapLib' │ '0.90 kB' │ '0.31 kB' │ '189.06%' │
│ 4 │ 'packages/evm-connector/contracts/libs/NumericArrayLib.sol' │ 'NumericArrayLib' │ '0.90 kB' │ '0.31 kB' │ '189.06%' │
│ 5 │ 'packages/evm-connector/contracts/libs/SignatureLib.sol' │ 'SignatureLib' │ '0.90 kB' │ '0.31 kB' │ '189.06%' │
│ 6 │ 'packages/evm-connector/contracts/mocks/RedstoneConsumerNumericMock.sol' │ 'RedstoneConsumerNumericMock' │ '13.62 kB' │ '10.17 kB' │ '33.96%' │
│ 7 │ 'packages/evm-connector/contracts/samples/SampleWithEvents.sol' │ 'SampleWithEvents' │ '29.34 kB' │ '15.60 kB' │ '88.03%' │
└─────────┴──────────────────────────────────────────────────────────────────────────┴───────────────────────────────┴────────────┴────────────┴───────────┘
```
2025-06-19 12:17:09 +02:00
xermicus
8754d802fa
llvm-context: bugfix PHI values in SAR builtin translation ( #345 )
...
Closes #344
Signed-off-by: xermicus <cyrill@parity.io >
2025-06-14 15:12:03 +02:00
PG Herveou
63f0266fff
@parity/resolc fix sol file resolutions ( #343 )
...
second take on #339
turns out that the resolve-pkg npm package was also failing to properly
resolve package with an exports field define in the package.json.
This fixes it and add a test case with such a package
2025-06-05 10:05:53 +02:00