digitalmars.D.announce - From the Department of Insane Ideas: D on the JVM
- Gregor Richards (11/11) Dec 12 2006 No, I'm not saying somebody should do it, I'm saying I've done it.
- =?ISO-8859-1?Q?Anders_F_Bj=F6rklund?= (14/21) Dec 13 2006 Excellent hack! Will give it a try on Mac OS X, might even be useful. :)
- Gregor Richards (12/42) Dec 13 2006 First off, for the skeptical: While all those quotes are true, it isn't
- =?ISO-8859-1?Q?Anders_F_Bj=F6rklund?= (9/15) Dec 13 2006 I actually thought "was that all there was to it" and that it sounded
- Lars Ivar Igesund (7/24) Dec 13 2006 I suppose the most important question would be how to interface between ...
- Alexander Panek (6/6) Dec 13 2006 What the... X_X
- Gregor Richards (6/15) Dec 13 2006 Bored? Nah, I just have a perverse sense of humor ;)
- Lars Ivar Igesund (6/24) Dec 13 2006 Or who are otherwise contracted to use Java/JVM at work ...
- Gregor Richards (6/23) Dec 13 2006 I've added some basic documentation on compiling and installing
No, I'm not saying somebody should do it, I'm saying I've done it. http://www.codu.org/nestedvm-gdc/ Using NestedVM, a tool that lets you compile anything GCC supports to Java bytecode, I've made a modified copy of GDC that can produce native Java .class files from D source. What's the use? I don't know, I only did it to have a bit of perverse fun. Sockets and threads don't work yet, and it's not extensively tested, but it works enough to get a simple Hello, World! compiled. I'll put up full documentation on using it later, just thought the NG might be interested in knowing it exists. - Gregor Richards
Dec 12 2006
Gregor Richards wrote:Using NestedVM, a tool that lets you compile anything GCC supports to Java bytecode, I've made a modified copy of GDC that can produce native Java .class files from D source. What's the use? I don't know, I only did it to have a bit of perverse fun. Sockets and threads don't work yet, and it's not extensively tested, but it works enough to get a simple Hello, World! compiled.Excellent hack! Will give it a try on Mac OS X, might even be useful. :) "NestedVM provides binary translation for Java Bytecode. This is done by having GCC compile to a MIPS binary which is then translated to a Java class file." "Entire virtual memory space mapped to a giant int[][] array indexed by page, then address. Breaking memory up by pages allows memory to be dynamically allocated." "Applications interact with the Operating System via the SYSCALL instruction. ... The syscall instruction is simply mapped to the syscall() method of the Runtime class." So it seems the only thing GDC needs is a "nestedvm" OS and "MIPS" CPU ? --anders PS. Quotes from http://www.zentus.com/nestedvm/ and their NestedVM.pdf
Dec 13 2006
Anders F Björklund wrote:Gregor Richards wrote:First off, for the skeptical: While all those quotes are true, it isn't as bad as it seems. It compiles the actual code to Java bytecodes, so it's not a virtual /execution/ environment, just virtual memory and a virtual syscall handler. OK, now on to what you actually asked: I'll be documenting how to get it all compiled soon. It's unfortunately a bit of a pain in the arse. Basically, you need to compile NestedVM (with GCC <4), then compile a newer GCC with GDC and my patch, with the same configure flags as those used for NestedVM. G'luck if you want to try it before I put up a doc :) - Gregor RichardsUsing NestedVM, a tool that lets you compile anything GCC supports to Java bytecode, I've made a modified copy of GDC that can produce native Java .class files from D source. What's the use? I don't know, I only did it to have a bit of perverse fun. Sockets and threads don't work yet, and it's not extensively tested, but it works enough to get a simple Hello, World! compiled.Excellent hack! Will give it a try on Mac OS X, might even be useful. :) "NestedVM provides binary translation for Java Bytecode. This is done by having GCC compile to a MIPS binary which is then translated to a Java class file." "Entire virtual memory space mapped to a giant int[][] array indexed by page, then address. Breaking memory up by pages allows memory to be dynamically allocated." "Applications interact with the Operating System via the SYSCALL instruction. ... The syscall instruction is simply mapped to the syscall() method of the Runtime class." So it seems the only thing GDC needs is a "nestedvm" OS and "MIPS" CPU ? --anders PS. Quotes from http://www.zentus.com/nestedvm/ and their NestedVM.pdf
Dec 13 2006
Gregor Richards wrote:I actually thought "was that all there was to it" and that it sounded easy, sorry if it sounded bad in any way. Patches to GDC were minimal*. I thought the virtual execution environment of the JVM was a feature :-) Somehow the idea of running a virtual OS in a virtual VM is hilarious. Running through your installation, just installing darcs and ghc first. (not sure if it's needed but seemed to be, so I use MacPorts to install) --anders * it probably could be cut down a bit, once the autoconf stuff is fixed.PS. Quotes from http://www.zentus.com/nestedvm/ and their NestedVM.pdfFirst off, for the skeptical: While all those quotes are true, it isn't as bad as it seems. It compiles the actual code to Java bytecodes, so it's not a virtual /execution/ environment, just virtual memory and a virtual syscall handler.
Dec 13 2006
Gregor Richards wrote:No, I'm not saying somebody should do it, I'm saying I've done it. http://www.codu.org/nestedvm-gdc/ Using NestedVM, a tool that lets you compile anything GCC supports to Java bytecode, I've made a modified copy of GDC that can produce native Java .class files from D source. What's the use? I don't know, I only did it to have a bit of perverse fun. Sockets and threads don't work yet, and it's not extensively tested, but it works enough to get a simple Hello, World! compiled. I'll put up full documentation on using it later, just thought the NG might be interested in knowing it exists. - Gregor RichardsI suppose the most important question would be how to interface between Java and D. -- Lars Ivar Igesund blog at http://larsivi.net DSource & #D: larsivi
Dec 13 2006
What the... X_X You seem to be pretty much bored, don't ya? :O Apart from that, good work. Should be an argument against people shouting out loud about D not being capable of running inside a VM. ;) Kind regards, Alex
Dec 13 2006
Alexander Panek wrote:What the... X_X You seem to be pretty much bored, don't ya? :O Apart from that, good work. Should be an argument against people shouting out loud about D not being capable of running inside a VM. ;) Kind regards, AlexBored? Nah, I just have a perverse sense of humor ;) It actually only took me a few hours to get this working. That's a good point - it may not be particularly useful, but for people in love with VMs ... who knows. - Gregor Richards
Dec 13 2006
Gregor Richards wrote:Alexander Panek wrote:Or who are otherwise contracted to use Java/JVM at work ... -- Lars Ivar Igesund blog at http://larsivi.net DSource & #D: larsiviWhat the... X_X You seem to be pretty much bored, don't ya? :O Apart from that, good work. Should be an argument against people shouting out loud about D not being capable of running inside a VM. ;) Kind regards, AlexBored? Nah, I just have a perverse sense of humor ;) It actually only took me a few hours to get this working. That's a good point - it may not be particularly useful, but for people in love with VMs ... who knows. - Gregor Richards
Dec 13 2006
Gregor Richards wrote:No, I'm not saying somebody should do it, I'm saying I've done it. http://www.codu.org/nestedvm-gdc/ Using NestedVM, a tool that lets you compile anything GCC supports to Java bytecode, I've made a modified copy of GDC that can produce native Java .class files from D source. What's the use? I don't know, I only did it to have a bit of perverse fun. Sockets and threads don't work yet, and it's not extensively tested, but it works enough to get a simple Hello, World! compiled. I'll put up full documentation on using it later, just thought the NG might be interested in knowing it exists. - Gregor RichardsI've added some basic documentation on compiling and installing nestedvm-gdc, as well as a nifty script 'gdcj' that does compilation and generation of .jar files for you :) http://www.codu.org/nestedvm-gdc/ - Gregor Richards
Dec 13 2006