Adopt strict concurrency for project#157
Conversation
* Fix one warning related to that
|
Thanks for opening this PR, @Overcot. We were so close to having everything right for strict concurrency mode 🥲. I wanted to better understand the implications of enabling this would be for downstream consumers. Reading this article by @mattmassicotte, I came to the conclusion that it's the right thing to do here. However, I was surprised to see CI failing on Swift 6.0.3 with this error (both Linux and macOS):
No such problems for Swift 6.1.0, though: https://github.com/modelcontextprotocol/swift-sdk/actions/runs/17327395019/job/49779583926?pr=157 It looks like we'll need to either provide a version-specific package manifest or conditionalize this setting. |
2ae2267 to
fa43821
Compare
fa43821 to
68da99c
Compare
|
Nice, that fixed it. Merging now. Thanks again for your help, @Overcot. |
|
Glad you all figured it out! The compiler recently downgraded the errors produced for unnecessary flags recently, but I cannot quite recall which version did that. Maybe 6.1 The issue you ran into here looks like it would affect 6.2+ only - it's caused by the introduction of |
* Enable building with the Swift Linux SDK (modelcontextprotocol#151) * Update README to document support for Alpine Linux (modelcontextprotocol#153) * Adopt strict concurrency for project (modelcontextprotocol#157) * Adopt strict concurrency for project * Fix one warning related to that * Add version-specific manifest for Swift 6.0 --------- Co-authored-by: Alexey Ivashko <a_ivashko@apple.com> Co-authored-by: Mattt Zmuda <mattt@me.com> * Make `Tool.description` optional (modelcontextprotocol#160) * Make Tool.description optional * Make description parameter in Tool initializer optional * fix: allow description field to be absent from `Tool` (modelcontextprotocol#159) * fix: allow description field to be absent from `Tool` * description field is not a requried field of Tool * Apply suggestions from code review * Update Tests/MCPTests/ToolTests.swift --------- Co-authored-by: Mattt <mattt@me.com> * Add Mac Catalyst to target dependencies for EventSource. (modelcontextprotocol#163) * chore: update licensing to Apache 2.0 for new contributions (modelcontextprotocol#177) * Add SECURITY.md with GitHub Security Advisories guidance (modelcontextprotocol#200) * V0.11.x (modelcontextprotocol#199) * Support 2025-06-18 Spec (modelcontextprotocol#167) * Support OpenAI _meta for Tool * Update init * Add title and outputSchema * Concurreny issue * General fields * Add Generate Fields to Server elements * 4 tab spacing * Update Version * Elicitation * Format * More tests and inits * Elicitation in README * Fix orphaned test * Add title to more structs * Public init * Fix meta validation and make tests more generic * Format and make Result properties public again * Revert more visibility changes * feat: 2025-11-25 phase 1, includes Version, Icon, Progress (modelcontextprotocol#181) * chore: fixed unit tests * feat: added icon and progess base structs * feat: added progress notification and meta to callTool * feat: added tests * feat: simplified RequestMeta encoding/decoding * tests: added unit test to track progress * chore: rebased v0.11.x * feat: implemented cancellation * feat: added overloaded callTool method * fix: encoding Response _meta fix * chore: added old version to the versions list * feat: 2025-11-25 phase 2; added Logging and Completions (modelcontextprotocol#196) * feat: added Logging and Completions * feat: updated EmbeddedResource for the latest spec * chore: changed encoding of meta in Prompts to encodeIfPresent * feat: compliance tests + http server transport (modelcontextprotocol#197) * feat: http server transport * feat: added http server transport * feat: removed unused files * feat: added conformance tests * feat: improved conformace testing * chore: removed redundant files * feat/2025-11-25: sampling, elicitation, roots (modelcontextprotocol#198) * feat: Roots implementation * feat: added unit testing * feat: improved unit tests and fixed NetworkTransport crash * feat: implemented sampling and elicitation * feat: improved sampling tests * feat: improved elicitation tests * feat: improved confirmance tests * feat: improved Prompts unit tests * feat: removed test code * feat: updated conformance tests * chore: removed redundant commas * chore: removed 6.0.3 swift version from ci * chore: improved unit tests a little bit * chore: update README.md * chore: add server progress tracking example to README.md * chore: updated README.md * chore: updated transports table formatting * chore: updated MockNetworkConnection --------- Co-authored-by: Austin Evans <austinjevans@me.com> Co-authored-by: yehorsobko <yehorsobko@macpaw.com> --------- Co-authored-by: Tobias <t089@users.noreply.github.com> Co-authored-by: Mattt <mattt@me.com> Co-authored-by: Alexey Ivashko <mcivashko@gmail.com> Co-authored-by: Alexey Ivashko <a_ivashko@apple.com> Co-authored-by: Yifan Liu <liuyf1117@hotmail.com> Co-authored-by: Semen Kudriavtsev <sam@kudr.me> Co-authored-by: adam jones <domdomegg+git@gmail.com> Co-authored-by: Den Delimarsky <53200638+localden@users.noreply.github.com> Co-authored-by: Maksym Mova <maks.mova@gmail.com> Co-authored-by: Austin Evans <austinjevans@me.com> Co-authored-by: yehorsobko <yehorsobko@macpaw.com>
Motivation and Context
If I enable strict concurrency in project that depends on swift-sdk it shows that there's a warning with :
How Has This Been Tested?
By building a framework, it shouldn't impact any runtime behavior
Breaking Changes
No
Types of changes
Checklist
Additional context