Simple, fast, safe, compiled language for developing maintainable software. Supports translation from C and (soon) C++.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
0x9ef d6ddfa124d Fixed get_error_msg for *nix 8 hours ago
.github vlib: update and cleanup tests + fix PR template 2 weeks ago
compiler parser: change cur_line, tmp_line only in main pass 8 hours ago
examples vfmt fixes 1 day ago
thirdparty move zip C dependency to thirdparty/ 3 days ago
vlib Fixed get_error_msg for *nix 8 hours ago
.gitattributes .gitattributes etc 3 weeks ago
.gitignore additional `.gitignore` rules for windows development 1 day ago
.travis.yml travis: make.bat 6 days ago minor match_test.v fixes 2 days ago Update 3 weeks ago Rename to 2 weeks ago
LICENSE 3 weeks ago
Makefile Makefile: update 1 day ago readme: add -lm 1 day ago
azure-pipelines.yml Azure: remove `cd compiler` 2 weeks ago
make.bat make.bat for easier compilation on Windows 2 weeks ago

The V Programming Language 0.1.x

Build Status Build Status



Discord (primary community):

Installing V:

Key Features of V

  • Simplicity: the language can be learned in half an hour, less if you already know Go
  • Fast compilation: ~100k loc/s right now, ~1.2 million loc/s once x64 generation is mature enough
  • Easy to develop: V compiles itself in less than a second
  • Performance: within 5% of C
  • Safety: no null, no globals, no undefined behavior, immutability by default
  • C to V translation
  • Hot code reloading
  • Powerful UI and graphics libraries
  • Easy cross compilation
  • REPL

V 1.0 release is planned for December 2019. Right now V is in an alpha stage.


GitHub marks V’s code as written in Go. It’s actually written in V, GitHub doesn’t support the language yet.

The compilation is temporarily slower for this release:

  • Debug builds are used (use ./v -prod -o v compiler to get faster compilation).
  • vlib is recompiled with every program you build.
  • The new formatter runs on every single token and slows the compiler down by ~20%. This will be taken care of.

Code structure

Installing V from source

Linux, macOS, Windows, WSL, Android, Raspberry Pi

git clone
cd v

That’s it! Now you have a V executable at [path to V repo]/v. [path to V repo] can be anywhere.

C compiler

You’ll need Clang or GCC.

On macOS run xcode-select --install if you don’t have XCode or XCode tools installed.

On Windows follow these instructions:

Building without make

# Download the V compiler's source translated to C
curl -O
cc -std=gnu11 -w -o v v.c -lm  # Build it with Clang or GCC
./v -o v compiler              # Use the resulting V binary to build V from V source

(These instructions won’t work on Windows, use make.bat instead).

Symlinking and updates

You can create a symlink so that it’s globally available:

sudo ln -s [path to V repo]/v /usr/local/bin/v

V is being constantly updated. To update V, simply run

git pull origin master


$ cd examples
$ v run hello_world.v
hello world

$ v
V 0.1.x
Use Ctrl-D to exit

>>> println('hello world')
hello world

Now if you want, you can start tinkering with the compiler. If you introduce a breaking change and rebuild V, you will no longer be able to use V to build itself. So it’s a good idea to make a backup copy of a working compiler executable.

Running the examples

v hello_world.v && ./hello_world    # or simply
v run hello_world.v                 # this builds the program and runs it right away

v word_counter.v && ./word_counter cinderella.txt
v run news_fetcher.v
v run tetris.v

In order to build Tetris and anything else using the graphics module, you will need to install glfw and freetype.

If you plan to use the http package, you also need to install libcurl.

brew install glfw freetype curl

sudo apt install libglfw3 libglfw3-dev libfreetype6-dev libcurl3-dev

sudo pacman -S glfw-x11 curl freetype2

glfw and libcurl dependencies will be removed soon.