There are a few things I wonder about. From the first page of the tutorial (http://tutorial.ponylang.org/):
> It's exception safe. There are no runtime exceptions. All exceptions have defined semantics, and they are always handled.
This seems contradictory. Are there exceptions or not? EDIT. Apparently there are (http://tutorial.ponylang.org/expressions/exceptions/). But then I don't understand what the above means.
> It's deadlock free. This one is easy, because Pony has no locks at all!
This is nonsense. Deadlock happens when multiple processes/threads are waiting for each other. It is not caused by locks.
From another tutorial page (http://tutorial.ponylang.org/types/static-vs-dynamic/):
> There's no such thing as null, so your program will never try to dereference null.
But there is "None" (http://tutorial.ponylang.org/types/primitives/). How is "None" so different from this "null" that we want to avoid?
On the positive side:
As I said this looks interesting. The type system appears to have been well thought out. Intersections look like a sane way to provide functionality that other PLs either implement poorly (perhaps via "multiple inheritance"), or simply disallow.
And if the type system really does offer all the claimed guarantees, then it is a very good thing indeed.
The partial applications, the concurrency model, and the handling of immutability are also clearly features that someone has given a lot of thought to. I cannot judge the results at this point, but I like well-thought-out things. :-) And the notion of "apply", along with the shortcut syntax, seems like it provides a standard, easy to understand way to make lot of code pretty simple.
I hope to be able to look into this PL more closely in the near future.