Hello, Swift community.
The review of SE-0480: Warning Control Settings for SwiftPM ran from April 23rd to May 5th, 2025. SE-0480 covers topics under the evolution authority of both the Language Steering Group (LSG) and the Ecosystem Steering Group (ESG), and so the review was co-managed by both groups. Feedback was fairly light, but the discussion raised several interesting points.
In the proposal, warning groups are spelled as strings. Several reviewers expressed that it would be better if these were strongly-typed names so that they could be autocompleted and couldn't be typo'ed. The LSG and ESG discussed this, and we agree with the counter-argument made in the review that maintaining a versioned list of supported warning groups would be problematic, especially for non-Swift compilers. There are other ways to address the discoverability of warning groups, such as teaching autocomplete to suggest specific string arguments. The proposal also does not preclude the addition of named constants in the future.
Another reviewer raised the point that the proposal does not provide any way to specify different warning group names to different compilers, which is problematic when specifying warning groups for C family source, where e.g. Clang and MSVC organize their warning groups differently and use very different names for them. The LSG and ESG accept the argument made in the review that it is okay to address this in a future proposal that will add support for conditionalizing on the C compiler being used.
Finally, in the proposal, warning settings are only applied to local packages, not packages that are pulled as dependencies. A reviewer expressed that it's unfortunate that this happens implicitly and suggested that it might be better to organize these "dev-only" settings into their own section of the package manifest. The author asked for time to look into this, and SE-0480 was accordingly returned for revision. Upon investigation, however, this change appears to not be straightforward to make. Moreover, there are already several other dev-only settings in the package manifest, such as strict concurrency safety warnings (in modes prior to Swift 6) and strict memory safety warnings. The LSG and ESG believe it's fine to investigate adding a dev-only settings section in a future proposal, and that this should not be allowed to hold up support for warning groups in Swift 6.2. Since this was the only reason SE-0480 was returned for revision, there is nothing to revise.
SE-0480 is therefore accepted.
We'd like to thank the reviewers for their suggestions during the review; even though the proposal ended up being accepted as originally written, these were important ideas that were well worth exploring.
Franz Busch
John McCall
Review Managers