Preview features status?
Tejas
notrealemail at gmail.com
Wed Jul 14 07:33:30 UTC 2021
On Wednesday, 14 July 2021 at 02:54:26 UTC, Mathias LANG wrote:
> On Tuesday, 13 July 2021 at 18:20:36 UTC, evilrat wrote:
>> On Tuesday, 13 July 2021 at 15:51:26 UTC, Tejas wrote:
>>>
>>> Shouldn't this be a bug? Isn't this still ```const -
>>> non-const```?
>>> Do you think this is worth filing?
>>
>> Definitely a bug from usability point. But...
>>
>> Well, seems like it is just yet another half baked feature
>> according to this GH issue, also it seems like it was supposed
>> to be superseded by relevant "in" qualifier for extern(C++)
>> but that DIP seems to be abandoned as well.
>>
>> https://github.com/dlang/dmd/pull/12064
>>
>>> Also, where did you find out how to represent rvalue
>>> references as parameters? I couldn't find any info on that.
>>> Just learned that these are available under a preview switch.
>>
>> Can't find it anywhere in release notes, it was just silently
>> showed up around Apr 2019.
>
> Here's the full picture from my POV:
>
> `-preview=rvaluerefparams` was [implemented by
> Walter](https://github.com/dlang/dmd/pull/9817) and later
> [documented](https://github.com/dlang/dmd/pull/10633). However
> when I tried to use it, I ran into the three issues that were
> linked in the PR you mentioned. I originally started working on
> fixing those, but realized that there were many unanswered
> questions. One of them was, what to do with mutable parameters
> ? This was one of the main rationale provided when [the
> DIP](https://github.com/dlang/DIPs/blob/master/DIPs/rejected/DIP1016.md) was rejected.
>
> This brought me back to an old idea of mine, which was to have
> `in` means `const scope [ref]` (`ref` when it makes sense), but
> the fact that it would conflict with passing rvalues to a
> function was always off-putting. Adding rvalue ref matching
> just made sense, so I went ahead and [implemented
> it](https://github.com/dlang/dmd/pull/11000). I also made sure
> druntime/Phobos, Vibe.d, [and many other packages on
> Buildkite](https://github.com/dlang/dmd/pull/11632) were
> compatible.
>
> I've been using it in production as soon as I could, which was
> v2.094.0 because [`-preview` flags and DUB didn't play along
> well before](https://github.com/dlang/dub/pull/2040). It's been
> a breeze, and doing everything exactly as we want it done, so
> I'm very happy with the result.
>
> However, there has been some serious backlash from a few
> people. So I don't think it's going to be made the default any
> time soon (or at least, start the process), because it seems
> Walter is among those who doesn't like it. So unless we manage
> to convince the BDFLs that it's useful, it's not going out of
> `-preview`. However, I'll make sure it works in every release,
> as I use it everywhere.
I believe you're talking about this?
https://forum.dlang.org/thread/rl7c8t$sml$1@digitalmars.com
Well, I admit that their concerns aren't unfounded, but since
yours is the only proposal still being maintained and worked on,
we can try and think of ways regarding how to $(I
deterministically) specify whether to receive an rvalue ref, or
rvalue, or lvalue ref, or lvalue.
```in``` could use deeper formalism, or we could try to develop a
pass that checks for the aliases in the particular case shown.
Either way, since ```in``` is the only game in town, I guess.
I'll also use it.
Thanks for your work in developing and maintaining it. Nothing's
perfect the first time around :)
More information about the Digitalmars-d
mailing list