Genjutsu Project

Project Description

Project Name: Genjutsu
Version: 0.01
Developer: David Barbour

Genjutsu is an attempt to bring the powers of functional languages into a distributed object model. In particular, modern systems such as ZeroC's ICE, CORBA, and DCOM each lack the ability to define new procedures or new object types without doing recompiles on the systems involved. Genjutsu will capture these capabilities by embracing the more functional languages.

Genjutsu hopes to eventually support distributed MMORPGs and similar projects as an all-in-one library. It will incorporate networking and object distribution, object name servers, object persistence, interactions between objects, and even the more standard file distribution that is necessary in distributed games.

"Distribution" here has a peer-to-peer focus, and Genjutsu is designed to allow any user to be involved with both the creation of new content and interaction with content designed by others. However, Genjutsu will be usable in a centralized system.

Genjutsu is written in pure ansi C, although it will host libraries in its own language. Genjutsu supports a language closely related to Lisp/Scheme. Genjutsu will eventually support both Windows and Linux and most other OS's that support BerkeleyDB, although it has only been tested under Linux so far.

Major issues to tackle are designing efficient networking algorithms to distribute data, and providing security that does not compromise utility.

At the moment I am not looking for more developers, although I will be welcoming them the moment I deem myself done with the alpha stage.


Currently Genjutsu implements its own lexer and parser for a scheme-like language. My current task here is implementing lambda to create procedures that can be written with an external representation. (In order to do this in a manner that will allow for efficient distribution of procedure defs, Genjutsu sacrifices the normal "set!" command and mutable data objects... except those allocated explicitly)

The most immediate tasks include:

  • Finish an implementation for lambda
  • Create an initial external representation for lambda-created procedures
  • Definition and naming of Objects
  • Implementation of initial object persistence and rules
  • Writing of Networking and Sockets and protocols into library
  • Transparent sharing of non-private objects.

    Later, I'll start to deal with privacy issues, network efficiency, etc. Currently, expect efficiency to be rather mediocre.

    Accessing Genjutsu

    You can currently access and download the alpha version of Genjutsu from Logo