I have a question. Isn't it more useful to bring uniqueness type to languages like C# and JAVA, instead of implementing STM in VMs?
STM has more impact on what developers and compiler is doing by now. But most of the code we are developing by now are not concurrent by default. So if the current type systems force "uniqueness type" for all imperative-types in C# or Java, most of our programs that are already developed, should work.
On the other hand concurrent programming model will not change current developing methods very much, and syntax remains almost untouched.
(Of course I prefer a expression-based, declarative language. But that would not happen without a Microsoft or Sun behind it! :) )