What is CRUD ?

CRUD is a lightweight communication library capable of providing
services in a decentralised environment. ie. no reliance on name
servers etc.

It is designed to be lightweight and it's intended use is Sensor
Networks and Robotics. It has some similarities to CORBA, but
differs in that it will be:
  1. Lightweight. (<200k ?)
  2. Decentralised.
  3. Low latency.
Main features to include:

Where to get it ?

You can download an initial release from the project page :

Random Notes

To use CRUD you must first be running the CRUD Gremlin "crudg". This process manges all shared FIFO objects which each process uses to talk to each other effectively and with low latency. Local communication does not go through crudg, but rather crudg provides a mechanism for CRUD programs to register themselves, locally and on the network. The network side of communication does however pass through crudg.

The use shared memory and semaphores under Linux is weird. The wrapper class for global semaphores and shared memory uses the System V calls and as a result tends to leave shared memory objects and semaphore objects etc lying around. If your program crashes (or crudg), chances are it did not clean up properly and will leave behind a few of these. The script "crudgclear" will clean up any likely candidates, and also remove any temporary files in "/tmp" used as access handles.

Global mutexes are implemented using file locks, so also tends to leave around temporary files in "/tmp" also.

Hopefully at some point a better arrangement can be employed or Linux will fully support all POSIX varieties of shared objects. Logo