This post is a bit overdue

Here is what ill be working on, copied from my GSoC application.....
Thread safe object allocators and memory pool management.
The need for thread safe custom allocators and memory management has been identified by the Ogre 3D project. I intend to respond to and extend the identified requirements for a custom memory management model and propose the following project.
The memory system would be created from two key sections, first a global heap with a pluggable memory allocator that can support memory auditing and profiling. And secondly a custom base class that can be extended via inheritance to allow specific families of objects to utilise a unique heap and allocation model. Both the global heap and specific family heaps should be optional at compile time, permitting the disabling of custom memory systems and a reversion to stock C++ allocation model.
The most immediate and obvious advantage to implementing a custom heap framework is debugging and profiling. By utilising a "Debug Heap" an application developer would be able to access and log detailed information about memory usage, including size a frequency of allocations, most active periods of memory usage and possible corruption or leaking of memory.
Building this functionality directly into the engine has a number of advantages over using external memory checking tools. Firstly the user is alerted to a problem the moment is arises, when recent code, the likely cause of the issue, is fresh in their mind. Secondly a custom debug heap can modify the internal specifics of the memory allocation model to integrate with existing debug information paths, resulting in a unified debug information system.
As well as an invaluable debugging and profiling tool, custom memory heaps allow for tuning of memory footprint boundaries. Thus an end user would be able to restrict an applications memory footprint to a maximum threshold. Usefull for situations where the installed memory of the development system is larger than the intended system specifications.
Additionally, per object family heaps can be introduced along side global heaps or native C++ memory schemes, permitting optimisations and improvements in responding to specific allocation patterns. An example of this could be a "String Heap" for handling small highly dynamic object allocations, as typically seen in list, tree, graph and string data structures.
Specific heaps are easily hooked into object family hierarchies by the use of inheritable per class operator new and delete overrides. Permitting participating class instances to be created using custom, pluggable memory schemes. This should have the effect of reducing load times and stabaliseing or lowing the engines memory footprint.
Once the debugging faze is passed the developer will of course be intent on getting the best performance possible from the engine. The implementation of a fast and flexible heap to meet this demand is readily attainable, with excellent examples of fast memory allocators such as Doug Lee's dlmalloc[1] code available. Coupled with a flexible C++ class system the "Release Heap" can easily be plugged in to replace the debugging heap.
Integration of the new memory scheme should be almost transparent to the existing code. Implemented simply as base classes that can bolster existing code constructions, augmented with a control API.
................
Well thats an overview, I hope people will comment on this, feedback and ideas are welcomed
