There is so much counterintuitive information in the transition from #Swift5 to #Swift6 . Many people don't understand the difference between Swift tools and language modes.

Xcode, SPM, and Swift CLI all handle this slightly differently.

I'd like to crowd source some info about how Swift behaves differently depending on tools version, language mode, etc.

I would appreciate anyone willing to contribute to this spreadsheet. #swiftlang

https://docs.google.com/spreadsheets/d/15CYe85pQNmKMIEM-2jhRPu2lQJAFSorviPm3MintqR8/edit?usp=sharing

Swift 5 to 6 Transition

Google Docs
One of the reasons why I made this table is because there appears to be conflicting information in the documentation. According to the docs (https://arc.net/l/quote/rgxzvrfi), "The Swift 6 language mode is opt-in. Existing projects will not switch to this mode without configuration changes."
Quote from “Migrating to Swift 6 | Documentation”

But last night, I compiled an SPM project using the Swift 6 compiler. The target failed to compile due to strict concurrency checking. This doesn't make sense because 1) Swift 6 language mode is supposed to be opt-in, and 2) concurrency violations are supposed to be non-breaking warnings in Swift 5 language mode.