qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH experiment 00/16] C++20 coroutine backend


From: Hanna Reitz
Subject: Re: [PATCH experiment 00/16] C++20 coroutine backend
Date: Thu, 17 Mar 2022 16:53:13 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0

On 17.03.22 16:11, Paolo Bonzini wrote:
On 3/16/22 13:32, Stefan Hajnoczi wrote:
You can define rules and a way to enforce a subset of C++, but I think
over time the code will be C++. A policy that is complicated discourages
contributors.

For these reasons I think that if code runs through a C++ compiler we
should just allow C++. Either way, it will take time but that way no one
will feel betrayed when C++ creeps in.

Fair enough.  We even already have some conventions that will make any C++ that creeps in less weird (for example, mandatory typedef of structs).

I don't think it would be a big deal overall.  I actually agree that we should "just allow C++", what matters more to have style rules that make QEMU's flavors of C and C++ consistent.

I just want to throw in that I personally am absolutely not confident in reviewing C++ code.  As for Rust, you keep mentioning that we don’t have anyone who would “shepherd us through the learning experience”, but I find the very same argument applies to C++.

C++ may start out looking like C, but if used ideally, then it is a very different language, too.  I understand the difference is that we can incrementally convert our C code to C++, but I’m not comfortable overseeing that process, which I would have to do as a maintainer.  Assuming our overall stance does change to “just allowing C++”, I’d feel unjust if I were to reject C++isms just based on the fact that I don’t know C++, so I’d be forced to learn C++.  I’m not strictly opposed to that (though from experience I’m more than hesitant), but forcing maintainers to learn C++ is something that has a cost associated with it.

My biggest gripe about C++ is that as far as I understand there are many antipatterns, many of which I think stem from the exact fact that it is kind of compatible with C, and so you can easily accidentally write really bad C++ code; but without years of experience, I’m absolutely not confident that I could recognize them.  Now, I might say I’d just disallow complicated stuff, and keep everything C-like, but from what I’ve heard, C-like C++ seems to be exactly one case that is considered bad C++.  I’m really under the impression that I’d need years of experience to discern good from bad C++, and I don’t have that experience.

Hanna




reply via email to

[Prev in Thread] Current Thread [Next in Thread]