caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: "Nicolas Cannasse" <warplayer@free.fr>
To: "Michal Moskal" <malekith@pld-linux.org>,
	"John Goerzen" <jgoerzen@complete.org>
Cc: <caml-list@inria.fr>
Subject: Re: [Caml-list] Alternative Bytecodes for OCaml
Date: Fri, 27 Aug 2004 11:38:23 +0200	[thread overview]
Message-ID: <004f01c48c19$9950d8e0$0100a8c0@warp> (raw)
In-Reply-To: <20040826214223.GA25370@roke.freak>

> It's probably possible to implement OCaml's objects using .NET
> objects, using one interface per method, or casting everything down
> to System.Object, but this doesn't seem a) pretty, b) fast nor c)
> interoperable.  And c) is one of the main reasons .NET exists.
> You would at least have to add .NET-like classes and interfaces to OCaml
> to make using .NET libraries possible. And if you want to write
> libraries in such OCaml.NET, you would be restricted to these types at
> the edges. And this in turn means you have to have very good support
> for these features, and this turns out not to be so easy -- after one
> year of development we still don't have full support for this stuff in
> Nemerle.

I agree with you here, the main problems OCaml and other functionnal
languages targeting CLR faces here are interoperability and performances.

There is two kind of VM : typeless ones (such as OCaml one) which bytecode
does not contains any RTTI - since all checks are done at compile-time, and
typed VMs (such as .NET CLR and the JVM). Typed VMs are a lot
ObjectOriented, and all performances (for instance GC) are tuned for an OO
type system. This is a real problem for the future of functionnal languages
: if the mainstream technology becomes .NET CLR in the next five years, yes
there will be an open source alternative in Mono but it will still be a pain
and have a performance cost to run a functional language on such an OO VM .
And even if it runs, what about interoperability ? How to expose correctly
(and automaticaly) a functional style API to an OO language, and vice-versa
? Since the type system on the language is directly embedded into the VM,
one need to "forget" functionnal style when generating bytecode.

There is several attempts to fix this problem (LLVM might be one), but none
from Sun or Microsoft. That's why the functionnal languages community should
focus on interoperating its languages in a single runtime system. If we
don't, we might loose to the leverage that the CLR provides. There is
already a big set of languages (Nemerle among them) that are targeting the
CLR because they don't want to get through reinventing the well and writing
a native code generator, an other set of languages (such as Felix) are
generating C code in order to leverage on GCC.

Ocaml is great for writing DSL, and have both very efficient bytecode and
nativecode compilers. However theses two technologies are right now reserved
to OCaml itself.  If they were more "opened" (means : documented, provide
API and tools to ease code generation, ...) , it would enable DSL writters
to leverage on theses great technologies of OCaml and might interest as well
other languages writters. However that goal might require some endorsement
and active support from OCaml team since I guess it will need modifications
in order to support other languages.

Remarks anyone ?

Regards,
Nicolas Cannasse

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


  reply	other threads:[~2004-08-27  9:37 UTC|newest]

Thread overview: 80+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-08-25 14:26 John Goerzen
2004-08-25 14:38 ` Richard Jones
2004-08-25 14:50   ` John Goerzen
2004-08-25 15:02     ` John Goerzen
2004-08-26  9:05       ` Raphael Montelatici
2004-08-26 13:20         ` John Goerzen
2004-08-26 13:30           ` John Goerzen
2004-08-25 14:55   ` Lars Nilsson
2004-08-25 15:06     ` Jason Smith
2004-08-25 16:14       ` John Goerzen
2004-08-28  3:49     ` John Goerzen
2004-08-25 15:05 ` skaller
2004-08-25 15:21   ` Lars Nilsson
2004-08-25 15:22   ` Jason Smith
2004-08-25 15:52     ` John Goerzen
2004-08-25 16:26       ` Jason Smith
2004-08-25 16:40         ` Jason Smith
2004-08-25 16:49       ` Ville-Pertti Keinonen
2004-08-25 17:01         ` Jason Smith
2004-08-25 17:17         ` John Goerzen
2004-08-25 20:00       ` skaller
2004-08-25 15:23   ` Brian Hurt
2004-08-25 15:24     ` Christophe TROESTLER
2004-08-27 14:26     ` Daniel Ortmann
2004-08-27 14:44       ` skaller
2004-08-27 14:59       ` Brian Hurt
2004-08-25 15:35   ` John Goerzen
2004-08-25 16:00   ` Richard Jones
2004-08-25 15:40 ` Nicolas Cannasse
2004-08-27 17:55   ` John Goerzen
2004-08-27 18:37     ` skaller
2004-08-27 18:49       ` John Goerzen
2004-08-27 20:39         ` skaller
2004-08-27 20:56           ` John Goerzen
2004-08-27 22:05             ` Richard Jones
2004-08-27 23:15               ` John Goerzen
2004-08-31 11:10                 ` Keith Wansbrough
2004-08-28  0:25             ` skaller
2004-08-28  9:35               ` Marcin 'Qrczak' Kowalczyk
2004-08-28  9:50                 ` Marcin 'Qrczak' Kowalczyk
2004-08-28 10:41                   ` skaller
2004-08-28 11:37                     ` Marcin 'Qrczak' Kowalczyk
2004-08-25 17:37 ` Basile Starynkevitch [local]
2004-08-25 18:00   ` Richard Jones
2004-08-25 22:10 ` Yamagata Yoriyuki
2004-08-26  0:09   ` John Goerzen
2004-08-26  4:26     ` [Caml-list] bytecode and native code at once Brandon J. Van Every
2004-08-26  9:55       ` skaller
2004-08-26 15:52         ` [Caml-list] " mikel
2004-08-26 17:09           ` Paul Snively
2004-08-26 17:31             ` mikel evins
2004-08-26 18:04               ` Paul Snively
2004-08-26 18:28                 ` mikel evins
2004-08-26 21:15             ` skaller
2004-08-27  8:52           ` Keith Wansbrough
2004-08-27 15:39             ` David Brown
2004-08-27 15:48               ` mikel evins
2004-08-26 21:42     ` [Caml-list] Alternative Bytecodes for OCaml Michal Moskal
2004-08-27  9:38       ` Nicolas Cannasse [this message]
2004-08-27 13:09         ` John Goerzen
2004-08-27 13:44           ` Brian Hurt
2004-08-27 13:58           ` skaller
2004-08-27 20:48           ` Nicolas Cannasse
2004-08-27 21:03             ` Benjamin Geer
2004-08-30 16:40             ` John Goerzen
2004-08-27 19:49         ` Blair Zajac
2004-08-27 22:18           ` Richard Jones
2004-08-27 23:38             ` Yamagata Yoriyuki
2004-08-28 16:40               ` Basile Starynkevitch [local]
2004-08-28 17:03                 ` [Caml-list] (GC issues) " Nicolas Cannasse
2004-08-28 20:45                   ` [Caml-list] " Basile Starynkevitch [local]
2004-08-29  2:31                     ` skaller
2004-08-29  5:04                       ` Brandon J. Van Every
2004-08-29 12:58                         ` John Goerzen
2004-08-29 15:06                           ` Brian Hurt
2004-08-29 15:22                             ` Radu-Mihail Obada
2004-08-29 10:12                     ` Nicolas Cannasse
2004-08-30 12:23                       ` Basile Starynkevitch [local]
2004-08-30 13:17                         ` Nicolas Cannasse
2004-08-26 16:04 ` [Caml-list] " =?unknown-8bit?Q?=A3ukasz?= Dobrek

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='004f01c48c19$9950d8e0$0100a8c0@warp' \
    --to=warplayer@free.fr \
    --cc=caml-list@inria.fr \
    --cc=jgoerzen@complete.org \
    --cc=malekith@pld-linux.org \
    /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).