The Karmasphere DP language

A friend of mine's asking for commentary on their project: The Karmasphere DP language

The Karmasphere DP language is a high-performance non-blocking
parallel language for performing data processing. It is designed
to give the user a high degree of control over the usage of system
resources, for example, how many CPU cores or how much disk I/O time
to use, without requiring the software developer to explicitly consider
these issues in code.

It was originally intended for collecting attributes of URLs and
domain names to be used in an anti-spam system, although it has since
developed into a full parallel programming language with many general
purpose operators.

It can take full advantage of multiprocessor (SMP or NUMA) systems,
and may be scaled sideways - since the interpreter and environment
are stateless, an entire cluster of machines may run the interpreter
in parallel without any requirement for synchronization.

In a quick conversation on IRC, the following was said:

Well, most people doing this kind of thing choose to play around with explicit continuations in the user language - which is totally technically correct, but from the user's point of view, impractical. Any language which requires a user to understand continuations or other theoretical concepts is the wrong answer. This language is designed to be simple to comprehend for the user who doesn't know anything about programming, even less parallelism.

Personally I find the relationship with GraphViz interesting.

edit: A demo is now available

Comment viewing options

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


One comment and I hope no one is offended: You need a better name than "Karmasphere". Karmasphere is not suggestive of the space you want to develop. Find a good advertising agent.


With most of the documentation being in Javadoc and not having the time to extensively trawl the source my comments may be a bit ignorant.

I'm not totally convinced by trying to keep the syntax so close to Graphviz. While having support for graphviz is a very good idea I'd fear the syntax won't 'scale' especially if you wanted to write subgraphs in place. User defined operators (in script rather than Java) may not be a particular design criteria though.

It seems very similar to Flow Based Programming especially as it seems to be fixed topology.

I work in games and have been looking into this area to try and come up with ideas for scripting that would be easy for non-expert programmers and also scale to modern multicore machines. The workflow/dataflow model is one that keeps cropping up so I think the direction they've taken is a good one.

I have an artist friend who uses a similar system called Particle Flow to script particle systems in 3D Studio MAX. His success is evidence that the programming model is quite intuitive.

We did change the syntax a

We did change the syntax a bit, and offered a backward compatible option. e.g. you can say "x = new foo [ .... ];" but the graphviz compatible option "x [op="foo", ...];" is available. Other than that, graphviz actually seems to be a pretty good syntax. It didn't work for modelling polynomial functions though (no surprise there) so we've designed another non-turing-complete language for that.

I'm not very good at names, please suggest one. Also, there is now a live demo, which is a bit limited, but pretty.