From: Jon Harrop <jon@ffconsultancy.com>
To: caml-list@yquem.inria.fr
Subject: Re: [Caml-list] Google summer of Code proposal
Date: Mon, 30 Mar 2009 22:21:00 +0100 [thread overview]
Message-ID: <200903302221.00833.jon@ffconsultancy.com> (raw)
In-Reply-To: <243036F0-7532-4D25-A1DA-1D2D0749D93C@gmail.com>
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
next prev parent reply other threads:[~2009-03-30 21:14 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-21 12:39 Andrey Riabushenko
2009-03-21 13:01 ` [Caml-list] " Seo Sanghyeon
2009-03-21 13:47 ` Andrey Riabushenko
2009-03-21 14:51 ` Jon Harrop
2009-03-21 20:49 ` Joel Reymont
2009-03-21 21:35 ` Jon Harrop
2009-03-21 13:38 ` Jon Harrop
2009-03-21 20:43 ` Joel Reymont
2009-03-21 21:28 ` Michael Ekstrand
2009-03-23 17:23 ` [Caml-list] " Kuba Ober
2009-03-21 22:21 ` [Caml-list] " Jon Harrop
2009-03-22 0:12 ` Fermin Reig
2009-03-23 14:19 ` Xavier Leroy
2009-03-23 19:38 ` Jon Harrop
2009-03-24 15:39 ` Xavier Leroy
2009-03-30 15:42 ` Nicolas Cannasse
2009-03-30 15:56 ` Joel Reymont
2009-03-30 21:21 ` Jon Harrop [this message]
2009-03-31 0:36 ` Jon Harrop
[not found] <20090321204943.E2ACCBBFA@yquem.inria.fr>
2009-03-21 21:45 ` Andrey Riabushenko
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=200903302221.00833.jon@ffconsultancy.com \
--to=jon@ffconsultancy.com \
--cc=caml-list@yquem.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