posted in Technology
Torvalds: AI Is the New Compiler, Not the New Programmer
pbxscience.com/torvalds-ai-is-the-new-compiler-not-the-new-programmer/posted in Technology
Torvalds: AI Is the New Compiler, Not the New Programmer
pbxscience.com/torvalds-ai-is-the-new-compiler-not-the-new-programmer/Never seen a non-deterministic compiler though
C/C++ compilers are non deterministic due to support of super macros that change run to run, non-deterministic optimisation strategies or ordering due to parallelism, and linkers often produce different outputs every time they are run where subtle bugs can cause crashes when addresses don’t line up how you expect. And that’s without mentioning projects that use a configuration step.
It’s actually a big problem in producing reproducible builds for security.
Can’t most serious compilers produce reproducible builds these days given the same build environment. I know there has been a drive towards reproducible builds in general for security verification purposes.
Not by default usually but yes, you need to do a lot of work to set all necessary configurations and sometimes provide your own RNG seed for things which insist on random looking values.
Not only can they but certified toolchains exist in the safety critical space. Medical, aerospace, nuclear projects, and the like are often required to use and procure such toolchains as part of their validation.
Yeah, but it does take a lot of work to coerce them to do it.
GCC is honestly obnoxious, and you have to do a bunch of unintuitive things to get it. The compile stage needs the built-in RNG seeded, parent file paths stripped, you need to ensure that the date/time macros are not used anywhere, and you need to ensure that all command line flags are passed in the exact same order every time.
I just went through this with GCC16 on a new project.