www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Re: D vs VM-based platforms

reply lubosh <lubosha gmail.com> writes:
Sean Kelly Wrote:

 Java runs on a VM largely because it allows proprietary applications to 
 be run on any platform with a supporting VM. The alternative would be 
 to distribute code in source form and have the user build locally, or to 
 pre-build for every target platform (which is not always feasible).

I don't mind to do build for every target platform. There's a lot of I/O and CPU overhead initializing JIT compiler and compiling source runtime. Users are constantly complaining about start-up times. That's why Microsoft provided utility called NGEN which is producing native binaries of .NET bytecode so JIT compilation won't be needed. Whole .NET framework is practically NGENed during installation. I understand JIT compilation is not going away, especially for dynamic languages such as Python but I'm not sure if we can really squeeze that much more from JIT compilation of statically-typed languages. If there are not going to be significant performance gains in comparison to running pre-compiled programs, then I suppose we're just adding one unnecessary layer and JAVA+.NET are going wrong direction. I'm just looking for answers if JIT compilation for statically-typed languages is doomed or has any hope. Lubos
Apr 30 2007
next sibling parent reply Don Clugston <dac nospam.com.au> writes:
lubosh wrote:
 Sean Kelly Wrote:
 
 Java runs on a VM largely because it allows proprietary applications to 
 be run on any platform with a supporting VM. The alternative would be 
 to distribute code in source form and have the user build locally, or to 
 pre-build for every target platform (which is not always feasible).

I don't mind to do build for every target platform. There's a lot of I/O and CPU overhead initializing JIT compiler and compiling source runtime. Users are constantly complaining about start-up times. That's why Microsoft provided utility called NGEN which is producing native binaries of .NET bytecode so JIT compilation won't be needed. Whole .NET framework is practically NGENed during installation. I understand JIT compilation is not going away, especially for dynamic languages such as Python but I'm not sure if we can really squeeze that much more from JIT compilation of statically-typed languages. If there are not going to be significant performance gains in comparison to running pre-compiled programs, then I suppose we're just adding one unnecessary layer and JAVA+.NET are going wrong direction. I'm just looking for answers if JIT compilation for statically-typed languages is doomed or has any hope.

I don't think JIT as performed by Java and .NET makes any sense; it's performed far too late. However, the fast fourier transform code in www.fftw.org is a stunning example of an alternative. It compiles several algorithms, and profiles each of them. Then it links in the fastest one. You have to be able to JIT the algorithm; JITing the code generation step is useless.
Apr 30 2007
parent Mike Parker <aldacron71 yahoo.com> writes:
Don Clugston wrote:

 I don't think JIT as performed by Java and .NET makes any sense; it's 
 performed far too late.

You might be interested in this article: http://www-128.ibm.com/developerworks/java/library/j-rtj2/index.html
May 01 2007
prev sibling parent reply Bruno Medeiros <brunodomedeiros+spam com.gmail> writes:
lubosh wrote:
 Sean Kelly Wrote:
 
 That's why Microsoft provided utility called NGEN which is producing native
binaries of .NET bytecode so JIT compilation won't be needed. Whole .NET
framework is practically NGENed during installation.
 

Ah, interesting, so that's why the installtion of the the .NET framework takes a rather long time, mistery explained. -- Bruno Medeiros - MSc in CS/E student http://www.prowiki.org/wiki4d/wiki.cgi?BrunoMedeiros#D
May 03 2007
next sibling parent reply Pragma <ericanderton yahoo.removeme.com> writes:
Bruno Medeiros wrote:
 lubosh wrote:
 Sean Kelly Wrote:

 That's why Microsoft provided utility called NGEN which is producing 
 native binaries of .NET bytecode so JIT compilation won't be needed. 
 Whole .NET framework is practically NGENed during installation.

Ah, interesting, so that's why the installtion of the the .NET framework takes a rather long time, mistery explained.

But what's truly ridiculous is that .NET has exactly *one* target platform. -- - EricAnderton at yahoo
May 03 2007
next sibling parent reply Jari-Matti =?ISO-8859-1?Q?M=E4kel=E4?= <jmjmak utu.fi.invalid> writes:
Pragma wrote:

 Bruno Medeiros wrote:
 lubosh wrote:
 Sean Kelly Wrote:

 That's why Microsoft provided utility called NGEN which is producing
 native binaries of .NET bytecode so JIT compilation won't be needed.
 Whole .NET framework is practically NGENed during installation.

Ah, interesting, so that's why the installtion of the the .NET framework takes a rather long time, mistery explained.

But what's truly ridiculous is that .NET has exactly *one* target platform.

Hehe, on slashdot a 'you must be new here' reply would be modded +5 informative :P Yeah, of course it makes sense. Let's abstract away the underlying hardware & operating system and lock people on this new highly portable platform with IP stuff, patents and DMCA. Problem solved. It's interesting to see how much effort MS has put into .NET platform and language research (well, except Java for some unknown reason :P) lately. I don't think they will be giving it all away for free.
May 03 2007
next sibling parent reply Sean Kelly <sean f4.ca> writes:
Jari-Matti Mäkelä wrote:
 
 Yeah, of course it makes sense. Let's abstract away the underlying hardware
 & operating system and lock people on this new highly portable platform
 with IP stuff, patents and DMCA. Problem solved.

To be fair, Ms does target ARM as well, for its handheld devices. Though I wonder if those devices have a full .NET VM. In any case, pre-generating binary code is obviously more efficient, so why not use it for a VM? The original point of .NET is a COM replacement anyway, regardless of how things have been spun.
 It's interesting to see how much effort MS has put into .NET platform and
 language research (well, except Java for some unknown reason :P) lately. I
 don't think they will be giving it all away for free.

They have to. The CLI is an open standard. They may choose to sell their implementation of it of course, but they can't forbid anyone from implementing a compatible VM. Sean
May 03 2007
next sibling parent Jari-Matti =?ISO-8859-1?Q?M=E4kel=E4?= <jmjmak utu.fi.invalid> writes:
Sean Kelly wrote:
 Jari-Matti Mäkelä wrote:
 
 Yeah, of course it makes sense. Let's abstract away the underlying
 hardware & operating system and lock people on this new highly portable
 platform with IP stuff, patents and DMCA. Problem solved.

To be fair, Ms does target ARM as well, for its handheld devices. Though I wonder if those devices have a full .NET VM. In any case, pre-generating binary code is obviously more efficient, so why not use it for a VM? The original point of .NET is a COM replacement anyway, regardless of how things have been spun.

I was a bit over dramatic. It might also be the only way to get rid of legacy x86 support, if ever possible.
May 03 2007
prev sibling parent James Dennett <jdennett acm.org> writes:
Sean Kelly wrote:
 Jari-Matti Mäkelä wrote:
 Yeah, of course it makes sense. Let's abstract away the underlying
 hardware
 & operating system and lock people on this new highly portable platform
 with IP stuff, patents and DMCA. Problem solved.

To be fair, Ms does target ARM as well, for its handheld devices. Though I wonder if those devices have a full .NET VM. In any case, pre-generating binary code is obviously more efficient, so why not use it for a VM? The original point of .NET is a COM replacement anyway, regardless of how things have been spun.
 It's interesting to see how much effort MS has put into .NET platform and
 language research (well, except Java for some unknown reason :P)
 lately. I
 don't think they will be giving it all away for free.

They have to. The CLI is an open standard. They may choose to sell their implementation of it of course, but they can't forbid anyone from implementing a compatible VM.

Being a standard doesn't mean that it's free of patent problems, so it may not be freely implementable. Patents *do* allow you a monopoly on devices implementing their claims. (Though recent US Supreme Court rulings might help to reduce the lunacy that has been ruling the software industry of late.) -- James
May 03 2007
prev sibling parent reply Pragma <ericanderton yahoo.removeme.com> writes:
Jari-Matti Mäkelä wrote:
 Pragma wrote:
 
 Bruno Medeiros wrote:
 lubosh wrote:
 Sean Kelly Wrote:

 That's why Microsoft provided utility called NGEN which is producing
 native binaries of .NET bytecode so JIT compilation won't be needed.
 Whole .NET framework is practically NGENed during installation.

takes a rather long time, mistery explained.

platform.

Hehe, on slashdot a 'you must be new here' reply would be modded +5 informative :P Yeah, of course it makes sense. Let's abstract away the underlying hardware & operating system and lock people on this new highly portable platform with IP stuff, patents and DMCA. Problem solved. It's interesting to see how much effort MS has put into .NET platform and language research (well, except Java for some unknown reason :P) lately. I don't think they will be giving it all away for free.

True enough. Perhaps this is your reply sailing right over my head, but I was commenting more about how the .NET installer spends all this effort NGEN-ing the CLI distribution on install (supposedly anyway). If they're deploying to just one target platform, why wouldn't they just pre-compile before release? But you have a point - they're obviously not trying to solve any portability problems. -- - EricAnderton at yahoo
May 04 2007
parent Jari-Matti =?ISO-8859-1?Q?M=E4kel=E4?= <jmjmak utu.fi.invalid> writes:
Pragma wrote:
 Perhaps this is your reply sailing right over my head, but I
 was commenting more about how the .NET
 installer spends all this effort NGEN-ing the CLI distribution on install
 (supposedly anyway).  If they're deploying to just one target platform,
 why wouldn't they just pre-compile before release?

Oh, that. I've probably spent one year too many compiling Gentoo, it didn't even come to my head until some time after pressing the 'Send'. :)
May 04 2007
prev sibling parent reply Joel Lucsy <jjlucsy gmail.com> writes:
Pragma wrote:
 But what's truly ridiculous is that .NET has exactly *one* target platform.

Oh? So you're saying the optimized code coming out of the NGEN sequence for a P4 CPU will be identical to the code for a P3 CPU? And what about Itaniums (or any other CPU) running 64 bit? I'd pretty sure Microsoft is counting those variations as "platforms". -- Joel Lucsy "The dinosaurs became extinct because they didn't have a space program." -- Larry Niven
May 03 2007
parent reply Pragma <ericanderton yahoo.removeme.com> writes:
Joel Lucsy wrote:
 Pragma wrote:
 But what's truly ridiculous is that .NET has exactly *one* target 
 platform.

Oh? So you're saying the optimized code coming out of the NGEN sequence for a P4 CPU will be identical to the code for a P3 CPU? And what about Itaniums (or any other CPU) running 64 bit? I'd pretty sure Microsoft is counting those variations as "platforms".

Good point. -1 for me for not recalling what started this particular portion of the thread. ;) -- - EricAnderton at yahoo
May 04 2007
parent Bruno Medeiros <brunodomedeiros+spam com.gmail> writes:
Pragma wrote:
 Joel Lucsy wrote:
 Pragma wrote:
 But what's truly ridiculous is that .NET has exactly *one* target 
 platform.

Oh? So you're saying the optimized code coming out of the NGEN sequence for a P4 CPU will be identical to the code for a P3 CPU? And what about Itaniums (or any other CPU) running 64 bit? I'd pretty sure Microsoft is counting those variations as "platforms".

Good point. -1 for me for not recalling what started this particular portion of the thread. ;)

Yup, that's was I was going to say, platform != CPU configuration. ^^ -- Bruno Medeiros - MSc in CS/E student http://www.prowiki.org/wiki4d/wiki.cgi?BrunoMedeiros#D
May 06 2007
prev sibling parent "Anders Bergh" <anders1 gmail.com> writes:
Don't forget about PowerPC and IA-64. XNA lets you write games for the
Xbox 360 using C# and a custom C# Express IDE.

I think .NET is more of an effort to kill Java rather than replacing COM though.

On 5/3/07, Sean Kelly <sean f4.ca> wrote:
 To be fair, Ms does target ARM as well, for its handheld devices.
 Though I wonder if those devices have a full .NET VM.  In any case,
 pre-generating binary code is obviously more efficient, so why not use
 it for a VM?  The original point of .NET is a COM replacement anyway,
 regardless of how things have been spun.

-- Anders
May 03 2007