V语言中文网

V语言是为开发可维护的软件而创建的简单、快速、安全的编程语言。

相关资源:

Google讨论组:

V语言资源精选(Awesome Vlang):

从代码编译V语言:

Docker环境:

$ docker pull xena/vlang:0.0.12

$ docker run --rm -it xena/vlang:0.0.12 sh
$ docker run --rm -it xena/vlang:0.0.12 /root/code/v/compiler/v

$ docker run --rm -it xena/vlang:0.0.12 /root/code/v/compiler/v run /root/code/v/examples/hello_world.v

QQ群和微信群:


Hello, world

在线运行:https://vlang.io/play

fn main() {
	areas := ['game', 'web', 'tools', 'https://vlang-zh.cn'] 
	for area in areas {
		println('Hello, $area developers!')
	}
}

更多的例子请访问链接


开发状态

V语言还处于非常早期的开发阶段。很多特性都标记为开发中状态(WIP,work in progress)。不过此页面相关的内容和代码都会在2019年6月22号开源。如果所有的WIP开发工作都完成,那么将是发布V1.0的时候。

V语言的特色

快速编译

在Intel i5-7500 @ 3.40GHz, SM0256L SSD没有优化的环境,每秒钟可以编译120万行V代码。这是通过模块化和直接输出机器码来实现快速编译的。

V语言编译器也可以直接输出C语言代码,但是输出的性能将下降到10行每秒钟。

注:直接输出机器码还处于非常早期的阶段,目前只支持X64环境的Mach-O格式的目标文件。因此目前必须先输出C代码再进行编译。

安全


性能

用于构建可维护程序的简洁语言

你可以在半个小时读完全部的自带文档。虽然简洁,但是不简单!你可以用V语言做任何其它语言可以做的事情!


编译器400KB,零依赖

语言的标准库小于400KB。V语言已经自举,用V语言编写,可以在0.4秒内构建(到今年地,时间继续降到0.15秒)。

时间对比:

语言     内存大小    编译时间
Go      525 MB     1m 33s
Rust    30 GB      45m
GCC     8 GB       50m
Clang   90 GB      25m
Swift   70 GB      90m
V       0.4 MB     0.4s

目前V语言只依赖C语言编译器,用于启动。一旦语言完备,就可以不再需要C语言编译器。

先在0.4秒内构建V,然后使用生成的编译器再次构建自己:


C/C++代码到V代码

V可以翻译整个C/C++代码到V代码,以享受带来的安全性、简单性和高达400x的编译速度。

比如C++代码:

std::vector<std::string> s;
s.push_back("https://vlang-zh.cn is ");
s.push_back("awesome");
std::cout << s.size();

将翻译为以下V代码:

mut s := []
s << 'https://vlang-zh.cn is '
s << 'awesome'
println(s.len)

关于翻译DOOM的博客文章即将发布。

翻译几乎支持全部的C语言标准,但是对C++对支持还处于早期阶段。上面是简单的例子,复杂的C++代码可能有困难。C++是一个比较复杂的语言,我们希望今年年底能完成这个工作。

DOOM从C代码翻译到V代码后,编译时间是0.7秒,提升了25倍。


代码热加载

修改代码之后无需重新编译,直接查看修改后的结果,大大提升开发效率。


强大的图形库

基于GDI+/Cocoa Drawing构建的跨平台绘图库,以及基于OpenGL的图形库,用于构建更复杂的2D/3D应用程序,具有以特性:

DirectX,Vulkan和Metal的支持已经在计划中。


本机跨平台GUI库

使用本地窗口控件。跨平台开发不在需要嵌入一个巨大的浏览器引擎。V语言提供了一个ui模块用于本地GUI应用开发:Windows底层使用WinAPI/GDI+,macOS底层使用Cocoa。而Linux通过定制的绘图实现。

即将到来的特性:

下面是用V语言的ui包开发的Slack本地客户端Volt,只有300KB大小:


交叉编译更便捷

只要运行v -os windows .v -os linux .就可以轻松实现跨平台交叉编译。即便是GUI应用开发,交叉编译也不需要额外的步骤!(目前编译macOS应用只能在macOS系统)

下面展示了先用macOS进行V语言应用开发,然后在使用Windows VM测试输出v.exe程序:


无痛部署和依赖管理

使用V语言构建应用,无论代码规模多大,只要简单运行v .命令。不需要配置任何构建环境、makfile文件等。因为采用精通链接,不会有任何其它动态库依赖,可以在任何同类型的操作系统运行。

例如只需要运行v get sqlite就可以获取sqlite库(WIP)。

到处可运行

V语言可以输出C代码,因此只有有C语言的地方都可以用V语言开发应用,同时可以借助GCC或Clang强大的优化能力。V语言可以没有代价地调用C函数,同时其它任何语言也可以像调用C函数那样调用V语言函数。


REPL

$ v
>> data := http.get('https://vlang.io/utc_now')? 
>> data 
'1551205308'

V脚本(WIP)

#v 
for file in ls('build/') {
	rm(file) 
}  
mv('*.exe', 'build/') 

v run deploy.v 

内置Web框架

['/post/:id']
fn (b Blog) show_post(id int) vweb.Result {
  post := b.posts_repo.retrieve(id) or {
     return vweb.not_found()
  }
  return vweb.view(post)
}

V语言论坛博客均采用内置的Web框架开发。


其它

V语言资源精选(Awesome Vlang):


关注光谷码农公众号,了解V语言更多资讯: