Commit Graph

21434 Commits

Author SHA1 Message Date
Eric Miotto
231a9d989d Add _Builtin_float dependency to Distributed and Synchronization
This will avoid errors in CI when the latter ones are scheduled before
the former.

Addresses rdar://149558141
2025-04-28 09:37:07 -07:00
Konrad 'ktoso' Malawski
06bb7183f4 [Concurrency] Hashable funcs should be inlinable for AsyncStream 2025-04-28 16:17:10 +09:00
Evan Wilde
1bff8cda36 Merge pull request #80877 from 3405691582/platform_executor
Add a platform executor module for OpenBSD.
2025-04-27 17:44:10 -07:00
Kuba (Brecka) Mracek
642a6ca7e6 Merge pull request #81107 from kubamracek/embedded-conc-arch-cmake
[embedded] Make the CMake setup for Embedded Concurrency distinguish ARCH and SUBDIR for builds products
2025-04-26 15:51:42 -07:00
Konrad `ktoso` Malawski
ccecaccba5 Merge pull request #81123 from ktoso/wip-correct-metadata-handling-distributed
[Distributed] thread-safety also for parameter type metadata
2025-04-27 01:59:28 +09:00
Andrew Trick
c25d46320c Merge pull request #81105 from atrick/rdar146319009-borrow-constraint
Fix LifetimeDependenceDiagnostics: scoped dependence on a copy
2025-04-26 08:08:15 -07:00
Kuba Mracek
c5aa98a449 [embedded] Make the CMake setup for Embedded Concurrency distnguish ARCH and SUBDIR for builds products 2025-04-26 07:03:19 -07:00
Konrad 'ktoso' Malawski
284c060d0a [Distributed] thread-safety also for parameter type metadata
We had fixed this bug in https://github.com/swiftlang/swift/pull/79381
but missed to realize the same problem existed for parameters as well.

This corrects the swift_func_getParameterTypeInfo impl, and also removes
the entire "unsafe" method, we no longer use it anywhere.

Resolves rdar://146679254
2025-04-26 21:30:13 +09:00
Doug Gregor
050a514588 [Strict memory safety] Update standard library for unsafe treated as a call effect 2025-04-25 21:54:23 -07:00
Andrew Trick
e9d11283b9 Add _overrideLifetime to Span APIs
The implementation previously took advantage of a missing diagnostic. They
returned a borrowed Span with a dependency on a copied argument. This illegally
promotes the dependency. This is what the author intended to do (the
implementation was correct) but the compiler can't know that so the code needs
to be explicit about overriding the lifetime.
2025-04-25 17:58:24 -07:00
Gábor Horváth
301a752707 Merge pull request #81097 from swiftlang/gaborh/mutable-span-conversion 2025-04-25 11:55:44 -07:00
3405691582
db942def27 Add a platform executor module for OpenBSD.
This is basically the same as the one for Linux, but it would be
somewhat awkward to add the platform conditional on a file named for
Linux when OpenBSD is not Linux.

Important note: if Dispatch is disabled, then this will cause a
compilation error (probably not just for OpenBSD either), because
PlatformExecutorFactory is both defined in PlatformExecutorNone.swift
and PlatformExecutor<...>.swift in this case.

Because this only bites OpenBSD bootstrap builds, and since OpenBSD
support has been upstreamed to Dispatch, default to the Dispatch
implementation for now to get this in, and we'll refactor in a different
pr.
2025-04-25 14:05:58 -04:00
Gabor Horvath
7d0d872bdb [cxx-interop] Proper conversions between MutableSpan and C++ span
One of the initializers were missing and the other was crashing at
runtime due to a faulty signature in the overlay.

rdar://149846666
2025-04-25 11:28:32 +01:00
Konrad 'ktoso' Malawski
7112f7ea56 [Concurrency] Support ~Copyable in withSerialExecutor 2025-04-25 18:40:24 +09:00
Konrad 'ktoso' Malawski
fcbd7dbc0d [Concurrency] Support ~Copyable return type in withSerialExeutor 2025-04-25 18:40:24 +09:00
Konrad 'ktoso' Malawski
84764de38c [Concurrency] Fix code completion test given new actor method 2025-04-25 18:40:24 +09:00
Konrad 'ktoso' Malawski
20fe3b0dea [Concurrency] Offer way to get SerialExecutor from Actor 2025-04-25 18:40:23 +09:00
Evan Wilde
9ff70cdb43 Merge pull request #81010 from etcwilde/ewilde/runtime-fix-clobbered-memories
[SwiftCore]: Don't always clobber memory
2025-04-24 10:06:40 -07:00
Mike Ash
66111530e1 [Runtime] Change the unowned reference fatal error to "was already destroyed."
The "was already deallocated" message is incorrect, since the target of an unowned reference stays allocated even after being deinitialized. We could say "was already deinitialized" but that's a bit of a niche term. "Was already destroyed" conveys what happened without the reader needing to worry about deinitialization versus deallocation.

rdar://149237704
2025-04-23 15:28:16 -04:00
Kuba (Brecka) Mracek
685572ed49 Merge pull request #80977 from kubamracek/embedded-concurrency-function-sections
[embedded][Concurrency] Build C++ runtime Concurrency code with -ffunction-sections and more embedded friendly flags
2025-04-23 07:11:17 -07:00
Kuba (Brecka) Mracek
84ba9dd1ad Merge pull request #81011 from kubamracek/embedded-conc-non-darwin2
[embedded][Concurrency] Also apply non-Darwin flags in Concurrency C++ runtime builds when targeting armv7m/armv7em
2025-04-22 23:06:11 -07:00
Kuba (Brecka) Mracek
3597454f71 Merge pull request #80973 from kubamracek/embedded-empty-box
[embedded] Add swift_allocEmptyBox to the embedded runtime
2025-04-22 22:31:21 -07:00
Evan Wilde
6f39a52afc [SwiftCore]: Don't always clobber memory
The new build system set `SWIFT_RUNTIME_CLOBBER_FREED_OBJECTS` to 0.
Unfortunately, the check in the Swift runtime used `#ifdef`, so even
though it was turned off, it was actually enabled in some cases.

Fixing the issue in the build system as well as switching the check to
verify that value of `SWIFT_RUNTIME_CLOBBER_FREED_OBJECTS` is taken into
account in the sources. C/C++ implicitly defines macro values to 1 when
set without a value and 0 when it is not set.

Also making the hex a bit more recognizable and grep'able by including
it as a comment.

Fixes: rdar://149210738
2025-04-22 16:51:28 -07:00
Kuba Mracek
04df4ad12e [embedded][Concurrency] Also apply non-Darwin flags in Concurrency C++ runtime builds when targeting armv7m/armv7em 2025-04-22 15:51:15 -07:00
Alastair Houghton
77eb4f05ec Merge pull request #80896 from al45tair/eng/PR-149346132
[Concurrency] Make initial executor construction fully thread safe.
2025-04-22 16:25:26 +01:00
Ian Anderson
0ae5a4251c Merge pull request #80951 from ian-twilightcoder/embedded-builtin_float
[embedded] Build the _Builtin_float overlay in embedded Swift mode
2025-04-22 00:32:30 -07:00
Kuba Mracek
71ed50c360 [embedded][Concurrency] Build C++ runtime Concurrency code with -ffunction-sections and more embedded friendly flags 2025-04-21 18:21:12 -07:00
Kuba Mracek
c0ea02f86d [embedded] Add swift_allocEmptyBox to the embedded runtime 2025-04-21 15:47:34 -07:00
Kuba (Brecka) Mracek
1281f5910a Merge pull request #80682 from kubamracek/embedded-lossless-convertible
[embedded] Add back LosslessStringConvertible to Bool and integer types
2025-04-21 14:50:57 -07:00
Meghana Gupta
b76047a846 Merge pull request #80930 from meg-gupta/relandpr
Reland #79707
2025-04-21 11:19:33 -07:00
Ian Anderson
b1e2746c38 [embedded] Build the _Builtin_float overlay in embedded Swift mode
Add embedded targets for the _Builtin_float overlay.

rdar://123951443
2025-04-21 10:34:30 -07:00
Evan Wilde
f0430eb033 Merge pull request #80934 from etcwilde/ewilde/fix-bootstrap-builds
Fix Bootstrap: UTF8EncoddingError
2025-04-21 09:49:39 -07:00
Doug Gregor
54e4400e92 Merge pull request #80933 from DougGregor/safe-nested-in-unsafe-fixes
[Strict memory safety] Improve handling of safe types nested within unsafe ones
2025-04-20 02:31:48 -07:00
Evan Wilde
783c969e10 Fix Bootstrap: UTF8EncoddingError
The pass that annotated control-flow positions unreachable after an
infinite loop was migrated to pure Swift in PR 79186
(https://github.com/swiftlang/swift/pull/79186). As a result, the
C++-only bootstrap compiler is unable to determine that the
code-location is unreachable. Placing a fatalError after the infinite
while loop.

Fixes: rdar://149631113
2025-04-19 23:42:08 -07:00
Doug Gregor
1c9875e14a Remove extraneous unsafe from the concurrency library 2025-04-19 22:02:30 -07:00
Doug Gregor
457eb4cc64 [Strict memory safety] Update standard library for nested safe/unsafe types
Use this to mark a few internal types @safe now that it works properly.
2025-04-19 19:54:32 -07:00
Meghana Gupta
d81b5f7e27 Reland #79707
Revert "Merge pull request #80767 from meg-gupta/reverttransparent"

This reverts commit 198a802719, reversing
changes made to 8eb43af590.
2025-04-19 09:55:06 -07:00
Meghana Gupta
a0fc6e2eaf Merge pull request #80712 from meg-gupta/fixoslog
Add  @_transparent to some more Integer operations
2025-04-19 09:51:07 -07:00
Doug Gregor
fe6856726e [Strict memory safety] Remove now-extraneous "unsafe" from the standard libraries
Now that we aren't propagating "unsafe" to nested types, remove
unnecessary "unsafe" keywords from the standard library.
2025-04-19 08:13:05 -07:00
Guillaume Lessard
493e853039 Merge pull request #80684 from glessard/rdar137710901-addressable-utf8view-span
[SE-0456] enable span properties for the small-String representation
2025-04-17 22:52:14 -07:00
Alastair Houghton
3d0d0b4328 [Concurrency] Make initial executor construction fully thread safe.
I had originally thought that we'd get away without this because the
executor construction generally happens in the async `main` function,
but of course if a program doesn't already use Swift Concurrency,
and someone uses it from a plug-in or library it loads, there's a
risk that we might have a race condition.

rdar://149346132
2025-04-17 21:48:42 +01:00
Eric Miotto
ac07594025 Merge pull request #80866 from edymtt/emiotto/mark-executorimpl_cpp-optional
CMake Embedded Stdlib: mark `ExecutorImpl.cpp` as optional
2025-04-17 10:09:22 -07:00
Dave Lee
6cc65c53ce Concurrency: Use "prioritized" spelling (NFC) (#80475)
These changes all reflect the the name `DefaultActorImplFooter::prioritizedJobs`. See also https://github.com/swiftlang/swift/pull/70910#discussion_r1581409259.
2025-04-17 09:39:28 -07:00
Guillaume Lessard
a5c561fb13 Merge pull request #80831 from glessard/rdar149227278-nonescapable-mutating-accessor
[LifetimeDependenceMutableAccessors] defensive feature flag
2025-04-17 09:27:23 -07:00
Doug Gregor
0ec146a687 Merge pull request #80865 from DougGregor/conformance-cache-extended-entry-deleak
[Runtime] Properly deallocate extended storage for conformance cache entries
2025-04-17 08:53:25 -07:00
Konrad `ktoso` Malawski
e454c0a5c3 Merge pull request #79457 from nickolas-pohilets/mpokhylets/hashable-stream-continuation
Added Hashable conformance to Async(Throwing)Stream.Continuation
2025-04-17 08:09:55 +09:00
Eric Miotto
a249e7fd8d CMake Embedded Stdlib: mark ExecutorImpl.cpp as optional
This is needed for internal Apple configurations that build the Embedded
Stdlib on its own.

Addresses rdar://149410405
2025-04-16 15:45:11 -07:00
Doug Gregor
885f829a63 [Conformance cache] Add allocated extended-storage for entries to the free list
This memory is part of the conformance cache concurrent hash map, so
when we clear the conformance cache, record each of the allocated
pointers within the concurrent map's free list. This way, it'll be
freed with the rest of the concurrent map when it's safe to do so.
2025-04-16 15:11:59 -07:00
Doug Gregor
d576fa30c9 [Runtime] Replace use of C++ new with malloc() 2025-04-16 14:04:14 -07:00
Doug Gregor
9eebee8b7c Merge pull request #80844 from DougGregor/conformance-cache-entry-stole-the-wrong-bit
[Runtime] Don't use the low bit of a WitnessTable pointer in the conformance cache
2025-04-16 13:45:16 -07:00