Skip to content

Commit 640cdb6

Browse files
committed
[Concurrency] Rename TaskPriority members.
Based on feedback from the second review, we decided to go with high/default/low/background, with aliases for the Dispatch-inspired names. While here, make TaskPriority be backed by a UInt8 to better describe the actual restrictions, and start removing userInteractive, because clients shouldn't be able to specify it. (cherry picked from commit 8750f20)
1 parent 2a23b23 commit 640cdb6

File tree

2 files changed

+23
-13
lines changed

2 files changed

+23
-13
lines changed

stdlib/public/Concurrency/SourceCompatibilityShims.swift

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,16 @@ extension Task where Success == Never, Failure == Never {
3434
@available(SwiftStdlib 5.5, *)
3535
extension TaskPriority {
3636
@available(*, deprecated, message: "unspecified priority will be removed; use nil")
37-
public static let unspecified: TaskPriority = .init(rawValue: 0x00)
37+
@_alwaysEmitIntoClient
38+
public static var unspecified: TaskPriority {
39+
.init(rawValue: 0x00)
40+
}
41+
42+
@available(*, deprecated, message: "userInteractive priority will be removed")
43+
@_alwaysEmitIntoClient
44+
public static var userInteractive: TaskPriority {
45+
.init(rawValue: 0x21)
46+
}
3847
}
3948

4049
@available(SwiftStdlib 5.5, *)
@@ -55,7 +64,7 @@ extension Task where Failure == Error {
5564
@_alwaysEmitIntoClient
5665
@available(*, deprecated, message: "`Task.runDetached` was replaced by `Task.detached` and will be removed shortly.")
5766
public static func runDetached(
58-
priority: TaskPriority = .unspecified,
67+
priority: TaskPriority? = nil,
5968
operation: __owned @Sendable @escaping () async throws -> Success
6069
) -> Task<Success, Failure> {
6170
detached(priority: priority, operation: operation)

stdlib/public/Concurrency/Task.swift

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -198,17 +198,18 @@ extension Task: Equatable {
198198
/// much of a thing on other platforms (i.e. server side Linux systems).
199199
@available(SwiftStdlib 5.5, *)
200200
public struct TaskPriority: RawRepresentable, Sendable {
201-
public typealias RawValue = Int
202-
public var rawValue: Int
201+
public typealias RawValue = UInt8
202+
public var rawValue: UInt8
203203

204-
public init(rawValue: Int) {
204+
public init(rawValue: UInt8) {
205205
self.rawValue = rawValue
206206
}
207207

208-
public static let userInteractive: TaskPriority = .init(rawValue: 0x21)
209-
public static let userInitiated: TaskPriority = .init(rawValue: 0x19)
208+
public static let high: TaskPriority = .init(rawValue: 0x19)
209+
public static let userInitiated: TaskPriority = high
210210
public static let `default`: TaskPriority = .init(rawValue: 0x15)
211-
public static let utility: TaskPriority = .init(rawValue: 0x11)
211+
public static let low: TaskPriority = .init(rawValue: 0x11)
212+
public static let utility: TaskPriority = low
212213
public static let background: TaskPriority = .init(rawValue: 0x09)
213214
}
214215

@@ -263,7 +264,7 @@ extension Task where Success == Never, Failure == Never {
263264
}
264265

265266
// Otherwise, query the system.
266-
return TaskPriority(rawValue: _getCurrentThreadPriority())
267+
return TaskPriority(rawValue: UInt8(_getCurrentThreadPriority()))
267268
}
268269
}
269270
}
@@ -318,11 +319,11 @@ struct JobFlags {
318319
return nil
319320
}
320321

321-
return TaskPriority(rawValue: value)
322+
return TaskPriority(rawValue: UInt8(value))
322323
}
323324

324325
set {
325-
bits = (bits & ~0xFF00) | Int32(((newValue?.rawValue ?? 0) << 8))
326+
bits = (bits & ~0xFF00) | Int32((Int(newValue?.rawValue ?? 0) << 8))
326327
}
327328
}
328329

@@ -620,7 +621,7 @@ extension Task where Success == Never, Failure == Never {
620621
let priority = getJobFlags(currentTask).priority ?? Task.currentPriority._downgradeUserInteractive
621622

622623
return await Builtin.withUnsafeContinuation { (continuation: Builtin.RawUnsafeContinuation) -> Void in
623-
let job = _taskCreateNullaryContinuationJob(priority: priority.rawValue, continuation: continuation)
624+
let job = _taskCreateNullaryContinuationJob(priority: Int(priority.rawValue), continuation: continuation)
624625
_enqueueJobGlobalWithDelay(duration, job)
625626
}
626627
}
@@ -648,7 +649,7 @@ extension Task where Success == Never, Failure == Never {
648649
let priority = getJobFlags(currentTask).priority ?? Task.currentPriority._downgradeUserInteractive
649650

650651
return await Builtin.withUnsafeContinuation { (continuation: Builtin.RawUnsafeContinuation) -> Void in
651-
let job = _taskCreateNullaryContinuationJob(priority: priority.rawValue, continuation: continuation)
652+
let job = _taskCreateNullaryContinuationJob(priority: Int(priority.rawValue), continuation: continuation)
652653
_enqueueJobGlobal(job)
653654
}
654655
}

0 commit comments

Comments
 (0)