-
Notifications
You must be signed in to change notification settings - Fork 301
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
Add Sendability annotations #308
Conversation
Motivation: This becomes a critical feature in swift 6. Modifications: Add Sendability annotations where required. Factor out code protected by locks. Result: Compiles without warnings with Sendability checking
Sources/Logging/Logging.swift
Outdated
} | ||
} | ||
|
||
private typealias FactoryBox = ReplaceOnceBox< @Sendable (_ label: String, _ provider: Logger.MetadataProvider?) -> any LogHandler> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
private typealias FactoryBox = ReplaceOnceBox< @Sendable (_ label: String, _ provider: Logger.MetadataProvider?) -> any LogHandler> | |
private typealias FactoryBox = ReplaceOnceBox<@Sendable (_ label: String, _ provider: Logger.MetadataProvider?) -> any LogHandler> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Formatting insists on space.
Sources/Logging/Logging.swift
Outdated
@@ -1107,21 +1159,25 @@ public struct StreamLogHandler: LogHandler { | |||
internal typealias _SendableTextOutputStream = TextOutputStream & Sendable | |||
|
|||
/// Factory that makes a `StreamLogHandler` to directs its output to `stdout` | |||
@Sendable |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why is this necessary?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Because it's used as a parameter to LoggingSystem.bootstrap which requires its parameter to be sendable. This usage is in tests but feels like the only really plausible place you'd want something of this shape.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a static function, its parameter is Sendable
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok - this is now removed using the closure trick we discussed offline.
Tests/LoggingTests/TestLogger.swift
Outdated
@@ -31,6 +37,7 @@ internal struct TestLogging { | |||
) | |||
} | |||
|
|||
@Sendable |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's remove these @Sendable
s too.
Co-authored-by: Cory Benfield <[email protected]>
The PR looks good to me. The breaking change is expected and the nightly failure is unrelated and we should fix it separately
|
This PR contains the following updates: | Package | Update | Change | |---|---|---| | [apple/swift-log](https://togithub.com/apple/swift-log) | minor | `from: "1.5.4"` -> `from: "1.6.1"` | --- ### Release Notes <details> <summary>apple/swift-log (apple/swift-log)</summary> ### [`v1.6.1`](https://togithub.com/apple/swift-log/releases/tag/1.6.1): Swift Log 1.6.1 [Compare Source](https://togithub.com/apple/swift-log/compare/1.6.0...1.6.1) ##### SemVer Patch - Disable existential any build setting ([#​312](https://togithub.com/apple/swift-log/issues/312)) ### [`v1.6.0`](https://togithub.com/apple/swift-log/releases/tag/1.6.0) [Compare Source](https://togithub.com/apple/swift-log/compare/1.5.4...1.6.0) #### SemVer Minor - Add Sendability annotations in [https://github.com/apple/swift-log/pull/308](https://togithub.com/apple/swift-log/pull/308) - Fix deprecation warnings around default log implementations on handlers in [https://github.com/apple/swift-log/pull/310](https://togithub.com/apple/swift-log/pull/310) - Drop Swift versions earlier than 5.8 in [https://github.com/apple/swift-log/pull/299](https://togithub.com/apple/swift-log/pull/299) - Implement Copy-On-Write (CoW) behavior for Logger struct by [@​ayushi2103](https://togithub.com/ayushi2103) in [https://github.com/apple/swift-log/pull/297](https://togithub.com/apple/swift-log/pull/297) ##### SemVer Patch - Replace standardOutput to standardError by [@​ayushi2103](https://togithub.com/ayushi2103) in [https://github.com/apple/swift-log/pull/295](https://togithub.com/apple/swift-log/pull/295) - Use Set to spot duplicated log handler warnings in [https://github.com/apple/swift-log/pull/306](https://togithub.com/apple/swift-log/pull/306) - Make protocol usage obvious using any and some keywords in [https://github.com/apple/swift-log/pull/307](https://togithub.com/apple/swift-log/pull/307) - Remove documentation for non-existent arguments by [@​b1ackturtle](https://togithub.com/b1ackturtle) in [https://github.com/apple/swift-log/pull/309](https://togithub.com/apple/swift-log/pull/309) - Remove Docc plugin which is no longer required in [https://github.com/apple/swift-log/pull/311](https://togithub.com/apple/swift-log/pull/311) ##### Other Changes - Remove archived repository in [https://github.com/apple/swift-log/pull/292](https://togithub.com/apple/swift-log/pull/292) - Add CI for Swift 5.10 in [https://github.com/apple/swift-log/pull/287](https://togithub.com/apple/swift-log/pull/287) - Added swift-log-ecs to README.md by [@​rwbutler](https://togithub.com/rwbutler) in [https://github.com/apple/swift-log/pull/298](https://togithub.com/apple/swift-log/pull/298) - Update README.md add shipbook as backend by [@​elishas](https://togithub.com/elishas) in [https://github.com/apple/swift-log/pull/304](https://togithub.com/apple/swift-log/pull/304) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi4xMDkuNCIsInVwZGF0ZWRJblZlciI6IjM2LjEwOS40IiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9--> Co-authored-by: Self-hosted Renovate Bot <361546+cgrindel-self-hosted-renovate[bot]@users.noreply.github.enterprise.com>
Motivation:
This becomes a critical feature in swift 6.
Modifications:
Add Sendability annotations where required.
Factor out code protected by locks.
Result:
Compiles without warnings with Sendability checking