- No null
Then what is `voidptr(0)`?
- No global variables
https://github.com/vlang/v/blob/master/doc/docs.md#global-va...
At least add "by default" to the web site.
- No undefined values
Which is done by initializing all values to 0. Probably not a good idea to do that for references though. (See also "no null values")
- No undefined behavior
`*voidptr(0)` is accepted by the compiler. Unsigned integer overflow is accepted by the compiler and UB in the generated C. How can V generate C code free of UB when it can't even generate C code that compiles all the time?
- Pure functions by default
Excluding I/O, one of the biggest sources of impurity, from your definition of pure is useless.
- Generics
You don't actually have generics, you have templates. Kind of ironic since Go has actually added generics before V has managed to get a 0.3 release out. The distinction is this: with generics the compiler is able to validate that the generic code type checks prior to substitution/monomorphization. With templated code, it's not possible to perform type checking until the concrete types have been instantiated. V implements templates with all the drawbacks including code bloat and inflated compile times that comes with it.