New syntax for string mixins

Don nospam at nospam.com
Mon Dec 20 01:44:20 PST 2010


Alex_Dovhal wrote:
> "Don" <nospam at nospam.com> wrote:
>> I don't think it's quite the same. In a makefile, every executable is 
>> listed, and so you can have some degree of control over it. But in this 
>> scenario, the compiler is making calls to arbitrary shared libraries with 
>> arbitrary parameters.
>> It means the compiler cannot be trusted *at all*.
> 
> You are right only partially - it's unsafe for browser language where code 
> is taken from untrusted source. But this feature gives so much power to the 
> macro sysrem  - that I think is worth considering it. IMO, usually compiled 
> code is run just after compilation (with the same prermissions as 
> compiler) - so compiled code can make dangerous things and can't be trusted 
> at all, but no one is worry about that. Yes compiler can't be *trusted* with 
> this features, but if one knows what he is doing, why to prevent him - add 
> option --enable-ctfe-DANGEROUS-features to allow potentially dangerous 
> features then it wouldn't be so unexpected. Are those features hard to add 
> to the current implementation? 

In order for CTFE code to call pre-compiled code, three things are required:
(1) the compiler needs to be able to find the file (.obj/.lib/shared 
library) containing the compiled code;
(2) the compiler needs to be able to load the module and call it. This 
requires some form of dynamic linking.
(3) We need a marshalling step, to convert from compiler literal to 
compiled data, and back.


Step (3) is straightforward. The challenge is step(2), although note 
that it's a general "allow the compiler to load a plugin" problem, and 
doesn't have much to do with CTFE.




More information about the Digitalmars-d mailing list