Compiling to Heap for CTFE
BC
notmi_emayl_adreznot at hotmail.com.remove.not
Fri Jan 4 08:58:45 PST 2008
On Tue, 18 Dec 2007 20:59:48 -0000, Bruce Adams
<tortoise_74 at yeah.who.co.uk> wrote:
> On Tue, 18 Dec 2007 15:53:27 -0000, Chad J
> <gamerChad at _spamIsBad_gmail.com> wrote:
>
>> Craig Black wrote:
>>> Currently, CTFE only supports a subset of the language, and it relies
>>> on the compiler acting as an interpreter, which is slow. It just
>>> occured to me that if we could compile code to the heap, there would
>>> be no need for a CTFE interpreter. CTFE code could be compiled to the
>>> heap and executed at full speed. Further, all the features of D would
>>> be available at compile time.
>>> Thoughts?
>>> -Craig
>>
>> In response to concerns about cross-compilation and security concerns:
>>
>> Perhaps if D had a VM then we could do it? At compile time, compile
>> all of the CTFE code to bytecode, and interpret it. The intrepreter
>> would be compiled by whatever is compiling the compiler, so it should
>> make cross-compiling easier. Also, the VM and compiler can sandbox the
>> CTFE code. Bytecode interpretation is not native speed execution, but
>> probably close enough, and this approach allows use of D's high level
>> features.
>>
>> Only problem is, that would be a lot of work. It involves writing a D
>> backend for the bytecode, implementing security restrictions, and maybe
>> even implementing the VM itself (if we can't find a ready-made one).
>
> It would complete the set to have a D front end to one a VM and to have
> a D compiler/front end in D.
> There are plenty of VMs out there that may or may not be suitable. Its
> just
> a different target. You'd need the front end to support cross
> compilation and it
> would be nice to have a command line switch like gcc does.
> I don't think I've seen a VM used as a target for gcc otherwise gdc
> would already
> have most of the functionality needed. Probably because p-code and gcc
> itself is so
> damned ugly inside. Someone should port it to D - and clean up the mess.
> It would
> make a good community project but I guess porting is less satisfying
> than re-inventing
> the wheel, especially when you have better constructs to work with from
> the start.
>
> With regard to VMs to target apart from the obvious JVM and .NET/Mono
> (makes my unix bones
> shudder in horror) there's also Neko which is supposedly designed to be
> ported to
> http://nekovm.org/. But there is no reason why you couldn't port to your
> favourite language (tm)'s
> VM with enough hard work. A D VM would be best able to exploit the
> language features but would
> be a hell of a lot of work (albeit highly rewarding).
>
> Bruce.
maybe a x86 emulator could be used instead... just a thought
More information about the Digitalmars-d
mailing list