Swift
Swift’s per-release blog posts at swift.org/blog carry the breaking-change disclosures, structured as migration guides when the scope warrants it. The most operationally significant of these documented the path to ABI stability in Swift 5.0 (2019) and the complete-concurrency enforcement that became the compiler default in Swift 6. The Swift 6 migration required projects to audit actor isolation and Sendable conformance across their entire codebase; the blog’s migration guide is the canonical record of what the compiler now rejects that it previously accepted under default settings.
The Swift Evolution proposals at github.com/apple/swift-evolution are the other half of the surface. Each accepted proposal documents the motivation, the design decision, and the source-compatibility impact of a language change; reading the original proposal for a behaviour that surprises in production often yields the clearest account of why the language behaves that way. For the full list of resolved and in-progress changes across a release, the compiler’s CHANGELOG.md in the apple/swift repository covers what the blog summaries elide.