I gave you an answer. There's an entire body of research on static code analysis, and that C and C++ lack the necessary syntax to make it viable in practice. Do some searching on Rust. You can start with the Cyclone papers, through which lifetimes came: cyclone.thelanguage.org/wiki/Papers/
Conversation
This Tweet was deleted by the Tweet author. Learn more
This Tweet was deleted by the Tweet author. Learn more
I'm baffled. The entire point of research papers are to provide evidence supporting their hypothesis that were proposed in them, of which propose precisely that. What more do you want? What you're doing here is disingenuous.
1
This Tweet was deleted by the Tweet author. Learn more
The Cyclone papers I gave you were evidence of precisely that. C lacks the syntax to guarantee that borrowed references are valid, but through extending C to support annotating references with lifetimes, static analysis could make guarantees about the lifetimes of their data.
1
2
This Tweet was deleted by the Tweet author. Learn more
My entire point is that static analysis works much better when it's supported by the type system / language. External static analysis is greatly enhanced by a language providing stronger static guarantees that making code easier to analyze. It's easy to think about and evaluate.
2
1
But you also support addition types of annotation I presume that could help with more extensive analysis like with shared memory structures etc ? It's a difficult problem to think through. The problems I saw with analysis were with memory allocator implementations 1/
1
and streams interfaces with dynamic memory structures. Shared memory is also subject to race condition issues and other runtime scenarios that makes it difficult for static analysis. I'm sure these are well known issues but I'm a frustrated with language designer's 2/
2
Yes, ideally things are enforced by the type system, but for the purposes of external static analysis having annotations used by the static analyzer to provide additional (optional) checks is useful. The language can do a lot to aid with this, or compatible language extensions.


