I want to break something: binary compatibility for the pool API.

This has been on my list for a long time, but I haven't yet had
time to implement it.

What I'm thinking of is the following:

* Preface the apr_pool_t structure with a set of function
 pointers for the pool's "methods": alloc, free, destroy,
 create subpool, etc.

* Replace the current pool functions with macros that call
 the right method for a given pool:
   #define apr_palloc(p, size)  (*(p->alloc_fn))(p, size)
 (The point of using macro for this is to avoid the performance
 impact of adding another function call per apr_palloc.)

This will let us introduce new pool variants, like reaps for
example, without requiring changes to either the pool framework
or anyone's application code.

--Brian




Reply via email to