I don't care about platform specific stuff. I'm talking about C which is actually intended to be portable. Nothing written with portability in mind in the past ~decade is going to be doing this.

C is not node.js. C exists for 50 years and is expected to have stable API. In scientific circles it's not unusual to compile c and f77 libraries built in the 70's, 80's.

BLAS, gemv, GEMM, SGEMM libraries are from 1979, 1984, 1989. You may have seen these words scroll by when compiling modern 2025 CUDA :)

I was writing C long before node.js existed :)

C has no backwards compatibility guarantee, and it never has. Try compiling K&R C with gcc's defaults, and see what happens.

You can build your legacy code with legacy compiler flags. Why do you care about the ability to build under the modern standards?

I think we're going a bit past each other.

In AVR or other MPU-less architecture you can literally modify the string literal memory without triggering a crash.

Why? Because there is no memory protection ("rodata") at all.

And such microprocessors are still in use today, so it's a bit too far fetched to say "really old code."

It's UB, sure, but how many embedded programmers actually care? The OP's proposal is trying to change the type system so that this UB becomes much less likely to trigger in practice.