4 ms·
There are certainly some good reasons to use C as your backend, but there are some huge downsides as well. The main one in my mind is that you're limited by res
by vlang1dot0 6y ago
There are certainly some good reasons to use C as your backend, but there are some huge downsides as well. The main one in my mind is that you're limited by restrictions placed on you by the target language. V claims no UB but C has lots of UB so extreme care must be taken while doing code generation not to run afoul of C's rules. A quick glance at V's issue tracker shows that is not the case. Nor does there seem to be any plan for solving this.
Other points in that document are frankly baloney:
- Writing programs that pass -Wall -pedantic, Clang analyzer, PVS, and result in zero Valgrind warnings/errors is a dream of any C/C++ developer. With V it's going to be guaranteed for every V program. (We are not there yet, but very close.)
Clang analyzer is not integrated at all so this is not "very close".
Valgrind tests are mostly disabled (especially with -autofree), this is baloney.
Author has yet to set up PVS or Coverity although it was suggested a few days ago on Discord. Again, baloney.
`-Wall -pedantic` Given V can't even compile valid V programs consistently without generating C _errors_ I find this extremely difficult to believe.
> Stability. New languages using LLVM directly are going to crash often. That's inevitable, and can be seen across all new languages using LLVM. The V compiler hasn't crashed once for me, and I haven't received any crash reports from other users.
V issue tracker has lots of instances of the V compiler crashing. "I haven't received any crash reports from other users" is a verifiable fabrication. ([1](https://github.com/vlang/v/issues/6310 https://github.com/vlang/v/issues/6310), [2](https://github.com/vlang/v/issues/6263 https://github.com/vlang/v/issues/6263), [3](https://github.com/vlang/v/issues/4730 https://github.com/vlang/v/issues/4730))
> Simplicity. LLVM is a huge C++ dependency, meaning that both developers of the language and the users are forced to install it. Calling C++ is not easy from V/C, so C wrappers have to be used, increasing the number of dependencies and complexities.
But you need a C compiler. `v -o` requires either clang (and thus LLVM) or GCC both of which are massive dependencies. This logic rings hollow.
- delian66 6y ago> Author has yet to set up PVS or Coverity although it was suggested a few days ago on Discord. Again, baloney. I personally, find the following course of events very interesting: On 2020/09/14, a Discord user named `Engineer` writes the following: > We should consider using Coverity as this is an opensource github project - we can test the output v filename.v -o filename.c as input for Coverity - to help us understand issues with the generated C code. Mind you, that is not a code contributor, and his earlier questions, are about a mysterious undisclosed C compiler, that produces much more stricter error messages than gcc's ones. Then he makes a short lecture on the topic of `What is static analysis?` again on Discord... It is a Scooby Doo mystery indeed. I have nothing against Coverity personally - it may very well help the V code generator, but I hate being forced to use a product in such a way.
- vlang1dot0 6y agoYes, please continue unraveling this "Scooby Doo mystery", I'm sure it will be entertaining for everyone! Do you think there's a coordinated campaign by(?) Coverity to get your open source project to use it? For what reason? It's surely not to make money considering Coverity gives open source projects a free license. > I have nothing against Coverity personally - it may very well help the V code generator, but I hate being forced to use a product in such a way. Yes, two random people telling you to consider using a static analysis tool is "forcing" you to use a product. ---- This is a great example why everyone should stay away from V. Industry standard best practices are treated as conspiracy theories by the developers. It's fine for people to decide they want to make a new language; that's great! It's also totally fine for all of those people to have no idea what they're doing; that's how you learn. But at some point, you need to recognize that you don't know what you don't know. V is not anywhere close to the level of production ready-ness you yourself have repeatedly claimed.
- delian66 6y agoI myself do not claim that V is production ready. It is not even 0.2 ... I think it is very disingenuous of you, to put words in my mouth in such a way. I would appreciate, if you stop doing that to me, or others in the future.
- delian66 6y agoAs for Coverity, we are considering it, and afaik Alex has a license for PVS-Studio.
- delian66 6y ago> But you need a C compiler. `v -o` requires either clang (and thus LLVM) or GCC both of which are massive dependencies. This logic rings hollow. It requires a C compiler. You said it yourself. Clang and GCC are not the only existing C compilers. tcc for example is tiny compared to them - on linux, `thirdparty/tcc/` is ~4.1MB, excluding the `thirdparty/tcc/.git` folder, and ~5.8MB including it.