caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Damien Doligez <damien.doligez@inria.fr>
To: caml-list@inria.fr
Subject: Re: [Caml-list] Is Weak.get guaranteed to return Some until finalisation is executed?
Date: Tue, 18 Nov 2003 13:21:24 +0100	[thread overview]
Message-ID: <BA0B4BC6-19C1-11D8-8941-00039310CAE8@inria.fr> (raw)
In-Reply-To: <3FB55226.9080707@cs.caltech.edu>

On Friday, November 14, 2003, at 11:07 PM, Aleksey Nogin wrote:

> Currently the documentation for the Weak module seems to imply that 
> the Weak.get can return None whenever it feels like it. Is there any 
> guarantees as to when things are required to stay in the weak array?

It is not documented, mostly because the documentation doesn't introduce
the notions needed to talk about sharing, pointers, and liveness of
data.  It would be nice to do it, in order to give some precise
specification of (==), weak pointers, and finalisation.  But it is
a large amount of work, as the corresponding theoretical work doesn't
exist (as far as I know), and we should carefully avoid over-specifying.

>  In particular, if I call GC.finalise on a heap-allocated value and 
> then stick a value into a weak array, can I be sure that Weak.get will 
> return   Some until after the finalisation function is executed (and 
> finishes its execution)?

Definitely not.  Weak pointers are erased first, and finalisation
functions are called afterward.  When the finalisation function is
called, it really has the only existing pointer to the value.

-- Damien

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


      reply	other threads:[~2003-11-18 12:20 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-11-14 22:07 Aleksey Nogin
2003-11-18 12:21 ` Damien Doligez [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=BA0B4BC6-19C1-11D8-8941-00039310CAE8@inria.fr \
    --to=damien.doligez@inria.fr \
    --cc=caml-list@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).