Skip to content

Commit 8750f20

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.
1 parent 6aefea0 commit 8750f20

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
@@ -170,17 +170,18 @@ extension Task: Equatable {
170170
/// much of a thing on other platforms (i.e. server side Linux systems).
171171
@available(SwiftStdlib 5.5, *)
172172
public struct TaskPriority: RawRepresentable, Sendable {
173-
public typealias RawValue = Int
174-
public var rawValue: Int
173+
public typealias RawValue = UInt8
174+
public var rawValue: UInt8
175175

176-
public init(rawValue: Int) {
176+
public init(rawValue: UInt8) {
177177
self.rawValue = rawValue
178178
}
179179

180-
public static let userInteractive: TaskPriority = .init(rawValue: 0x21)
181-
public static let userInitiated: TaskPriority = .init(rawValue: 0x19)
180+
public static let high: TaskPriority = .init(rawValue: 0x19)
181+
public static let userInitiated: TaskPriority = high
182182
public static let `default`: TaskPriority = .init(rawValue: 0x15)
183-
public static let utility: TaskPriority = .init(rawValue: 0x11)
183+
public static let low: TaskPriority = .init(rawValue: 0x11)
184+
public static let utility: TaskPriority = low
184185
public static let background: TaskPriority = .init(rawValue: 0x09)
185186
}
186187

@@ -235,7 +236,7 @@ extension Task where Success == Never, Failure == Never {
235236
}
236237

237238
// Otherwise, query the system.
238-
return TaskPriority(rawValue: _getCurrentThreadPriority())
239+
return TaskPriority(rawValue: UInt8(_getCurrentThreadPriority()))
239240
}
240241
}
241242
}
@@ -290,11 +291,11 @@ struct JobFlags {
290291
return nil
291292
}
292293

293-
return TaskPriority(rawValue: value)
294+
return TaskPriority(rawValue: UInt8(value))
294295
}
295296

296297
set {
297-
bits = (bits & ~0xFF00) | Int32(((newValue?.rawValue ?? 0) << 8))
298+
bits = (bits & ~0xFF00) | Int32((Int(newValue?.rawValue ?? 0) << 8))
298299
}
299300
}
300301

@@ -578,7 +579,7 @@ extension Task where Success == Never, Failure == Never {
578579
let priority = getJobFlags(currentTask).priority ?? Task.currentPriority._downgradeUserInteractive
579580

580581
return await Builtin.withUnsafeContinuation { (continuation: Builtin.RawUnsafeContinuation) -> Void in
581-
let job = _taskCreateNullaryContinuationJob(priority: priority.rawValue, continuation: continuation)
582+
let job = _taskCreateNullaryContinuationJob(priority: Int(priority.rawValue), continuation: continuation)
582583
_enqueueJobGlobalWithDelay(duration, job)
583584
}
584585
}
@@ -600,7 +601,7 @@ extension Task where Success == Never, Failure == Never {
600601
let priority = getJobFlags(currentTask).priority ?? Task.currentPriority._downgradeUserInteractive
601602

602603
return await Builtin.withUnsafeContinuation { (continuation: Builtin.RawUnsafeContinuation) -> Void in
603-
let job = _taskCreateNullaryContinuationJob(priority: priority.rawValue, continuation: continuation)
604+
let job = _taskCreateNullaryContinuationJob(priority: Int(priority.rawValue), continuation: continuation)
604605
_enqueueJobGlobal(job)
605606
}
606607
}

0 commit comments

Comments
 (0)