A language can evolve backwards-compatibly only by filling in parts of the syntax and semantics that were previously occupied by errors.
-
-
SFINAE is one example, but beyond that it's also easy to break backwards compatibility with tooling (build scripts/tests that look for compilation failures, parsers etc.) Obligatoryhttps://xkcd.com/1172/
-
Backwards compatibility should be defined only in terms of success or failure of compilation and observable values or existence of errors at runtime. Any more granular notion (such as performance, or exact text of error messages) would be counterproductivdly constraining.
End of conversation
New conversation -
-
-
Luckily, in C# adding meaning to formerly syntactically incorrect groups of tokens is backwards compatible. But giving a valid meaning to formerly invalid or ill-typed (but syntactically correct) expressions is almost always a breaking change.https://twitter.com/vreshetnikov/status/1162065525658099712?s=20 …
Thanks. Twitter will use this to make your timeline better. UndoUndo
-
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.