There is an interesting new language called Axum, which appears to be very much a DSL from my perspective, that focuses primarily on parallelism.
Axum, previously known as Maestro, is a Microsoft incubation language project meant to provide a parallel programming model for .NET through isolation, actors and message passing. The language borrows many concepts from Erlang but with a C#-like syntax.
Axum is an imperative language with a C#-like syntax. While it is aware of objects, classes cannot be defined, because the language is domain and actor-oriented instead of being object-oriented. Axum is not a general purpose language being targeted at solving concurrency tasks and is built upon Concurrency and Coordination Runtime (CCR) from Microsoft Robotics.
It’s really interesting to think about when you realize that parallelism is in fact a solvable problem from within a general purpose programming language. However the problem is so complex that it is generally very difficult for anyone to get it right (with object oriented languages at least). So their solution was to create a DSL that doesn’t let you get it wrong (or minimizes it at least). I think this is the perfect example of why an external DSL can be so powerful.
External DSLs can allow you to model, what would be a complex design pattern in a general purpose language, with much lower rate of errors. You couldn’t do this nearly as effectively in an internal DSL.
More from the Axum team: http://blogs.msdn.com/maestroteam/archive/2009/04/17/forging-ahead.aspx