meetings/2025/LDM-2025-02-12.md
Champion issue: https://github.com/dotnet/csharplang/issues/9101
Specification: https://github.com/dotnet/csharplang/blob/5a627e44b33f6c8765f11f3007de379b526684a0/proposals/user-defined-compound-assignment.md
We started today by reviewing the proposal for user-defined compound assignment, which we are looking at for the first time. As we went over the spec, we had a couple of
concerns around corner cases with instance vs static operators: we don't want type authors to accidentally push their users into odd scenarios where a += may work, but
+ won't (or vice versa) because one form declares extra operators than the other. Other than that, though, we think this is an excellent proposal, and will move forward
with it.
Proposal is approved.
Champion issue: https://github.com/dotnet/csharplang/issues/8947
Specification: https://github.com/dotnet/csharplang/blob/5a627e44b33f6c8765f11f3007de379b526684a0/proposals/left-right-join-in-query-expressions.md
Finally today, we looked at a proposal for a new LINQ query-syntax operator. There's concern here, both in the LDM and in the discussion thread, about where the line for
new features is. We can't really avoid query providers failing on these new joins; the methods will exist in the BCL regardless, and various query providers might fail on
them no matter what. While query syntax support might widen that gap, it's very possible that lack of it will hurt users who need the new operator more than it would cause
users to hit query provider errors, since users who need this will have to drop the entire query back to method syntax. Given this, we're cautiously optimistic about moving
forward with this. We may want to expand further in the future; for example, C# does not support distinct in query syntax today, like VB does, but if increased join
options are successful, that may be enough of a signal to add further operators; conversely, if this ends up causing significant increases in errors for users and lots of
pain, we know that further changes here are harder than they appear at first glance. The LDM is unanimously in favor of moving forward with this, and a slight majority
think we should try to get it in for C# 14, to coincide with the new methods being added to the BCL.
We will proceed with this proposal, hopefully in the C# 14 timeframe (barring any other time constraints).