Blog Post: What Does Memory Safety Really Mean in D?

Steven Schveighoffer schveiguy at gmail.com
Wed Aug 26 14:52:30 UTC 2020


On 8/26/20 10:29 AM, Dukc wrote:
> On Sunday, 23 August 2020 at 19:39:35 UTC, Paul Backus wrote:
>> https://pbackus.github.io/blog/how-does-memory-safety-work-in-d.html
>>
>> What exactly do we mean when we talk about "memory safety" in D? Is it 
>> the same thing as "undefined behavior"? Is it ever correct to mark and 
>> `extern(C)` function as `@trusted`? This post is my attempt to 
>> understand, and answer, questions like these.
>>
>> If you think I've gotten anything wrong, please leave a reply--this is 
>> definitely an area where I'm still learning.
> 
> Good post.
> 
> I think there is a workaround to the variable access being always safe. 
> Something like this in a dedicated module:
> 
> ```
> struct SystemVar(T, bool safeVal)
> {  private T _var;
>     static if (safeVal) @safe pure nothrow @nogc auto val()
>     {  return _var;
>     }
>     else pure nothrow @nogc auto val(){return _var;}
>     pure nothrow @nogc ref var(){return _var;}
> }
> ```
> 

Nice idea. You need to mark everything as @system that should be -- this 
is a template, so the compiler is going to happily mark a lot (all?) of 
that as @safe.

-Steve


More information about the Digitalmars-d-announce mailing list