Shared Persistent Heap Data Environment Manual  1.1.0
Todo List
File sascompoundheap.h

A future improvement would specify a Near Window that would restrict near allocations to be from a power of two sub-block of the containing Compound Heap. This could be used with large pages to restrict spill allocations to be from the same large page. For example if the Simple Heaps where allocated as 4K blocks but the physical Page size was 64K or 16M.

A lock Free Compound Heap to compliment the SPH Lock Free Heap implementation of sphlockfreeheap.h would be a useful addition to the SAS/SPH runtime.

File sasindexkey.h
Enhance this API to build larger (multi-part) keys via a streams interface similar to interface in sphlfentry.h. We have enough to here to implement SPHContext_t but a generalized API would make SASIndex_t more useful.
globalScope> Member SASListAllocatedRegion (void **blockAddr, unsigned long *blockSize, int *count)
should change this API to pass the max array size as a parm and return the actual count.
globalScope> Member SASListFreeMem (void **blockAddr, unsigned long *blockSize, int *count)
should change this API to pass the max array size as a parm and return the actual count.
globalScope> Member SASListFreeRegion (void **blockAddr, unsigned long *blockSize, int *count)
should change this API to pass the max array size as a parm and return the actual count.
globalScope> Member SASListInUseMem (void **blockAddr, unsigned long *blockSize, int *count)
should change this API to pass the max array size as a parm and return the actual count.
globalScope> Member SASListUncommittedMem (void **blockAddr, unsigned long *blockSize, int *count)
should change this API to pass the max array size as a parm and return the actual count.
File saslock.h

In a future implementation the intent is to extend SAS Locks to support Write Intent locks. Intent Locks would allow the holder to gain a shared lock that can be upgraded to exclusive write lock later, if needed. A Intent lock allows current holders of read locks to continue, but prevents new read locks from being granted. New read locks are held (not granted) until the corresponding Intent Lock or upgraded Write Lock is released (unlockd).

Need a API to return the PIDs associated with held locks. This will be needed to recover from hung or crashed processes.

File sassim.h
The current runtime restricts blocks to segment size or smaller. Creating larger blocks would require creating (power of 2) multiple segments (and backing files which have to memory mapped) while holding the global anchor block lock. Future releases may remove this restriction.
File sasstringbtreeenum.h
Create SASStringBTreeEnumCreateBetween SASStringBTreeEnumCreateStopBefore APIs
globalScope> Member SASStringBTreeNearAlloc (void *nearObj)
I wonder if nearObj should be SASStringBTreeNode_t to made the usage/intent clear.
File sphcontext.h
In a future implementation the intent is to allow multiple named associations to a common address value within the same context. However the restriction that a specific name can only be associated with one address value will remain.
globalScope> Member SPHContextAddName (SPHContext_t contxt, char *name, void *value)
The intent is to support multiple name associations to a single value, but this is not currently implemented. But the application can always use multiple contexts to associate multiple names to an address value.
File sphlflogentry.h
This API should be migrated to use the common sphlfentry.h API.
File sphmultipcqueue.h
Additional work will include automatic pacing with Hysteresis
File sphsinglepcqueue.h
Additional work will include automatic pacing with Hysteresis