Swift can be used to write first-class, native apps just like Objective-C and even used alongside Objective-C in the same project. It includes features borrowed from other modern languages (Rust, Go etc.), like generics, tuples and explicit optionals. Many of the features of Swift are designed to ensure that the compiler can catch issues at compile-time. It's much more difficult to write code that will crash a Swift app.
As a seasoned Objective-C developer I'll probably reminisce about the good old days when I swizzled methods and did all sorts of bad things, but it's a good move for the platform :-)
You can do fairly ridiculous things in the functional fragment of Swift [0][1] which match the expressive power of languages like Haskell/ML/Scala. You also gain the standard complement of
* Immutability all over
* Actually decent type inference
* Optional types
* Anonymous functions all over
* Pattern matching
* Real tuples
* Real sum types
On the OO side you've got powerful generics, classes open to explicit extensions, and protocols (traits, typeclasses, etc) along with a pretty firm commitment to ARC. From my understanding of ObjC there's not a whole lot gained in the OO side of Swift. * Clear reference/value differences
* No pointers
* No NULL
[0] http://tel.github.io/2014/07/27/calkin-wilf-in-swift/
[1] http://tel.github.io/2014/07/30/immutable_enumeration_in_swi...