I really like the struct-based method of modeling data in Swift. The language makes this very convenient. Unfortunately the new Observation framework which is at the center of SwiftUI requires classes.
This makes sense, observation requires a durable identity, which structs don’t have.
Two struct might be the same, but when I observe for changes in one, but not another, a distinction arises which is best captured by object-based identity
DispatchQueue is anything but fork/renice. Also there is async/await now. GCD should be used for concurrent work only now, not async work.
Memory protection is fully implemented in Swift 5.10, but compilation only warns, enabled by default as errors in Swift 6.