On Sat. 7 Dec. 2024 à 22:19, Martin Uecker <muecker@xxxxxxx> wrote: > Am Samstag, dem 07.12.2024 um 21:45 +0900 schrieb Vincent Mailhol: > > On Sat. 7 Dec. 2024 at 17:39, Martin Uecker <muecker@xxxxxxx> wrote: > > > Am Freitag, dem 06.12.2024 um 16:26 +0900 schrieb Vincent Mailhol: > > ... > > > > I find it amazing how much time the Linux kernel community spends > > > revising code to make it work perfectly. > > > > > > Still, I am wondering whether some of this time and effort should not > > > be targeted at C compilers and language work to make these macro > > > hacks unnecessary? > > > > It seems to me that the long term solution to this problem are the > > constexpr functions. > > How would constexpr functions help here? (I am a bit sceptical about > constexpr functions.) I was thinking of some of the "side features" of constexpr functions. Namely: - std::is_constant_evaluated Link: https://en.cppreference.com/w/cpp/types/is_constant_evaluated - if consteval Link: https://en.cppreference.com/w/cpp/language/if#Consteval_if I did not try it, but looking at these, I believe that this would allow us to rewrite most of our macros into some constexpr functions. > > But the core issue is that before getting this support in Linux, we > > have to wait for this to be added to the C2Y draft, then implemented > > in the compilers (probably just reusing the C++ constexpr functions) > > and finally wait maybe one more decade for the C2Y support to reach > > the kernel. For reference the kernel supports C11 only from 2022… So > > maybe we will see those in the kernel around 2037? Meanwhile, we have > > to deal with those hacks. > > If we do not collaborate on proper solutions, then you might have > to wait much longer. I was invited to WG14 this September. For now, I am only lurking. The thing I have in mind right now is to write a paper to allow the use of static_assert() in expressions (i.e. make it return 0 on success). That should be a relatively small change, but would bring a nice quality of life improvement. For context, look at this: https://lore.kernel.org/all/CAHk-=wjLSEcZ5LdW+3C+9rtjvNPHZT6zdk0POj67T5k2ZpDbgA@xxxxxxxxxxxxxx/T/#m1ba33a804b4041154b72a1d0333f90ec7204c461 And I will definitely follow the progress of constexpr functions in C2Y. Yours sincerely, Vincent Mailhol