The following idea traversed my mind reading the previous thread about ancient. May be I am missing something, So I hope the expert could tell me if they think this is possible/good idea/bad idea We could add to OCaml a third generation with the following properties: - Objects are moved to this third generation either manually (or created there) or automatically after surviving k major GC (k may be ajustable at runtime ? k = 0 means never ?) - Objects in the third generation can be shared between processes (like in Ancient) - There is a global greyval table, protected by a mutex, and an object must be added in the table of greyval when mutated if it is a pointer pointing to the major or minor heap of a specific process. Then, the object stops to be accessible for reading by other processes (Here there is room to change the design ...). - Objects in the third generation are collected by a reference counter + a specific GC: the counter counts the number of processes holding at least one pointer to this object from their own stack, major or minor heap. This counter is only increased/decreased by the GC of each process (a mutex is neeeded here). There is also a specific GC process (mark and sweep ?). To take care of pointers from the third generation to the third generation and make sure that object with a zero counter can be removed. - This third generation could be dealf with be a daemon and accessible by processes written using different languages ... What do you think ? -- Christophe Raffalli Universite de Savoie Batiment Le Chablais, bureau 21 73376 Le Bourget-du-Lac Cedex tel: (33) 4 79 75 81 03 fax: (33) 4 79 75 87 42 mail: Christophe.Raffalli@univ-savoie.fr www: http://www.lama.univ-savoie.fr/~RAFFALLI --------------------------------------------- IMPORTANT: this mail is signed using PGP/MIME At least Enigmail/Mozilla, mutt or evolution can check this signature. The public key is stored on www.keyserver.net ---------------------------------------------