Nftables reaches 1.0
Nftables reaches 1.0
Posted Aug 28, 2021 20:25 UTC (Sat) by pbonzini (subscriber, #60935)In reply to: Nftables reaches 1.0 by hailfinger
Parent article: Nftables reaches 1.0
Ahah, that's actually a coincidence. GCC error messages for C were bad mostly due to the usage of yacc for the parser. When the parser was rewritten as recursive decent in 2004 by Joseph Myers that laid the foundation for improving error recovery. They then finally improved when GCC developers including myself got fed up of a few particularly egregious cases[1][2].
But competition with llvm wasn't particularly involved. In fact for C++ (which used recursive descent since before clang was started) error message quality has always been comparable to clang.
More recently (and long after I had stopped working on GCC), David Malcolm did a huge amount of work on caret diagnostics, where GCC's front ends were indeed lagging behind. But that's a different story.
[1] https://gcc.gnu.org/legacy-ml/gcc-patches/2010-10/msg0261...
[2] https://gcc.gnu.org/legacy-ml/gcc-patches/2010-11/msg0180...
Posted Aug 28, 2021 21:24 UTC (Sat)
by Paf (subscriber, #91811)
[Link] (1 responses)
Posted Aug 30, 2021 13:22 UTC (Mon)
by pbonzini (subscriber, #60935)
[Link]
In C, the problem was abysmal error recovery, causing dozens of cascaded errors for a single missing semicolon or fat-fingered type name (such as "intt" or "unsgined char"). With a recursive descent parser it's relatively easy and maintainable to add heuristics that look ahead and insert missing tokens or fix things up as necessary. For example if you see two consecutive unknown identifiers, it's likely that the first is a misspelled type and the second is a variable name. With some luck, that will remove a lot of errors involving that variable, because the compiler now knows about it and treats it as declared.
Nftables reaches 1.0
Nftables reaches 1.0