Ok, as there has not been much attention here in last days, I will put a short summary of my own.

In general, I believe this is extremely high quality proposal and Andrei stands up to his reputation. The very design seems to fit with D idiomatics and it may change completely how people think about interaction with allocator library. I like that is focuses on robust API for building allocators instead of more "magic" to use those. That said, reviewing actual implementation quality is impossible until I have a chance to try it in real large scale project and I will not be trying to do that, assuming that Andrei is incapable of writing something completely terrible even if he tried to.

Pretty much all of my concerns are about documentation, API and clarity of intention. Quality of implementation won't matter if developers won't have a clear understanding on how to use it and existing proposals feels overwhelming unless one is willing to commit quite some time to research it.

Some notes:

1. I have already mentioned that there is neither module structure overview in `package.d` nor actual module structure. This is still the case for http://erdani.com/d/phobos-prerelease/std_experimental_allocator.html 2. `IAllocator` is defined inside `package.d` file. That means that it is impossible to use interface without import ALL of allocator modules 3. Same concern is about https://github.com/andralex/phobos/blob/allocator/std/experimental/allocator/package.d#L218-L228 - unless you actually import all stuff via package.d, those configured allocators are not available. 4. There are no higher level usage examples and/or guidelines about how this is supposed to fit in user applications. Intention behind the library may be familiar to users coming from C++ but target D audience is much more than that. Having std.allocator.showcase is nice but it is still a bit too theoretical. 5. http://erdani.com/d/phobos-prerelease/std_experimental_allocator_stats_collector.html has no overview documentation at all 6. Usage of ternary is not always clear / justified. In `IAllocator` it is explained and makes sense but there are things like http://erdani.com/d/phobos-prerelease/std_experimental_allocator_bitmapped_block.html ("Ternary empty() - Returns true iff no memory is currently allocated with this allocator"). I am still not sure why it is used there instead of simple boolean.

Overall opinion : I would surely vote for inclusion of this proposal in Phobos but in current shape it is not something I'd recommend to try to beginner/intermediate level D user.

Reply via email to