From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.5 required=5.0 tests=AWL autolearn=disabled version=3.1.3 Received: from mail1-relais-roc.national.inria.fr (mail1-relais-roc.national.inria.fr [192.134.164.82]) by yquem.inria.fr (Postfix) with ESMTP id 10729BBC4 for ; Mon, 30 Mar 2009 23:14:50 +0200 (CEST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Aq0AAH/S0EnUnwdkiGdsb2JhbACCIZNkAQEBCgkKCRAFtVSDegY X-IronPort-AV: E=Sophos;i="4.38,431,1233529200"; d="scan'208";a="26661574" Received: from relay.pcl-ipout02.plus.net ([212.159.7.100]) by mail1-smtp-roc.national.inria.fr with ESMTP/TLS/RC4-SHA; 30 Mar 2009 23:14:49 +0200 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AsYEAG7T0EnUnw4T/2dsb2JhbACCIclug3oG Received: from pih-relay06.plus.net ([212.159.14.19]) by relay.pcl-ipout02.plus.net with ESMTP; 30 Mar 2009 22:14:49 +0100 Received: from [87.115.141.255] (helo=leper.local) by pih-relay06.plus.net with esmtp (Exim) id 1LoOoi-0002QE-SY for caml-list@yquem.inria.fr; Mon, 30 Mar 2009 22:14:49 +0100 From: Jon Harrop Organization: Flying Frog Consultancy Ltd. To: caml-list@yquem.inria.fr Subject: Re: [Caml-list] Google summer of Code proposal Date: Mon, 30 Mar 2009 22:21:00 +0100 User-Agent: KMail/1.9.9 References: <200903211439.47107.cdome@bk.ru> <49D0E86E.9000307@motion-twin.com> <243036F0-7532-4D25-A1DA-1D2D0749D93C@gmail.com> In-Reply-To: <243036F0-7532-4D25-A1DA-1D2D0749D93C@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200903302221.00833.jon@ffconsultancy.com> X-Plusnet-Relay: 98a01235e87a216a324ac53a71b2395f X-Spam: no; 0.00; node:01 extensively:01 trivial:01 lambda:01 trivial:01 ocaml's:01 parallelism:01 ocaml:01 bindings:01 compiler:01 fpls:01 run-time:01 2009:98 advancing:98 2009:98 On Monday 30 March 2009 16:56:37 Joel Reymont wrote: > There's a nice discussion of LLVM in the context of Alice ML here: > > http://lambda-the-ultimate.org/node/440 > > I'm told that not much has changed since. Whoever told you that was wrong: a lot has changed in LLVM over the past five years. Indeed, it is one of the most rapidly advancing open source projects in existence thanks to extensive contributions from the likes of Apple and Google. LLVM has long since had full support for tail calls. See the "tco" example in the "test.ml" file of HLVM for an example. I tested tail calls in LLVM extensively before choosing to build upon it. I have found and worked around some minor bugs in their TCO implementation but Arnold Schwaighofer just committed a fix that will be in LLVM 2.6. The toy Scheme implementation that was in LLVM five years ago has long since been overshadowed by full-blown FPL implementations like the Pure language: http://pure-lang.sourceforge.net/ I don't understand Anton van Straaten's other complaint about the lack of closures. They are trivial to implement. Again, look at the examples in HLVM (although they are hand-coded because we don't have lambda lifting yet). Moreover, LLVM offers huge advantages: . LLVM-generated code on x86 is often several times faster and can be up to an order of magnitude faster than any existing FPL implementation. Moreover, LLVM can JIT compile, making it trivial to outperform interpreted languages like OCaml's current top-level. See HLVM's preliminary performance results, for example: http://flyingfrogblog.blogspot.com/2009/03/performance-ocaml-vs-hlvm-beta-04.html . LLVM generates code very quickly, rivalling ocamlopt's compile times. . SSE and atomic instructions for high-performance numerics and parallelism/concurrency. . Mature and easy-to-use API with native OCaml bindings. . Substantial friendly community who not only explain things but fix them for you quickly. . Commercially viable: LLVM is already shipping in products. LLVM does have some disadvantages: . LLVM's JIT compiler is not multicore capable (but what FPL implementations are?). . LLVM does not bundle a reusable high-performance concurrent garbage collector (but what standalone FPLs do?). . LLVM's GC API is experimental so if you want a specialized run-time (e.g. optimized specifically for symbolics) you have to write it yourself. -- Dr Jon Harrop, Flying Frog Consultancy Ltd. http://www.ffconsultancy.com/?e