On 19/5/25 16:45, Tom Lane wrote:
[snip]
For one thing, I'm not sure how to teach the compiler that casting
"Query *" to "ConstQuery *" is okay but vice versa isn't.

Does C++ have a better story in this area?

Hi,

    A C++ compiler *does* enforce "const correctness" (for examples see, for example, Meyer's fantastic "Efficient C++" series).

It seems that Postgres is approaching the class of complexity/maturity that (modern) C++ was designed to solve. It should be unmatched in that area. I believe that, with recent platform deprecations, the vast majority of systems where one can compile a modern Postgres should already have a decent C++ compiler available (g++ & clang probably cover >95%)

As opposed to say, rewriting in Rust ---where the compilar also does a very substantial checking of semantics at compile time---, introducing some C++ in Postgres could be as simple as throwing some "#ifdef __cplusplus__  extern "C" { #endif" in the headers and use the required subset in certain modules *only*.

    (this is how, for instance, Bacula did it ~two decades ago)

The planner and parts of the bufmgr / arenas (palloc et al.) seem to me as the most obvious candidates to try. I'm not sure whether it'd introduce any unintended regressions, though.

I haven't touched it
in so long that I don't remember.

C++ 17 would be the standard to tackle, IMHO.


HTH,

    J.L.

--
Parkinson's Law: Work expands to fill the time alloted to it.



Reply via email to