| > A bug that unintentionally leads to creation of null is wildly different than V not supporting non-nullability at all. You have the "badness" ordering here totally the wrong way around. Soundness is about trust. A known-unsound system is not necessarily bad. I use C and Python. I know the tooling can't give me very many guarantees, and that I have to do the book keeping myself. "Caveat emptor". In a much, much stronger sense: there is absolutely nothing wrong with a sound system with explicit escape hatches. Bothing. I use sorry in Isabelle and admit in Coq. I do type casts in Java. I know where I can and cannot trust the tooling, and there are clear flags where I need to do my own book keeping. FFI in Rust is an explicit escape hatch. I can't think of a single system that doesn't have some sort of explicit escape hatch from soundness. As long as it's explicit and understood and above all intentional, this is a feature rather than a bug. But it's very hard to justify using a system that's supposed to be sound and isn't! I don't know where to trust the tooling. And the blog's examples are not contrived. They are actually very straight-forward mistakes as far as type systems go... most production type system bugs are much subtle. |
At the point V was version 0.2. Of course it has bugs - even bad bugs.
The article went through each feature of V, found one bug per feature, and claimed that V failed to have that feature.
There are constructive and non-constructive ways to start a conversation about bugs in a language. One constructive way is to open Github issues. Writing an article claiming that a language fails to have those features at all is one of the least constructive ways I can imagine.