View mode: basic / threaded / horizontal-split · Log in · Help
December 13, 2006
From the Department of Insane Ideas: D on the JVM
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
December 13, 2006
Re: From the Department of Insane Ideas: D on the JVM
LOL! Let me give you an idea if you like doing stuff like that. Can't 
you make PySWT work with D? Or something similar with GCJ?


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 Richards
December 13, 2006
Re: From the Department of Insane Ideas: D on the JVM
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
December 13, 2006
Re: From the Department of Insane Ideas: D on the JVM
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 Richards

I 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
December 13, 2006
Re: From the Department of Insane Ideas: D on the JVM
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
December 13, 2006
Re: From the Department of Insane Ideas: D on the JVM
Anders F Björklund wrote:
> 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

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 Richards
December 13, 2006
Re: From the Department of Insane Ideas: D on the JVM
Lars Ivar Igesund wrote:
> 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 Richards
> 
> I suppose the most important question would be how to interface between Java
> and D.
> 

Actually it's fairly simple. NestedVM provides a virtual syscall 
"CallJava" that allows you to send a few ints out, you catch that with a 
Java function that gets strings or whatnot, and then it goes out to the 
Java world. It also provides you with .call(), which allows you to call 
any extern (C) function in D from Java.

 - Gregor Richards
December 13, 2006
Re: From the Department of Insane Ideas: D on the JVM
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,
> Alex

Bored? 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
December 13, 2006
Re: From the Department of Insane Ideas: D on the JVM
Gregor Richards wrote:

> 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,
>> Alex
> 
> Bored? 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

Or who are otherwise contracted to use Java/JVM at work ... 

-- 
Lars Ivar Igesund
blog at http://larsivi.net
DSource & #D: larsivi
December 13, 2006
Re: From the Department of Insane Ideas: D on the JVM
Well, another thing would be reflection. Afaik, runtime reflection gets 
much easier when run in a VM, thus D could have reflection libraries 
just like Java - once being able to be run in a VM, that is.
« First   ‹ Prev
1 2
Top | Discussion index | About this forum | D home