caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Jacques Garrigue <garrigue@math.nagoya-u.ac.jp>
To: orbitz@ezabel.com
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] Scoped Bound Resource Management just for C++?
Date: Wed, 9 Feb 2011 09:48:15 +0900	[thread overview]
Message-ID: <EB54873F-CFEF-49D0-B575-B3AFB85CA722@gmail.com> (raw)
In-Reply-To: <50AF76A1-30E0-4735-AFB2-88BB603899CE@ezabel.com>

On 2011/02/09, at 8:57, orbitz@ezabel.com wrote:

> One of the benefits, in my opinion, of C++ is SBRM.  You can reason about the lifetime of an object and have an give yourself guarantees about its clean up.  The method of initialization and clean up are also consistent for every object in the language.
> 
> My questions are:
> 1) Do other people in the FP world consider this to be a good strategy?
> 2) Can this be done in a sane way in a GCd language?
> 3) What are the alternatives in a language like Ocaml?

It is difficult to compare a manually managed language to a GCd language, a fortiori a functional one.
One first answer is that if your language is GCd you don't care about lifetime: the GC will clean up when needed anyway.
You may be concerned by when finalization occurs, but if your language is functional finalization cannot be observed, so you really don't care.
So I would say that you really don't think about these problems in most situations.
The only exceptions I see are:
* Memory leaks: have to be careful that you are not referencing dead data, preventing the GC from freeing it.
   This is a well known problem in Haskell, where you have lots of closure which can refer to huge amounts of data.
   This is much less a problem in ocaml, where most data structures do not contain closures,
    so you just have to be careful to design your data structures properly (you have to in any language...)
* Interaction with external world: explicitly managing objects outside of the ocaml heap.
   This is going to occur when you interface with a database, or with any external library or entity that manages large states.
   A good example is communicating with a GUI library.
   The GC API allows you to free data structures when they are no longer referenced by ocaml, but this may be too late
   (your application may not be calling the GC often enough, or you may have lurking references around)
   This is a situation where you might want to reason about object lifetime, but I'm not aware of tools to do that in ocaml.
   I don't know if SBRM (whatever it is) would help there.

Jacques Garrigue

  parent reply	other threads:[~2011-02-09  0:48 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-02-08 23:57 orbitz
2011-02-09  0:46 ` Guillaume Yziquel
2011-02-09  0:48 ` Jacques Garrigue [this message]
2011-02-09  6:25 ` dmitry grebeniuk
2011-02-09 12:01 ` rossberg
2011-02-09 15:15   ` orbitz
2011-02-09 16:14     ` Gerd Stolpmann
2011-02-09 16:52       ` David Rajchenbach-Teller
2011-02-09 17:54         ` orbitz
2011-02-09 21:50           ` Jon Harrop
2011-02-10  8:10           ` David Rajchenbach-Teller
2011-02-10 10:39     ` Guillaume Yziquel
2011-02-10 10:59       ` Guillaume Yziquel
2011-02-09 19:11   ` Florian Weimer
2011-02-09 20:10     ` Andreas Rossberg
2011-02-09 20:45       ` Florian Weimer
2011-02-09 21:12         ` Andreas Rossberg
2011-02-10 21:31           ` Florian Weimer
2011-02-09 18:03 ` Jon Harrop
2011-02-09 20:47 ` Norman Hardy
2011-02-09 21:00   ` Gabriel Scherer

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=EB54873F-CFEF-49D0-B575-B3AFB85CA722@gmail.com \
    --to=garrigue@math.nagoya-u.ac.jp \
    --cc=caml-list@inria.fr \
    --cc=orbitz@ezabel.com \
    /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).