-
Notifications
You must be signed in to change notification settings - Fork 243
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(runtime): make kernel 'load' operation synchronous #951
Conversation
The `jsii-runtime` process cannot perform async operations while waiting for a (synchronous) callback to return (the response flow is otherwise ambiguous). In order to allow loading of dependencies within a calllback flow, the `load` kernel API needed to be made syncrhonous. The reason why this is needed is because the host languages runtime libraries may be required to load dependencies at the last minute, for it may not be possible to determine what dependencies are required before a callback is executed. Introduced a (unit) test to confirm the `jsii-runtime` is indeed able to perform `load` operations within a callback context.
AWS CodeBuild CI Report
Powered by github-codebuild-logs, available on the AWS Serverless Application Repository |
AWS CodeBuild CI Report
Powered by github-codebuild-logs, available on the AWS Serverless Application Repository |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm okay with it. Leaving as do-not-merge
for potential other reviewers.
Thank you for contributing! ❤️ I will now look into making sure the PR is up-to-date, then proceed to try and merge it! |
AWS CodeBuild CI Report
Powered by github-codebuild-logs, available on the AWS Serverless Application Repository |
AWS CodeBuild CI Report
Powered by github-codebuild-logs, available on the AWS Serverless Application Repository |
…/packages/@jsii/python-runtime (#3692) Updates the requirements on [attrs](https://github.com/python-attrs/attrs) to permit the latest version. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/python-attrs/attrs/releases">attrs's releases</a>.</em></p> <blockquote> <h2>22.1.0</h2> <h1>Highlights</h1> <p>The main features of this release are:</p> <ul> <li>The departure of Python 2.7 (enjoy your retirement!),</li> <li>and the arrival of Python 3.11.</li> </ul> <p>We had loftier goals feature-wise, but didn't want to block others embracing Python 3.11.</p> <p>❤️ <strong>Huge</strong> thanks to my <a href="https://github.com/sponsors/hynek">GitHub sponsors</a>, <a href="https://tidelift.com/subscription/pkg/pypi-attrs">Tidelift subscribers</a>, and <a href="https://ko-fi.com/the_hynek">Ko-fi buyers</a>! ❤️</p> <p>None of my projects would exist in their current form without you!</p> <h1>Full Changelog</h1> <h2>Backwards-incompatible Changes</h2> <ul> <li> <p>Python 2.7 is not supported anymore.</p> <p>Dealing with Python 2.7 tooling has become too difficult for a volunteer-run project.</p> <p>We have supported Python 2 more than 2 years after it was officially discontinued and feel that we have paid our dues. All version up to 21.4.0 from December 2021 remain fully functional, of course. <a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/936">#936</a></p> </li> <li> <p>The deprecated <code>cmp</code> attribute of <code>attrs.Attribute</code> has been removed. This does not affect the <em>cmp</em> argument to <code>attr.s</code> that can be used as a shortcut to set <em>eq</em> and <em>order</em> at the same time. <a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/939">#939</a></p> </li> </ul> <h2>Changes</h2> <ul> <li>Instantiation of frozen slotted classes is now faster. <a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/898">#898</a></li> <li>If an <code>eq</code> key is defined, it is also used before hashing the attribute. <a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/909">#909</a></li> <li>Added <code>attrs.validators.min_len()</code>. <a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/916">#916</a></li> <li><code>attrs.validators.deep_iterable()</code>'s <em>member_validator</em> argument now also accepts a list of validators and wraps them in an <code>attrs.validators.and_()</code>. <a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/925">#925</a></li> <li>Added missing type stub re-imports for <code>attrs.converters</code> and <code>attrs.filters</code>. <a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/931">#931</a></li> <li>Added missing stub for <code>attr(s).cmp_using()</code>. <a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/949">#949</a></li> <li><code>attrs.validators._in()</code>'s <code>ValueError</code> is not missing the attribute, expected options, and the value it got anymore. <a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/951">#951</a></li> <li>Python 3.11 is now officially supported. <a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/969">#969</a></li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/python-attrs/attrs/blob/main/CHANGELOG.rst">attrs's changelog</a>.</em></p> <blockquote> <h2>22.1.0 (2022-07-28)</h2> <p>Backwards-incompatible Changes ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^</p> <ul> <li> <p>Python 2.7 is not supported anymore.</p> <p>Dealing with Python 2.7 tooling has become too difficult for a volunteer-run project.</p> <p>We have supported Python 2 more than 2 years after it was officially discontinued and feel that we have paid our dues. All version up to 21.4.0 from December 2021 remain fully functional, of course. <code>[#936](python-attrs/attrs#936) <https://github.com/python-attrs/attrs/issues/936></code>_</p> </li> <li> <p>The deprecated <code>cmp</code> attribute of <code>attrs.Attribute</code> has been removed. This does not affect the <em>cmp</em> argument to <code>attr.s</code> that can be used as a shortcut to set <em>eq</em> and <em>order</em> at the same time. <code>[#939](python-attrs/attrs#939) <https://github.com/python-attrs/attrs/issues/939></code>_</p> </li> </ul> <p>Changes ^^^^^^^</p> <ul> <li>Instantiation of frozen slotted classes is now faster. <code>[#898](python-attrs/attrs#898) <https://github.com/python-attrs/attrs/issues/898></code>_</li> <li>If an <code>eq</code> key is defined, it is also used before hashing the attribute. <code>[#909](python-attrs/attrs#909) <https://github.com/python-attrs/attrs/issues/909></code>_</li> <li>Added <code>attrs.validators.min_len()</code>. <code>[#916](python-attrs/attrs#916) <https://github.com/python-attrs/attrs/issues/916></code>_</li> <li><code>attrs.validators.deep_iterable()</code>'s <em>member_validator</em> argument now also accepts a list of validators and wraps them in an <code>attrs.validators.and_()</code>. <code>[#925](python-attrs/attrs#925) <https://github.com/python-attrs/attrs/issues/925></code>_</li> <li>Added missing type stub re-imports for <code>attrs.converters</code> and <code>attrs.filters</code>. <code>[#931](python-attrs/attrs#931) <https://github.com/python-attrs/attrs/issues/931></code>_</li> <li>Added missing stub for <code>attr(s).cmp_using()</code>. <code>[#949](python-attrs/attrs#949) <https://github.com/python-attrs/attrs/issues/949></code>_</li> <li><code>attrs.validators._in()</code>'s <code>ValueError</code> is not missing the attribute, expected options, and the value it got anymore. <code>[#951](python-attrs/attrs#951) <https://github.com/python-attrs/attrs/issues/951></code>_</li> <li>Python 3.11 is now officially supported. <code>[#969](python-attrs/attrs#969) <https://github.com/python-attrs/attrs/issues/969></code>_</li> </ul> <hr /> <h2>21.4.0 (2021-12-29)</h2> <p>Changes ^^^^^^^</p> <ul> <li>Fixed the test suite on PyPy3.8 where <code>cloudpickle</code> does not work. <code>[#892](python-attrs/attrs#892) <https://github.com/python-attrs/attrs/issues/892></code>_</li> </ul> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/python-attrs/attrs/commit/b3dfebe2e10b44437c4f97d788fb5220d790efd0"><code>b3dfebe</code></a> Prepare 22.1.0</li> <li><a href="https://github.com/python-attrs/attrs/commit/c89abcd6e6a826b00898f93e851c96b78c80891f"><code>c89abcd</code></a> It totally is correct</li> <li><a href="https://github.com/python-attrs/attrs/commit/9f118b7dd5328ee5abd7f3880971ab9554047c3a"><code>9f118b7</code></a> Tune first steps</li> <li><a href="https://github.com/python-attrs/attrs/commit/a3d7f20e54ba29d5ec73563c167d877351228cf2"><code>a3d7f20</code></a> Polish contributing guide</li> <li><a href="https://github.com/python-attrs/attrs/commit/899497f165b3c8291b66c9c3a01b64881b69cf39"><code>899497f</code></a> Clarify (c) ownership</li> <li><a href="https://github.com/python-attrs/attrs/commit/696fd786901a6b82b828dd71e3fd64bfae1014ca"><code>696fd78</code></a> Hyphenate compound adjectives</li> <li><a href="https://github.com/python-attrs/attrs/commit/65c06831c1eee4d9895511c7db5caffba9d93c0e"><code>65c0683</code></a> Use NG APIs in glossary</li> <li><a href="https://github.com/python-attrs/attrs/commit/5d84d9a5686e8210b1616447ac05021b6b211157"><code>5d84d9a</code></a> Move mypy config to pyproject.toml</li> <li><a href="https://github.com/python-attrs/attrs/commit/1590917bf7c49e35bb429d117650f660aa45e0e4"><code>1590917</code></a> Update readme.rst (<a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/986">#986</a>)</li> <li><a href="https://github.com/python-attrs/attrs/commit/a67c84f51e4e3df875961d287583abaef673eb48"><code>a67c84f</code></a> Add more prominent callout about slots to API docs</li> <li>Additional commits viewable in <a href="https://github.com/python-attrs/attrs/compare/21.2.0...22.1.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>
The
jsii-runtime
process cannot perform async operations while waitingfor a (synchronous) callback to return (the response flow is otherwise
ambiguous). In order to allow loading of dependencies within a calllback
flow, the
load
kernel API needed to be made syncrhonous.The reason why this is needed is because the host languages runtime
libraries may be required to load dependencies at the last minute, for
it may not be possible to determine what dependencies are required
before a callback is executed.
Introduced a (unit) test to confirm the
jsii-runtime
is indeed able toperform
load
operations within a callback context.By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.