safety model in D

Michal Minich michal at minich.sk
Wed Nov 4 06:29:21 PST 2009


Hello Andrei,

> Michal Minich wrote:
> 
>> Hello Michel,
>> 
>>> module (system) name;         // interface: unsafe   impl.: unsafe
>>> module (safe) name;           // interface: safe     impl.: safe
>>> 
>> I thought that first (unsafe-unsafe) case is currently available just
>> by:
>> 
>> module name; // interface: unsafe   impl.: unsafe
>> 
>> separating modules to unsafe-unsafe and safe-safe  has no usefulness
>> - as those modules could not interact, specifically you need modules
>> that are implemented by unsafe means, but provides only safe
>> interface, so I see it as:
>> 
>> module name;                  // interface: unsafe   impl.: unsafe
>> module (system) name;         // interface: safe     impl.: unsafe
>> module (safe) name;           // interface: safe     impl.: safe
>> 
>> so you can call system modules (io, network...) from safe code.
>> 
> That's a pretty clean design. How would it interact with a -safe
> command-line flag?
> 
> Andrei
> 

When compiling with -safe flag, you are doing it because you need your entire 
application to be safe*.

Safe flag would just affect modules with no safety flag specified - making 
them (safe):

module name; --> module (safe) name;

and then compile.

It would not affect system modules, because you already *belive* that the 
modules are *safe to use* (by using or not using -safe compiler flag).

*note: you can also partially compile only some modules/package.





More information about the Digitalmars-d mailing list