1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00
Simple, fast, safe, compiled language for developing maintainable software. Compiles itself in <1s with zero library dependencies. Supports automatic C => V translation https://vlang.io
Go to file
2019-06-25 12:07:07 +02:00
.github Update issue templates 2019-06-24 21:22:05 +02:00
base64 base64: fix build 2019-06-23 09:24:59 +02:00
builtin Added free() method for StringBuilder 2019-06-25 00:26:11 +02:00
colors Added colors.v - Bring colors to the boring terminal 2019-06-24 19:23:19 +02:00
compiler Update Makefile 2019-06-25 02:12:03 +02:00
examples examples/news_fetcher.v: now displays story URL, not just title 2019-06-24 19:28:36 +02:00
gg gg repo note 2019-06-24 19:43:05 +02:00
gl fix Tetris example 2019-06-23 13:17:56 +02:00
glfw all: add copyright 2019-06-23 09:22:49 +02:00
glm fix Tetris example 2019-06-23 13:17:56 +02:00
gx all: add copyright 2019-06-23 09:22:49 +02:00
http http/download.v: replace C code with V + clean up 2019-06-23 23:18:39 +02:00
json Add all types of int and float to json decode/encode 2019-06-25 00:27:18 +02:00
math added math constants (they must be in PascalCase) (change radians) 2019-06-25 10:52:49 +02:00
os remove execinfo.h for now 2019-06-24 15:53:34 +02:00
rand rand fixes 2019-06-23 23:25:20 +02:00
stbi stb_image macos support 2019-06-23 14:10:15 +02:00
sync all: add copyright 2019-06-23 09:22:49 +02:00
thirdparty add khrplatform.h 2019-06-24 12:28:42 +02:00
time remove execinfo.h for now 2019-06-24 15:53:34 +02:00
.gitattributes .gitattributes etc 2019-06-22 20:24:15 +02:00
.gitignore add .gitignore file 2019-06-23 01:45:44 +02:00
azure-pipelines.yml Add Azure Pipelines Config 2019-06-24 19:32:29 +02:00
CodeStructure.md Create CodeStructure.md 2019-06-25 12:06:55 +02:00
CONDUCT.md Update CONDUCT.md 2019-06-24 18:07:25 +02:00
LICENSE README.md 2019-06-22 20:22:41 +02:00
README.md Update README.md 2019-06-25 12:07:07 +02:00

The V Programming Language 0.1.1

https://vlang.io

Documentation: https://vlang.io/docs

Twitter: https://twitter.com/v_language

Discord (primary community): https://discord.gg/n7c74HM

Installing V: https://github.com/vlang/v#installing-v-from-source

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 UB, 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.

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 relase:

  • Debug builds are used (use v -prod -o v to get faster compilation).
  • The new formatter runs on every single token and slows the compiler down by ~20%. This will be taken care of.
  • There are a lot of known issues that are quick to fix (like function lookups being O(n)).

Code structure

https://github.com/vlang/v/blob/master/CodeStructure.md

Installing V from source

Linux and macOS

# You can clone V anywhere
git clone https://github.com/vlang/v
cd v/compiler
make

# Or build without make:
wget https://vlang.io/v.c   # Download the V compiler's source translated to C
cc -std=gnu11 -w -o vc v.c  # Build it with Clang or GCC
./vc -o v . && rm vc        # Use the resulting V binary to build V from V source, delete the old compiler
./v -o v .                  # Bootstrap the compiler to make sure it works

That's it! Now you have a V executable at v/compiler/v.

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

sudo ln -s ~/code/v/compiler/v /usr/local/bin/v

Windows

V works great on Windows Subsystem for Linux. The instructions are the same as above.

If you want to build v.exe on Windows without WSL, you will need Visual Studio. Microsoft doesn't make it easy for developers. Mingw-w64 could suffice, but if you plan to develop UI and graphical apps, VS is your only option.

V temporarily can't be compiled with Visual Studio. This will be fixed asap.

Testing

$ v

V 0.0.12
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.

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

macOS:
brew install glfw freetype curl

glfw and libcurl dependencies will be removed soon.