On 8/23/2018 4:31 AM, Shachar Shemesh wrote:
None of that continues to work once delegates are involved. I am yet to see a library that can accept a delegate and correctly create a function around it that matches its attributes.

And yes, I do include Mecca in this. I tried. It is too difficult to get right, so I gave up.

Attribute inference was supposed to solve this, but attribute inference is completely broken with separate compilation.

I'd like to see an example so I can understand exactly what you're having trouble with.


This is in the language spec:
How many people know that without resorting to the specs.

This is a little unfair. It's plainly stated in the documentation for foreach. Heck, I wrote a C compiler and the library for it, and yesterday I had to look up again how strncmp worked. I refer to the documentation regularly. Back when I designed digital circuits, I had a well-worn TTL data book on my desk, too. If it wasn't documented, or documented confusingly, it would be a fair point.


Does it matter if it allows copying or not?
For the preference for opApply, no.
But it does for empty/front/popFront, which is exactly my point.

If front() returns by ref, then no copying happens. If front() returns by value, then a copy is made. This should not be surprising behavior.


If you're referring to #14246, I posted a PR for it. I don't see how that is pretending it isn't a problem. It is.
When I first reported this, about 3 and a half years ago, the forum explained to me that this is working as expected.

The forum can be anyone saying anything. A more reliable answer would be the bugzilla entry being closed as "invalid", which did not happen.


#14246 was over 2 years old by the time you posted the PR. Once posted, however, it broke (I'm not sure why it broke, but did notice it deliberately would not work with @disable init structs. See my interoperability comment from above). Since then (over a year), no progress has been made except to revert the changelog that claims it was resolved.

The problem was calling other destructors that had different attributes, such as the constructor being @safe but calling a destructor that was not. It's not an intractable problem, but I work on critical problems every day. It's just that everybody has a different issue that is critical to them.


So you will excuse me, but I don't think this bug is being taken as seriously as I think it should.

It is a serious problem. (There are workarounds available, like using scope(failure).)

I'd appreciate a list of bugzilla issues you regard as critical to your 
operations.

Reply via email to