- I beefed up the tutorial in the following documentation and now it covers everything I know about it: http://philippeb8.github.io/root_ptr/
This is one of the most important subject in computer science and I would be surprised to see no manager interested to supervise the submission of Root Pointer.
I looked over documentation... Questions: 1. From what I understand it is basically reference-counting pointer with a "pool" that deletes pointers with dangling references. Am I right? 2. What I thread safety assumptions on this library? i.e. does it use atomic operations to handle reference counters? 3. What happens when root_ptr is deleted and node_ptr exists? Does use of node_ptr lead to undefined behavior? If so it should be marked as big warning. I want to add a small thing.
From my point of view the biggest issue of shared_ptr/reference counting isn't cyclic references (that are easily broken with weak references and some smart programming) but rather the overhead of the atomic operations that cost hundreds of cycles and cache invalidation. This is BTW one of the major reasons GC is more efficient in certain scenarios.
Run benchmarks of copying pointers as well in single core case and multiple core cases. IMHO it is interesting concept a sort of merge between object/memory pool and shared_ptr. I think that due to the simple fact that it is so basic library, before you even try to get to a formal review you need: (a) Rewrite documentation making it very clear what every thing does including something that look trivial to you as copy constructor: restrictions, relationships, behavior what it does etc. (b) If it is your own design/research of concept say it explicitly, otherwise provide references to books, research papers that discuss root pointer algorithms (c) Describe the algorithm in much wider manner including better examples, values of reference counters etc. (d) Provide much wider beginner tutorial with samples It looks interesting but for something that basic documentation isn't even 1/2 ready. My $0.02 Artyom Beilis