On Thursday, 27 August 2020 at 18:49:19 UTC, James Blachly wrote:
Peeling off from Mathias Lang's thread in General about making
'in' useful, for some novice questions:
1. The thread involves 'in' qualifier. Documentation
(https://dlang.org/spec/function.html#param-storage) indicates
that `in` is defined as `scope const` and should not be used as
it is not implemented. **Is this [fact and recommendation]
still true?**
I have a PR to update the documentation:
https://github.com/dlang/dlang.org/pull/2845
I got feedback on it, just didn't have time to complete / finish
it, will come back to it soon.
Is "scope ref" documented somewhere specifically? I found
https://dlang.org/spec/function.html#scope-parameters which
discusses the use of `scope` with ref type parameters, but the
example given is pointer-based. Is it correct that `scope ref
T` behaves the same as `scope T*` ?
Regarding `scope` more generally, DIP1000 shows as "superseded"
-- **can I still rely on this document for guidance?** We have
a `-dip1000` flag but a superseded DIP. The discordance is
extremely confusing.
It is, for users and compilers developers alike. We're still
waiting for Walter to write down the docs on that. If you look in
the forums / PRs, you'll see that it's the most common feedback.
I am glad D is iterating quickly and improving on safety, but I
have found that documentation may not well recent changes in
this area. Consequently I am reluctant to use (newer) features
related to memory safety. If this is all comprehensively
documented somewhere please let me know!
We have a policy that every language change should come with a
spec PR. It has improved documentation drastically, but there's
still a way to go.
I hope the aforementioned PR will clarify the status of `in`. I'm
currently focusing on making sure it works properly everywhere
before the next release (in 1 or 2 weeks), hence why fixing that
PR has taken the back-seat (the website gets auto-updated, so
even if the PR doesn't make the deadline, it'll be deployed as
soon as it gets merged).