On Sunday, 30 December 2012 at 08:38:27 UTC, Jonathan M Davis wrote:
After some recent discussions relating to auto ref and const ref, I have come to the conlusion that as it stands, ref is not @safe. It's @system.

This is not a surprise, I remember Andrei was talking about it 1.5 year ago.

And I think that we need to take a serious look at it to see what we can do to make it @safe. The problem is combining code that takes ref parameters with code
that returns by ref. Take this code for example:
<skipped>

I have not met any bugzilla issue or a forum thread when someone has fallen in this double ref trap. The only cases I remember are discussions that there is such possible problem. Requiring some new @attribute or new keyword does not really help, because almost all D language constraints can be avoided by low-level tricks. Inferring this trap is not always possible as was mentioned here because compiler does not always have access to function definition.

I think it should not be fixed, but probably compiler may issue warning at some circumstances when it can realize this situation.

By the way, there is another issue with ref - http://dpaste.dzfl.pl/928767a9 which was discussed several month ago minimum. Do you think this should be also fixed?

But my point is that we currently have a _major_ hole in SafeD thanks to the combination of ref parameters and ref return types, and we need to find
a solution.

- Jonathan M Davis


I don't take into D's @safity seriously because it can be easily hacked.

Reply via email to