From: Jon Harrop <jon@ffconsultancy.com>
To: caml-list@yquem.inria.fr
Subject: Re: [Caml-list] Google summer of Code proposal
Date: Mon, 23 Mar 2009 19:38:04 +0000 [thread overview]
Message-ID: <200903231938.04825.jon@ffconsultancy.com> (raw)
In-Reply-To: <49C79A54.5020406@inria.fr>
On Monday 23 March 2009 14:19:00 Xavier Leroy wrote:
> 3- A language implementation like OCaml breaks down in four big parts:
> 1- Front-end compiler
> 2- Back-end compiler and code emitter
> 3- Run-time system
> 4- OS interface
> Of these four, the back-end is not the biggest part nor the most
> complicated part. LLVM gives you part 2, but you still need to
> consider the other 3 parts. Saying "I'll do 1, 3 and 4 from scratch",
> Harrop-style, means a 5-year project.
On the contrary, my "style" was to provide the features that I value
(multicore & FFI) in a usable form (stop-the-world) with the shortest
possible development time (i.e. <<6 months to create something useful).
Specifically:
1- Front-end compiler: use camlp4 to provide an embedded DSL for
high-performance parallel numerics and/or reuse front-ends from existing
compilers like OCaml, PolyML, MosML, NekoML to build completely new language
implementations.
2- Back-end compiler and code emitter: reuse LLVM.
3- Run-time system: write the simplest possible precise GC and use
stop-the-world to apply it to threads that may then run in parallel.
4- OS interface: make it as easy as possible to call C directly.
HLVM had solved (2), (3) and (4) after only 3 months of part-time work. I
vindicated my style!
> 7- To finish, I'll preventively deflect some likely reactions by Jon
> Harrop:
>
> "But you'll be tied to OCaml's data representation strategy!"
> Right, but 1- implementing you own data representation strategy is
> a lot of work, especially if it is type-based, and
Actually I found that easy, not least because I wanted a user-friendly FFI so
I just used C's data representation whenever possible.
> 2- OCaml's strategy is close to optimal for symbolic computing.
Is MLton not several times faster than OCaml for symbolic computing?
> "But LLVM assembly is typed, so you must have types!"
> Just use int32 or int64 as your universal type and cast to
> appropriate pointer types in loads or stores.
That is entirely possible and could be useful as an incremental improvement to
OCaml's existing bytecode interpreter but it is not a step toward my goals.
> "But your code will be tainted by OCaml's evil license!"
> It is trivial to make ocamlopt dump Cmm code in a file or pipe.
> (The -dcmm debug option already does this.) Then, you can have a
> separate, untainted program that reads the Cmm code and transforms it.
Again, that is another technically-feasible step away from my goals because
OCaml's CMM has already been mangled for its data representation (e.g. 31-bit
ints, boxed floats).
> "But shadow stacks are the only way to go for GC interface!"
> No, it's probably the worst approach performance-wise; even a
> conservative GC should work better.
Building a state-of-the-art optimized concurrent GC Leroy-style means an
infinity-year project. =:-p
Seriously though, I think it is essential to get a first working version of a
GC that permits parallel threads. HLVM will be useful to a lot of people long
before its GC gets optimized.
--
Dr Jon Harrop, Flying Frog Consultancy Ltd.
http://www.ffconsultancy.com/?e
next prev parent reply other threads:[~2009-03-23 19:32 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 [this message]
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
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=200903231938.04825.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