Skip to content

Commit 2ea67bf

Browse files
rjmccallslavapestov
authored andcommitted
Add changelog entries for SE-0423 and SE-0431.
I'm making an attempt to order these correctly for the SE number rather than "chronologically" by the order in which we bothered to add release notes.
1 parent 613b321 commit 2ea67bf

File tree

1 file changed

+50
-4
lines changed

1 file changed

+50
-4
lines changed

CHANGELOG.md

Lines changed: 50 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,33 @@
55
66
## Swift 6.0
77

8+
* [SE-0431][]:
9+
You can now require a function value to carry its actor isolation
10+
dynamically in a way that can be directly read by clients:
11+
12+
```swift
13+
func apply<R>(count: Int,
14+
operation: @isolated(any) async () -> R) async -> [R]
15+
where R: Sendable {
16+
// implementation
17+
}
18+
```
19+
20+
The isolation can read with the `.isolation` property, which has type
21+
`(any Actor)?`:
22+
23+
```swift
24+
let iso = operation.isolation
25+
```
26+
27+
This capability has been adopted by the task-creation APIs in the
28+
standard library. As a result, creating a task with an actor-isolated
29+
function will now synchronously enqueue the task on the actor, which
30+
can be used for transitive event-ordering guarantees if the actor
31+
guarantees that jobs will be run in the order they are enqueued, as
32+
`@MainActor` does. If the function is not explicitly isolated, Swift
33+
still retains the right to optimize enqueues for functions that actually
34+
start by doing work with different isolation from their formal isolation.
835

936
* [SE-0423][]:
1037
You can now use `@preconcurrency` attribute to replace static actor isolation
@@ -46,6 +73,21 @@
4673
The dynamic actor isolation checks can be disabled using the flag
4774
`-disable-dynamic-actor-isolation`.
4875

76+
* [SE-0420][]:
77+
`async` functions can now explicitly inherit the isolation of their caller
78+
by declaring an `isolated` parameter with the default value of `#isolation`:
79+
80+
```swift
81+
func poll(isolation: isolated (any Actor)? = #isolation) async -> [Item] {
82+
// implementation
83+
}
84+
```
85+
86+
When the caller is actor-isolated, this allows it to pass isolated state
87+
to the function, which would otherwise have concurrency problems. The
88+
function may also be able to eliminate unwanted scheduling changes, such
89+
as when it can quickly return in a fast path without needing to suspend.
90+
4991
* [SE-0418][]:
5092

5193
The compiler would now automatically employ `Sendable` on functions
@@ -10405,15 +10447,19 @@ using the `.dynamicType` member to retrieve the type of an expression should mig
1040510447
[SE-0407]: https://github.com/apple/swift-evolution/blob/main/proposals/0407-member-macro-conformances.md
1040610448
[SE-0408]: https://github.com/apple/swift-evolution/blob/main/proposals/0408-pack-iteration.md
1040710449
[SE-0411]: https://github.com/apple/swift-evolution/blob/main/proposals/0411-isolated-default-values.md
10408-
[SE-0417]: https://github.com/apple/swift-evolution/blob/main/proposals/0417-task-executor-preference.md
1040910450
[SE-0412]: https://github.com/apple/swift-evolution/blob/main/proposals/0412-strict-concurrency-for-global-variables.md
1041010451
[SE-0413]: https://github.com/apple/swift-evolution/blob/main/proposals/0413-typed-throws.md
10411-
[SE-0422]: https://github.com/apple/swift-evolution/blob/main/proposals/0422-caller-side-default-argument-macro-expression.md
10412-
[SE-0427]: https://github.com/apple/swift-evolution/blob/main/proposals/0427-noncopyable-generics.md
1041310452
[SE-0414]: https://github.com/apple/swift-evolution/blob/main/proposals/0414-region-based-isolation.md
10414-
[SE-0430]: https://github.com/apple/swift-evolution/blob/main/proposals/0430-transferring-parameters-and-results.md
10453+
[SE-0417]: https://github.com/apple/swift-evolution/blob/main/proposals/0417-task-executor-preference.md
1041510454
[SE-0418]: https://github.com/apple/swift-evolution/blob/main/proposals/0418-inferring-sendable-for-methods.md
10455+
[SE-0420]: https://github.com/apple/swift-evolution/blob/main/proposals/0420-inheritance-of-actor-isolation.md
10456+
[SE-0422]: https://github.com/apple/swift-evolution/blob/main/proposals/0422-caller-side-default-argument-macro-expression.md
1041610457
[SE-0423]: https://github.com/apple/swift-evolution/blob/main/proposals/0423-dynamic-actor-isolation.md
10458+
[SE-0427]: https://github.com/apple/swift-evolution/blob/main/proposals/0427-noncopyable-generics.md
10459+
[SE-0429]: https://github.com/apple/swift-evolution/blob/main/proposals/0429-partial-consumption.md
10460+
[SE-0430]: https://github.com/apple/swift-evolution/blob/main/proposals/0430-transferring-parameters-and-results.md
10461+
[SE-0431]: https://github.com/apple/swift-evolution/blob/main/proposals/0431-isolated-any-functions.md
10462+
[SE-0432]: https://github.com/apple/swift-evolution/blob/main/proposals/0432-noncopyable-switch.md
1041710463
[#64927]: <https://github.com/apple/swift/issues/64927>
1041810464
[#42697]: <https://github.com/apple/swift/issues/42697>
1041910465
[#42728]: <https://github.com/apple/swift/issues/42728>

0 commit comments

Comments
 (0)