C++ Logo

sg15

Advanced search

Re: [isocpp-sg15] [isocpp-sg21] P3835 -- Different contract checking for different libraries

From: Gašper Ažman <gasper.azman_at_[hidden]>
Date: Mon, 20 Oct 2025 21:52:45 +0100
I find the claim of "more UB" is only true in "lines of code", but not in
"probability it'll be hit. I expect that's the disconnect.

On Mon, Oct 20, 2025 at 9:51 PM JOSE DANIEL GARCIA SANCHEZ via SG21 <
sg21_at_[hidden]> wrote:

> Please, read the papers.
>
> On Mon, Oct 20, 2025 at 10:49 PM Ryan McDougall <mcdougall.ryan_at_[hidden]>
> wrote:
>
>> Not true.
>>
>> On Mon, Oct 20, 2025 at 1:49 PM JOSE DANIEL GARCIA SANCHEZ <
>> josedaniel.garcia_at_[hidden]> wrote:
>>
>>> More UB than today.
>>>
>>> On Mon, Oct 20, 2025 at 10:46 PM Ryan McDougall <
>>> mcdougall.ryan_at_[hidden]> wrote:
>>>
>>>> No such thing has been shown.
>>>>
>>>> On Mon, Oct 20, 2025 at 1:45 PM JOSE DANIEL GARCIA SANCHEZ <
>>>> josedaniel.garcia_at_[hidden]> wrote:
>>>>
>>>>> No. Because it has been shown that current design makes C++ less safe.
>>>>>
>>>>> On Mon, Oct 20, 2025 at 10:43 PM Ryan McDougall <
>>>>> mcdougall.ryan_at_[hidden]> wrote:
>>>>>
>>>>>> That's patently untrue -- trying to change direction now is actually
>>>>>> wasting EWG time.
>>>>>>
>>>>>> If you only care about Language Safety you should be ignoring P2900.
>>>>>>
>>>>>> On Mon, Oct 20, 2025 at 1:28 PM JOSE DANIEL GARCIA SANCHEZ <
>>>>>> josedaniel.garcia_at_[hidden]> wrote:
>>>>>>
>>>>>>> It is a matter of priorities.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Mon, Oct 20, 2025 at 10:23 PM Ryan McDougall <
>>>>>>> mcdougall.ryan_at_[hidden]> wrote:
>>>>>>>
>>>>>>>> It’s not an either or thing.
>>>>>>>>
>>>>>>>> That’s like saying “we haven’t decided if the goal of WG21 is
>>>>>>>> object oriented programming or structured programming”.
>>>>>>>>
>>>>>>>> On Mon, Oct 20, 2025 at 1:21 PM JOSE DANIEL GARCIA SANCHEZ <
>>>>>>>> josedaniel.garcia_at_[hidden]> wrote:
>>>>>>>>
>>>>>>>>> We have never (to the best of my knowledge) decided if the goal of
>>>>>>>>> WG21 is functional safety or language safety.
>>>>>>>>>
>>>>>>>>> Let's keep in mind that there are external pressures to pursue
>>>>>>>>> language safety.In particular (but not only) memory safety.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Mon, Oct 20, 2025 at 10:08 PM Ryan McDougall via SG21 <
>>>>>>>>> sg21_at_[hidden]> wrote:
>>>>>>>>>
>>>>>>>>>> They are comparable because they both address the needs of
>>>>>>>>>> Functional Safety as per p3578 <http://wg21.link/p3578>. SG23
>>>>>>>>>> took a poll on whether they're better than macros see P3297
>>>>>>>>>> <http://wg21.link/P3297>.
>>>>>>>>>>
>>>>>>>>>> I think it's not a leap of logic that EWG has strong consensus to
>>>>>>>>>> pass P2900 precisely because they feel it's strictly better than macros.
>>>>>>>>>>
>>>>>>>>>> Cheers,
>>>>>>>>>>
>>>>>>>>>> On Mon, Oct 20, 2025 at 12:58 PM John Spicer <jhs_at_[hidden]> wrote:
>>>>>>>>>>
>>>>>>>>>>> We have never taken a poll of whether P2900 is better then macro
>>>>>>>>>>> solutions.
>>>>>>>>>>>
>>>>>>>>>>> Could you explain why you think contracts and macro-based
>>>>>>>>>>> solutions are comperable?
>>>>>>>>>>>
>>>>>>>>>>> John.
>>>>>>>>>>>
>>>>>>>>>>> On Oct 20, 2025, at 3:09 PM, Ryan McDougall <
>>>>>>>>>>> mcdougall.ryan_at_[hidden]> wrote:
>>>>>>>>>>>
>>>>>>>>>>> I’m saying we have decades of experience with macro based
>>>>>>>>>>> systems, which defines the floor of features/expectations. The consensus is
>>>>>>>>>>> P2900 is better taken as a whole. There are things i think should be
>>>>>>>>>>> different with p2900, but p2900 represents consensus. There has been no
>>>>>>>>>>> evidence put forward that there is a more correct course. Based on those
>>>>>>>>>>> decades of experience here are no outstanding questions that having a TS
>>>>>>>>>>> would answer.
>>>>>>>>>>>
>>>>>>>>>>> If i am wrong, please list precise questions that a TS would
>>>>>>>>>>> answer. “We don’t have enough experience” is a statement.
>>>>>>>>>>>
>>>>>>>>>>> Cheers,
>>>>>>>>>>>
>>>>>>>>>>> On Mon, Oct 20, 2025 at 11:54 AM John Spicer <jhs_at_[hidden]>
>>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> You keep saying things like we have “decades of experience with
>>>>>>>>>>>> macro-based systems”.
>>>>>>>>>>>>
>>>>>>>>>>>> If contracts were remotely similar to macro-based systems, we
>>>>>>>>>>>> would not be having this discussion.
>>>>>>>>>>>>
>>>>>>>>>>>> The problem is that contracts are *vastly* different.
>>>>>>>>>>>>
>>>>>>>>>>>> If you put P2900 and macro-based systems in the same set, that
>>>>>>>>>>>> means you don’t understand one or the other.
>>>>>>>>>>>>
>>>>>>>>>>>> John.
>>>>>>>>>>>>
>>>>>>>>>>>> On Oct 20, 2025, at 2:22 PM, Ryan McDougall via SG21 <
>>>>>>>>>>>> sg21_at_[hidden]> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>> The "course corrections" do not actually suggest a future
>>>>>>>>>>>> course (beyond asserting without evidence"we need more experience" and
>>>>>>>>>>>> kicking the can down the road to a TS) -- we've had years for alternative
>>>>>>>>>>>> proposals to be put forward, and none have surpassed P2900.
>>>>>>>>>>>>
>>>>>>>>>>>> We *do* have decades of experience with macro-based systems, we
>>>>>>>>>>>> *do* have decades of experience building software at scale (see Software
>>>>>>>>>>>> Engineering at Google <https://abseil.io/resources/swe-book>),
>>>>>>>>>>>> and we *do* know who our users are (see P1995 and P3297) -- and while there
>>>>>>>>>>>> are many variations on contracts, P2900 represents our best consensus
>>>>>>>>>>>> interpretation of those decades of experience. Not all of these decisions
>>>>>>>>>>>> were everyone's first choice, but P2900 is the consensus. There is no
>>>>>>>>>>>> evidence that any other option would improve that.
>>>>>>>>>>>>
>>>>>>>>>>>> Multiple papers, like P2900 and P3578 <http://wg21.link/p3578> explain
>>>>>>>>>>>> exactly who the feature is for, and how and why each of these design
>>>>>>>>>>>> choices were made. There is no reason to believe the current course is
>>>>>>>>>>>> incorrect, or that another course would be more correct.
>>>>>>>>>>>>
>>>>>>>>>>>> On Mon, Oct 20, 2025 at 4:58 AM Ville Voutilainen via SG21 <
>>>>>>>>>>>> sg21_at_[hidden]> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> On Mon, 20 Oct 2025 at 14:34, Timur Doumler via SG15
>>>>>>>>>>>>> <sg15_at_[hidden]> wrote:
>>>>>>>>>>>>> > Given the above, it seems to me like opposing C++26 contract
>>>>>>>>>>>>> assertions because you want that checks are always on / always enforced is
>>>>>>>>>>>>> kinda like this:
>>>>>>>>>>>>> >
>>>>>>>>>>>>> > – Alice: "I want safer roads for pedestrians." (reasonable
>>>>>>>>>>>>> and good request)
>>>>>>>>>>>>> > – Bob: "Here's a proposal to fund bike lanes in the city."
>>>>>>>>>>>>> (reasonable and good proposal roughly in the same area but with a different
>>>>>>>>>>>>> goal)
>>>>>>>>>>>>> > – Alice: "But bike lanes don't add more crosswalks or reduce
>>>>>>>>>>>>> speed limits. So they don't make roads safer for pedestrians. Therefore, we
>>>>>>>>>>>>> should not build bike lanes."
>>>>>>>>>>>>> >
>>>>>>>>>>>>> > Here, Alice is committing a logical fallacy. Just because
>>>>>>>>>>>>> bike lanes are not useful for Alice, it doesn't mean that they're not
>>>>>>>>>>>>> useful for Bob, and taking away bike lanes from Bob does nothing to give
>>>>>>>>>>>>> Alice what she wants.
>>>>>>>>>>>>>
>>>>>>>>>>>>> The colorful analogy doesn't include considerations where
>>>>>>>>>>>>> providing
>>>>>>>>>>>>> bike lanes for Bob and doing nothing else is not entirely
>>>>>>>>>>>>> harmless for
>>>>>>>>>>>>> the pedestrians Alice is focused on.
>>>>>>>>>>>>>
>>>>>>>>>>>>> It's also incorrect in its suggestion that bike lanes are not
>>>>>>>>>>>>> useful
>>>>>>>>>>>>> for Alice. Nobody has said that P2900 isn't useful. That's why
>>>>>>>>>>>>> it's
>>>>>>>>>>>>> included
>>>>>>>>>>>>> in *every* *single* *one* of the currently active proposals
>>>>>>>>>>>>> suggesting
>>>>>>>>>>>>> course corrections.
>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>> SG21 mailing list
>>>>>>>>>>>>> SG21_at_[hidden]
>>>>>>>>>>>>> Subscription:
>>>>>>>>>>>>> https://lists.isocpp.org/mailman/listinfo.cgi/sg21
>>>>>>>>>>>>> Link to this post:
>>>>>>>>>>>>> http://lists.isocpp.org/sg21/2025/10/11436.php
>>>>>>>>>>>>>
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> SG21 mailing list
>>>>>>>>>>>> SG21_at_[hidden]
>>>>>>>>>>>> Subscription:
>>>>>>>>>>>> https://lists.isocpp.org/mailman/listinfo.cgi/sg21
>>>>>>>>>>>>
>>>>>>>>>>>> Link to this post:
>>>>>>>>>>>> http://lists.isocpp.org/sg21/2025/10/11499.php
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________
>>>>>>>>>> SG21 mailing list
>>>>>>>>>> SG21_at_[hidden]
>>>>>>>>>> Subscription: https://lists.isocpp.org/mailman/listinfo.cgi/sg21
>>>>>>>>>>
>>>>>>>>> Link to this post: http://lists.isocpp.org/sg21/2025/10/11510.php
>>>>>>>>>>
>>>>>>>>> _______________________________________________
> SG21 mailing list
> SG21_at_[hidden]
> Subscription: https://lists.isocpp.org/mailman/listinfo.cgi/sg21
> Link to this post: http://lists.isocpp.org/sg21/2025/10/11525.php
>

Received on 2025-10-20 20:53:02