Macaulay now runs out of memory more gracefully. It saves roughly 12K of memory for coming back up for air the first time, and can process subsequent lines of an input file successfully, such as a betti command following a res command that runs out of memory. The abort set variable now increments on each out of memory, so infinite loops are no longer possible. (In the past, Macaulay could fill a hard disk with an infinite loop of useless output after running out of memory, wearing out its welcome on various departmental facilities! This can no longer happen.) ``grep -i rainy'' to see source code changes.
A cache_mem command has been added, to allow user control of this reserve memory. It can be used to save more than the default choice, to provide for recursive out-of-memory rescues, and to provide for subsequent calculations. This command recycles any current holdings, if any, then caches the requested amount for the next out-of-memory. cache_mem takes two arguments, representing two kinds of memory. Intelligent use will require experimentation. cache_mem with no arguments gives help and current holdings (an allocator block is 4400 bytes):
% cache_mem cache_mem <internal allocator blocks> <K's for malloc> (currently reserving 2 blocks, and 4K for malloc)