33 Commits

Author SHA1 Message Date
dependabot[bot] 0b222d76fd Update wasmparser requirement from 0.205 to 0.206 (#103)
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)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-30 16:29:41 +02:00
dependabot[bot] 2e29897786 Update wasmparser requirement from 0.204 to 0.205 (#101)
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)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-24 15:34:49 +02:00
dependabot[bot] b974199ad5 Update wasmparser requirement from 0.203 to 0.204 (#98)
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)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-17 00:49:23 +02:00
dependabot[bot] 5f293e47ff Update wasmparser requirement from 0.200 to 0.203 (#97)
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)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-16 11:32:01 +02:00
dependabot[bot] 82f3638ba4 Update wasmparser requirement from 0.121 to 0.200 (#90)
Updates the requirements on
[wasmparser](https://github.com/bytecodealliance/wasm-tools) to permit
the latest version.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/bytecodealliance/wasm-tools/commits">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)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-18 09:30:04 +01:00
dependabot[bot] 74945dc206 Update wasmprinter requirement from 0.2 to 0.200 (#89)
Updates the requirements on
[wasmprinter](https://github.com/bytecodealliance/wasm-tools) to permit
the latest version.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/bytecodealliance/wasm-tools/commits">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)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-18 09:20:40 +01:00
dependabot[bot] 1b7b54ca83 Update wasmparser requirement from 0.119 to 0.121 (#88)
Updates the requirements on
[wasmparser](https://github.com/bytecodealliance/wasm-tools) to permit
the latest version.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/56d0d947f175af01eb91d2ff4b20c43858a2b849"><code>56d0d94</code></a>
Bump crate versions (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1392">#1392</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/04ca1c576ebf1fe424b21f687eed6813c4231974"><code>04ca1c5</code></a>
Enable the component model feature by default (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1391">#1391</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/dcdfb0eea47a8e8d934f45147762b9aa66fbde5d"><code>dcdfb0e</code></a>
Use different limits for items in components (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1390">#1390</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/60ff8695a7b2b097cc18e5a3d1ccf66b0083723d"><code>60ff869</code></a>
<code>wast</code>: Fix pointer provenance bug reported by MIRI (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1386">#1386</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/a6160b38674894612df19be6022af9e4e68a2eda"><code>a6160b3</code></a>
Bump crate versions (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1385">#1385</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/6470aa9df1782b4e7a21e5f065d0b991e0797862"><code>6470aa9</code></a>
<code>wasm-smith</code>: Implement support for generating GC
instructions (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1382">#1382</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/5d42986f3c67816f75700b6df5db7e9c1b3bf2bb"><code>5d42986</code></a>
Break wasm-smith's default dependency on wasmparser (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1384">#1384</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/8b9ba68a18f1bac2f31c4889cc6c462cde3f13a0"><code>8b9ba68</code></a>
add composability for general import (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1380">#1380</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/2210c573bc5508689296e70a2fb9488dc874ad26"><code>2210c57</code></a>
dump: Better printing of rec groups and sub types (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1379">#1379</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/aaf941dbda39029b036f3a9390fe4d3525105774"><code>aaf941d</code></a>
[wast] make constructor of Id public (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1369">#1369</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/bytecodealliance/wasm-tools/compare/wasmparser-0.119.0...wasmparser-0.121.0">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)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-30 11:35:12 +01:00
dependabot[bot] 39fa497aee Update wasmparser requirement from 0.116 to 0.119 (#85)
Updates the requirements on
[wasmparser](https://github.com/bytecodealliance/wasm-tools) to permit
the latest version.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/0168371fc8c7700c4aebbfabcd9947705eb09eb9"><code>0168371</code></a>
Bump crate versions (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1366">#1366</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/eced912ee8a52b8818924da54a58ea85f0bbdddb"><code>eced912</code></a>
Add migration code for <code>f32</code>/<code>f64</code>. (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1364">#1364</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/7dc8054d2dc5980587676d0c7fc97f117abd184f"><code>7dc8054</code></a>
Update the exception-handling validator implementation (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1333">#1333</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/0616ef196a183cf137ee06b4a5993b7d590088bf"><code>0616ef1</code></a>
Accept <code>f32</code>/<code>f64</code> as aliases for
<code>float32</code>/<code>float64</code>. (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1356">#1356</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/a3f8c60d98dcaab0e08d66ba22cede334fc1ded6"><code>a3f8c60</code></a>
Switch to <code>///</code> for printing documentation comments. (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1357">#1357</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/3c4f2f38211b42b8e5fcf1732c7f5f147e59854d"><code>3c4f2f3</code></a>
wasm-smith: Move Config's Default impl into macro (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1353">#1353</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/4d1f5031027e46b322cc0c9ac8234ad42756c249"><code>4d1f503</code></a>
<code>wasm-smith</code>: Deduplicate and devirtualize configuration (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1351">#1351</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/9de484b8343b2ed1a78a31b5c2597ef4159150bb"><code>9de484b</code></a>
Use <code>bitflags</code> for symbol flags (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1350">#1350</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/928a946cab2cfc17f16d7f075e395a68456b24e3"><code>928a946</code></a>
Add parsing for <code>linking</code> custom section (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1348">#1348</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/810a98c7a5c462a5ae97366ffcf979883a9cc16c"><code>810a98c</code></a>
<code>wasmparser</code>: Get more GC spec tests passing (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1346">#1346</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/bytecodealliance/wasm-tools/compare/wasmparser-0.116.0...wasmparser-0.119.0">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)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-10 11:11:16 +00:00
dependabot[bot] 0c739d92c4 Update wasmparser requirement from 0.111 to 0.116 (#77)
Updates the requirements on
[wasmparser](https://github.com/bytecodealliance/wasm-tools) to permit
the latest version.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/22402e3a057422ced35acd629cd3324bf4d983a3"><code>22402e3</code></a>
Bump crate versions (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1266">#1266</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/34efe2b9b92e34f91c1415981e8cd81a6c08f703"><code>34efe2b</code></a>
Fix trivial typo in define_types.rs (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1265">#1265</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/112285c9a05c152dd2e007cd85c16784f52bc18a"><code>112285c</code></a>
Remove &quot;interface imports&quot; from binary syntax, expand accepted
strings (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1262">#1262</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/8f71316e421cabb5360d0320f7ca9ee20d692842"><code>8f71316</code></a>
<code>wasmparser</code>: Define core Wasm types in a macro (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1264">#1264</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/e18b17f30166135d211a9645619d68370c90e693"><code>e18b17f</code></a>
wit-component: minor code simplification in linking.rs (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1259">#1259</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/dc5c0c5c820d31d44c48bb6c5b707a9d3de2a242"><code>dc5c0c5</code></a>
wit-component: use library order to determine duplicate symbol priority
(<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1258">#1258</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/537111b9a705168e3705177a82813f1d49c6a7c9"><code>537111b</code></a>
wasmparser: Use type-specific identifiers pervasively (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1257">#1257</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/cc6a4bee4e3b04151046dbb7ddc635b422541a04"><code>cc6a4be</code></a>
Bump crate versions (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1256">#1256</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/4468adce8bfcca628718f2789633882f398db25f"><code>4468adc</code></a>
Enable omitting versions in world selection (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1255">#1255</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/b57d64c9d5ceaa15d8036b29011093090de75529"><code>b57d64c</code></a>
Change the encoding of wit definitions (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1252">#1252</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/bytecodealliance/wasm-tools/compare/wasmparser-0.111.0...wasmparser-0.116.0">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)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alexander Theißen <alex.theissen@me.com>
2023-11-07 10:13:57 +01:00
dependabot[bot] 060317f70d Update criterion requirement from 0.4 to 0.5 (#63)
Updates the requirements on
[criterion](https://github.com/bheisler/criterion.rs) to permit the
latest version.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/bheisler/criterion.rs/blob/master/CHANGELOG.md">criterion's
changelog</a>.</em></p>
<blockquote>
<h2>[0.5.0] - 2023-05-23</h2>
<h3>Changed</h3>
<ul>
<li>Replaced lazy_static dependency with once_cell</li>
<li>Improved documentation of the <code>html_reports</code> feature</li>
<li>Replaced atty dependency with is-terminal</li>
<li>MSRV bumped to 1.64</li>
<li>Upgraded clap dependency to v4</li>
<li>Upgraded tempfile dependency to v3.5.0</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Quick mode (<code>--quick</code>) no longer outputs 1ms for measured
times over 5 seconds</li>
<li>Documentation updates</li>
</ul>
<h2>[0.4.0] - 2022-09-10</h2>
<h3>Removed</h3>
<ul>
<li>The <code>Criterion::can_plot</code> function has been removed.</li>
<li>The <code>Criterion::bench_function_over_inputs</code> function has
been removed.</li>
<li>The <code>Criterion::bench_functions</code> function has been
removed.</li>
<li>The <code>Criterion::bench</code> function has been removed.</li>
</ul>
<h3>Changed</h3>
<ul>
<li>HTML report hidden behind non-default feature flag:
'html_reports'</li>
<li>Standalone support (ie without cargo-criterion) feature flag:
'cargo_bench_support'</li>
<li>MSRV bumped to 1.57</li>
<li><code>rayon</code> and <code>plotters</code> are optional (and
default) dependencies.</li>
<li>Status messages ('warming up', 'analyzing', etc) are printed to
stderr, benchmark results are printed to stdout.</li>
<li>Accept subsecond durations for <code>--warm-up-time</code>,
<code>--measurement-time</code> and <code>--profile-time</code>.</li>
<li>Replaced serde_cbor with ciborium because the former is no longer
maintained.</li>
<li>Upgrade clap to v3 and regex to v1.5.</li>
</ul>
<h3>Added</h3>
<ul>
<li>A <code>--discard-baseline</code> flag for discarding rather than
saving benchmark results.</li>
<li>Formal support for benchmarking code compiled to web-assembly.</li>
<li>A <code>--quiet</code> flag for printing just a single line per
benchmark.</li>
<li>A <code>Throughput::BytesDecimal</code> option for measuring
throughput in bytes but printing them using
decimal units like kilobytes instead of binary units like
kibibytes.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>When using <code>bench_with_input</code>, the input parameter will
now be passed through <code>black_box</code> before
passing it to the benchmark.</li>
</ul>
<h2>[0.3.6] - 2022-07-06</h2>
<h3>Changed</h3>
<ul>
<li>MSRV bumped to 1.49</li>
<li>Symbol for microseconds changed from ASCII 'us' to unicode 'µs'</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/bheisler/criterion.rs/commit/4a560cb8d8b4cefc4819a6489f0ce0540663968d"><code>4a560cb</code></a>
release version 0.5 (<a
href="https://redirect.github.com/bheisler/criterion.rs/issues/683">#683</a>)</li>
<li><a
href="https://github.com/bheisler/criterion.rs/commit/3e2849ebf86e27507f783a20647a0fc81c6bfcc7"><code>3e2849e</code></a>
Post v0.4 CHANGELOG updates (<a
href="https://redirect.github.com/bheisler/criterion.rs/issues/680">#680</a>)</li>
<li><a
href="https://github.com/bheisler/criterion.rs/commit/637010e50d3819839cd45d9f5b281c169573416a"><code>637010e</code></a>
Bump clap to version 4 (<a
href="https://redirect.github.com/bheisler/criterion.rs/issues/679">#679</a>)</li>
<li><a
href="https://github.com/bheisler/criterion.rs/commit/39d7e2f9546981d87ae195fe7c68f778afdb66a4"><code>39d7e2f</code></a>
Update to tempfile 3.5 (<a
href="https://redirect.github.com/bheisler/criterion.rs/issues/675">#675</a>)</li>
<li><a
href="https://github.com/bheisler/criterion.rs/commit/8ab2752ccfeece50347c81866a4185f29fd978a2"><code>8ab2752</code></a>
Fix typo in known_limitations.md (<a
href="https://redirect.github.com/bheisler/criterion.rs/issues/674">#674</a>)</li>
<li><a
href="https://github.com/bheisler/criterion.rs/commit/a2112308ef8e3d8fe5a8da41ccb0fba3d5d460c4"><code>a211230</code></a>
chore: replace atty with is-terminal (<a
href="https://redirect.github.com/bheisler/criterion.rs/issues/628">#628</a>)</li>
<li><a
href="https://github.com/bheisler/criterion.rs/commit/a844eb226bb814e6a4e8b35b3b91c74f22ad535b"><code>a844eb2</code></a>
Bump MSRV to 1.60 for csv dependency (<a
href="https://redirect.github.com/bheisler/criterion.rs/issues/665">#665</a>)</li>
<li><a
href="https://github.com/bheisler/criterion.rs/commit/2f5360737807cbe90d149db6199783236f0ef634"><code>2f53607</code></a>
Use OR operator to specify multiple licenses (<a
href="https://redirect.github.com/bheisler/criterion.rs/issues/643">#643</a>)</li>
<li><a
href="https://github.com/bheisler/criterion.rs/commit/86dcd7d323799043c100dbf358409e986a872a11"><code>86dcd7d</code></a>
Fix bug where time over the maximum would be reported as 1ms in quick
mode. (...</li>
<li><a
href="https://github.com/bheisler/criterion.rs/commit/2942aee124e433213f0e9b917bb730bcdc7df6f3"><code>2942aee</code></a>
Remove unnecessary <code>pub</code> from example code (<a
href="https://redirect.github.com/bheisler/criterion.rs/issues/657">#657</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/bheisler/criterion.rs/compare/0.4.0...0.5.0">compare
view</a></li>
</ul>
</details>
<br />


You can trigger a rebase of this PR 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 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)


</details>
> **Note**
> Automatic rebases have been disabled on this pull request as it has
been open for over 30 days.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alexander Theißen <alex.theissen@me.com>
2023-11-07 10:13:41 +01:00
dependabot[bot] 998bbb8bd5 Bump actions/checkout from 3 to 4 (#73)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to
4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/checkout/releases">actions/checkout's
releases</a>.</em></p>
<blockquote>
<h2>v4.0.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Update default runtime to node20 by <a
href="https://github.com/takost"><code>@​takost</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1436">actions/checkout#1436</a></li>
<li>Support fetching without the --progress option by <a
href="https://github.com/simonbaird"><code>@​simonbaird</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1067">actions/checkout#1067</a></li>
<li>Release 4.0.0 by <a
href="https://github.com/takost"><code>@​takost</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1447">actions/checkout#1447</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/takost"><code>@​takost</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/checkout/pull/1436">actions/checkout#1436</a></li>
<li><a
href="https://github.com/simonbaird"><code>@​simonbaird</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/checkout/pull/1067">actions/checkout#1067</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v3...v4.0.0">https://github.com/actions/checkout/compare/v3...v4.0.0</a></p>
<h2>v3.6.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Mark test scripts with Bash'isms to be run via Bash by <a
href="https://github.com/dscho"><code>@​dscho</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1377">actions/checkout#1377</a></li>
<li>Add option to fetch tags even if fetch-depth &gt; 0 by <a
href="https://github.com/RobertWieczoreck"><code>@​RobertWieczoreck</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/579">actions/checkout#579</a></li>
<li>Release 3.6.0 by <a
href="https://github.com/luketomlinson"><code>@​luketomlinson</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/1437">actions/checkout#1437</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/RobertWieczoreck"><code>@​RobertWieczoreck</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/checkout/pull/579">actions/checkout#579</a></li>
<li><a
href="https://github.com/luketomlinson"><code>@​luketomlinson</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/checkout/pull/1437">actions/checkout#1437</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v3.5.3...v3.6.0">https://github.com/actions/checkout/compare/v3.5.3...v3.6.0</a></p>
<h2>v3.5.3</h2>
<h2>What's Changed</h2>
<ul>
<li>Fix: Checkout Issue in self hosted runner due to faulty submodule
check-ins by <a
href="https://github.com/megamanics"><code>@​megamanics</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1196">actions/checkout#1196</a></li>
<li>Fix typos found by codespell by <a
href="https://github.com/DimitriPapadopoulos"><code>@​DimitriPapadopoulos</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/1287">actions/checkout#1287</a></li>
<li>Add support for sparse checkouts by <a
href="https://github.com/dscho"><code>@​dscho</code></a> and <a
href="https://github.com/dfdez"><code>@​dfdez</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1369">actions/checkout#1369</a></li>
<li>Release v3.5.3 by <a
href="https://github.com/TingluoHuang"><code>@​TingluoHuang</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/1376">actions/checkout#1376</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/megamanics"><code>@​megamanics</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/checkout/pull/1196">actions/checkout#1196</a></li>
<li><a
href="https://github.com/DimitriPapadopoulos"><code>@​DimitriPapadopoulos</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/checkout/pull/1287">actions/checkout#1287</a></li>
<li><a href="https://github.com/dfdez"><code>@​dfdez</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/checkout/pull/1369">actions/checkout#1369</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v3...v3.5.3">https://github.com/actions/checkout/compare/v3...v3.5.3</a></p>
<h2>v3.5.2</h2>
<h2>What's Changed</h2>
<ul>
<li>Fix: Use correct API url / endpoint in GHES by <a
href="https://github.com/fhammerl"><code>@​fhammerl</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1289">actions/checkout#1289</a>
based on <a
href="https://redirect.github.com/actions/checkout/issues/1286">#1286</a>
by <a href="https://github.com/1newsr"><code>@​1newsr</code></a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v3.5.1...v3.5.2">https://github.com/actions/checkout/compare/v3.5.1...v3.5.2</a></p>
<h2>v3.5.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Improve checkout performance on Windows runners by upgrading
<code>@​actions/github</code> dependency by <a
href="https://github.com/BrettDong"><code>@​BrettDong</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1246">actions/checkout#1246</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/BrettDong"><code>@​BrettDong</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/checkout/pull/1246">actions/checkout#1246</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/actions/checkout/blob/main/CHANGELOG.md">actions/checkout's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h2>v4.0.0</h2>
<ul>
<li><a
href="https://redirect.github.com/actions/checkout/pull/1067">Support
fetching without the --progress option</a></li>
<li><a
href="https://redirect.github.com/actions/checkout/pull/1436">Update to
node20</a></li>
</ul>
<h2>v3.6.0</h2>
<ul>
<li><a
href="https://redirect.github.com/actions/checkout/pull/1377">Fix: Mark
test scripts with Bash'isms to be run via Bash</a></li>
<li><a href="https://redirect.github.com/actions/checkout/pull/579">Add
option to fetch tags even if fetch-depth &gt; 0</a></li>
</ul>
<h2>v3.5.3</h2>
<ul>
<li><a
href="https://redirect.github.com/actions/checkout/pull/1196">Fix:
Checkout fail in self-hosted runners when faulty submodule are
checked-in</a></li>
<li><a href="https://redirect.github.com/actions/checkout/pull/1287">Fix
typos found by codespell</a></li>
<li><a href="https://redirect.github.com/actions/checkout/pull/1369">Add
support for sparse checkouts</a></li>
</ul>
<h2>v3.5.2</h2>
<ul>
<li><a href="https://redirect.github.com/actions/checkout/pull/1289">Fix
api endpoint for GHES</a></li>
</ul>
<h2>v3.5.1</h2>
<ul>
<li><a href="https://redirect.github.com/actions/checkout/pull/1246">Fix
slow checkout on Windows</a></li>
</ul>
<h2>v3.5.0</h2>
<ul>
<li><a href="https://redirect.github.com/actions/checkout/pull/1237">Add
new public key for known_hosts</a></li>
</ul>
<h2>v3.4.0</h2>
<ul>
<li><a
href="https://redirect.github.com/actions/checkout/pull/1209">Upgrade
codeql actions to v2</a></li>
<li><a
href="https://redirect.github.com/actions/checkout/pull/1210">Upgrade
dependencies</a></li>
<li><a
href="https://redirect.github.com/actions/checkout/pull/1225">Upgrade
<code>@​actions/io</code></a></li>
</ul>
<h2>v3.3.0</h2>
<ul>
<li><a
href="https://redirect.github.com/actions/checkout/pull/1045">Implement
branch list using callbacks from exec function</a></li>
<li><a href="https://redirect.github.com/actions/checkout/pull/1050">Add
in explicit reference to private checkout options</a></li>
<li>[Fix comment typos (that got added in <a
href="https://redirect.github.com/actions/checkout/issues/770">#770</a>)](<a
href="https://redirect.github.com/actions/checkout/pull/1057">actions/checkout#1057</a>)</li>
</ul>
<h2>v3.2.0</h2>
<ul>
<li><a href="https://redirect.github.com/actions/checkout/pull/942">Add
GitHub Action to perform release</a></li>
<li><a href="https://redirect.github.com/actions/checkout/pull/967">Fix
status badge</a></li>
<li><a
href="https://redirect.github.com/actions/checkout/pull/1002">Replace
datadog/squid with ubuntu/squid Docker image</a></li>
<li><a href="https://redirect.github.com/actions/checkout/pull/964">Wrap
pipeline commands for submoduleForeach in quotes</a></li>
<li><a
href="https://redirect.github.com/actions/checkout/pull/1029">Update
<code>@​actions/io</code> to 1.1.2</a></li>
<li><a
href="https://redirect.github.com/actions/checkout/pull/1039">Upgrading
version to 3.2.0</a></li>
</ul>
<h2>v3.1.0</h2>
<ul>
<li><a href="https://redirect.github.com/actions/checkout/pull/939">Use
<code>@​actions/core</code> <code>saveState</code> and
<code>getState</code></a></li>
<li><a href="https://redirect.github.com/actions/checkout/pull/922">Add
<code>github-server-url</code> input</a></li>
</ul>
<h2>v3.0.2</h2>
<ul>
<li><a href="https://redirect.github.com/actions/checkout/pull/770">Add
input <code>set-safe-directory</code></a></li>
</ul>
<h2>v3.0.1</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/checkout/commit/3df4ab11eba7bda6032a0b82a6bb43b11571feac"><code>3df4ab1</code></a>
Release 4.0.0 (<a
href="https://redirect.github.com/actions/checkout/issues/1447">#1447</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/8b5e8b768746b50394015010d25e690bfab9dfbc"><code>8b5e8b7</code></a>
Support fetching without the --progress option (<a
href="https://redirect.github.com/actions/checkout/issues/1067">#1067</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/97a652b80035363df47baee5031ec8670b8878ac"><code>97a652b</code></a>
Update default runtime to node20 (<a
href="https://redirect.github.com/actions/checkout/issues/1436">#1436</a>)</li>
<li>See full diff in <a
href="https://github.com/actions/checkout/compare/v3...v4">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/checkout&package-manager=github_actions&previous-version=3&new-version=4)](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)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alexander Theißen <alex.theissen@me.com>
2023-11-07 10:13:22 +01:00
StackOverflowExcept1on fd3b1f856b chore: fix clippy warnings on latest nightly rust (#78)
btw `#[cfg(...)]` was used implicitly and expanded always lead to `use
alloc::collections::BTreeMap as Map;`
the second `cfg(std)` just doesn't work bcz `featureS`
2023-11-07 10:03:36 +01:00
StackOverflowExcept1on fdce5c64f1 chore: modernize WASM tests (#79)
I tried locally merge `fix-tests` and `fix-clippy` branches and CI
should work after my PRs
2023-11-07 09:14:09 +01:00
dependabot[bot] 6307588b3d Update wasmparser requirement from 0.110 to 0.111 (#71)
Updates the requirements on
[wasmparser](https://github.com/bytecodealliance/wasm-tools) to permit
the latest version.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/2e63788ad535724e49a0da036281d9663b6d5294"><code>2e63788</code></a>
Bump crate versions (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1173">#1173</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/c17cf172b319a0f07f797a224a4152fa42ff581d"><code>c17cf17</code></a>
Disallow <code>(borrow $t)</code> in function result types (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1162">#1162</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/9fb2019dca043434837c996ec5105de350bccaea"><code>9fb2019</code></a>
wit-component: Add doc comment printing to WitPrinter (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1167">#1167</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/a0c46a7a16fef5cc9143ad30c77f19303c27d907"><code>a0c46a7</code></a>
Probe for post-return instead of asserting existence (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1159">#1159</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/4678a61ae428da21299aeae016bd56d5e248248f"><code>4678a61</code></a>
[wit-component] add shared-everything linking support (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1133">#1133</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/06aa46eda73d02b38c924c01806aac7eece5d58b"><code>06aa46e</code></a>
Extract <code>LocalParser</code> for parsing <code>local</code>. (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1156">#1156</a>)
(<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1161">#1161</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/3e1fb68b217b210c816a504fa7abe0907c9c9039"><code>3e1fb68</code></a>
Add text format and printing support for <code>dylink.0</code> (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1135">#1135</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/9ed609db08183dc2b2fe239af5204bb9d6456a8a"><code>9ed609d</code></a>
Fix a panic decoding WIT from a component (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1157">#1157</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/2b4ade8c808f5c26a701d1c7a883ea1893d2553f"><code>2b4ade8</code></a>
Rename <code>Resolve::push_wasm</code> to <code>push_flat</code> (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1158">#1158</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/559ede0a436240cb7dfe162c568f398655e9b18c"><code>559ede0</code></a>
Update wasm-compose example based on latest changes. (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1154">#1154</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/bytecodealliance/wasm-tools/compare/wasmparser-0.110.0...wasmparser-0.111.0">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)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-20 11:45:30 +02:00
dependabot[bot] ca0a83ff91 Update wasmparser requirement from 0.109 to 0.110 (#69)
Updates the requirements on
[wasmparser](https://github.com/bytecodealliance/wasm-tools) to permit
the latest version.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/94ad03bdb292549d6d699518343bad5639c05e8d"><code>94ad03b</code></a>
Bump crate versions (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1145">#1145</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/dd6ddb31e9ffdc7cc04284a544a2738dc28e88c7"><code>dd6ddb3</code></a>
Fix encoding of type information in wasm-compose (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1141">#1141</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/6f4508ab3b96515b44d842c6cac5879358e76fe4"><code>6f4508a</code></a>
Move the wasm-tools CLI to the <code>src/bin</code> directory (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1144">#1144</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/c18d59fdfc906c0f9aae2f05318b6b890fc8d429"><code>c18d59f</code></a>
Fix wit-component not removing dead type imports (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1143">#1143</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/69b5213dda658510f8c14c484520bd3a2619a8a9"><code>69b5213</code></a>
Disallow empty types in the component model (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1142">#1142</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/23a2d6c56ec3698e809c7aad1806c5cd188dc658"><code>23a2d6c</code></a>
Convert more things to links in the rustdoc documentation. (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1137">#1137</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/ac8d61669ee1188b4bbd09168fcb62944bcc55d1"><code>ac8d616</code></a>
Fix the <code>Parser::parse</code> example to work with nested
components (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1136">#1136</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/188de0fd412dd01dd41bf91c897935934282c13d"><code>188de0f</code></a>
Fix a few typos in resolver (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1132">#1132</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/cea2220ebb4e45041ef8c3ab13c0a87add632714"><code>cea2220</code></a>
Move component <code>value</code> support behind a feature flag (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1131">#1131</a>)</li>
<li>See full diff in <a
href="https://github.com/bytecodealliance/wasm-tools/compare/wasmparser-0.109.0...wasmparser-0.110.0">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 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)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-01 13:09:32 +02:00
dependabot[bot] 16469520a4 Update wasmi requirement from 0.29 to 0.31 (#70)
Updates the requirements on [wasmi](https://github.com/paritytech/wasmi)
to permit the latest version.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/paritytech/wasmi/releases">wasmi's
releases</a>.</em></p>
<blockquote>
<h2>v0.31.0 - 2023-07-31</h2>
<h3>Added</h3>
<ul>
<li>Added <code>ResourceLimiter</code> API known from Wasmtime. (<a
href="https://redirect.github.com/paritytech/wasmi/pull/737">paritytech/wasmi#737</a>)
<ul>
<li>This API allows to limit growable Wasm resources such as Wasm tables
and linear memories.</li>
<li>Special thanks to <a href="https://github.com/graydon">Graydon
Hoare</a> for contributing this feature!</li>
</ul>
</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fixed a bug were <code>Module::len_globals</code> internal API
returned length of linear memories instead. (<a
href="https://redirect.github.com/paritytech/wasmi/pull/741">paritytech/wasmi#741</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Removed <code>intx</code> crate dependency. (<a
href="https://redirect.github.com/paritytech/wasmi/pull/727">paritytech/wasmi#727</a>)
<ul>
<li>The dependence on the <code>intx</code> crate was accidental and not
really required at any time.</li>
</ul>
</li>
<li>Optimized <code>f64.const</code> instructions for <code>f64</code>
constant values that can losslessly be encoded as 32-bit
<code>f32</code> value. (<a
href="https://redirect.github.com/paritytech/wasmi/pull/746">paritytech/wasmi#746</a>)</li>
</ul>
<h3>Dev. Note</h3>
<ul>
<li>We now publish and record graphs of benchmarks over time. (<a
href="https://redirect.github.com/paritytech/wasmi/pull/740">paritytech/wasmi#740</a>)
<ul>
<li>This allows <code>wasmi</code> developers to better inspect
performance changes over longer periods of time.</li>
</ul>
</li>
<li>Updated dev. dependencies:
<ul>
<li><code>criterion 0.4.0</code> -&gt; <code>0.5.0</code></li>
<li><code>wast 0.52.0</code> -&gt; <code>0.62.0</code></li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/paritytech/wasmi/blob/master/CHANGELOG.md">wasmi's
changelog</a>.</em></p>
<blockquote>
<h2>[<code>0.31.0</code>] - 2023-07-31</h2>
<h3>Added</h3>
<ul>
<li>Added <code>ResourceLimiter</code> API known from Wasmtime. (<a
href="https://redirect.github.com/paritytech/wasmi/pull/737">paritytech/wasmi#737</a>)
<ul>
<li>This API allows to limit growable Wasm resources such as Wasm tables
and linear memories.</li>
<li>Special thanks to <a href="https://github.com/graydon">Graydon
Hoare</a> for contributing this feature!</li>
</ul>
</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fixed a bug were <code>Module::len_globals</code> internal API
returned length of linear memories instead. (<a
href="https://redirect.github.com/paritytech/wasmi/pull/741">paritytech/wasmi#741</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Removed <code>intx</code> crate dependency. (<a
href="https://redirect.github.com/paritytech/wasmi/pull/727">paritytech/wasmi#727</a>)
<ul>
<li>The dependence on the <code>intx</code> crate was accidental and not
really required at any time.</li>
</ul>
</li>
<li>Optimized <code>f64.const</code> instructions for <code>f64</code>
constant values that can losslessly be encoded as 32-bit
<code>f32</code> value. (<a
href="https://redirect.github.com/paritytech/wasmi/pull/746">paritytech/wasmi#746</a>)</li>
</ul>
<h3>Dev. Note</h3>
<ul>
<li>We now publish and record graphs of benchmarks over time. (<a
href="https://redirect.github.com/paritytech/wasmi/pull/740">paritytech/wasmi#740</a>)
<ul>
<li>This allows <code>wasmi</code> developers to better inspect
performance changes over longer periods of time.</li>
</ul>
</li>
<li>Updated dev. dependencies:
<ul>
<li><code>criterion 0.4.0</code> -&gt; <code>0.5.0</code></li>
<li><code>wast 0.52.0</code> -&gt; <code>0.62.0</code></li>
</ul>
</li>
</ul>
<h2>[<code>0.30.0</code>] - 2023-05-28</h2>
<h3>Changed</h3>
<ul>
<li>Optimized <code>wasmi</code> bytecode memory consumption. (<a
href="https://redirect.github.com/paritytech/wasmi/pull/718">paritytech/wasmi#718</a>)
<ul>
<li>This reduced the memory consumption of <code>wasmi</code> bytecode
by organizing the instructions
into so-called instruction words, effectively reducing the amount of
bytes required per
<code>wasmi</code> instruction 16 bytes to 8 bytes.
There was an experiment with 4 bytes but experiments confirmed that 8
bytes per instruction
word was the sweetspot for <code>wasmi</code> execution and translation
performance.</li>
<li>This did not affect execution performance too much but we saw
performance improvements
for translation from Wasm to <code>wasmi</code> bytecode by roughly
15-20%.</li>
</ul>
</li>
<li>Optimized <code>call</code> and <code>return_call</code> for Wasm
module internal calls. (<a
href="https://redirect.github.com/paritytech/wasmi/pull/724">paritytech/wasmi#724</a>)
<ul>
<li><code>wasmi</code> bytecode now differentiates between calls to Wasm
module internal functions
and imported functions which allows the <code>wasmi</code> bytecode
executor to perform the common
internal calls more efficiently.</li>
<li>This led to an execution performance improvement across the board
but especially for
call intense workloads of up to 30% in some test cases.</li>
</ul>
</li>
</ul>
<h2>[<code>0.29.0</code>] - 2023-03-20</h2>
<h3>Added</h3>
<ul>
<li>Added support for <code>extended-const</code> Wasm proposal. (<a
href="https://redirect.github.com/paritytech/wasmi/pull/707">paritytech/wasmi#707</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/paritytech/wasmi/commit/983ef37b3e2acf38a898e191c9bbbd2bc2c05da7"><code>983ef37</code></a>
Prepare <code>wasmi</code> release for version <code>0.31.0</code> (<a
href="https://redirect.github.com/paritytech/wasmi/issues/748">#748</a>)</li>
<li><a
href="https://github.com/paritytech/wasmi/commit/af8c588c9059c5299da812958d7a71dc024d2938"><code>af8c588</code></a>
Publishing benchmarks for graphs (<a
href="https://redirect.github.com/paritytech/wasmi/issues/740">#740</a>)</li>
<li><a
href="https://github.com/paritytech/wasmi/commit/ee577f268db3bc8b95c685205517c37b4800fa68"><code>ee577f2</code></a>
Refactor <code>reftype</code> <code>Transposer</code> conversion utility
(<a
href="https://redirect.github.com/paritytech/wasmi/issues/747">#747</a>)</li>
<li><a
href="https://github.com/paritytech/wasmi/commit/ed12feb9f286d13bbdce50491c4d50487319f316"><code>ed12feb</code></a>
Add <code>F64Const32</code> instruction (<a
href="https://redirect.github.com/paritytech/wasmi/issues/746">#746</a>)</li>
<li><a
href="https://github.com/paritytech/wasmi/commit/fbe1810a209f8884883333963b6d03c7421c5e5f"><code>fbe1810</code></a>
Fix <code>clippy</code> warning (<a
href="https://redirect.github.com/paritytech/wasmi/issues/745">#745</a>)</li>
<li><a
href="https://github.com/paritytech/wasmi/commit/e5fdb7fe32b9151dff6a39c8a4d516817cc72dc2"><code>e5fdb7f</code></a>
fixes <a
href="https://redirect.github.com/paritytech/wasmi/issues/735">#735</a>:
copy paste typo (<a
href="https://redirect.github.com/paritytech/wasmi/issues/741">#741</a>)</li>
<li><a
href="https://github.com/paritytech/wasmi/commit/4860ecc877a6e13a8c4924be6d8f287f126752ad"><code>4860ecc</code></a>
Support for <code>ResourceLimiter</code> API (<a
href="https://redirect.github.com/paritytech/wasmi/issues/737">#737</a>)</li>
<li><a
href="https://github.com/paritytech/wasmi/commit/799995da7afb0ae02bb4fd1c9f242fe07c7ad824"><code>799995d</code></a>
make <code>ConstRef</code> based on <code>u32</code> instead of
<code>intx::U24</code> (<a
href="https://redirect.github.com/paritytech/wasmi/issues/727">#727</a>)</li>
<li><a
href="https://github.com/paritytech/wasmi/commit/4fb164ce6b9a06af65923596711f5988384d6e13"><code>4fb164c</code></a>
Prepare release of <code>wasmi</code> version <code>0.30.0</code> (<a
href="https://redirect.github.com/paritytech/wasmi/issues/726">#726</a>)</li>
<li><a
href="https://github.com/paritytech/wasmi/commit/a6165a6ff9ad07f525b3352b0ab4442da32e0f7f"><code>a6165a6</code></a>
smol clean-up (<a
href="https://redirect.github.com/paritytech/wasmi/issues/725">#725</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/paritytech/wasmi/compare/v0.29.0...v0.31.0">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 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)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-01 09:44:27 +02:00
dependabot[bot] 1d83a81c05 Update wasmparser requirement from 0.108 to 0.109 (#68)
Updates the requirements on
[wasmparser](https://github.com/bytecodealliance/wasm-tools) to permit
the latest version.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/b19ce5165cf2b0c20e01e0dc238712c4d44b42be"><code>b19ce51</code></a>
Bump versions (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1128">#1128</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/7cec276e1a3e600bd8036f672c9483d875f164e8"><code>7cec276</code></a>
Remove public deps from <code>wasm-metadata</code>'s API (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1130">#1130</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/c91f611be4b8c4ea5d9d936594f68c0104dd80dd"><code>c91f611</code></a>
Update handling and parsing of element segments (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1126">#1126</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/07229fec475d38a56949a1ddab354e5813cc7ca7"><code>07229fe</code></a>
Update to new GC cast instruction encoding (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1127">#1127</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/3948ae92972785b252f3c76af601ac83ee3ac3da"><code>3948ae9</code></a>
Update wit-component's <code>bitflags</code> dependency (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1123">#1123</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/8c7e3c5df72d075b66dd5d18ac4bee10041b1353"><code>8c7e3c5</code></a>
Update serde_yaml used by <code>wasm-compose</code> (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1124">#1124</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/6f59f98f7c4f94632df7c88627bbdc46db81ab02"><code>6f59f98</code></a>
Implement returning option/result of a handle in code generation (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1121">#1121</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/42f4bbf5e4218a83cca93b900ecd681b92a89b1a"><code>42f4bbf</code></a>
Fix parsing out-of-bounds <code>nan</code> constants (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1111">#1111</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/aa161581efeafe5e2be665925b365394b09473c9"><code>aa16158</code></a>
Fix &quot;duplicate identifier for field&quot; for subtype fields (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1117">#1117</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/3186350fca1a749f933334270bd46582e2130ccb"><code>3186350</code></a>
Don't lex the entire input immediately (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1110">#1110</a>)</li>
<li>See full diff in <a
href="https://github.com/bytecodealliance/wasm-tools/compare/wasmparser-0.108.0...wasmparser-0.109.0">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 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)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-21 17:11:34 +02:00
dependabot[bot] 7fa2cd3cd2 Update wasmparser requirement from 0.104 to 0.108 (#67)
Updates the requirements on
[wasmparser](https://github.com/bytecodealliance/wasm-tools) to permit
the latest version.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/620b4ab26820b67f93e70022e6cf656c5d7fb108"><code>620b4ab</code></a>
Bump crate versions (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1118">#1118</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/46f9053e4100f6341ae704c0ee468b18a00ba1e3"><code>46f9053</code></a>
Update binary format for <code>resource.drop</code> (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1116">#1116</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/b3990e8b59e46b7acc76c8d7b2cf4470f08e2cd6"><code>b3990e8</code></a>
Reduce verbosity in wasmparser <code>Types</code> API (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1106">#1106</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/27f511cc60f7a83ae5149cc36105aa6233f13a9b"><code>27f511c</code></a>
Fix wit-smith syntax for static functions (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1113">#1113</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/2413c71e542a371044c073006b3f83158344f327"><code>2413c71</code></a>
Test a wasm target in CI (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1112">#1112</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/4a568a3eb3d82ac3fa92bd8f64ff69116fca307a"><code>4a568a3</code></a>
Don't panic in wasmprinter with non-function types (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1114">#1114</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/6dae59e0b80c17ef7cee0ce67c886ad92a184049"><code>6dae59e</code></a>
fix: assertions for wasm target (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1109">#1109</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/3379199d0d58da323740f7fdaa4618b459851b5d"><code>3379199</code></a>
feat(wasm-compose): --definitions configuration for components with
exports d...</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/195cc43bcf3b76f4cf19310dbcbd7825689f3b6a"><code>195cc43</code></a>
Fix exponential behavior elaborating WIT world exports (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1107">#1107</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/14b48186365c1340861f0c14485d6a0f4429de9e"><code>14b4818</code></a>
Shrink the size of wast text tokens (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1103">#1103</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/bytecodealliance/wasm-tools/compare/wasmparser-0.104.0...wasmparser-0.108.0">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 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)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-14 15:03:30 +09:00
dependabot[bot] 28e964d9d1 Update wasmparser requirement from 0.103 to 0.104 (#60)
Updates the requirements on
[wasmparser](https://github.com/bytecodealliance/wasm-tools) to permit
the latest version.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/1e573fb1ae0ca457be1d06aa55a2fab06fa13b44"><code>1e573fb</code></a>
Bump crate versions (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/1002">#1002</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/11cf92cf663cda0d68b5823e7d868d0ba7acdc84"><code>11cf92c</code></a>
Initial implementation of resource types (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/966">#966</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/207472c004b0e69a721529b08e4cd3ec24394b26"><code>207472c</code></a>
[wasm-encoder] Add encoding for coredumps (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/998">#998</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/016838279808be4d257f1b58b9942420f0a09855"><code>0168382</code></a>
Fix wasm-encoder's encoding of element segments (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/995">#995</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/6e660de665ccb68a10b49d8fb726579d1874fd6f"><code>6e660de</code></a>
Support core wasm inputs to <code>wasm-tools component wit</code> (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/994">#994</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/734accf3197ef82782e6f81ab8e53311df0a64bb"><code>734accf</code></a>
Require 'alias core export' when aliasing core item (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/997">#997</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/95c6bf7de19c26db41f5e40b9a3af61eecc7de57"><code>95c6bf7</code></a>
Add a new <code>wit-smith</code> subcommand (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/992">#992</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/f69b0860ba8afec33b38992c04e1c994b6bcfd76"><code>f69b086</code></a>
Fix some fuzz-discovered issues in WIT parsing and encoding (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/991">#991</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/b00cc2c965de53a09fe67d3839083c1e32ada460"><code>b00cc2c</code></a>
Add a <code>--skeleton</code> option to <code>wasm-tools print</code>
(<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/990">#990</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/d1f35fcd1ad64c9baceae81b1b5cb98e25c7b7de"><code>d1f35fc</code></a>
wasm-mutate: Fix removing table 0 when an element references it (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/984">#984</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/bytecodealliance/wasm-tools/compare/wasmparser-0.103.0...wasmparser-0.104.0">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 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)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-28 12:11:43 +02:00
dependabot[bot] c07099b8d5 Update wasmparser requirement from 0.102 to 0.103 (#59)
Updates the requirements on
[wasmparser](https://github.com/bytecodealliance/wasm-tools) to permit
the latest version.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/d808ad752f4e1e5e7aaecc226813162e2b0d0655"><code>d808ad7</code></a>
Bump crate verisons (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/982">#982</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/b17fc48a23152735bafd8f7ee95e3b55683d9511"><code>b17fc48</code></a>
Optimize types in wasmparser slightly (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/979">#979</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/874e2fa79ff0c01b1594aed13f5e78b6f1e84416"><code>874e2fa</code></a>
Improve wit component errors when failing to decode function (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/978">#978</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/027507a75a705774c08b8b646ae9b9d70c3f702c"><code>027507a</code></a>
wit-component: Implement merging <code>Resolve</code>s together (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/974">#974</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/a791205f4e0586bc3565460effbc22e01192b155"><code>a791205</code></a>
Update wasm-tools compose example with latest cargo component (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/976">#976</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/faf3c51fefa93c56215a3838a0f2ebd9932c93d8"><code>faf3c51</code></a>
wast: Update GC proposal instructions (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/972">#972</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/9c94ab1af1443f79b27b30218e29f1f0fc0260c0"><code>9c94ab1</code></a>
wasmparser: Pack <code>RefType</code> into a <code>[u8; 3]</code> (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/971">#971</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/d550bd5491f9433bc42601f03a632ade53805b62"><code>d550bd5</code></a>
<code>wasmparser</code>: turn table index in the elements section into
an <code>Option</code> (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/957">#957</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/3af2562b91fbe5ea225f193b3dc2747142dce18e"><code>3af2562</code></a>
tests(wit-component): update <code>wasi-http</code> interface (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/969">#969</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/1e0052974277b3cce6c3703386e4e90291da2b24"><code>1e00529</code></a>
preserve <code>cabi_post_</code> exports when appropriate (<a
href="https://redirect.github.com/bytecodealliance/wasm-tools/issues/965">#965</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/bytecodealliance/wasm-tools/compare/wasmparser-0.102.0...wasmparser-0.103.0">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 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)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-14 10:39:34 +02:00
dependabot[bot] 6039337457 Update wasmi requirement from 0.28 to 0.29 (#58)
Updates the requirements on [wasmi](https://github.com/paritytech/wasmi)
to permit the latest version.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/paritytech/wasmi/releases">wasmi's
releases</a>.</em></p>
<blockquote>
<h2>v0.29.0 - 2023-03-20</h2>
<h3>Added</h3>
<ul>
<li>Added support for <code>extended-const</code> Wasm proposal. (<a
href="https://redirect.github.com/paritytech/wasmi/pull/707">paritytech/wasmi#707</a>)</li>
<li>Added fuel consumption modes. (<a
href="https://redirect.github.com/paritytech/wasmi/pull/706">paritytech/wasmi#706</a>)
<ul>
<li>This allows eager and lazy fuel consumption modes to be used which
mainly affects bulk operations such as <code>table.copy</code> and
<code>memory.grow</code>.
Eager fuel consumption always consumes fuel before a bulk operation for
the
total amount independent of success or failure of the operation whereras
lazy fuel consumption only consumes fuel for successful executions.</li>
</ul>
</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Normalize fuel costs of all instructions. (<a
href="https://redirect.github.com/paritytech/wasmi/pull/705">paritytech/wasmi#705</a>)
<ul>
<li>With this change most instructions cost roughly 1 fuel upon
execution.
This is more similar to how Wasmtime deals with fuel metered instruction
costs.
Before this change <code>wasmi</code> tried to have fuel costs that more
closely mirror
the computation intensity of the respective instruction according to
benchmarks.</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/paritytech/wasmi/blob/master/CHANGELOG.md">wasmi's
changelog</a>.</em></p>
<blockquote>
<h2>[<code>0.29.0</code>] - 2023-03-20</h2>
<h3>Added</h3>
<ul>
<li>Added support for <code>extended-const</code> Wasm proposal. (<a
href="https://redirect.github.com/paritytech/wasmi/pull/707">paritytech/wasmi#707</a>)</li>
<li>Added fuel consumption modes. (<a
href="https://redirect.github.com/paritytech/wasmi/pull/706">paritytech/wasmi#706</a>)
<ul>
<li>This allows eager and lazy fuel consumption modes to be used which
mainly affects bulk operations such as <code>table.copy</code> and
<code>memory.grow</code>.
Eager fuel consumption always consumes fuel before a bulk operation for
the
total amount independent of success or failure of the operation whereras
lazy fuel consumption only consumes fuel for successful executions.</li>
</ul>
</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Normalize fuel costs of all instructions. (<a
href="https://redirect.github.com/paritytech/wasmi/pull/705">paritytech/wasmi#705</a>)
<ul>
<li>With this change most instructions cost roughly 1 fuel upon
execution.
This is more similar to how Wasmtime deals with fuel metered instruction
costs.
Before this change <code>wasmi</code> tried to have fuel costs that more
closely mirror
the computation intensity of the respective instruction according to
benchmarks.</li>
</ul>
</li>
</ul>
<h2>[<code>0.28.0</code>] - 2023-03-01</h2>
<h3>Added</h3>
<ul>
<li>Added support for the <code>tail-call</code> Wasm proposal. (<a
href="https://redirect.github.com/paritytech/wasmi/pull/683">paritytech/wasmi#683</a>)</li>
<li>Added support for <code>Linker</code> defined host functions. (<a
href="https://redirect.github.com/paritytech/wasmi/pull/692">paritytech/wasmi#692</a>)
<ul>
<li>Apparently this PR introduced some performance wins for the Wasm
target according to our tests.
This information shall be taken with a grain of salt since we are not
sure why those performance
improvement occured since the PR's functionality is orthogonal to Wasm
engine performance.</li>
<li>Required precursor refactoring PR: <a
href="https://redirect.github.com/paritytech/wasmi/pull/681">paritytech/wasmi#681</a></li>
</ul>
</li>
</ul>
<h3>Changed</h3>
<ul>
<li>The <code>wasmi_wasi</code> crate now more closely mirrors the
<code>wasmtime_wasi</code> crate API. (<a
href="https://redirect.github.com/paritytech/wasmi/pull/700">paritytech/wasmi#700</a>)</li>
</ul>
<h3>Internal</h3>
<ul>
<li>Refactor the <code>wasmi</code> Wasm engine to handle Wasm calls and
returns in its core. [(<a
href="https://redirect.github.com/paritytech/wasmi/issues/694">#694</a>)]
<ul>
<li>This improved performance of Wasm function calls significantly at
the cost of host function call performance.</li>
<li>Also this seemed to have impacts Wasm target performance quite
positively, too.</li>
</ul>
</li>
<li>The <code>Store</code> now handles Wasm functions and host functions
separately. (<a
href="https://redirect.github.com/paritytech/wasmi/pull/686">paritytech/wasmi#686</a>)
<ul>
<li>This allows to store Wasm functions into the <code>StoreInner</code>
type which was an important
step towards the major refactoring in [(<a
href="https://redirect.github.com/paritytech/wasmi/issues/694">#694</a>)]</li>
<li>It was expected that host function call performance would degrade by
this PR but our tests
actually showed that the opposite was true and Wasm target performance
was improved overall.</li>
</ul>
</li>
<li>Introduce <code>ValueStackPtr</code> abstraction for the
<code>wasmi</code> engine core. (<a
href="https://redirect.github.com/paritytech/wasmi/pull/688">paritytech/wasmi#688</a>)
<ul>
<li>This change significantly improved performance especially on the
Wasm target according to our tests.</li>
</ul>
</li>
<li>Optimize <code>memory.{load,store}</code> when reading or writing
single bytes. (<a
href="https://redirect.github.com/paritytech/wasmi/pull/689">paritytech/wasmi#689</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/paritytech/wasmi/commit/23d8d8c684255f2d63526baa348ab3eb3d249de0"><code>23d8d8c</code></a>
Prepare <code>wasmi</code> release of version <code>0.29.0</code> (<a
href="https://redirect.github.com/paritytech/wasmi/issues/708">#708</a>)</li>
<li><a
href="https://github.com/paritytech/wasmi/commit/eb8d73fd3b2a7f9134bc46d391b6a6963439dbd6"><code>eb8d73f</code></a>
Add <code>extended-const</code> Wasm proposal support (<a
href="https://redirect.github.com/paritytech/wasmi/issues/707">#707</a>)</li>
<li><a
href="https://github.com/paritytech/wasmi/commit/6dbbada8099511e538fb2a26e583012df0c90b5c"><code>6dbbada</code></a>
Add fuel consumption modes (<a
href="https://redirect.github.com/paritytech/wasmi/issues/706">#706</a>)</li>
<li><a
href="https://github.com/paritytech/wasmi/commit/cf7736f57abb7dec469d5485f4a80fcf3aa2a392"><code>cf7736f</code></a>
Normalize fuel costs to roughly 1 fuel per executed instruction (<a
href="https://redirect.github.com/paritytech/wasmi/issues/705">#705</a>)</li>
<li><a
href="https://github.com/paritytech/wasmi/commit/223f815d087fb918493b243182ae24bb960d8336"><code>223f815</code></a>
Update and refactor the <code>wasmi_wasi</code> crate (<a
href="https://redirect.github.com/paritytech/wasmi/issues/700">#700</a>)</li>
<li>See full diff in <a
href="https://github.com/paritytech/wasmi/compare/v0.28.0...v0.29.0">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 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)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-21 00:11:34 +01:00
dependabot[bot] 51daef9eba Update wasmparser requirement from 0.101 to 0.102 (#57)
Updates the requirements on
[wasmparser](https://github.com/bytecodealliance/wasm-tools) to permit
the latest version.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/1d75a98fe32f9f4ea8cca2e51377116201e60e81"><code>1d75a98</code></a>
Bump crate versions (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/950">#950</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/cfc1d6052e4596ba6c577b1bb192fc6423b46154"><code>cfc1d60</code></a>
Fix size/align calculations for WIT variants (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/948">#948</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/ae010afe5a252b645fcfebf0b32d7a42384c57b8"><code>ae010af</code></a>
Increase limits on component/module/instance types (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/947">#947</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/6da2f7490d12c36cc3652bb2c150b13262892af2"><code>6da2f74</code></a>
Restrict component import/export overlap (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/946">#946</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/efb9316b2fd462150c259a11a984a59d3e0cbfd8"><code>efb9316</code></a>
Update support for the relaxed-simd proposal (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/944">#944</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/56cdbdd3fc6b1aca1afb13268bc5f3494e9c5b6c"><code>56cdbdd</code></a>
Increase the maximum type size to 1M (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/945">#945</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/c892013426b5143b3e6108d2fc42ef825e63fe88"><code>c892013</code></a>
Improve validation error when component model feature not enabled (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/939">#939</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/cdbaae2272b12bc70ceb76587f0f9c8968b7ffe1"><code>cdbaae2</code></a>
bump versions (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/942">#942</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/07a55c628d20a9f5cb21c684da430d9453c3f6a5"><code>07a55c6</code></a>
wasm-compose: update the example for latest tooling. (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/941">#941</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/4ee705fbb5600ae51ec3192b5a1cbf8f67bfda95"><code>4ee705f</code></a>
Remove outdated <code>is_char</code> check in ABI lowering (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/938">#938</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/bytecodealliance/wasm-tools/compare/wasmparser-0.101.0...wasmparser-0.102.0">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 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)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-07 03:19:53 +01:00
Alexander Theißen 3ba9c2cfa1 Add benchmarks for wasmi builtin metering (#56)
* Upgraded to newest wasmi
* Refactored benchmarks
* Two new benchmark strategies (`no_metering` and `wasmi_builtin`)

We can now benchmark the execution of modules using our two
instrumentation strategies in addition to no metering (as a baseline)
and wasmi's builtin metering.

We can learn from the following results (ran on my M1) that the builtin
metering decisively outperforms the instrumentation on every single
fixture.

cc @Robbepop 

```
coremark/no_metering                    [15.586 s 15.588 s 15.589 s]
coremark/wasmi_builtin                  [16.403 s 16.414 s 16.434 s]
coremark/host_function                  [18.245 s 18.248 s 18.252 s]
coremark/mutable_global                 [20.476 s 20.486 s 20.505 s]

recursive_ok/no_metering                [111.32 µs 111.33 µs 111.34 µs]
recursive_ok/wasmi_builtin              [138.64 µs 138.65 µs 138.66 µs]
recursive_ok/host_function              [495.55 µs 495.64 µs 495.78 µs]
recursive_ok/mutable_global             [514.07 µs 514.09 µs 514.11 µs]

fibonacci_recursive/no_metering         [3.9098 µs 3.9102 µs 3.9108 µs]
fibonacci_recursive/wasmi_builtin       [4.3242 µs 4.3246 µs 4.3250 µs]
fibonacci_recursive/host_function       [12.913 µs 12.914 µs 12.915 µs]
fibonacci_recursive/mutable_global      [13.202 µs 13.208 µs 13.212 µs]
              
factorial_recursive/no_metering         [530.72 ns 530.84 ns 530.91 ns]
factorial_recursive/wasmi_builtin       [619.17 ns 619.30 ns 619.44 ns]
factorial_recursive/host_function       [1.7656 µs 1.7657 µs 1.7659 µs]
factorial_recursive/mutable_global      [1.8783 µs 1.8786 µs 1.8788 µs]

count_until/no_metering                 [1.2422 ms 1.2423 ms 1.2424 ms]
count_until/wasmi_builtin               [1.3976 ms 1.3978 ms 1.3981 ms]
count_until/host_function               [4.8074 ms 4.8106 ms 4.8125 ms]
count_until/mutable_global              [5.9161 ms 5.9169 ms 5.9182 ms]

memory_vec_add/no_metering              [4.1630 ms 4.1638 ms 4.1648 ms]
memory_vec_add/wasmi_builtin            [4.3913 ms 4.3925 ms 4.3930 ms]
memory_vec_add/host_function            [8.2925 ms 8.2949 ms 8.2967 ms]
memory_vec_add/mutable_global           [9.1124 ms 9.1152 ms 9.1163 ms]

wasm_kernel::tiny_keccak/no_metering    [613.21 µs 613.42 µs 613.58 µs]
wasm_kernel::tiny_keccak/wasmi_builtin  [617.04 µs 617.46 µs 617.81 µs]
wasm_kernel::tiny_keccak/host_function  [817.24 µs 817.44 µs 817.89 µs]
wasm_kernel::tiny_keccak/mutable_global [873.42 µs 873.90 µs 874.65 µs]

global_bump/no_metering                 [1.4597 ms 1.4598 ms 1.4600 ms]
global_bump/wasmi_builtin               [1.6151 ms 1.6152 ms 1.6153 ms]
global_bump/host_function               [5.5393 ms 5.5418 ms 5.5435 ms]
global_bump/mutable_global              [6.9446 ms 6.9454 ms 6.9461 ms]
```
2023-03-06 22:06:45 +01:00
dependabot[bot] 16297ab942 Update wasmparser requirement from 0.100 to 0.101 (#53)
Updates the requirements on
[wasmparser](https://github.com/bytecodealliance/wasm-tools) to permit
the latest version.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/ca2e77094dc1896d6d8c85d638981c6bfb4f9ae6"><code>ca2e770</code></a>
Bump crate versions (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/931">#931</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/de36f6c60166bcbc7681f6b97dd5990441cb43a6"><code>de36f6c</code></a>
Support wit bindgens adding producer information via component-type
metadata ...</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/902e2898c8965c1b75051bb64ef6d774f46447d2"><code>902e289</code></a>
Add a function to extract a world from a document (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/928">#928</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/c242e9a7e79d989792d1824915ac192a2afb57d9"><code>c242e9a</code></a>
Fix validation of <code>ref.func</code> without function-references (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/925">#925</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/e713d1e8e71b170c880c2ddad8bfb9f992c57b47"><code>e713d1e</code></a>
Fix validation panic with unreachable code (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/926">#926</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/cda63d228ab58ebaccff1d5f544ae3c65a8d506a"><code>cda63d2</code></a>
Run more function-references tests (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/922">#922</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/dd5ad96a52b5095fc4dcb9b305ebe8c8b5041a98"><code>dd5ad96</code></a>
Fix a copy/paste mistake in add-function mutator (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/927">#927</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/e5293d587f463e67d42ca26b151cd7afdc0a5e17"><code>e5293d5</code></a>
Function references (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/701">#701</a>)</li>
<li>See full diff in <a
href="https://github.com/bytecodealliance/wasm-tools/compare/wasmparser-0.100.0...wasmparser-0.101.0">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 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)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-04 22:25:57 +01:00
dependabot[bot] 325cdb8969 Update wasmparser requirement from 0.99 to 0.100 (#51)
Updates the requirements on
[wasmparser](https://github.com/bytecodealliance/wasm-tools) to permit
the latest version.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/0932bc10082c6457a33164beb1b07d64cbdc093e"><code>0932bc1</code></a>
Bump crate versions (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/921">#921</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/c7e5beb2849d8fef26988758de171ac860fe5848"><code>c7e5beb</code></a>
Encode exported instances with nested components (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/918">#918</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/37f63ebefb90b41c1c5757098fe93b192ec04139"><code>37f63eb</code></a>
wit-component: lazily allocate adapter stack when appropriate (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/919">#919</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/fc5ab6cd9165c50afdbb58bb1a65c0bc2cc3fd8c"><code>fc5ab6c</code></a>
Reduce the code size of some wasm-mutate functions (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/917">#917</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/49d3adc05022aee0faa77eeca3bc3872c29fa7fd"><code>49d3adc</code></a>
Implement export type ascription (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/913">#913</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/02291c7a4ba43d3371072fb39908f1cca88e99a3"><code>02291c7</code></a>
Model types-in-worlds as imports (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/916">#916</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/e34c72f8d95220ec1f4a8e189e3af615e9baccb7"><code>e34c72f</code></a>
Add a test suite for the <code>wasm-tools</code> CLI (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/915">#915</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/22c9e0f26240344aadcab7dcb5093f8f7d73780d"><code>22c9e0f</code></a>
Remove function-based subtyping (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/914">#914</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/098ad8230d10bb5e131b9c01a1883045ccbd083d"><code>098ad82</code></a>
Disable float types with <code>floats = false</code> (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/912">#912</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/90e4d87beded25f7285aa9ec06e9d594e071d048"><code>90e4d87</code></a>
Bump crate versions (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/907">#907</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/bytecodealliance/wasm-tools/compare/wasmparser-0.99.0...wasmparser-0.100.0">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 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)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-12 21:38:31 +01:00
dependabot[bot] 53f640af63 Update wasmparser requirement from 0.98 to 0.99 (#48)
Updates the requirements on
[wasmparser](https://github.com/bytecodealliance/wasm-tools) to permit
the latest version.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/278c3ee93f0ebbcb7221b1410a402b62ae56c4ae"><code>278c3ee</code></a>
Bump versions of crates (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/891">#891</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/a7c8b09391b70235bb539ec750aa90798ac1e1ec"><code>a7c8b09</code></a>
Fix a slew of fuzz bugs in wit-{parser,component} (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/886">#886</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/b7eb6aae41dfd7c76dec6f53923b8de4785f1af5"><code>b7eb6aa</code></a>
wasm-mutate: Add an &quot;AddCustomSection&quot; mutator (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/890">#890</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/cacda73ccb6f9f8cc42e8391c77480187c99b48d"><code>cacda73</code></a>
Fix resolving memory names of <code>memory.discard</code> in text format
(<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/888">#888</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/8173865e15f7b259b92093cb283a40655565bbd4"><code>8173865</code></a>
<code>wasm-smith</code>: Add support for the Wasm tail calls proposal
(<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/887">#887</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/507c0541586ca4e4c88cf43c66210140e018b435"><code>507c054</code></a>
Fix references to imported types in the text format (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/885">#885</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/e60c726ee5fafe0a62e18aa4f0924d1298140524"><code>e60c726</code></a>
Manually bump patch versions to move over yanks</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/ed2558cd7764061af02925f111fe762580cc9920"><code>ed2558c</code></a>
Bump versions for real</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/7d5843d19067625c79e8af6561dfe4609b0c6ac8"><code>7d5843d</code></a>
Revert &quot;Bump crate versions (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/884">#884</a>)&quot;</li>
<li>See full diff in <a
href="https://github.com/bytecodealliance/wasm-tools/compare/wasmparser-0.98.0...wasmparser-0.99.0">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 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)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-25 19:00:34 -03:00
dependabot[bot] a667e38b5a Update wasmparser requirement from 0.97 to 0.98 (#47)
Updates the requirements on
[wasmparser](https://github.com/bytecodealliance/wasm-tools) to permit
the latest version.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/e60c726ee5fafe0a62e18aa4f0924d1298140524"><code>e60c726</code></a>
Manually bump patch versions to move over yanks</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/ed2558cd7764061af02925f111fe762580cc9920"><code>ed2558c</code></a>
Bump versions for real</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/7d5843d19067625c79e8af6561dfe4609b0c6ac8"><code>7d5843d</code></a>
Revert &quot;Bump crate versions (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/884">#884</a>)&quot;</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/d23f487448e1f2f3545a36328d70021693d4400c"><code>d23f487</code></a>
Bump crate versions (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/884">#884</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/398b367f79a086a0b2f8fa0f71657d523c29d079"><code>398b367</code></a>
Add experimental memory.discard instruction (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/882">#882</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/9a51f6de46d29cbafd8cc3b3e50bd2447f7e7fb3"><code>9a51f6d</code></a>
VisitOperator: implement delegates for Box&lt;VisitOperator&gt; (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/883">#883</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/208b2e79fbc0ba0c9e63a9ea15e60fcec437b383"><code>208b2e7</code></a>
Fix some minor issues in <code>wit-component</code> (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/881">#881</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/a1fdde03f81aa14709d73fb6ddde21b55d22177c"><code>a1fdde0</code></a>
VisitOperator: implement delegate from &amp;mut VisitOperator (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/880">#880</a>)</li>
<li>See full diff in <a
href="https://github.com/bytecodealliance/wasm-tools/compare/wasmparser-0.97.0...wasmparser-0.98.1">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 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)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-20 21:54:51 -03:00
dependabot[bot] b67ac31310 Update wasmparser requirement from 0.96 to 0.97 (#45)
Updates the requirements on
[wasmparser](https://github.com/bytecodealliance/wasm-tools) to permit
the latest version.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/bytecodealliance/wasm-tools/commits">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 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)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-17 23:34:52 -03:00
dependabot[bot] bee3aebeef Update wasmi requirement from 0.21 to 0.22 (#44)
Updates the requirements on [wasmi](https://github.com/paritytech/wasmi)
to permit the latest version.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/paritytech/wasmi/releases">wasmi's
releases</a>.</em></p>
<blockquote>
<h2>v0.22.0 - 2023-01-16</h2>
<h3>Added</h3>
<ul>
<li>Add missing <code>TypedFunc::call_resumable</code> API. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/605">paritytech/wasmi#605</a>)
<ul>
<li>So far resumable calls were only available for the <code>Func</code>
type.
However, there was no technical reason why it was not implemented
for <code>TypedFunc</code> so this mirrored API now exists.</li>
<li>This also cleans up rough edges with the
<code>Func::call_resumable</code> API.</li>
</ul>
</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Clean up the <code>wasmi_core</code> crate API. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/607">paritytech/wasmi#607</a>,
<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/608">paritytech/wasmi#608</a>,
<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/609">paritytech/wasmi#609</a>)
<ul>
<li>This removes plenty of traits from the public interface of the crate
which greatly simplifies the API surface for users.</li>
<li>The <code>UntypedValue</code> type gained some new methods to
replace functionality
that was provided in parts by the removed traits.</li>
</ul>
</li>
<li>The <code>wasmi</code> crate now follows the Wasmtime API a bit more
closely. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/613">paritytech/wasmi#613</a>)</li>
</ul>
<h3>Internal</h3>
<ul>
<li>The <code>Store</code> and <code>Engine</code> types are better
decoupled from their generic parts. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/610">paritytech/wasmi#610</a>,
<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/611">paritytech/wasmi#611</a>)
<ul>
<li>This might reduce binary bloat and may have positive effects on the
performance.
In fact we measured significant performance improvements on the Wasm
target.</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/paritytech/wasmi/blob/master/CHANGELOG.md">wasmi's
changelog</a>.</em></p>
<blockquote>
<h2>[<code>0.22.0</code>] - 2023-01-16</h2>
<h3>Added</h3>
<ul>
<li>Add missing <code>TypedFunc::call_resumable</code> API. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/605">paritytech/wasmi#605</a>)
<ul>
<li>So far resumable calls were only available for the <code>Func</code>
type.
However, there was no technical reason why it was not implemented
for <code>TypedFunc</code> so this mirrored API now exists.</li>
<li>This also cleans up rough edges with the
<code>Func::call_resumable</code> API.</li>
</ul>
</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Clean up the <code>wasmi_core</code> crate API. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/607">paritytech/wasmi#607</a>,
<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/608">paritytech/wasmi#608</a>,
<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/609">paritytech/wasmi#609</a>)
<ul>
<li>This removes plenty of traits from the public interface of the crate
which greatly simplifies the API surface for users.</li>
<li>The <code>UntypedValue</code> type gained some new methods to
replace functionality
that was provided in parts by the removed traits.</li>
</ul>
</li>
<li>The <code>wasmi</code> crate now follows the Wasmtime API a bit more
closely. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/613">paritytech/wasmi#613</a>)</li>
</ul>
<h3>Internal</h3>
<ul>
<li>The <code>Store</code> and <code>Engine</code> types are better
decoupled from their generic parts. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/610">paritytech/wasmi#610</a>,
<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/611">paritytech/wasmi#611</a>)
<ul>
<li>This might reduce binary bloat and may have positive effects on the
performance.
In fact we measured significant performance improvements on the Wasm
target.</li>
</ul>
</li>
</ul>
<h2>[<code>0.21.0</code>] - 2023-01-04</h2>
<h3>Added</h3>
<ul>
<li>Add support for resumable function calls. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/598">paritytech/wasmi#598</a>)
<ul>
<li>This feature allows to resume a function call upon encountering a
host trap.</li>
</ul>
</li>
<li>Add support for concurrently running function executions using a
single <code>wasmi</code> engine.
<ul>
<li>This feature also allows to call Wasm functions from host functions.
(<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/590">paritytech/wasmi#590</a>)</li>
</ul>
</li>
<li>Add initial naive WASI support for <code>wasmi</code> using the new
<code>wasmi_wasi</code> crate. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/557">paritytech/wasmi#557</a>)
<ul>
<li>Special thanks to <a href="https://github.com/OLUWAMUYIWA">Onigbinde
Oluwamuyiwa Elijah</a> for carrying the WASI support efforts!</li>
<li>Also thanks to <a href="https://github.com/Berrysoft">Yuyi Wang</a>
for testing and improving initial WASI support. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/592">paritytech/wasmi#592</a>,
<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/571">paritytech/wasmi#571</a>,
<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/568">paritytech/wasmi#568</a>)</li>
<li><strong>Note:</strong> There is ongoing work to integrate WASI
support in <code>wasmi_cli</code> so that the <code>wasmi</code> CLI
will then
be able to execute arbitrary <code>wasm-wasi</code> files out of the box
in the future.</li>
</ul>
</li>
<li>Add <code>Module::imports</code> that allows to query Wasm module
imports. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/573">paritytech/wasmi#573</a>,
<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/583">paritytech/wasmi#583</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fix a bug that imported linear memories and tables were initialized
twice upon instantiation. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/593">paritytech/wasmi#593</a>)</li>
<li>The <code>wasmi</code> CLI now properly hints for file path
arguments. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/596">paritytech/wasmi#596</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>The <code>wasmi::Trap</code> type is now more similar to Wasmtime's
<code>Trap</code> type. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/559">paritytech/wasmi#559</a>)</li>
<li>The <code>wasmi::Store</code> type is now <code>Send</code> and
<code>Sync</code> as intended. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/566">paritytech/wasmi#566</a>)</li>
<li>The <code>wasmi</code> CLI now prints exported functions names if
the function name CLI argument is missing. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/579">paritytech/wasmi#579</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/paritytech/wasmi/commit/0bbb80cc8063ba7cb5a25f2047b21990564e87fe"><code>0bbb80c</code></a>
Prepare for release of <code>wasmi</code> <code>v0.22.0</code> (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/issues/614">#614</a>)</li>
<li><a
href="https://github.com/paritytech/wasmi/commit/7c16e7793553a132b7d7b4f53fb20209eafeffa2"><code>7c16e77</code></a>
Mirror Wasmtime APIs more closely (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/issues/613">#613</a>)</li>
<li><a
href="https://github.com/paritytech/wasmi/commit/1a5891aa8716c4ffea01a98ca204267ae95d79c2"><code>1a5891a</code></a>
Add tests for <code>ComponentVec</code> data structure (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/issues/612">#612</a>)</li>
<li><a
href="https://github.com/paritytech/wasmi/commit/2d139d76ce48a01ef0cb69330dae97468ff6fda5"><code>2d139d7</code></a>
Make <code>Engine</code>'s executor use <code>&amp;mut StoreInner</code>
(making it non-generic) (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/issues/611">#611</a>)</li>
<li><a
href="https://github.com/paritytech/wasmi/commit/702cc6872aa19cd0067a18e5620ec05ca1dfdf73"><code>702cc68</code></a>
Create a non-generic <code>StoreInner</code> (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/issues/610">#610</a>)</li>
<li><a
href="https://github.com/paritytech/wasmi/commit/cc05d72465cff368b2b09f76c84fe23bfa186b68"><code>cc05d72</code></a>
No longer re-export unused traits from <code>wasmi_core</code> (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/issues/609">#609</a>)</li>
<li><a
href="https://github.com/paritytech/wasmi/commit/f4aabf3e10ffa72659b663e791f77fe39aa0c9ba"><code>f4aabf3</code></a>
Add Wasm load and store API to <code>UntypedValue</code> (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/issues/608">#608</a>)</li>
<li><a
href="https://github.com/paritytech/wasmi/commit/d2069ce5378b931847b591fd1430dc8a0657eda7"><code>d2069ce</code></a>
Cleanup <code>wasmi_core</code> crate (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/issues/607">#607</a>)</li>
<li><a
href="https://github.com/paritytech/wasmi/commit/0d12bffda0bc22affc26d499f3bfbbd7be1f17f7"><code>0d12bff</code></a>
Refactor resumable function call tests (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/issues/606">#606</a>)</li>
<li><a
href="https://github.com/paritytech/wasmi/commit/7753fab3484678fed7ad72dd0005440987f610fa"><code>7753fab</code></a>
Implement resumable calls for <code>TypedFunc</code> (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/issues/605">#605</a>)</li>
<li>See full diff in <a
href="https://github.com/paritytech/wasmi/compare/v0.21.0...v0.22.0">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 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)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-17 06:43:26 -03:00
Alexander Theißen 74716698f5 Speedup CI (#43)
* No need to build on nightly: This crate works on stable
* Use larger runners where applicable (linux)
* Only run the tests on macOS and Windows: The rest is OS independent
2023-01-10 16:01:52 -03:00
dependabot[bot] 54213f77f6 Update wasmi requirement from 0.20 to 0.21 (#42)
Updates the requirements on [wasmi](https://github.com/paritytech/wasmi)
to permit the latest version.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/paritytech/wasmi/releases">wasmi's
releases</a>.</em></p>
<blockquote>
<h2>v0.21.0 - 2023-01-04</h2>
<h3>Added</h3>
<ul>
<li>Add support for resumable function calls. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/598">paritytech/wasmi#598</a>)
<ul>
<li>This feature allows to resume a function call upon encountering a
host trap.</li>
</ul>
</li>
<li>Add support for concurrently running function executions using a
single <code>wasmi</code> engine.
<ul>
<li>This feature also allows to call Wasm functions from host functions.
(<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/590">paritytech/wasmi#590</a>)</li>
</ul>
</li>
<li>Add initial naive WASI support for <code>wasmi</code> using the new
<code>wasmi_wasi</code> crate. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/557">paritytech/wasmi#557</a>)
<ul>
<li>Special thanks to <a href="https://github.com/OLUWAMUYIWA">Onigbinde
Oluwamuyiwa Elijah</a> for carrying the WASI support efforts!</li>
<li>Also thanks to <a href="https://github.com/Berrysoft">Yuyi Wang</a>
for testing and improving initial WASI support. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/592">paritytech/wasmi#592</a>,
<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/571">paritytech/wasmi#571</a>,
<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/568">paritytech/wasmi#568</a>)</li>
<li><strong>Note:</strong> There is ongoing work to integrate WASI
support in <code>wasmi_cli</code> so that the <code>wasmi</code> CLI
will then
be able to execute arbitrary <code>wasm-wasi</code> files out of the box
in the future.</li>
</ul>
</li>
<li>Add <code>Module::imports</code> that allows to query Wasm module
imports. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/573">paritytech/wasmi#573</a>,
<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/583">paritytech/wasmi#583</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fix a bug that imported linear memories and tables were initialized
twice upon instantiation. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/593">paritytech/wasmi#593</a>)</li>
<li>The <code>wasmi</code> CLI now properly hints for file path
arguments. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/596">paritytech/wasmi#596</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>The <code>wasmi::Trap</code> type is now more similar to Wasmtime's
<code>Trap</code> type. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/559">paritytech/wasmi#559</a>)</li>
<li>The <code>wasmi::Store</code> type is now <code>Send</code> and
<code>Sync</code> as intended. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/566">paritytech/wasmi#566</a>)</li>
<li>The <code>wasmi</code> CLI now prints exported functions names if
the function name CLI argument is missing. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/579">paritytech/wasmi#579</a>)</li>
<li>Improve feedback when running a Wasm module without exported
function using <code>wasmi</code> CLI. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/584">paritytech/wasmi#584</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/paritytech/wasmi/blob/master/CHANGELOG.md">wasmi's
changelog</a>.</em></p>
<blockquote>
<h2>[0.21.0] - 2023-01-04</h2>
<h3>Added</h3>
<ul>
<li>Add support for resumable function calls. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/598">paritytech/wasmi#598</a>)
<ul>
<li>This feature allows to resume a function call upon encountering a
host trap.</li>
</ul>
</li>
<li>Add support for concurrently running function executions using a
single <code>wasmi</code> engine.
<ul>
<li>This feature also allows to call Wasm functions from host functions.
(<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/590">paritytech/wasmi#590</a>)</li>
</ul>
</li>
<li>Add initial naive WASI support for <code>wasmi</code> using the new
<code>wasmi_wasi</code> crate. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/557">paritytech/wasmi#557</a>)
<ul>
<li>Special thanks to <a href="https://github.com/OLUWAMUYIWA">Onigbinde
Oluwamuyiwa Elijah</a> for carrying the WASI support efforts!</li>
<li>Also thanks to <a href="https://github.com/Berrysoft">Yuyi Wang</a>
for testing and improving initial WASI support. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/592">paritytech/wasmi#592</a>,
<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/571">paritytech/wasmi#571</a>,
<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/568">paritytech/wasmi#568</a>)</li>
<li><strong>Note:</strong> There is ongoing work to integrate WASI
support in <code>wasmi_cli</code> so that the <code>wasmi</code> CLI
will then
be able to execute arbitrary <code>wasm-wasi</code> files out of the box
in the future.</li>
</ul>
</li>
<li>Add <code>Module::imports</code> that allows to query Wasm module
imports. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/573">paritytech/wasmi#573</a>,
<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/583">paritytech/wasmi#583</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fix a bug that imported linear memories and tables were initialized
twice upon instantiation. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/593">paritytech/wasmi#593</a>)</li>
<li>The <code>wasmi</code> CLI now properly hints for file path
arguments. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/596">paritytech/wasmi#596</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>The <code>wasmi::Trap</code> type is now more similar to Wasmtime's
<code>Trap</code> type. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/559">paritytech/wasmi#559</a>)</li>
<li>The <code>wasmi::Store</code> type is now <code>Send</code> and
<code>Sync</code> as intended. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/566">paritytech/wasmi#566</a>)</li>
<li>The <code>wasmi</code> CLI now prints exported functions names if
the function name CLI argument is missing. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/579">paritytech/wasmi#579</a>)</li>
<li>Improve feedback when running a Wasm module without exported
function using <code>wasmi</code> CLI. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/584">paritytech/wasmi#584</a>)</li>
</ul>
<h2>[0.20.0] - 2022-11-04</h2>
<h3>Added</h3>
<ul>
<li>Contribution documentation about fuzz testing. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/529">paritytech/wasmi#529</a>)</li>
</ul>
<h3>Removed</h3>
<ul>
<li>Removed some deprecated functions in the <code>wasmi_core</code>
crate. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/545">paritytech/wasmi#545</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fixed a critical performance regression introduced in Rust 1.65. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/518">paritytech/wasmi#518</a>)
<ul>
<li>While the PR's main job was to clean up some code it was found out
that it
also fixes a critical performance regression introduced in Rust
1.65.</li>
<li>You can read more about this performance regression <a
href="https://github-redirect.dependabot.com/rust-lang/rust/issues/102952">in
this thread</a>.</li>
</ul>
</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Fixed handling of edge cases with respect to Wasm linear memory. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/449">paritytech/wasmi#449</a>)
<ul>
<li>This allows for <code>wasmi</code> to properly setup and use linear
memory instances of up to 4GB.</li>
</ul>
</li>
<li>Optimize and improve Wasm instantiation. (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/531">paritytech/wasmi#531</a>)</li>
<li>Optimize <code>global.get</code> of immutable non-imported globals.
(<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/pull/533">paritytech/wasmi#533</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/paritytech/wasmi/commit/9e228e8a253074bf25cfcfeff11b07ff2033170e"><code>9e228e8</code></a>
Bump <code>wasmi</code> version to <code>0.21.0</code> (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/issues/604">#604</a>)</li>
<li><a
href="https://github.com/paritytech/wasmi/commit/8fb3a58de76a10b0072d0c71fd1677a96f33009f"><code>8fb3a58</code></a>
Prepare for <code>wasmi</code> version <code>0.21.0</code> release (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/issues/603">#603</a>)</li>
<li><a
href="https://github.com/paritytech/wasmi/commit/829ae5b115e8d8f484c93798309ac9e1eb7351eb"><code>829ae5b</code></a>
Resumable Function Calls (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/issues/598">#598</a>)</li>
<li><a
href="https://github.com/paritytech/wasmi/commit/3c62031d096a73c59edb05ea5cc508e5bc65b0f6"><code>3c62031</code></a>
Add <code>res: EngineResources</code> field to
<code>EngineExecutor</code> (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/issues/602">#602</a>)</li>
<li><a
href="https://github.com/paritytech/wasmi/commit/bbcfc21deea430f82aac6c268ffea61587173060"><code>bbcfc21</code></a>
Refactor <code>Engine</code> internals (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/issues/601">#601</a>)</li>
<li><a
href="https://github.com/paritytech/wasmi/commit/3186c023210a537d0fd70517942a1ebd0c5ad3f7"><code>3186c02</code></a>
Return <code>()</code> from <code>CallResults</code> for slices (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/issues/600">#600</a>)</li>
<li><a
href="https://github.com/paritytech/wasmi/commit/8965c9af96beb189919c0a2aa306a8ae111141ad"><code>8965c9a</code></a>
Refactor FuncType verification (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/issues/599">#599</a>)</li>
<li><a
href="https://github.com/paritytech/wasmi/commit/2b5a48618fa9acb1d36e91ba9325623d6858e0e6"><code>2b5a486</code></a>
CLI: Improve CLI parsing (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/issues/596">#596</a>)</li>
<li><a
href="https://github.com/paritytech/wasmi/commit/da8e4a694054ea218b316c31f28aae5494a42119"><code>da8e4a6</code></a>
Allow host functions to call Wasm functions (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/issues/590">#590</a>)</li>
<li><a
href="https://github.com/paritytech/wasmi/commit/f82ed77000b520046918b4e75cd733a2a7650d5b"><code>f82ed77</code></a>
Fix duplicated imported linear memories and tables (<a
href="https://github-redirect.dependabot.com/paritytech/wasmi/issues/593">#593</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/paritytech/wasmi/compare/v0.20.0...v0.21.0">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 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)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alexander Theißen <alex.theissen@me.com>
2023-01-10 15:04:05 -03:00
dependabot[bot] 23a2347f1f Update wasmparser requirement from 0.95 to 0.96 (#41)
Updates the requirements on
[wasmparser](https://github.com/bytecodealliance/wasm-tools) to permit
the latest version.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/bd3208f0f30dff710e1c28e13a20cded24a38db5"><code>bd3208f</code></a>
Bump some crate versions (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/865">#865</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/6b965ce03b9fc8d3b94eb967eb50285f914ffd0b"><code>6b965ce</code></a>
Fix fuzzing errors (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/862">#862</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/cd44f7326316e652fc90778455a466bcb8272640"><code>cd44f73</code></a>
Consolidate list-reading functions into <code>read_iter</code> (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/860">#860</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/e59094c01101732edd757cedf39e7390013669de"><code>e59094c</code></a>
Implement infrastructure fro a <code>use</code> keyword in
<code>*.wit</code> (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/858">#858</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/24d48083cea015bd62887f9b141caf7a18e5505e"><code>24d4808</code></a>
[wasmparser] Reduce the size of TypeId for better validation performance
(<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/844">#844</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/2de95fe4b749b175f4038006a32c2ecf33a66c5a"><code>2de95fe</code></a>
Cleanup skipping methods in <code>BinaryReader</code> (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/861">#861</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/f234d0c9b531213f35e10177c8f2582c5f3ab58f"><code>f234d0c</code></a>
Remove a large amount of boilerplate parsing from
<code>wasmparser</code> (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/857">#857</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/8e3f8d83fc6a67494374eda8925ed57811d786eb"><code>8e3f8d8</code></a>
Remove <code>deterministic</code> crate feature from `wasmparser (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/854">#854</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/4ac65e93fa1890c0749c2579e0dcbc2bffd7e4d1"><code>4ac65e9</code></a>
Add debug names to shim module in <code>wit-component</code> (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/853">#853</a>)</li>
<li><a
href="https://github.com/bytecodealliance/wasm-tools/commit/e5ffae8f4d30ba7e25922209268d31dc18bcedfd"><code>e5ffae8</code></a>
wasmparser: split parsers for different elems (<a
href="https://github-redirect.dependabot.com/bytecodealliance/wasm-tools/issues/849">#849</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/bytecodealliance/wasm-tools/compare/wasmparser-0.95.0...wasmparser-0.96.0">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 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)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-15 15:12:07 +01:00
Sasha Gryaznov 54c4f8f878 Patch: use checked sum for locals counter (#40)
follow-up patch to #38

Co-authored-by: Alexander Theißen <alex.theissen@me.com>
2022-12-08 11:58:02 +01:00
19 changed files with 710 additions and 769 deletions
+41 -26
View File
@@ -11,7 +11,7 @@ env:
jobs:
rustfmt:
runs-on: "ubuntu-latest"
runs-on: "ubuntu_20_64_core"
steps:
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
@@ -20,9 +20,9 @@ jobs:
toolchain: nightly
components: rustfmt
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Cargo fmt
- name: Fmt
uses: actions-rs/cargo@v1
with:
toolchain: nightly
@@ -30,7 +30,7 @@ jobs:
args: --all -- --check
clippy:
runs-on: "ubuntu-latest"
runs-on: "ubuntu_20_64_core"
steps:
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
@@ -38,60 +38,75 @@ jobs:
profile: minimal
toolchain: stable
components: clippy
default: true
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Cargo clippy
uses: actions-rs/cargo@v1
- name: Clippy
uses: actions-rs/clippy-check@v1
with:
toolchain: stable
command: clippy
token: ${{ secrets.GITHUB_TOKEN }}
args: --all-targets --all-features -- -D warnings
test:
strategy:
matrix:
os: ["ubuntu-latest", "macos-latest", "windows-latest"]
toolchain: ["stable", "nightly"]
runs-on: ${{ matrix.os }}
build:
runs-on: "ubuntu_20_64_core"
steps:
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
target: wasm32-unknown-unknown
toolchain: ${{ matrix.toolchain }}
toolchain: stable
default: true
- name: Set git to use LF
run: |
git config --global core.autocrlf false
git config --global core.eol lf
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Cargo build
uses: actions-rs/cargo@v1
with:
toolchain: ${{ matrix.toolchain }}
command: build
- name: Cargo build (std)
uses: actions-rs/cargo@v1
with:
command: build
args: --all-features
- name: Cargo build (no_std)
uses: actions-rs/cargo@v1
with:
toolchain: ${{ matrix.toolchain }}
command: build
args: --no-default-features
- name: Cargo build (wasm)
uses: actions-rs/cargo@v1
with:
toolchain: ${{ matrix.toolchain }}
command: build
args: --no-default-features --target wasm32-unknown-unknown
test:
strategy:
matrix:
os: ["ubuntu_20_64_core", "macos-latest", "windows-latest"]
runs-on: ${{ matrix.os }}
steps:
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
default: true
- name: Set git to use LF
run: |
git config --global core.autocrlf false
git config --global core.eol lf
- uses: actions/checkout@v4
- name: Cargo test
uses: actions-rs/cargo@v1
with:
toolchain: ${{ matrix.toolchain }}
command: test
args: --all-features
+11 -6
View File
@@ -12,9 +12,14 @@ repository = "https://github.com/paritytech/wasm-instrument"
include = ["src/**/*", "LICENSE-*", "README.md"]
[[bench]]
name = "benches"
name = "instrumentation"
harness = false
path = "benches/benches.rs"
path = "benches/instrumentation.rs"
[[bench]]
name = "execution"
harness = false
path = "benches/execution.rs"
[profile.bench]
lto = "fat"
@@ -25,14 +30,14 @@ parity-wasm = { version = "0.45", default-features = false }
[dev-dependencies]
binaryen = "0.12"
criterion = "0.4"
criterion = "0.5"
diff = "0.1"
pretty_assertions = "1"
rand = "0.8"
wat = "1"
wasmparser = "0.95"
wasmprinter = "0.2"
wasmi = "0.20"
wasmparser = "0.206"
wasmprinter = "0.200"
wasmi = "0.31"
[features]
default = ["std"]
-574
View File
@@ -1,574 +0,0 @@
use criterion::{
criterion_group, criterion_main, measurement::Measurement, Bencher, BenchmarkGroup, Criterion,
Throughput,
};
use std::{
fs::{read, read_dir},
path::PathBuf,
slice,
};
use wasm_instrument::{
gas_metering::{self, host_function, mutable_global, Backend, ConstantCostRules},
inject_stack_limiter,
parity_wasm::{deserialize_buffer, elements::Module, serialize},
};
fn fixture_dir() -> PathBuf {
let mut path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
path.push("benches");
path.push("fixtures");
path.push("wasm");
path
}
fn any_fixture<F, M>(group: &mut BenchmarkGroup<M>, f: F)
where
F: Fn(Module),
M: Measurement,
{
for entry in read_dir(fixture_dir()).unwrap() {
let entry = entry.unwrap();
let bytes = read(&entry.path()).unwrap();
group.throughput(Throughput::Bytes(bytes.len().try_into().unwrap()));
group.bench_with_input(entry.file_name().to_str().unwrap(), &bytes, |bench, input| {
bench.iter(|| f(deserialize_buffer(input).unwrap()))
});
}
}
fn gas_metering(c: &mut Criterion) {
let mut group = c.benchmark_group("Gas Metering");
any_fixture(&mut group, |module| {
gas_metering::inject(
module,
host_function::Injector::new("env", "gas"),
&ConstantCostRules::default(),
)
.unwrap();
});
}
fn stack_height_limiter(c: &mut Criterion) {
let mut group = c.benchmark_group("Stack Height Limiter");
any_fixture(&mut group, |module| {
inject_stack_limiter(module, 128).unwrap();
});
}
use std::time::{Duration, SystemTime, UNIX_EPOCH};
use wasmi::{
self,
core::{Pages, Value, F32},
Caller, Config, Engine, Extern, Func, Instance, Linker, Memory, StackLimits, Store,
};
fn prepare_module<P: Backend>(backend: P, input: &[u8]) -> (wasmi::Module, Store<u64>) {
let module = deserialize_buffer(input).unwrap();
let instrumented_module =
gas_metering::inject(module, backend, &ConstantCostRules::default()).unwrap();
let input = serialize(instrumented_module).unwrap();
// Prepare wasmi
let engine = Engine::new(&bench_config());
let module = wasmi::Module::new(&engine, &mut &input[..]).unwrap();
// Init host state with maximum gas_left
let store = Store::new(&engine, u64::MAX);
(module, store)
}
fn add_gas_host_func(linker: &mut Linker<u64>, store: &mut Store<u64>) {
// Create gas host function
let host_gas = Func::wrap(store, |mut caller: Caller<'_, u64>, param: u64| {
*caller.host_data_mut() -= param;
});
// Link the gas host function
linker.define("env", "gas", host_gas).unwrap();
}
fn add_gas_left_global(instance: &Instance, mut store: Store<u64>) -> Store<u64> {
instance
.get_export(&mut store, "gas_left")
.and_then(Extern::into_global)
.unwrap()
.set(&mut store, Value::I64(-1i64)) // the same as u64::MAX
.unwrap();
store
}
fn gas_metered_coremark(c: &mut Criterion) {
let mut group = c.benchmark_group("coremark, instrumented");
// Benchmark host_function::Injector
let wasm_filename = "coremark_minimal.wasm";
let bytes = read(fixture_dir().join(wasm_filename)).unwrap();
group.bench_function("with host_function::Injector", |bench| {
let backend = host_function::Injector::new("env", "gas");
let (module, mut store) = prepare_module(backend, &bytes);
// Link the host functions with the imported ones
let mut linker = <Linker<u64>>::new();
add_gas_host_func(&mut linker, &mut store);
// Create clock_ms host function.
let host_clock_ms = Func::wrap(&mut store, || {
SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_millis() as u64
});
// Link the time measurer for the coremark wasm
linker.define("env", "clock_ms", host_clock_ms).unwrap();
let instance = linker.instantiate(&mut store, &module).unwrap().start(&mut store).unwrap();
bench.iter(|| {
let run = instance
.get_export(&mut store, "run")
.and_then(Extern::into_func)
.unwrap()
.typed::<(), F32>(&mut store)
.unwrap();
// Call the wasm!
run.call(&mut store, ()).unwrap();
})
});
group.bench_function("with mutable_global::Injector", |bench| {
let backend = mutable_global::Injector::new("gas_left");
let (module, mut store) = prepare_module(backend, &bytes);
// Add the gas_left mutable global
let mut linker = <Linker<u64>>::new();
// Create clock_ms host function.
let host_clock_ms = Func::wrap(&mut store, || {
SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_millis() as u64
});
// Link the time measurer for the coremark wasm
linker.define("env", "clock_ms", host_clock_ms).unwrap();
let instance = linker.instantiate(&mut store, &module).unwrap().start(&mut store).unwrap();
let mut store = add_gas_left_global(&instance, store);
bench.iter(|| {
let run = instance
.get_export(&mut store, "run")
.and_then(Extern::into_func)
.unwrap()
.typed::<(), F32>(&mut store)
.unwrap();
// Call the wasm!
run.call(&mut store, ()).unwrap();
})
});
}
/// Converts the `.wat` encoded `bytes` into `.wasm` encoded bytes.
pub fn wat2wasm(bytes: &[u8]) -> Vec<u8> {
wat::parse_bytes(bytes).unwrap().into_owned()
}
/// Returns a [`Config`] useful for benchmarking.
fn bench_config() -> Config {
let mut config = Config::default();
config.set_stack_limits(StackLimits::new(1024, 1024 * 1024, 64 * 1024).unwrap());
config
}
fn gas_metered_recursive_ok(c: &mut Criterion) {
let mut group = c.benchmark_group("recursive_ok, instrumented");
const RECURSIVE_DEPTH: i32 = 8000;
let wasm_bytes = wat2wasm(include_bytes!("fixtures/wat/recursive_ok.wat"));
group.bench_function("with host_function::Injector", |bench| {
let backend = host_function::Injector::new("env", "gas");
let (module, mut store) = prepare_module(backend, &wasm_bytes);
// Link the host function with the imported one
let mut linker = <Linker<u64>>::new();
add_gas_host_func(&mut linker, &mut store);
let instance = linker.instantiate(&mut store, &module).unwrap().start(&mut store).unwrap();
let bench_call = instance.get_export(&store, "call").and_then(Extern::into_func).unwrap();
let mut result = [Value::I32(0)];
bench.iter(|| {
bench_call
.call(&mut store, &[Value::I32(RECURSIVE_DEPTH)], &mut result)
.unwrap();
assert_eq!(result, [Value::I32(0)]);
})
});
group.bench_function("with mutable_global::Injector", |bench| {
let backend = mutable_global::Injector::new("gas_left");
let (module, mut store) = prepare_module(backend, &wasm_bytes);
// Add the gas_left mutable global
let linker = <Linker<u64>>::new();
let instance = linker.instantiate(&mut store, &module).unwrap().start(&mut store).unwrap();
let mut store = add_gas_left_global(&instance, store);
let bench_call = instance.get_export(&store, "call").and_then(Extern::into_func).unwrap();
let mut result = [Value::I32(0)];
bench.iter(|| {
bench_call
.call(&mut store, &[Value::I32(RECURSIVE_DEPTH)], &mut result)
.unwrap();
assert_eq!(result, [Value::I32(0)]);
})
});
}
fn gas_metered_fibonacci_recursive(c: &mut Criterion) {
let mut group = c.benchmark_group("fibonacci_recursive, instrumented");
const FIBONACCI_REC_N: i64 = 10;
let wasm_bytes = wat2wasm(include_bytes!("fixtures/wat/fibonacci.wat"));
group.bench_function("with host_function::Injector", |bench| {
let backend = host_function::Injector::new("env", "gas");
let (module, mut store) = prepare_module(backend, &wasm_bytes);
// Link the host function with the imported one
let mut linker = <Linker<u64>>::new();
add_gas_host_func(&mut linker, &mut store);
let instance = linker.instantiate(&mut store, &module).unwrap().start(&mut store).unwrap();
let bench_call = instance
.get_export(&store, "fib_recursive")
.and_then(Extern::into_func)
.unwrap();
let mut result = [Value::I32(0)];
bench.iter(|| {
bench_call
.call(&mut store, &[Value::I64(FIBONACCI_REC_N)], &mut result)
.unwrap();
});
});
group.bench_function("with mutable_global::Injector", |bench| {
let backend = mutable_global::Injector::new("gas_left");
let (module, mut store) = prepare_module(backend, &wasm_bytes);
// Add the gas_left mutable global
let linker = <Linker<u64>>::new();
let instance = linker.instantiate(&mut store, &module).unwrap().start(&mut store).unwrap();
let mut store = add_gas_left_global(&instance, store);
let bench_call = instance
.get_export(&store, "fib_recursive")
.and_then(Extern::into_func)
.unwrap();
let mut result = [Value::I32(0)];
bench.iter(|| {
bench_call
.call(&mut store, &[Value::I64(FIBONACCI_REC_N)], &mut result)
.unwrap();
});
});
}
fn gas_metered_fac_recursive(c: &mut Criterion) {
let mut group = c.benchmark_group("factorial_recursive, instrumented");
let wasm_bytes = wat2wasm(include_bytes!("fixtures/wat/factorial.wat"));
group.bench_function("with host_function::Injector", |b| {
let backend = host_function::Injector::new("env", "gas");
let (module, mut store) = prepare_module(backend, &wasm_bytes);
// Link the host function with the imported one
let mut linker = <Linker<u64>>::new();
add_gas_host_func(&mut linker, &mut store);
let instance = linker.instantiate(&mut store, &module).unwrap().start(&mut store).unwrap();
let fac = instance
.get_export(&store, "recursive_factorial")
.and_then(Extern::into_func)
.unwrap();
let mut result = [Value::I64(0)];
b.iter(|| {
fac.call(&mut store, &[Value::I64(25)], &mut result).unwrap();
assert_eq!(result, [Value::I64(7034535277573963776)]);
})
});
group.bench_function("with mutable_global::Injector", |b| {
let backend = mutable_global::Injector::new("gas_left");
let (module, mut store) = prepare_module(backend, &wasm_bytes);
// Add the gas_left mutable global
let linker = <Linker<u64>>::new();
let instance = linker.instantiate(&mut store, &module).unwrap().start(&mut store).unwrap();
let mut store = add_gas_left_global(&instance, store);
let fac = instance
.get_export(&store, "recursive_factorial")
.and_then(Extern::into_func)
.unwrap();
let mut result = [Value::I64(0)];
b.iter(|| {
fac.call(&mut store, &[Value::I64(25)], &mut result).unwrap();
assert_eq!(result, [Value::I64(7034535277573963776)]);
})
});
}
fn gas_metered_count_until(c: &mut Criterion) {
const COUNT_UNTIL: i32 = 100_000;
let mut group = c.benchmark_group("count_until, instrumented");
let wasm_bytes = wat2wasm(include_bytes!("fixtures/wat/count_until.wat"));
group.bench_function("with host_function::Injector", |b| {
let backend = host_function::Injector::new("env", "gas");
let (module, mut store) = prepare_module(backend, &wasm_bytes);
// Link the host function with the imported one
let mut linker = <Linker<u64>>::new();
add_gas_host_func(&mut linker, &mut store);
let instance = linker.instantiate(&mut store, &module).unwrap().start(&mut store).unwrap();
let count_until =
instance.get_export(&store, "count_until").and_then(Extern::into_func).unwrap();
let mut result = [Value::I32(0)];
b.iter(|| {
count_until.call(&mut store, &[Value::I32(COUNT_UNTIL)], &mut result).unwrap();
assert_eq!(result, [Value::I32(COUNT_UNTIL)]);
})
});
group.bench_function("with mutable_global::Injector", |b| {
let backend = mutable_global::Injector::new("gas_left");
let (module, mut store) = prepare_module(backend, &wasm_bytes);
// Add the gas_left mutable global
let linker = <Linker<u64>>::new();
let instance = linker.instantiate(&mut store, &module).unwrap().start(&mut store).unwrap();
let mut store = add_gas_left_global(&instance, store);
let count_until =
instance.get_export(&store, "count_until").and_then(Extern::into_func).unwrap();
let mut result = [Value::I32(0)];
b.iter(|| {
count_until.call(&mut store, &[Value::I32(COUNT_UNTIL)], &mut result).unwrap();
assert_eq!(result, [Value::I32(COUNT_UNTIL)]);
})
});
}
fn gas_metered_vec_add(c: &mut Criterion) {
fn test_for<A, B>(
b: &mut Bencher,
vec_add: Func,
mut store: &mut Store<u64>,
mem: Memory,
len: usize,
vec_a: A,
vec_b: B,
) where
A: IntoIterator<Item = i32>,
B: IntoIterator<Item = i32>,
{
use core::mem::size_of;
let ptr_result = 10;
let len_result = len * size_of::<i64>();
let ptr_a = ptr_result + len_result;
let len_a = len * size_of::<i32>();
let ptr_b = ptr_a + len_a;
// Reset `result` buffer to zeros:
mem.data_mut(&mut store)[ptr_result..ptr_result + (len * size_of::<i32>())].fill(0);
// Initialize `a` buffer:
for (n, a) in vec_a.into_iter().take(len).enumerate() {
mem.write(&mut store, ptr_a + (n * size_of::<i32>()), &a.to_le_bytes()).unwrap();
}
// Initialize `b` buffer:
for (n, b) in vec_b.into_iter().take(len).enumerate() {
mem.write(&mut store, ptr_b + (n * size_of::<i32>()), &b.to_le_bytes()).unwrap();
}
// Prepare parameters and all Wasm `vec_add`:
let params = [
Value::I32(ptr_result as i32),
Value::I32(ptr_a as i32),
Value::I32(ptr_b as i32),
Value::I32(len as i32),
];
b.iter(|| {
vec_add.call(&mut store, &params, &mut []).unwrap();
});
// Validate the result buffer:
for n in 0..len {
let mut buffer4 = [0x00; 4];
let mut buffer8 = [0x00; 8];
let a = {
mem.read(&store, ptr_a + (n * size_of::<i32>()), &mut buffer4).unwrap();
i32::from_le_bytes(buffer4)
};
let b = {
mem.read(&store, ptr_b + (n * size_of::<i32>()), &mut buffer4).unwrap();
i32::from_le_bytes(buffer4)
};
let actual_result = {
mem.read(&store, ptr_result + (n * size_of::<i64>()), &mut buffer8).unwrap();
i64::from_le_bytes(buffer8)
};
let expected_result = (a as i64) + (b as i64);
assert_eq!(
expected_result, actual_result,
"given a = {a} and b = {b}, results diverge at index {n}"
);
}
}
let mut group = c.benchmark_group("memory_vec_add, instrumented");
let wasm_bytes = wat2wasm(include_bytes!("fixtures/wat/memory-vec-add.wat"));
const LEN: usize = 100_000;
group.bench_function("with host_function::Injector", |b| {
let backend = host_function::Injector::new("env", "gas");
let (module, mut store) = prepare_module(backend, &wasm_bytes);
// Link the host function with the imported one
let mut linker = <Linker<u64>>::new();
add_gas_host_func(&mut linker, &mut store);
let instance = linker.instantiate(&mut store, &module).unwrap().start(&mut store).unwrap();
let vec_add = instance.get_export(&store, "vec_add").and_then(Extern::into_func).unwrap();
let mem = instance.get_export(&store, "mem").and_then(Extern::into_memory).unwrap();
mem.grow(&mut store, Pages::new(25).unwrap()).unwrap();
test_for(
b,
vec_add,
&mut store,
mem,
LEN,
(0..LEN).map(|i| (i * i) as i32),
(0..LEN).map(|i| (i * 10) as i32),
)
});
group.bench_function("with mutable_global::Injector", |b| {
let backend = mutable_global::Injector::new("gas_left");
let (module, mut store) = prepare_module(backend, &wasm_bytes);
// Add the gas_left mutable global
let linker = <Linker<u64>>::new();
let instance = linker.instantiate(&mut store, &module).unwrap().start(&mut store).unwrap();
let mut store = add_gas_left_global(&instance, store);
let vec_add = instance.get_export(&store, "vec_add").and_then(Extern::into_func).unwrap();
let mem = instance.get_export(&store, "mem").and_then(Extern::into_memory).unwrap();
mem.grow(&mut store, Pages::new(25).unwrap()).unwrap();
test_for(
b,
vec_add,
&mut store,
mem,
LEN,
(0..LEN).map(|i| (i * i) as i32),
(0..LEN).map(|i| (i * 10) as i32),
)
});
}
fn gas_metered_tiny_keccak(c: &mut Criterion) {
let mut group = c.benchmark_group("wasm_kernel::tiny_keccak, instrumented");
let wasm_filename = "wasm_kernel.wasm";
let wasm_bytes = read(fixture_dir().join(wasm_filename)).unwrap();
group.bench_function("with host_function::Injector", |b| {
let backend = host_function::Injector::new("env", "gas");
let (module, mut store) = prepare_module(backend, &wasm_bytes);
// Link the host function with the imported one
let mut linker = <Linker<u64>>::new();
add_gas_host_func(&mut linker, &mut store);
let instance = linker.instantiate(&mut store, &module).unwrap().start(&mut store).unwrap();
let prepare = instance
.get_export(&store, "prepare_tiny_keccak")
.and_then(Extern::into_func)
.unwrap();
let keccak = instance
.get_export(&store, "bench_tiny_keccak")
.and_then(Extern::into_func)
.unwrap();
let mut test_data_ptr = Value::I32(0);
prepare.call(&mut store, &[], slice::from_mut(&mut test_data_ptr)).unwrap();
b.iter(|| {
keccak.call(&mut store, slice::from_ref(&test_data_ptr), &mut []).unwrap();
})
});
group.bench_function("with mutable_global::Injector", |b| {
let backend = mutable_global::Injector::new("gas_left");
let (module, mut store) = prepare_module(backend, &wasm_bytes);
// Add the gas_left mutable global
let linker = <Linker<u64>>::new();
let instance = linker.instantiate(&mut store, &module).unwrap().start(&mut store).unwrap();
let mut store = add_gas_left_global(&instance, store);
let prepare = instance
.get_export(&store, "prepare_tiny_keccak")
.and_then(Extern::into_func)
.unwrap();
let keccak = instance
.get_export(&store, "bench_tiny_keccak")
.and_then(Extern::into_func)
.unwrap();
let mut test_data_ptr = Value::I32(0);
prepare.call(&mut store, &[], slice::from_mut(&mut test_data_ptr)).unwrap();
b.iter(|| {
keccak.call(&mut store, slice::from_ref(&test_data_ptr), &mut []).unwrap();
})
});
}
fn gas_metered_global_bump(c: &mut Criterion) {
const BUMP_AMOUNT: i32 = 100_000;
let mut group = c.benchmark_group("global_bump, instrumented");
let wasm_bytes = wat2wasm(include_bytes!("fixtures/wat/global_bump.wat"));
group.bench_function("with host_function::Injector", |b| {
let backend = host_function::Injector::new("env", "gas");
let (module, mut store) = prepare_module(backend, &wasm_bytes);
// Link the host function with the imported one
let mut linker = <Linker<u64>>::new();
add_gas_host_func(&mut linker, &mut store);
let instance = linker.instantiate(&mut store, &module).unwrap().start(&mut store).unwrap();
let bump = instance.get_export(&store, "bump").and_then(Extern::into_func).unwrap();
let mut result = [Value::I32(0)];
b.iter(|| {
bump.call(&mut store, &[Value::I32(BUMP_AMOUNT)], &mut result).unwrap();
assert_eq!(result, [Value::I32(BUMP_AMOUNT)]);
})
});
group.bench_function("with mutable_global::Injector", |b| {
let backend = mutable_global::Injector::new("gas_left");
let (module, mut store) = prepare_module(backend, &wasm_bytes);
// Add the gas_left mutable global
let linker = <Linker<u64>>::new();
let instance = linker.instantiate(&mut store, &module).unwrap().start(&mut store).unwrap();
let mut store = add_gas_left_global(&instance, store);
let bump = instance.get_export(&store, "bump").and_then(Extern::into_func).unwrap();
let mut result = [Value::I32(0)];
b.iter(|| {
bump.call(&mut store, &[Value::I32(BUMP_AMOUNT)], &mut result).unwrap();
assert_eq!(result, [Value::I32(BUMP_AMOUNT)]);
})
});
}
criterion_group!(benches, gas_metering, stack_height_limiter);
criterion_group!(
name = coremark;
config = Criterion::default()
.sample_size(10)
.measurement_time(Duration::from_millis(275000))
.warm_up_time(Duration::from_millis(1000));
targets =
gas_metered_coremark,
);
criterion_group!(
name = wasmi_fixtures;
config = Criterion::default()
.sample_size(10)
.measurement_time(Duration::from_millis(250000))
.warm_up_time(Duration::from_millis(1000));
targets =
gas_metered_recursive_ok,
gas_metered_fibonacci_recursive,
gas_metered_fac_recursive,
gas_metered_count_until,
gas_metered_vec_add,
gas_metered_tiny_keccak,
gas_metered_global_bump,
);
criterion_main!(coremark, wasmi_fixtures);
+437
View File
@@ -0,0 +1,437 @@
use criterion::{
criterion_group, criterion_main, measurement::Measurement, Bencher, BenchmarkGroup, Criterion,
};
use std::{
fs::read,
path::PathBuf,
time::{Duration, SystemTime, UNIX_EPOCH},
};
use wasm_instrument::{
gas_metering::{self, host_function, mutable_global, ConstantCostRules},
parity_wasm::{deserialize_buffer, elements::Module, serialize},
};
use wasmi::{
core::{Pages, TrapCode, F32},
Caller, Config, Engine, Instance, Linker, Memory, StackLimits, Store, TypedFunc, Value,
};
/// Describes a gas metering strategy we want to benchmark.
///
/// Most strategies just need a subset of these functions. Hence we added default
/// implementations for all of them.
trait MeteringStrategy {
/// The wasmi config we should be using for this strategy.
fn config() -> Config {
Config::default()
}
/// The strategy may or may not want to instrument the module.
fn instrument_module(module: Module) -> Module {
module
}
/// The strategy might need to define additional host functions.
fn define_host_funcs(_linker: &mut Linker<u64>) {}
/// The strategy might need to do some initialization of the wasm instance.
fn init_instance(_module: &mut BenchInstance) {}
}
/// Don't do any metering at all. This is helpful as a baseline.
struct NoMetering;
/// Use wasmi's builtin fuel metering.
struct WasmiMetering;
/// Instrument the module using [`host_function::Injector`].
struct HostFunctionMetering;
/// Instrument the module using [`mutable_global::Injector`].
struct MutableGlobalMetering;
impl MeteringStrategy for NoMetering {}
impl MeteringStrategy for WasmiMetering {
fn config() -> Config {
let mut config = Config::default();
config.consume_fuel(true);
config
}
fn init_instance(module: &mut BenchInstance) {
module.store.add_fuel(u64::MAX).unwrap();
}
}
impl MeteringStrategy for HostFunctionMetering {
fn instrument_module(module: Module) -> Module {
let backend = host_function::Injector::new("env", "gas");
gas_metering::inject(module, backend, &ConstantCostRules::default()).unwrap()
}
fn define_host_funcs(linker: &mut Linker<u64>) {
// the instrumentation relies on the existing of this function
linker
.func_wrap("env", "gas", |mut caller: Caller<'_, u64>, amount_consumed: u64| {
let gas_remaining = caller.data_mut();
*gas_remaining =
gas_remaining.checked_sub(amount_consumed).ok_or(TrapCode::OutOfFuel)?;
Ok(())
})
.unwrap();
}
}
impl MeteringStrategy for MutableGlobalMetering {
fn instrument_module(module: Module) -> Module {
let backend = mutable_global::Injector::new("gas_left");
gas_metering::inject(module, backend, &ConstantCostRules::default()).unwrap()
}
fn init_instance(module: &mut BenchInstance) {
// the instrumentation relies on the host to initialize the global with the gas limit
// we just init to the maximum so it will never run out
module
.instance
.get_global(&mut module.store, "gas_left")
.unwrap()
.set(&mut module.store, Value::I64(-1i64)) // the same as u64::MAX
.unwrap();
}
}
/// A wasm instance ready to be benchmarked.
struct BenchInstance {
store: Store<u64>,
instance: Instance,
}
impl BenchInstance {
/// Create a new instance for the supplied metering strategy.
///
/// `wasm`: The raw wasm module for the benchmark.
/// `define_host_func`: In here the caller can define additional host function.
fn new<S, H>(wasm: &[u8], define_host_funcs: &H) -> Self
where
S: MeteringStrategy,
H: Fn(&mut Linker<u64>),
{
let module = deserialize_buffer(wasm).unwrap();
let instrumented_module = S::instrument_module(module);
let input = serialize(instrumented_module).unwrap();
let mut config = S::config();
config.set_stack_limits(StackLimits::new(1024, 1024 * 1024, 64 * 1024).unwrap());
let engine = Engine::new(&config);
let module = wasmi::Module::new(&engine, &mut &input[..]).unwrap();
let mut linker = Linker::new(&engine);
S::define_host_funcs(&mut linker);
define_host_funcs(&mut linker);
// init host state with maximum gas_left (only used by host_function instrumentation)
let mut store = Store::new(&engine, u64::MAX);
let instance = linker.instantiate(&mut store, &module).unwrap().start(&mut store).unwrap();
let mut bench_module = Self { store, instance };
S::init_instance(&mut bench_module);
bench_module
}
}
/// Runs a benchmark for every strategy.
///
/// We require the closures to implement `Fn` as they are executed for every strategy and we
/// don't want them to change in between.
///
/// `group`: The benchmark group within the benchmarks will be executed.
/// `wasm`: The raw wasm module for the benchmark.
/// `define_host_func`: In here the caller can define additional host function.
/// `f`: In here the user should perform the benchmark. Will be executed for every strategy.
fn for_strategies<M, H, F>(group: &mut BenchmarkGroup<M>, wasm: &[u8], define_host_funcs: H, f: F)
where
M: Measurement,
H: Fn(&mut Linker<u64>),
F: Fn(&mut Bencher<M>, &mut BenchInstance),
{
let mut module = BenchInstance::new::<NoMetering, _>(wasm, &define_host_funcs);
group.bench_function("no_metering", |bench| f(bench, &mut module));
let mut module = BenchInstance::new::<WasmiMetering, _>(wasm, &define_host_funcs);
group.bench_function("wasmi_builtin", |bench| f(bench, &mut module));
let mut module = BenchInstance::new::<HostFunctionMetering, _>(wasm, &define_host_funcs);
group.bench_function("host_function", |bench| f(bench, &mut module));
let mut module = BenchInstance::new::<MutableGlobalMetering, _>(wasm, &define_host_funcs);
group.bench_function("mutable_global", |bench| f(bench, &mut module));
}
/// Converts the `.wat` encoded `bytes` into `.wasm` encoded bytes.
fn wat2wasm(bytes: &[u8]) -> Vec<u8> {
wat::parse_bytes(bytes).unwrap().into_owned()
}
fn fixture_dir() -> PathBuf {
let mut path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
path.push("benches");
path.push("fixtures");
path.push("wasm");
path
}
fn gas_metered_coremark(c: &mut Criterion) {
let mut group = c.benchmark_group("coremark");
// Benchmark host_function::Injector
let wasm_filename = "coremark_minimal.wasm";
let bytes = read(fixture_dir().join(wasm_filename)).unwrap();
let define_host_funcs = |linker: &mut Linker<u64>| {
linker
.func_wrap("env", "clock_ms", || {
SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_millis() as u64
})
.unwrap();
};
for_strategies(&mut group, &bytes, define_host_funcs, |bench, module| {
bench.iter(|| {
let run = module.instance.get_typed_func::<(), F32>(&mut module.store, "run").unwrap();
// Call the wasm!
run.call(&mut module.store, ()).unwrap();
})
});
}
fn gas_metered_recursive_ok(c: &mut Criterion) {
let mut group = c.benchmark_group("recursive_ok");
const RECURSIVE_DEPTH: i32 = 8000;
let wasm_bytes = wat2wasm(include_bytes!("fixtures/wat/recursive_ok.wat"));
for_strategies(
&mut group,
&wasm_bytes,
|_| {},
|bench, module| {
let bench_call =
module.instance.get_typed_func::<i32, i32>(&module.store, "call").unwrap();
bench.iter(|| {
let result = bench_call.call(&mut module.store, RECURSIVE_DEPTH).unwrap();
assert_eq!(result, 0);
})
},
);
}
fn gas_metered_fibonacci_recursive(c: &mut Criterion) {
let mut group = c.benchmark_group("fibonacci_recursive");
const FIBONACCI_REC_N: i64 = 10;
let wasm_bytes = wat2wasm(include_bytes!("fixtures/wat/fibonacci.wat"));
for_strategies(
&mut group,
&wasm_bytes,
|_| {},
|bench, module| {
let bench_call = module
.instance
.get_typed_func::<i64, i64>(&module.store, "fib_recursive")
.unwrap();
bench.iter(|| {
bench_call.call(&mut module.store, FIBONACCI_REC_N).unwrap();
});
},
);
}
fn gas_metered_fac_recursive(c: &mut Criterion) {
let mut group = c.benchmark_group("factorial_recursive");
let wasm_bytes = wat2wasm(include_bytes!("fixtures/wat/factorial.wat"));
for_strategies(
&mut group,
&wasm_bytes,
|_| {},
|bench, module| {
let fac = module
.instance
.get_typed_func::<i64, i64>(&module.store, "recursive_factorial")
.unwrap();
bench.iter(|| {
let result = fac.call(&mut module.store, 25).unwrap();
assert_eq!(result, 7034535277573963776);
})
},
);
}
fn gas_metered_count_until(c: &mut Criterion) {
const COUNT_UNTIL: i32 = 100_000;
let mut group = c.benchmark_group("count_until");
let wasm_bytes = wat2wasm(include_bytes!("fixtures/wat/count_until.wat"));
for_strategies(
&mut group,
&wasm_bytes,
|_| {},
|bench, module| {
let count_until = module
.instance
.get_typed_func::<i32, i32>(&module.store, "count_until")
.unwrap();
bench.iter(|| {
let result = count_until.call(&mut module.store, COUNT_UNTIL).unwrap();
assert_eq!(result, COUNT_UNTIL);
})
},
);
}
fn gas_metered_vec_add(c: &mut Criterion) {
fn test_for<A, B>(
b: &mut Bencher,
vec_add: TypedFunc<(i32, i32, i32, i32), ()>,
mut store: &mut Store<u64>,
mem: Memory,
len: usize,
vec_a: A,
vec_b: B,
) where
A: IntoIterator<Item = i32>,
B: IntoIterator<Item = i32>,
{
use core::mem::size_of;
let ptr_result = 10;
let len_result = len * size_of::<i64>();
let ptr_a = ptr_result + len_result;
let len_a = len * size_of::<i32>();
let ptr_b = ptr_a + len_a;
// Reset `result` buffer to zeros:
mem.data_mut(&mut store)[ptr_result..ptr_result + (len * size_of::<i32>())].fill(0);
// Initialize `a` buffer:
for (n, a) in vec_a.into_iter().take(len).enumerate() {
mem.write(&mut store, ptr_a + (n * size_of::<i32>()), &a.to_le_bytes()).unwrap();
}
// Initialize `b` buffer:
for (n, b) in vec_b.into_iter().take(len).enumerate() {
mem.write(&mut store, ptr_b + (n * size_of::<i32>()), &b.to_le_bytes()).unwrap();
}
// Prepare parameters and all Wasm `vec_add`:
let params = (ptr_result as i32, ptr_a as i32, ptr_b as i32, len as i32);
b.iter(|| {
vec_add.call(&mut store, params).unwrap();
});
// Validate the result buffer:
for n in 0..len {
let mut buffer4 = [0x00; 4];
let mut buffer8 = [0x00; 8];
let a = {
mem.read(&store, ptr_a + (n * size_of::<i32>()), &mut buffer4).unwrap();
i32::from_le_bytes(buffer4)
};
let b = {
mem.read(&store, ptr_b + (n * size_of::<i32>()), &mut buffer4).unwrap();
i32::from_le_bytes(buffer4)
};
let actual_result = {
mem.read(&store, ptr_result + (n * size_of::<i64>()), &mut buffer8).unwrap();
i64::from_le_bytes(buffer8)
};
let expected_result = (a as i64) + (b as i64);
assert_eq!(
expected_result, actual_result,
"given a = {a} and b = {b}, results diverge at index {n}"
);
}
}
let mut group = c.benchmark_group("memory_vec_add");
let wasm_bytes = wat2wasm(include_bytes!("fixtures/wat/memory-vec-add.wat"));
const LEN: usize = 100_000;
for_strategies(
&mut group,
&wasm_bytes,
|_| {},
|bench, module| {
let vec_add = module
.instance
.get_typed_func::<(i32, i32, i32, i32), ()>(&module.store, "vec_add")
.unwrap();
let mem = module.instance.get_memory(&module.store, "mem").unwrap();
mem.grow(&mut module.store, Pages::new(25).unwrap()).unwrap();
test_for(
bench,
vec_add,
&mut module.store,
mem,
LEN,
(0..LEN).map(|i| (i * i) as i32),
(0..LEN).map(|i| (i * 10) as i32),
)
},
);
}
fn gas_metered_tiny_keccak(c: &mut Criterion) {
let mut group = c.benchmark_group("wasm_kernel::tiny_keccak");
let wasm_filename = "wasm_kernel.wasm";
let wasm_bytes = read(fixture_dir().join(wasm_filename)).unwrap();
for_strategies(
&mut group,
&wasm_bytes,
|_| {},
|bench, module| {
let prepare = module
.instance
.get_typed_func::<(), i32>(&module.store, "prepare_tiny_keccak")
.unwrap();
let keccak = module
.instance
.get_typed_func::<i32, ()>(&module.store, "bench_tiny_keccak")
.unwrap();
let test_data_ptr = prepare.call(&mut module.store, ()).unwrap();
bench.iter(|| {
keccak.call(&mut module.store, test_data_ptr).unwrap();
})
},
);
}
fn gas_metered_global_bump(c: &mut Criterion) {
const BUMP_AMOUNT: i32 = 100_000;
let mut group = c.benchmark_group("global_bump");
let wasm_bytes = wat2wasm(include_bytes!("fixtures/wat/global_bump.wat"));
for_strategies(
&mut group,
&wasm_bytes,
|_| {},
|bench, module| {
let bump = module.instance.get_typed_func::<i32, i32>(&module.store, "bump").unwrap();
bench.iter(|| {
let result = bump.call(&mut module.store, BUMP_AMOUNT).unwrap();
assert_eq!(result, BUMP_AMOUNT);
})
},
);
}
criterion_group!(
name = coremark;
config = Criterion::default()
.sample_size(10)
.measurement_time(Duration::from_millis(275000))
.warm_up_time(Duration::from_millis(1000));
targets =
gas_metered_coremark,
);
criterion_group!(
name = wasmi_fixtures;
config = Criterion::default()
.sample_size(10)
.measurement_time(Duration::from_millis(250000))
.warm_up_time(Duration::from_millis(1000));
targets =
gas_metered_recursive_ok,
gas_metered_fibonacci_recursive,
gas_metered_fac_recursive,
gas_metered_count_until,
gas_metered_vec_add,
gas_metered_tiny_keccak,
gas_metered_global_bump,
);
criterion_main!(coremark, wasmi_fixtures);
+58
View File
@@ -0,0 +1,58 @@
use criterion::{
criterion_group, criterion_main, measurement::Measurement, BenchmarkGroup, Criterion,
Throughput,
};
use std::{
fs::{read, read_dir},
path::PathBuf,
};
use wasm_instrument::{
gas_metering::{self, host_function, ConstantCostRules},
inject_stack_limiter,
parity_wasm::{deserialize_buffer, elements::Module},
};
fn fixture_dir() -> PathBuf {
let mut path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
path.push("benches");
path.push("fixtures");
path.push("wasm");
path
}
fn for_fixtures<F, M>(group: &mut BenchmarkGroup<M>, f: F)
where
F: Fn(Module),
M: Measurement,
{
for entry in read_dir(fixture_dir()).unwrap() {
let entry = entry.unwrap();
let bytes = read(entry.path()).unwrap();
group.throughput(Throughput::Bytes(bytes.len().try_into().unwrap()));
group.bench_with_input(entry.file_name().to_str().unwrap(), &bytes, |bench, input| {
bench.iter(|| f(deserialize_buffer(input).unwrap()))
});
}
}
fn gas_metering(c: &mut Criterion) {
let mut group = c.benchmark_group("Gas Metering");
for_fixtures(&mut group, |module| {
gas_metering::inject(
module,
host_function::Injector::new("env", "gas"),
&ConstantCostRules::default(),
)
.unwrap();
});
}
fn stack_height_limiter(c: &mut Criterion) {
let mut group = c.benchmark_group("Stack Height Limiter");
for_fixtures(&mut group, |module| {
inject_stack_limiter(module, 128).unwrap();
});
}
criterion_group!(benches, gas_metering, stack_height_limiter);
criterion_main!(benches);
+6 -5
View File
@@ -112,20 +112,21 @@ pub mod mutable_global {
];
// calculate gas used for the gas charging func execution itself
let mut gas_fn_cost = func_instructions.iter().fold(0, |cost, instruction| {
cost + (rules.instruction_cost(instruction).unwrap_or(0) as u64)
let mut gas_fn_cost = func_instructions.iter().fold(0, |cost: u64, instruction| {
cost.saturating_add(rules.instruction_cost(instruction).unwrap_or(u32::MAX).into())
});
// don't charge for the instructions used to fail when out of gas
let fail_cost = vec![
let fail_cost = [
Instruction::I64Const(-1i64), // non-charged instruction
Instruction::SetGlobal(gas_global_idx), // non-charged instruction
Instruction::Unreachable, // non-charged instruction
]
.iter()
.fold(0, |cost, instruction| {
cost + (rules.instruction_cost(instruction).unwrap_or(0) as u64)
.fold(0, |cost: u64, instruction| {
cost.saturating_add(rules.instruction_cost(instruction).unwrap_or(u32::MAX).into())
});
// the fail costs are a subset of the overall costs and hence this never underflows
gas_fn_cost -= fail_cost;
GasMeter::Internal {
+98 -98
View File
@@ -166,7 +166,7 @@ pub fn inject<R: Rules, B: Backend>(
let functions_space = module.functions_space() as u32;
let gas_global_idx = module.globals_space() as u32;
let mut mbuilder = builder::from_module(module);
let mut mbuilder = builder::from_module(module.clone());
// Calculate the indexes and gas function cost,
// for external gas function the cost is counted on the host side
@@ -224,15 +224,14 @@ pub fn inject<R: Rules, B: Backend>(
};
// We need the built the module for making injections to its blocks
let mut module = mbuilder.build();
let mut resulting_module = mbuilder.build();
let mut need_grow_counter = false;
let mut error = false;
let mut result = Ok(());
// Iterate over module sections and perform needed transformations.
// Indexes are needed to be fixed up in `GasMeter::External` case, as it adds an imported
// function, which goes to the beginning of the module's functions space.
for section in module.sections_mut() {
'outer: for section in resulting_module.sections_mut() {
match section {
elements::Section::Code(code_section) => {
let injection_targets = match gas_meter {
@@ -257,19 +256,22 @@ pub fn inject<R: Rules, B: Backend>(
}
}
}
let locals_count =
func_body.locals().iter().map(|val_type| val_type.count()).sum();
if inject_counter(
func_body.code_mut(),
gas_fn_cost,
locals_count,
rules,
gas_func_idx,
)
.is_err()
{
error = true;
break
result = func_body
.locals()
.iter()
.try_fold(0u32, |count, val_type| count.checked_add(val_type.count()))
.ok_or(())
.and_then(|locals_count| {
inject_counter(
func_body.code_mut(),
gas_fn_cost,
locals_count,
rules,
gas_func_idx,
)
});
if result.is_err() {
break 'outer
}
if rules.memory_grow_cost().enabled() &&
inject_grow_counter(func_body.code_mut(), total_func) > 0
@@ -325,14 +327,12 @@ pub fn inject<R: Rules, B: Backend>(
}
}
if error {
return Err(module)
}
result.map_err(|_| module)?;
if need_grow_counter {
Ok(add_grow_counter(module, rules, gas_func_idx))
Ok(add_grow_counter(resulting_module, rules, gas_func_idx))
} else {
Ok(module)
Ok(resulting_module)
}
}
@@ -342,12 +342,12 @@ pub fn inject<R: Rules, B: Backend>(
///
/// An example of block:
///
/// ```ignore
/// ```wasm
/// loop
/// i32.const 1
/// get_local 0
/// local.get 0
/// i32.sub
/// tee_local 0
/// local.tee 0
/// br_if 0
/// end
/// ```
@@ -1082,13 +1082,13 @@ mod tests {
input = r#"
(module
(func (result i32)
(get_global 0)))
(global.get 0)))
"#;
expected = r#"
(module
(func (result i32)
(call 0 (i64.const 1))
(get_global 0)))
(global.get 0)))
"#
}
@@ -1097,23 +1097,23 @@ mod tests {
input = r#"
(module
(func (result i32)
(get_global 0)
(global.get 0)
(block
(get_global 0)
(get_global 0)
(get_global 0))
(get_global 0)))
(global.get 0)
(global.get 0)
(global.get 0))
(global.get 0)))
"#;
expected = r#"
(module
(func (result i32)
(call 0 (i64.const 6))
(get_global 0)
(global.get 0)
(block
(get_global 0)
(get_global 0)
(get_global 0))
(get_global 0)))
(global.get 0)
(global.get 0)
(global.get 0))
(global.get 0)))
"#
}
@@ -1122,33 +1122,33 @@ mod tests {
input = r#"
(module
(func (result i32)
(get_global 0)
(global.get 0)
(if
(then
(get_global 0)
(get_global 0)
(get_global 0))
(global.get 0)
(global.get 0)
(global.get 0))
(else
(get_global 0)
(get_global 0)))
(get_global 0)))
(global.get 0)
(global.get 0)))
(global.get 0)))
"#;
expected = r#"
(module
(func (result i32)
(call 0 (i64.const 3))
(get_global 0)
(global.get 0)
(if
(then
(call 0 (i64.const 3))
(get_global 0)
(get_global 0)
(get_global 0))
(global.get 0)
(global.get 0)
(global.get 0))
(else
(call 0 (i64.const 2))
(get_global 0)
(get_global 0)))
(get_global 0)))
(global.get 0)
(global.get 0)))
(global.get 0)))
"#
}
@@ -1157,28 +1157,28 @@ mod tests {
input = r#"
(module
(func (result i32)
(get_global 0)
(global.get 0)
(block
(get_global 0)
(global.get 0)
(drop)
(br 0)
(get_global 0)
(global.get 0)
(drop))
(get_global 0)))
(global.get 0)))
"#;
expected = r#"
(module
(func (result i32)
(call 0 (i64.const 6))
(get_global 0)
(global.get 0)
(block
(get_global 0)
(global.get 0)
(drop)
(br 0)
(call 0 (i64.const 2))
(get_global 0)
(global.get 0)
(drop))
(get_global 0)))
(global.get 0)))
"#
}
@@ -1187,37 +1187,37 @@ mod tests {
input = r#"
(module
(func (result i32)
(get_global 0)
(global.get 0)
(block
(get_global 0)
(global.get 0)
(if
(then
(get_global 0)
(get_global 0)
(global.get 0)
(global.get 0)
(drop)
(br_if 1)))
(get_global 0)
(global.get 0)
(drop))
(get_global 0)))
(global.get 0)))
"#;
expected = r#"
(module
(func (result i32)
(call 0 (i64.const 5))
(get_global 0)
(global.get 0)
(block
(get_global 0)
(global.get 0)
(if
(then
(call 0 (i64.const 4))
(get_global 0)
(get_global 0)
(global.get 0)
(global.get 0)
(drop)
(br_if 1)))
(call 0 (i64.const 2))
(get_global 0)
(global.get 0)
(drop))
(get_global 0)))
(global.get 0)))
"#
}
@@ -1226,44 +1226,44 @@ mod tests {
input = r#"
(module
(func (result i32)
(get_global 0)
(global.get 0)
(loop
(get_global 0)
(global.get 0)
(if
(then
(get_global 0)
(global.get 0)
(br_if 0))
(else
(get_global 0)
(get_global 0)
(global.get 0)
(global.get 0)
(drop)
(br_if 1)))
(get_global 0)
(global.get 0)
(drop))
(get_global 0)))
(global.get 0)))
"#;
expected = r#"
(module
(func (result i32)
(call 0 (i64.const 3))
(get_global 0)
(global.get 0)
(loop
(call 0 (i64.const 4))
(get_global 0)
(global.get 0)
(if
(then
(call 0 (i64.const 2))
(get_global 0)
(global.get 0)
(br_if 0))
(else
(call 0 (i64.const 4))
(get_global 0)
(get_global 0)
(global.get 0)
(global.get 0)
(drop)
(br_if 1)))
(get_global 0)
(global.get 0)
(drop))
(get_global 0)))
(global.get 0)))
"#
}
@@ -1272,23 +1272,23 @@ mod tests {
input = r#"
(module
(func (result i32)
(get_global 0)
(global.get 0)
(if
(then
(return)))
(get_global 0)))
(global.get 0)))
"#;
expected = r#"
(module
(func (result i32)
(call 0 (i64.const 2))
(get_global 0)
(global.get 0)
(if
(then
(call 0 (i64.const 1))
(return)))
(call 0 (i64.const 1))
(get_global 0)))
(global.get 0)))
"#
}
@@ -1297,23 +1297,23 @@ mod tests {
input = r#"
(module
(func (result i32)
(get_global 0)
(global.get 0)
(block
(get_global 0)
(global.get 0)
(if
(then (br 1))
(else (br 0)))
(get_global 0)
(global.get 0)
(drop))
(get_global 0)))
(global.get 0)))
"#;
expected = r#"
(module
(func (result i32)
(call 0 (i64.const 5))
(get_global 0)
(global.get 0)
(block
(get_global 0)
(global.get 0)
(if
(then
(call 0 (i64.const 1))
@@ -1322,9 +1322,9 @@ mod tests {
(call 0 (i64.const 1))
(br 0)))
(call 0 (i64.const 2))
(get_global 0)
(global.get 0)
(drop))
(get_global 0)))
(global.get 0)))
"#
}
+7 -4
View File
@@ -135,8 +135,12 @@ fn build_control_flow_graph(
let mut stack = vec![ControlFrame::new(entry_node_id, terminal_node_id, false)];
let mut metered_blocks_iter = blocks.iter().peekable();
let locals_count = body.locals().iter().fold(0, |count, val_type| count + val_type.count());
let locals_init_cost = (rules.call_per_local_cost()).checked_mul(locals_count).ok_or(())?;
let locals_count = body
.locals()
.iter()
.try_fold(0u32, |count, val_type| count.checked_add(val_type.count()))
.ok_or(())?;
let locals_init_cost = rules.call_per_local_cost().checked_mul(locals_count).ok_or(())?;
for (cursor, instruction) in body.code().elements().iter().enumerate() {
let active_node_id = stack
@@ -350,8 +354,7 @@ mod tests {
for func_body in module.code_section().iter().flat_map(|section| section.bodies()) {
let rules = ConstantCostRules::default();
let locals_count =
func_body.locals().iter().fold(0, |count, val_type| count + val_type.count());
let locals_count = func_body.locals().iter().map(|val_type| val_type.count()).sum();
let metered_blocks =
determine_metered_blocks(func_body.code(), &rules, locals_count).unwrap();
+2 -2
View File
@@ -176,7 +176,7 @@ pub fn compute(func_idx: u32, module: &elements::Module) -> Result<u32, &'static
match opcode {
Nop => {},
Block(ty) | Loop(ty) | If(ty) => {
let end_arity = if *ty == BlockType::NoResult { 0 } else { 1 };
let end_arity = u32::from(*ty != BlockType::NoResult);
let branch_arity = if let Loop(_) = *opcode { 0 } else { end_arity };
if let If(_) = *opcode {
stack.pop_values(1)?;
@@ -465,7 +465,7 @@ mod tests {
(memory 0)
(func (result i32)
unreachable
grow_memory
memory.grow
)
)
"#,
+7 -7
View File
@@ -222,8 +222,8 @@ fn instrument_functions(
/// Before:
///
/// ```text
/// get_local 0
/// get_local 1
/// local.get 0
/// local.get 1
/// call 228
/// drop
/// ```
@@ -231,8 +231,8 @@ fn instrument_functions(
/// After:
///
/// ```text
/// get_local 0
/// get_local 1
/// local.get 0
/// local.get 1
///
/// < ... preamble ... >
///
@@ -366,9 +366,9 @@ mod tests {
r#"
(module
(func (export "i32.add") (param i32 i32) (result i32)
get_local 0
get_local 1
i32.add
local.get 0
local.get 1
i32.add
)
)
"#,
+1 -5
View File
@@ -1,12 +1,8 @@
#[cfg(not(features = "std"))]
use alloc::collections::BTreeMap as Map;
use alloc::vec::Vec;
use alloc::{collections::BTreeMap as Map, vec::Vec};
use parity_wasm::{
builder,
elements::{self, FunctionType, Internal},
};
#[cfg(features = "std")]
use std::collections::HashMap as Map;
use super::{resolve_func_type, Context};
+11 -11
View File
@@ -3,25 +3,25 @@
(local $x i32) (local $y i32)
(block $unrolled_loop
(set_local $x (i32.const 0))
(set_local $y (i32.const 1))
(local.set $x (i32.const 0))
(local.set $y (i32.const 1))
get_local $x
get_local $y
tee_local $x
local.get $x
local.get $y
local.tee $x
i32.add
set_local $y
local.set $y
i32.const 1
br_if $unrolled_loop
get_local $x
get_local $y
tee_local $x
local.get $x
local.get $y
local.tee $x
i32.add
set_local $y
local.set $y
)
get_local $y
local.get $y
)
)
+6 -6
View File
@@ -2,18 +2,18 @@
(func $add_locals (param $x i32) (param $y i32) (result i32)
(local $t i32)
get_local $x
get_local $y
local.get $x
local.get $y
call $add
set_local $t
local.set $t
get_local $t
local.get $t
)
(func $add (param $x i32) (param $y i32) (result i32)
(i32.add
(get_local $x)
(get_local $y)
(local.get $x)
(local.get $y)
)
)
)
+2 -2
View File
@@ -2,8 +2,8 @@
(func (param $x i32) (result i32)
(if (result i32)
(i32.const 1)
(then (i32.add (get_local $x) (i32.const 1)))
(else (i32.popcnt (get_local $x)))
(then (i32.add (local.get $x) (i32.const 1)))
(else (i32.popcnt (local.get $x)))
)
)
)
+13 -13
View File
@@ -5,22 +5,22 @@
(global $counter (mut i32) (i32.const 1))
(func $i32.add (export "i32.add") (param i32 i32) (result i32)
get_local 0
get_local 1
i32.add
local.get 0
local.get 1
i32.add
)
(func (param $arg i32)
(local $tmp i32)
(local $tmp i32)
global.get 0
i32.const 1
i32.add
tee_local $tmp
global.set $counter
global.get 0
i32.const 1
i32.add
local.tee $tmp
global.set $counter
get_local $tmp
get_local $arg
call $i32.add
drop
local.get $tmp
local.get $arg
call $i32.add
drop
)
)
+2 -2
View File
@@ -8,8 +8,8 @@
call $foo
call $boo
get_local 0
get_local 1
local.get 0
local.get 1
i32.add
)
)
+1 -1
View File
@@ -6,5 +6,5 @@
(call
$one-group-many-locals
)
)
)
)
+5 -5
View File
@@ -1,17 +1,17 @@
(module
(import "env" "foo" (func $foo))
(func (param i32)
get_local 0
local.get 0
i32.const 0
call $i32.add
drop
)
(func $i32.add (export "i32.add") (param i32 i32) (result i32)
get_local 0
get_local 1
i32.add
local.get 0
local.get 1
i32.add
)
(table 10 anyfunc)
(table 10 funcref)
;; Refer all types of functions: imported, defined not exported and defined exported.
(elem (i32.const 0) 0 1 2)
+2 -2
View File
@@ -48,9 +48,9 @@ fn size_overheads_all(files: ReadDir) -> Vec<InstrumentedWasmResults> {
let (original_module_len, orig_module) = {
let bytes = match entry.path().extension().unwrap().to_str() {
Some("wasm") => read(&entry.path()).unwrap(),
Some("wasm") => read(entry.path()).unwrap(),
Some("wat") =>
wat::parse_bytes(&read(&entry.path()).unwrap()).unwrap().into_owned(),
wat::parse_bytes(&read(entry.path()).unwrap()).unwrap().into_owned(),
_ => panic!("expected fixture_dir containing .wasm or .wat files only"),
};