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.


Reply via email to