The X10 Programming Language

X10 is a type-safe, modern, parallel, distributed object-oriented language intended to be very easily accessible to Java(TM) programmers. It is targeted to future low-end and high-end systems with nodes that are built out of multi-core SMP chips with non-uniform memory hierarchies, and interconnected in scalable cluster configurations. A member of the Partitioned Global Address Space (PGAS) family of languages, X10 highlights the explicit reification of locality in the form of places; lightweight activities embodied in async, future, foreach, and ateach constructs; constructs for termination detection (finish) and phased computation (clocks); the use of lock-free synchronization (atomic blocks); and the manipulation of global arrays and data structures.

X10 was mentioned here a couple of times, but I don't think it was ever discussed at length.

Here's the (relatively empty) IBM Research X10 home page.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Dumber VM or smarter VM

Should VM's become smarter and more functional or should they become simpler?

In the case of networks, a former ATT engineer argues that simple dumb networks triumphs over clever complicated ones. He cited telephone networks with clever switches are losing out to simple dumb packet switched network, where clients get smarter instead.

Oz users?

I don't know how wide is the knowledge of the fact that Vijay Saraswat is the co-author of Concurrent constraint programming, which I believe created a new subfield in the CS research, leading to development of AKL, and, subsequently, Oz (home of Mozart, CTM book).

It would be especially interesting to hear opinions of Oz users (and authors :) ) about X10.

Yes, I realize that despite sharing the author, X10 is quite far from Concurrent Constraint Programming. Still, some ideas might have survived.


There's a paper describing X10:
X10: An Object-oriented Approach to Non-Uniform Cluster Computing.

As for me, I'm not sure what "It is targeted to future low-end and high-end systems" means. A language targeted at low-end systems would work fine on high-end systems, and a language targeted at high-end systems is a perfectly valid thing to do, but I don't think going both ways will get very far.

For example, of the profiles available for Java, I think many are rarely used, and those targeted at the low end are neither well used nor very useful.

Targeting low-end vs high-end

It means you can write your algorithm with explicit parallism, and that algorithm will scale to the system it's on. They talk about this in the Scalability and Flexibility sections on page 3 of the paper you linked to.

As to targeting low-end and having it work fine on high-end, they say, again on page 3:

For instance, a commitment to a single processor multiple data (SPMD) program model would not be appropriate.