Git Product home page Git Product logo

v's Introduction

The V Programming Language 0.1.x

Build Status Build Status

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

Notes

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

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

Installing V in docker container

git clone https://github.com/vlang/v
cd v
docker build -t vlang .
#to enter in docker container
docker run --rm -it vlang:latest
#to enter in v shell run
v

Installing V from source

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

git clone https://github.com/vlang/v
cd v
make

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: github.com/vlang/v/wiki/Installing-a-C-compiler-on-Windows

Building without make

# Download the V compiler's source translated to C
curl -O https://raw.githubusercontent.com/vlang/vc/master/v.c
cc -std=gnu11 -w -o v v.c  # 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
make

Testing

$ 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.

macOS:
brew install glfw freetype curl

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

Arch:
sudo pacman -S glfw-x11 curl freetype2

glfw and libcurl dependencies will be removed soon.

v's People

Contributors

medvednikov avatar henrixounez avatar archanpatkar avatar joe-conigliaro avatar musou1500 avatar justicesuh avatar 0x9ef avatar zaoqi avatar anagobabatunde avatar hazohelet avatar eulerkochy avatar d2verb avatar chai2010 avatar aguspiza avatar ntrel avatar kriyszig avatar ylluminate avatar rustemb avatar bowero avatar s-you avatar winksaville avatar chanbakjsd avatar spytheman avatar paveg avatar shamofu avatar whoizit avatar pverghese avatar xiphin avatar ciubotaru avatar gemvision-admin avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.