On 5/29/20 12:53 AM, Walter Bright wrote:
The subject says it all.
If you care about memory safety, I recommending adding `safe:` as the
first line in all your project modules, and annotate individual
functions otherwise as necessary. For modules with C declarations, do as
you think best.
For everyone else, carry on as before.
Thank you Walter.
I'm sure this was not easy to decide, and is frustrating. It's
unfortunate that the thrust of DIP1028 could not be saved and we had to
throw out the whole thing for the one bad piece.
It would be nice to be able to put @safe: at the top of all modules.
This was in fact the first thing I tried when migrating the mysql-native
package to be @safe compliant [1]. And it did work for a few modules
quite well. There are a few snags though:
1. Templates should be inferred rather than stamped @safe
2. Class methods do not inherit this attribute
So I think @safe by default (for D-compiled code) would be ideal and
provide the most utility.
-Steve
[1] https://github.com/mysql-d/mysql-native/pull/214