On 2015-05-14 23:27, Andrei Alexandrescu wrote:
Also, I need two more good names: one for what's now called "porcelain"
- high-level typed interface for allocators, and one for "best of
Beatles" (not defined yet) - a module collecting a number of canned good
allocator designs by connecting together components.

This may sound like a request, but it's probably more of a direction.

I intended to start writing my D software on top of a ScopedPool stack.

I'll explain... It's a manual memory management strategy I devised (invented) because I needed to optimize heavy use of XML/Json/DOM/tree-based structures.

The idea is to allocate in the top-most pool of the caller and de-allocate when the pool goes out of scope. A pool is nice because it's meant to trash all the objects instantly, it's much faster and efficient. Just like when a process crashes.

You simply use `alloc!T` instead of `new T`. The scope is created with `auto pool = ScopedPool(1024*16);`, which basically allocates pools in 16kb increments. You can use `pool.freeze()` and then it will temporarily pop the pool from the stack so that `alloc!T` uses the pool one level lower. The lowest level is the GC.

Example:
https://github.com/etcimon/spd

Implementation source:
https://github.com/etcimon/memutils/blob/master/source/memutils/scoped.d

If you like the idea, let this be a permission to license it to Boost =)

Reply via email to