digitalmars.D - Re: D vs VM-based platforms
- lubosh <lubosha gmail.com> Apr 30 2007
- Don Clugston <dac nospam.com.au> Apr 30 2007
- Mike Parker <aldacron71 yahoo.com> May 01 2007
- Bruno Medeiros <brunodomedeiros+spam com.gmail> May 03 2007
- Pragma <ericanderton yahoo.removeme.com> May 03 2007
- Jari-Matti =?ISO-8859-1?Q?M=E4kel=E4?= <jmjmak utu.fi.invalid> May 03 2007
- Sean Kelly <sean f4.ca> May 03 2007
- Jari-Matti =?ISO-8859-1?Q?M=E4kel=E4?= <jmjmak utu.fi.invalid> May 03 2007
- James Dennett <jdennett acm.org> May 03 2007
- Pragma <ericanderton yahoo.removeme.com> May 04 2007
- Joel Lucsy <jjlucsy gmail.com> May 03 2007
- Pragma <ericanderton yahoo.removeme.com> May 04 2007
- Bruno Medeiros <brunodomedeiros+spam com.gmail> May 06 2007
- "Anders Bergh" <anders1 gmail.com> May 03 2007
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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