-
Notifications
You must be signed in to change notification settings - Fork 10.5k
[Integration PR] Noncopyable generics in stdlib (phase 2) + Use new noncopyable types infrastructure #72346
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
[Integration PR] Noncopyable generics in stdlib (phase 2) + Use new noncopyable types infrastructure #72346
Conversation
swiftlang/llvm-project#8384 |
swiftlang/llvm-project#8384 |
swiftlang/llvm-project#8384 |
Hm, I see some local failures and unexpected passes:
|
Well this isn't annoying at all
|
8fa25b7
to
9b8ddc2
Compare
swiftlang/llvm-project#8384 |
@swift-ci benchmark |
swiftlang/llvm-project#8384 |
Oh hey, the benchmarks succeeded! |
6b168dc
to
3bf9ef0
Compare
swiftlang/llvm-project#8384 |
@swift-ci benchmark |
8cfcd5e
to
c821c2f
Compare
swiftlang/llvm-project#8384 |
@swift-ci benchmark |
@swift-ci build toolchain macOS |
D'oh, I have a duplicate entry in the ABI expectations list:
|
#72348 has probably obsoleted some symbol mismatch expectations; I'll rebase and try to verify locally |
[stdlib] MemoryLayout: Update Swift version numbers [stdlib] MemoryLayout: Actually hide legacy ABI
… types [stdlib] Pull back @_aeic on pointer → integer conversions [stdlib] UnsafeMutablePointer.allocate: Fix thinko [stdlib] Disable support for noncopyable pointees on some pointer operations We have to temporarily pull back support for noncopyable pointees for UnsafeMutablePointer.initialize(to:), .moveInitialize, .moveUpdate, as the builtins they’re calling are no longer accepting such types. These will return following a builtin audit. [stdlib] Remove workarounds for certain builtins not supporting noncopyable use swiftlang#71733 fixed this! [stdlib] Update FIXME [stdlib] UnsafePointer: Update Swift version numbers [stdlib] UnsafePointer: Actually hide legacy ABI [stdlib] Remove workaround for U[M]BP.withMemoryRebound
- Enable BorrowingSwitch feature within the stdlib - ExpressibleByNilLiteral: Add retroactive support for noncopyable conforming types - Optional: draft an API surface for noncopyable payloads [stdlib] Oops, the ExpressibleByNilLiteral conformance kept its implicit copyability
The test was relying on UnsafeMutablePointer (UMP) not having a Copyable requirement. Those Copyable requirements are more prominent when using the new infrastructure for noncopyable types. Since UMP is planned to have `~Copyable` on its generic parameter quite soon, this shouldn't remain broken for too long.
It's not currently clear whether this is a regression or just a test that needs updating. Investigation is needed.
It's not currently clear whether this is a regression or just a test that needs updating. For now it seems harmless to just update the test rather than disable it.
This test is failing to verify the generic signature for this bogus program, because the generic signature isn't minimal. We should gracefully handle this situation and still have a minimal signature, despite rejecting this program.
The presence of Copyable/Escapable conformances doesn't affect ABI. Only their absence in terms of suppressed requirements like `~Copyable` need to be output for diffing by the APIDigester.
This appears to be a code path that wasn't previously stressed when deserializing a bogus module, but now it is with NoncopyableGenerics, as Copyable is often emitted as a builtin conformance.
After removing the implicit conditional conformance synthesis for inverses, this test wasn't updated.
[gardening] update copyright notice [gardening] update copyright notice [gardening] update copyright notice [gardening] update copyright notice
…rk when using Optional and other stdlib features
c821c2f
to
8ea0a2d
Compare
Closing as obsolete, as #72276 has now landed on main 🎉 |
This integrates #71688 and #72276 into a single PR, to let me look at test failures in the former before waiting on the latter.