[Haskell-cafe] Re: Top Level <-
Brandon S. Allbery KF8NH
allbery at ece.cmu.edu
Sun Sep 7 12:00:46 EDT 2008
On 2008 Sep 7, at 6:23, Ganesh Sittampalam wrote:
> On Sat, 6 Sep 2008, Ashley Yakeley wrote:
>> Ganesh Sittampalam wrote:
>>>>> The set of ACIO expressions exp is the "static initialisers" of
>>>>> M. The RTS must note when each static initialiser is run, and
>>>>> cache its result val. Let's call this cache of vals the "static
>>>>> results cache" of M.
>>>>> When M is loaded, and a static results cache for M already
>>>>> exists, then it will be used for the vals of M.
>>>> This sounds "reachable" to me, and therefore static overhead and
>>>> not a leak.
>>> You can call it what you like, but it's still unacceptable
>>> behaviour, particularly since clients of M will have no way of
>>> telling from its API that it will happen.
>> That what will happen?
> That memory will be used and not ever be reclaimable.
> Suppose I am writing something that I intend to be used as part of a
> plug-in that is reloaded in different forms again and again. And I
> see module K which does something I want, so I use it. It so happens
> that K uses M, which has a <-. If I knew that using K in my plug-in
> would cause a memory leak, I would avoid doing so; but since the
> whole point of <- is to avoid making the need for some state visible
> in the API.
False, as it's in ACIO and therefore advertises that it will "leak
memory" in the name of correct behavior. Since you consider memory
leaks to be worse than correct behavior, you can avoid anything that
uses ACIO. (But you might want to go look at that list of modules
which do global variable initialization and therefore aren't entirely
trustworthy unless something like ACIO exists.)
brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allbery at kf8nh.com
system administrator [openafs,heimdal,too many hats] allbery at ece.cmu.edu
electrical and computer engineering, carnegie mellon university KF8NH
More information about the Haskell-Cafe