Software Assurance Reference Dataset

bearophile via Digitalmars-d digitalmars-d at puremagic.com
Thu Jul 10 06:56:49 PDT 2014


(Sorry for the very delayed answers.)

----------------

Walter Bright:

> Oh well, there goes about 90% of D programs and pretty much all 
> use of the D runtime library!

Right. On the other hand the need for such strict safety 
requirements that forbid stack overflows, is not present in 
desktop software, it's for uncommon systems, with limited 
resources, that need to work reliably, like some car/plane 
electronics.

So when you have such needs you are willing to throw away 90% of 
D libs/Phobos, and probably to not use d-runtime too :-) And in 
such cases it's good to have as much compile-time assurances as 
possible.


> And I suspect the subset of D programs
> that don't have indirection or recursion is so small as to not 
> be worth the bother.
>
> I do know there are a class of applications, for example in 
> critical embedded
> systems, were recursion and indirection, and even allocation, 
> are not allowed.
> Using D in such cases would require eschewing using Phobos, and 
> some other care
> taken,

Right. And people in such fields are looking for something safer 
and nicer than C + a ton of static tests (and many of them don't 
seem to love Ada).

----------------

Andrei Alexandrescu:

>My understanding is that it can be done but only with 
>annotations or whole program analysis.<

I agree. But people in (example) automotive industry could be 
(and probably are) willing to do both.

Thus is a specialized niche, so adding such annotations to D 
language seems too much. So I've suggested to add enough static 
introspection (and some way to attach compile-time semantics to 
UDAs) to allow specialized programmers to add to D those 
annotations (and leave other more complex tests to external 
tools).

----------------

H. S. Teoh:

> I think the compiler should be able to tell, at least for the 
> simplest
> cases, whether something will definitely stop recursing.

Whiley language (http://whiley.org/ ) is able to do this, with 
the "loop variant" you write.

----------------

deadalnix:

>> 2) By alloca();
>
> it is @system

I'd like to use something like alloca (or much better something 
similar to the variable-length stack-allocated 
partially-library-defined arrays of C++14/C++17) even in @safe 
code (but not in stack-constrained code we were discussing here).


> We should have a page reserved at the end of the stack so we can
> throw when reaching it. The compiler can ensure we don't bypass
> it in case 1.

OK.

----------------

Ola Fosheim Grøstad:

> A compromise would be to inject runtime checks to see if there 
> is
> sufficient stack space whenever you move the stack pointer

Run-time tests in debug mode seem useful.

Bye,
bearophile


More information about the Digitalmars-d mailing list