Brad Moore just announced the release of Deepend 3.0, but before we get into what Deepend actually is, I’d like to start with this awesome explanation behind the name:
- Its the end of the pool you’d expect to go to, if the pool is to have subs floating in it.
- Hopefully it can be used to write deependable software.
- Hopefully it doesn’t mean this is something the author has gone off of.
Those three reasons are good enough for me, and with the name out the way, lets move on to tackle the big question of “what exactly is Deepend?”
Deepend is a dynamic storage pool with Subpool capabilities for Ada 2005 and Ada 2012 where all the objects in a subpool can be reclaimed all at once, instead of requiring each object to be individually reclaimed one at a time. A Dynamic Pool may have any number of subpools. If subpools are not reclaimed prior to finalization of the pool, then they are finalized when the pool is finalized.
Rather than deallocate items individually which is error prone and subceptable to memory leaks and other memory issues, a subpool can be freed all at once automatically when the pool object goes out of scope.
Have you ever wondered why Deallocating in Ada is called Unchecked_Deallocation, or why Ada has a new operator, but not a delete operator?
Part of the reason is that Ada was designed with safety in mind, and heap deallocations are viewed as error prone as it is in many languages.
With this Storage pool, Unchecked_Deallocation is implemented as a No-Op (null procedure), because it is not needed or intended to be used.
Subpool based storage management provides a safer means of memory management, which can outperform other mechanisms for storage reclamation including garbage collection.
So there you have it, straight from the horse’s mouth.