Meerkat[DistributedProgrammingEnvironment, Need Developers]
Posted: Sun Oct 04, 2009 4:40 pm
"Looking for developers for distributed programming environme"
I've started a sourceforge project for a distributed programming environment, called meerkat, that I have been working on for the past year or two. Right now, it includes an object system, a programming language, a virtual machine, and a jit compiler. I am looking for people who are interested in distributed computing. If you can program c, then you're more than welcome to help out. I am willing to mentor people.
Meerkat basically is a distributed memory system with specialized facilities for code execution. A meerkat cluster consists of a hierarchical network of computers. This network structure is created automatically using multicast. Basically, one server is designated as the head server. It assigns every object on the network a unique 64-bit resource id. There are integer object, string object, floating point objects, code objects, and more complex objects, which allow these objects to be composited together. Objects send messages to each other and they can receive a reply back. Objects are also referred to as actors since for the most part they are self contained. The only interface they have with the outside world is through messages to other actors. Objects, or actors, can choose how they want to handle messages sent to them, in parallel or synchronously. I have built in a cooperatively scheduled fiber system to reduce the overhead of thread creation.
This is the basis on top of which we will build a parallel computing environment that will easily distribute over a computer cluster.
What I envision is the following:
If anyone wants more information, just ask.
I've started a sourceforge project for a distributed programming environment, called meerkat, that I have been working on for the past year or two. Right now, it includes an object system, a programming language, a virtual machine, and a jit compiler. I am looking for people who are interested in distributed computing. If you can program c, then you're more than welcome to help out. I am willing to mentor people.
Meerkat basically is a distributed memory system with specialized facilities for code execution. A meerkat cluster consists of a hierarchical network of computers. This network structure is created automatically using multicast. Basically, one server is designated as the head server. It assigns every object on the network a unique 64-bit resource id. There are integer object, string object, floating point objects, code objects, and more complex objects, which allow these objects to be composited together. Objects send messages to each other and they can receive a reply back. Objects are also referred to as actors since for the most part they are self contained. The only interface they have with the outside world is through messages to other actors. Objects, or actors, can choose how they want to handle messages sent to them, in parallel or synchronously. I have built in a cooperatively scheduled fiber system to reduce the overhead of thread creation.
This is the basis on top of which we will build a parallel computing environment that will easily distribute over a computer cluster.
What I envision is the following:
- Multiplatform jit - Right now the jit only really supports amd64. But with the new rewrite (the code in the jit branch of the git repo), only a code generator for i386 needs to be written.
- Support for multiple programming languages - Ri of messages[/b] - Actors can choose how they want to handle messages, either synchronously or in parallel. Right now though, all programmed actors
ght now I have my own language that is a direct map onto all of meerkat's features. However, I would like to add implementations of more languages. So far, I've tried to design the object system to be both dynamic and static (e.g. programs that use objects statically won't suffer a performance penalty while programs that do use dynamic features of objects like reflection, etc. will). The first languages I would like to implement would be python (a dynamic language) and pascal(static) - Support for parallel code constructs - This would mean things like list comprehensions, map() and reduce() functions etc.
- Support for functional programming - The object system is perfectly conducive to things such as closures and other elements necessary for functional programming. I would like to make it so that both functional parts and imperative parts of a program can integrate seamlessly, and I have ideas on how to accomplish this. I would like to implement a haskell style language on this.
- Transaction support - In any parallel or distributed sort of programming, you really need to have a good memory model. The ages of locking, etc. are over. In my opinion, software transactional memory is the way to go. This has been one of my goals since I first started this project. I have ideas on how to make this happen too.
- Terminal nodes - Work needs to be done to implement what I call terminal nodes, nodes where output is displayed. Ideally, a cluster could have multiple terminal nodes. This would be useful if we could create an ad hoc cluster between two machines over the internet. This would be useful to software that does collaboration.
- Standard library - Currently there is no standard library.
If anyone wants more information, just ask.