5 ms·
My understanding is that Rust's chief innovation is the borrow checker. If this famous device is that outstanding, one wonders at what point some version of th
by smitty1e 6y ago
My understanding is that Rust's chief innovation is the borrow checker.
If this famous device is that outstanding, one wonders at what point some version of that funtionality arrives for C or C++.
- vlovich123 6y agoLikely not because a feature like that kind of has to be implemented as part of the core language. Maybe someone could retrofit a “safe” version of c/c++, but there’s nothing on the horizon that indicates that would be possible (they are hampered by back compat issues).
- smitty1e 6y agoI mean, MyPy does have some core PEP support, but remains optional for Python. If something as core as type checking can be an optional feature, I'd be surprised if a heftier brain than mine can't get most of the way to a C++ borrow checker optionally. Doesn't C++ famously fetish complexity? Wasn't pi once calculated at compile-timel with a C++ template? Where is my Obfuscated C entry that looks like an ASCII Robotron game and borrow-checks, say, the Linux kernel?
- pjmlp 6y agoThat is partially the reason why all big OS and CPU vendors are investing into hardware memory tagging.
- metreo 6y agoproject verona is _one_ attempt at doing this, ebpf is another
- pjmlp 6y agoBring the borrow checker to the masses, Cyclone, ATS, Carp did it first. Microsoft and Google have already been collaborating in lifetime analysis on Clang Tidy and VC++ static analyser, it just isn't 100% there. CppCon 2019: Gábor Horváth, Matthias Gehre “Lifetime analysis for everyone”" https://www.youtube.com/watch?v=d67kfSnhbpA https://www.youtube.com/watch?v=d67kfSnhbpA Lifetime Profile Update in Visual Studio 2019 Preview 2 https://devblogs.microsoft.com/cppblog/lifetime-profile-update-in-visual-studio-2019-preview-2/ https://devblogs.microsoft.com/cppblog/lifetime-profile-upda... GCC 11 will also support a lightweight version of it for C, https://developers.redhat.com/blog/2021/01/28/static-analysis-updates-in-gcc-11/ https://developers.redhat.com/blog/2021/01/28/static-analysi...
- Rusky 6y ago??? Rust freely declares itself to be inspired by Cyclone et al, but its capabilities are quite different from Cyclone's region analysis (and Carp actually came after Rust). The C++ static analysis, on the other hand, is quite limited in comparison even to Cyclone. It's not sound and doesn't even aim to be- in other words, "just" another static analysis that will not catch everything. ("Just" in quotes because of course more of this is great- my point is merely that it's not the same functionality coming to C++.)
- pjmlp 6y agoRead the comment I was replying to, before jumping into Rust advocacy mode. > My understanding is that Rust's chief innovation is the borrow checker. Carp was a mistake, I wanted to refer to Linear Lisp. Also in the context of worse is better, C and C++ solutions just need to be good enough. Learn this and advocate properly.
- Rusky 6y agoWhat makes you think I'm "advocating" anything? My goal is for people to understand the state of things. C and C++ have had static analyzers to catch "some version" of these problems for a long time now, so presumably anyone asking about borrow checker functionality would be interested in whether that functionality matches Rust's (i.e. is sound).
- pjmlp 6y agoIt reads like it. We should not forget that even if those static analysers aren't sound, they allow to keep using 50 years of eco-system. Which is why companies like Microsoft, despite all security talk, in the end add support for recent ISO C versions, and have "secure" platforms like Azure Sphere with a C only SDK.
- Rusky 6y agoI don't disagree: > ("Just" in quotes because of course more of this is great- my point is merely that it's not the same functionality coming to C++.)