Assignment using := and string concatenation using adjacency aren't particularly new.
edit -- further looking through the presentations ...
They seem to have ditched the 'new' keyword, but not gone as far as having inferred typing which is a pity.
Counter c = Counter();
c = Counter();
:= and = are used to distinguish between assignment to mutable and immutable variables. Is this necessary?
Clever use of syntactic sugar gives it a Lua-like flavour for programmatic generation of markup / UIs.
Use of & and | symbols gives a clever way to assemble interfaces.
When an object "satisfies" (ie "implements") interfaces, it can combine them either as intersections (&) or unions (|) of multiple interfaces.
A few nice features imported from functional programming land include algebraic types and type-safe switches.
A lot of attention paid to the covariance/contravariance tarpit.
What initializes a data structure should not care how the data structure was allocated. It's two functions one () -> T and T -> T allow them to be first class citizens.
If you want to combine them use a static method that simply invokes the initializer after the allocator (which is how it works anyway, and how new is implemented in both Ruby and Obj-C). And it's not like it solves any real problems as it's perfectly alright to have uninitialized and incorrectly initialized objects with current constructors.