dependabot[bot] opened a new pull request, #25987:
URL: https://github.com/apache/beam/pull/25987

   Bumps [github.com/tetratelabs/wazero](https://github.com/tetratelabs/wazero) 
from 1.0.0-rc.1 to 1.0.0.
   <details>
   <summary>Release notes</summary>
   <p><em>Sourced from <a 
href="https://github.com/tetratelabs/wazero/releases";>github.com/tetratelabs/wazero's
 releases</a>.</em></p>
   <blockquote>
   <h2>v1.0.0</h2>
   <p>wazero v1.0.0 completes our six month pre-release period and begins our 
compatibility promise. We will use semantic versions to label releases, and not 
break APIs we've exposed as non-experimental.</p>
   <p>Those not familiar with wazero can check out <a 
href="https://tetrate.io/blog/introducing-wazero-from-tetrate/";>this blog</a> 
which overviews the zero dependency runtime. You can also check out <a 
href="https://wazero.io";>our website</a> especially the <a 
href="https://wazero.io/community/";>community</a> and <a 
href="https://wazero.io/community/users/";>users</a> pages.</p>
   <p>Many of you have been following along with our <a 
href="https://github.com/tetratelabs/wazero/releases";>pre-releases</a> over the 
last 6 months. We did introduce change since v1.0.0-rc.2 with a particularly 
notable feature we call &quot;anonymous modules&quot;. So, let's talk about 
that first.</p>
   <h2>Anonymous modules</h2>
   <p>There are two main ways wazero is used for high-volume request handling. 
One way is pooling modules and the other is instantiating per-request.</p>
   <p>The pool approach is used for functions designed to be invoked many 
times, such as <a href="https://http-wasm.io/";>http-wasm</a>'s handler 
functions. A host, such a <a 
href="https://docs.dapr.io/reference/components-reference/supported-middleware/middleware-wasm/";>dapr</a>
 keeps a pool of modules, and checks one out per request.</p>
   <p>The re-instantiate approach is where you know you can't re-use a module, 
because the code is not safe to invoke more than once. For example, WASI 
commands are not safe to re-invoke. So, you have to instantiate a fresh module 
per request. You can also re-instantiate for higher security on otherwise safe 
functions.</p>
   <p>The latter case was expensive before, because we had to make sure each 
request had not just a new module, but also a unique name in the runtime. You 
would see things like this to do that.</p>
   <pre lang="go"><code>// Currently, concurrent modules can conflict on name. 
Make sure we have
   // a unique one.
   instanceNum := out.instanceCounter.Add(1)
   instanceName := out.binaryName + &quot;-&quot; + 
strconv.FormatUint(instanceNum, 10)
   moduleConfig := out.moduleConfig.WithName(instanceName)
   </code></pre>
   <p>Both allocating a unique name and also name-based locks have a cost to 
them, and very high throughput use cases, such as event handling would show 
some contention around this.</p>
   <p>Through a lot of brainstorming and work, <a 
href="https://github.com/achille-roussel";><code>@​achille-roussel</code></a> <a 
href="https://github.com/ckaznocha";><code>@​ckaznocha</code></a> and <a 
href="https://github.com/mathetake";><code>@​mathetake</code></a> found a clever 
way to improve performance. When a module has no name, it has nothing to export 
to other modules. Most of the lock tension was around things to export, and an 
unnamed module is basically a leaf node with no consumer except the host. We 
could avoid a lot of the more expensive locking by special-casing modules 
instantiated without a name.</p>
   <p>In the end, to improve re-instantiation performance (when you can't pool 
modules), clear your module name!</p>
   <pre lang="diff"><code>-       // Currently, concurrent modules can conflict 
on name. Make sure we have
   -       // a unique one.
   -       instanceNum := out.instanceCounter.Add(1)
   -       instanceName := out.binaryName + &quot;-&quot; + 
strconv.FormatUint(instanceNum, 10)
   -       moduleConfig := out.moduleConfig.WithName(instanceName)
   +       // Clear the module name so that instantiations won't conflict.
   +       moduleConfig := out.moduleConfig.WithName(&quot;&quot;)
   </code></pre>
   <h2>Other changes</h2>
   <p>There were a myriad of change from wazero regulars, all of them in the 
bucket of stabilization, bug fixes or efficiency in general. <a 
href="https://github.com/achille-roussel";><code>@​achille-roussel</code></a> <a 
href="https://github.com/codefromthecrypt";><code>@​codefromthecrypt</code></a> 
and <a href="https://github.com/jerbob92";><code>@​jerbob92</code></a> put a lot 
of work into triage on WASI edge cases, both discussion and code. <a 
href="https://github.com/ncruces";><code>@​ncruces</code></a> fixed platform 
support for solaris/illumos <a 
href="https://github.com/mathetake";><code>@​mathetake</code></a> optimized 
wazero performance even more than before. <a 
href="https://github.com/evacchi";><code>@​evacchi</code></a> fixed a really 
important poll issue.</p>
   <p>These were driven by and thanks to community work. For example, <a 
href="https://github.com/Pryz";><code>@​Pryz</code></a> led feedback and problem 
resolution for go compiler tests. Both <a 
href="https://github.com/ncruces";><code>@​ncruces</code></a> on <a 
href="https://github.com/ncruces/go-sqlite3";>go-sqlite</a> and <a 
href="https://github.com/jerbob92";><code>@​jerbob92</code></a> on <a 
href="https://github.com/klippa-app/pdfium-cli";>pdfium</a> shared wins and 
opportunities for next steps.</p>
   <p>In short, there were a lot of exciting relevant work in the short period 
between rc2 and 1.0.0, and we are lucky for it!</p>
   <h2>v1.0.0-rc.2</h2>
   <!-- raw HTML omitted -->
   </blockquote>
   <p>... (truncated)</p>
   </details>
   <details>
   <summary>Commits</summary>
   <ul>
   <li><a 
href="https://github.com/tetratelabs/wazero/commit/22f8d9da6950831c0442a142ef3f3c81034e8df3";><code>22f8d9d</code></a>
 fixes nil panic on close (<a 
href="https://redirect.github.com/tetratelabs/wazero/issues/1286";>#1286</a>)</li>
   <li><a 
href="https://github.com/tetratelabs/wazero/commit/451c792ee8c3a38e5b83171726c1987305db0737";><code>451c792</code></a>
 Avoids returning ExitError on exit code zero, and optimizes for no 
allocation...</li>
   <li><a 
href="https://github.com/tetratelabs/wazero/commit/86f3b190eb492705d4d2dde8a81917fb69649d92";><code>86f3b19</code></a>
 documents WithDirMount wrt windows (<a 
href="https://redirect.github.com/tetratelabs/wazero/issues/1282";>#1282</a>)</li>
   <li><a 
href="https://github.com/tetratelabs/wazero/commit/d0fc0c6232ad1ec30fcedb4ed50be292924c552b";><code>d0fc0c6</code></a>
 Import function type check at validation phrase (<a 
href="https://redirect.github.com/tetratelabs/wazero/issues/1281";>#1281</a>)</li>
   <li><a 
href="https://github.com/tetratelabs/wazero/commit/244c5c5792c3ccb012e2f15f6aa5b2e4ed5eed85";><code>244c5c5</code></a>
 ensures we don't open a file to close it (<a 
href="https://redirect.github.com/tetratelabs/wazero/issues/1279";>#1279</a>)</li>
   <li><a 
href="https://github.com/tetratelabs/wazero/commit/4eba21372cb519e8bac91ef2425ecd54b44e858d";><code>4eba213</code></a>
 Support registering multiple instances of anonymous modules (<a 
href="https://redirect.github.com/tetratelabs/wazero/issues/1259";>#1259</a>)</li>
   <li><a 
href="https://github.com/tetratelabs/wazero/commit/53bb95eeaa9246bf6fe0852c1933518df4020b84";><code>53bb95e</code></a>
 Allow ModuleConfig.WithName(&quot;&quot;) to clear the module name (<a 
href="https://redirect.github.com/tetratelabs/wazero/issues/1277";>#1277</a>)</li>
   <li><a 
href="https://github.com/tetratelabs/wazero/commit/d8f356e6441fb78fcdbe45a692890a804bc1eb25";><code>d8f356e</code></a>
 Removes unused GoFunc types (<a 
href="https://redirect.github.com/tetratelabs/wazero/issues/1276";>#1276</a>)</li>
   <li><a 
href="https://github.com/tetratelabs/wazero/commit/cd1110c0880ef90b9ce7cec73efc4147e4660429";><code>cd1110c</code></a>
 Avoids allocation of exports map per instance (<a 
href="https://redirect.github.com/tetratelabs/wazero/issues/1275";>#1275</a>)</li>
   <li><a 
href="https://github.com/tetratelabs/wazero/commit/7721f0ab976fcb57e1eb6d4e9736df2c49c3ae17";><code>7721f0a</code></a>
 build: makes wazero buildable on solaris and illumos (<a 
href="https://redirect.github.com/tetratelabs/wazero/issues/1274";>#1274</a>)</li>
   <li>Additional commits viewable in <a 
href="https://github.com/tetratelabs/wazero/compare/v1.0.0-rc.1...v1.0.0";>compare
 view</a></li>
   </ul>
   </details>
   <br />
   
   
   [![Dependabot compatibility 
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/tetratelabs/wazero&package-manager=go_modules&previous-version=1.0.0-rc.1&new-version=1.0.0)](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 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>


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to