On Friday, 22 May 2020 at 18:24:39 UTC, Atila Neves wrote:

Am I saying nothing bad can happen if we implicitly trust extern(C) declarations? No. I'm saying we'll be no worse off if they're all implicitly @system.

This compiles with no warnings right *now*:

void main() {
    import core.stdc.stdlib: free;
    free(cast(void*) 42);
    free(new int);
    free(&main);
}

And this code won't compile at all when you make `@safe` the default:

```
void main ()
{
    int[] myArray = (cast(int*) malloc(42 * int.sizeof))[0 .. 42];
}
```

So, we changed the default.

Now those people that want to easily prototype something, or write applications that extensively use system libraries, will be extremely inconvenienced, but we satisfied the people that want more `@safe`ty, which we all known and agree is the future.

Except that in that process we also destroyed the meaning of `@safe` by shooting a hole into it, for the convenience of the people that want to easily prototype something and write applications that interact extensively with system libraries, because that's what half of the D users do.

Clearly, an improvement.

Reply via email to