From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Delivered-To: caml-list@yquem.inria.fr Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by yquem.inria.fr (Postfix) with ESMTP id A3C09BC48 for ; Fri, 8 Apr 2005 02:07:51 +0200 (CEST) Received: from wproxy.gmail.com (wproxy.gmail.com [64.233.184.206]) by nez-perce.inria.fr (8.13.0/8.13.0) with ESMTP id j3807oWG024056 for ; Fri, 8 Apr 2005 02:07:51 +0200 Received: by wproxy.gmail.com with SMTP id 71so1489313wra for ; Thu, 07 Apr 2005 17:07:50 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:reply-to:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:references; b=JF/vZFor2+mpMMPYmbyTID3aG9p+S7ZQrfTvPithILn7ZimoV6udMT3DEWiAfQN5Iid5V34YIYTBPFn7PM3KxcrX42/UEhgvm4Sf1t3XAP2I63Y4Tf0fP4Sg5dNde4rvBEa9vAysI5Ynuc9TpbufBy2GvQM9SWE541+bE4E43e8= Received: by 10.54.71.15 with SMTP id t15mr655017wra; Thu, 07 Apr 2005 17:07:49 -0700 (PDT) Received: by 10.54.13.28 with HTTP; Thu, 7 Apr 2005 17:07:49 -0700 (PDT) Message-ID: Date: Fri, 8 Apr 2005 01:07:49 +0100 From: Chris Campbell Reply-To: Chris Campbell To: Yoann Fabre Subject: Re: [Caml-list] Raising an old issue : true concurrency in OCaml [Xavier, Damien, any] Cc: caml-list@yquem.inria.fr In-Reply-To: <20050407214731.E31541C00085@mwinf1201.wanadoo.fr> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit References: <20050407214731.E31541C00085@mwinf1201.wanadoo.fr> X-Miltered: at nez-perce with ID 4255CB56.001 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Spam: no; 0.00; caml-list:01 ocaml:01 damien:01 stdlib:01 runtime:01 ocaml:01 ...:98 ...:98 frightening:98 parallelism:01 parallelism:01 wrote:01 marshal:01 short:01 gcs:01 X-Spam-Checker-Version: SpamAssassin 3.0.2 (2004-11-16) on yquem.inria.fr X-Spam-Status: No, score=0.0 required=5.0 tests=RCVD_BY_IP autolearn=disabled version=3.0.2 X-Spam-Level: On Apr 7, 2005 10:47 PM, Yoann Fabre wrote: > And of course, we cannot execute more than one Caml thread at a time... See below. [snip] > So what can we do? > Here's my two cents proposal for the short/long term: > > Phase 1 - Maybe provide some module in the stdlib to: > - allow easy management of multiple Caml /processes/ > - allow easy communication with message passing (MPI like + Marshal) > - allow easy synchronisations between these pseudo-threads > Phase 2 - Add another module to: > - provide a standard interface to memory sharing > - allow some awful dirty hack to GC-allocate some special blocks into that > region? Some "custom2" with reference counting (ouch!) between the GCs > Phase 3 - write a concurrent GC (CGC) (re-ouch!) Instead you could try something like AliceML and Oz approach. They have a single runtime, but distribution support. Oz makes it easy to distribute a program being network transparent. Alice, I'm not sure about. They do memory sharing on local machines and tcp on networks. You gain parallelism by distributing the program. Sure it's done manually, but in some ways that's a plus. I'm not sure if OCaml has distributed systems support, but if not an alternative to your proposal would be to build distribution support for ocaml. > Well, I've studied a bit the CGC field and read Damien's Phd... It's > frightening! But, to recast the issue in a somewhat broader context, can we > really still pretend that a "modern" generic language can live without true > concurrency in 2005? Concurrency != parallelism. Chris