No side effects, no surprises.

Language vs. Interpreter

The V language itself is distinct from the runtime interpreters that are developed for it.

V is a specification of grammar, syntax, and semantics. V Language Interpreters (VLI), by contrast, are specific implementations of the language, with limitations that match the operating system they run on. Following the language specification, a VLI could be implemented on any operating system, and V language source code files should be syntactically interoperable between those implementations.

OS-specific differences and the "vocabulary" keyword

Clearly there are large differences in operating systems, and likewise there are large differences in the administration of those different systems. Some, but not all, of these differences can be masked through the V language. For example, a keyword such as path, which is used to specify a fully qualified directory name, can equally apply to nearly all operating systems, with such minor differences as the use of forward and backward slashes being gracefully handled by the implementation. On the other hand, keywords such as selinux_type and selinux_user are only applicable to Linux operating systems, such as Fedora, that have Security Enhanced Linux installed.

The V language itself is not affected by these differences, but any specific VLI for the language is. VLIs, in general, treat the presence of unrecognized OS-specific keywords as if they were typing mistakes, and should issue a warning message to the console. This treatment however can be overridden using the V language vocabulary keyword, which allows the system administrator to suppress these warning messages. Each VLI implementation may choose to make their own decision on how to treat such differences.