Skip to content

[pull] swiftwasm from main #4354

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

Merged
merged 146 commits into from
Mar 12, 2022
Merged

[pull] swiftwasm from main #4354

merged 146 commits into from
Mar 12, 2022

Conversation

pull[bot]
Copy link

@pull pull bot commented Mar 9, 2022

See Commits and Changes for more details.


Created by pull[bot]

Can you help keep this open source service alive? 💖 Please sponsor : )

cachemeifyoucan and others added 30 commits March 3, 2022 13:47
Remove the dependency of APIJSON tests on SDK to improve stability and
speed.

rdar://89448415
This introduces the `_visualc_intrinsics` module, which is the MSVC
analogue to `_Builtin_intrinsics` from clang.  This is needed for the
ARM64 SDK build which will attempt to use the neon intrinsics during the
build.
In Python 3, subprocess output is read as binary data by default, which isn’t what we want.

Instead of reading process output as byte strings, then manually decoding them into strings, simply pass `text=True` to functions in the `subprocess` module, so that we get properly decoded strings right out the box.

This fixes places that forget to do the decoding step — most especially, the `update-checkout` script. That script prints Git output as byte strings, which leads to unreadable results.

Additionally, in shell.run, use the same pipe for capturing both stdout and stderr. The distinction is pretty pointless in this use case; however, keeping the two channels separate means that we lose the original ordering of printed messages, which does matter.
These are not an issue because adding a @_marker protocol conformance has no ABI impact - the protocol is not available at runtime.
The arglist didn't exist when I originally wrote this. Most of the
assertions were there to check my assumptions about the dyn-casts that
were being performed originally. In a non-asserts build, the dyn-casts
would not crash, but would emit the `await` insertion fix-it into the
wrong location. In an asserts build, it would crash instead.
I haven't heard about crashes, or misplaced fix-its from this for
roughly a year now, so I think it's safe to clean it up.

I'm keeping the `parent == nullptr` check since that would indicate an
issue in the implementation of `isEffectAnchor`.
…enExistentialType

... rather than re-implementing it.
We don't want to treat opaque types differently here; ones that we want to
treat differently have already been opened.
…types

[test] XFAIL dependent-types.swift on 32 bit platforms
…#41713)

* Enable Sendability for AsyncStream and AsyncThrowingStream

* Move removeFirst to hit all cases where the continuations are not empty
…ng. Consolidate parsing code shared between @_originallyDefinedIn and @_backDeploy.
…bfc4c8e9f81016fdcc3537a

[NFC][move-function-addr] Add a small comment to the checker.
Since this implementation is exposed to users, we want to make it nice.

* Don't use 'unsafelyUnwrapped' which is usually not recommended to use
* Don't access 'container.allKeys' multiple times as it's a computed
  property

rdar://89150202
[APIJSON] Impromve tests to it doesn't rely on SDK content
…o-update-example-cxx-module

 [cxx-interop] Fix typo in getting started, and update example for creating the cxx module
MaxDesiatov
MaxDesiatov previously approved these changes Mar 11, 2022
ktoso and others added 12 commits March 11, 2022 22:14
After swiftlang#40793, alloc_boxes all have
their lifetimes protected by a lexical borrow scope.  In that PR, DI had
been updated to see through begin_borrow instructions from a project_box
to a mark_uninitialized.  It did not, however, correct the end_borrow
instructions when destroy_values of mark_uninitializeds were replaced
with destroy_addrs of project_boxes.  That is done here.

In a bit more detail, in the following context

    %box = alloc_box
    %mark_uninit = mark_uninitialized %box
    %lifetime = begin_borrow [lexical] %mark_uninit
    %proj_box = project_box %lifetime

When it is not statically known whether a field is initialized, we are
replacing the instruction

      // before
      destroy_value %mark_uninit
      // after

with the following diamond

      // before
      %initialized = load
      cond_br %initialized, yes, no

    yes:
      destroy_addr %proj_box
      br bottom

    no:
      br bottom

    bottom:
      dealloc_box %box
      br keep_going

    keep_going:
      // after

Doing so is problematic, though, because by SILGen construction the
destroy_value is always preceded by an end_borrow:

      end_borrow %lifetime
      destroy_value %mark_uninit

Previously, that end_borrow remained above the

      %initialized = load

instruction in the above.  That was invalid because the the newly
introduced

      destroy_addr %proj_box

was a use of the borrow scope (%proj_box is a projection of the
begin_borrow) and consequently must be within the borrow scope.

Note also that it would not be sufficient to simply emit the diamond
before the end_borrow.  The end_borrow must come before the destruction
of the value whose lifetime it is protecting (%box), and the diamond
contains the instruction to destroy that value (dealloc_box) in its
bottom block.

To resolve this issue, just move the end_borrow instruction from where
it was to before the dealloc box.  (This is actually done by moving it to
the top of the diamond's "continue" block prior to the emission of that
dealloc_box instruction.)

rdar://89984216
…ncy-async-top-level

Make toplevel vars MainActor with `-warn-concurrency`
visualc: add new `_visualc_intrinsics` module
[interop][SwiftToC++] print C++ interface for top-level Swift functions
These opened archetypes need to be bound within their context, so any mapping out of
the context will need to be explicit and map to newly-created generic parameters.
…r89150202

[CodeSynthesis] Improve synthesized `Decodable.init(from:)` for enums
tshortli and others added 5 commits March 11, 2022 11:07
…usly, the `@_backDeploy` attribute was ignored when generating SIL for accessors on declarations with the attribute since the accessor decls themselves were not directly annotated.

Also, emit an error when `@_backDeploy` is applied to coroutine accessors since they are not supported yet.

Resolves rdar://90112441
…back-in-your-context

Stop mapping opened archetypes "out of context".
…es/di-moves-end_borrow

[DI] Fixup alloc_box borrow scope ends.
SILGen: Fix accessor functions with `@_backDeploy`
[Distributed] Enable no-longer-experimental distributed by default
@MaxDesiatov MaxDesiatov merged commit b0d9b9d into swiftwasm Mar 12, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.