V编程语言开源

已翻译 进入开放编译器的类别 语言五。 V 是一种静态类型的机器编译语言,专注于使开发更易于维护并且编译速度非常快。 编译器代码、库和相关工具 是开放的 在麻省理工学院的许可下。

V 的语法与 Go 非常相似,借用了 Oberon、Rust 和 Swift 的一些结构。 语言尽可能地简化,据开发者介绍,30 分钟的学习就足以学习基础知识 文件资料。 同时,该语言仍然非常强大,可以用来执行与使用其他编程语言相同的任务(例如,库可用于 2D/3D 图形、创建 GUI 和 Web 应用程序)。

创建一门新语言的原因是希望将 Go 语言的语法简单性、编译速度、易于并行化操作、代码的可移植性和可维护性与 C/C++ 的性能、Rust 的安全性和Zig 编译阶段机器代码的生成。 我还希望获得一个紧凑而快速的编译器,它可以在没有外部依赖的情况下工作,摆脱全局范围(全局变量)并提供“热”重新加载代码的能力。

与 C++ 相比,新语言明显更简单,提供更快的编译速度(高达 400 倍),实践安全的编程技术,不存在未定义行为的问题,并提供用于并行操作的内置工具。 与Python相比,V更快、更简单、更安全、更易于维护。 与 Go 相比,V 没有全局变量,没有 null,所有变量值都必须始终定义,所有对象默认都是不可变的,仅支持一种类型的赋值(“a := 0”),显着更加紧凑运行时和生成的可执行文件的大小、从 C 直接移植的存在、没有垃圾收集器、更快的序列化、插入字符串的能力(“println('$foo: $bar.baz')”)。

fn 主(){
领域 := ['游戏', '网络', '工具', '科学', '系统', 'GUI', '移动'] a := 10
如果属实 {
到:= 20
}
对于区域中的区域{
println('你好,$area 开发者!')
}
}

项目特点:

  • 紧凑而快速的编译器,与标准库一起占用约 400 KB。 通过直接生成机器代码和模块化来实现高编译速度。 编译速度在一个CPU核心上约为每秒1.2万行代码(注意,在运行V过程中可以使用C,然后速度下降到每秒100万行代码)。 编译器的自组装也是用V语言编写的(Go中也有参考版本),大约需要0.4秒。 到今年年底,额外的优化工作预计将完成,这将使编译器构建时间缩短至 0.15 秒。 从开发者的测试来看,Go的自组装需要512MB的磁盘空间,运行时间为一分半钟,Rust需要30GB,需要45分钟,GCC需要8GB,需要50分钟,Clang需要90GB, 25分钟,
    Swift - 70 GB 和 90 分钟;

  • 程序被编译成可执行文件,无需外部依赖。 一个简单的http服务器组装后的可执行文件大小只有65 KB;
  • 编译后的应用程序的性能达到C程序汇编的水平;
  • 能够与 C 代码无缝交互,无需额外开销。 C语言中的函数可以从V语言中的代码中调用,反之亦然,V语言中的代码可以用与C兼容的任何语言来调用;
  • 支持将 C/C++ 项目翻译成 V 语言的表示形式。使用 Clang 的解析器进行翻译。 尚未支持 C 标准的所有功能,但转换器的当前功能已经足够 翻译 用 V 游戏 DOOM 的语言来说。 C++ 翻译器仍处于开发的早期阶段;
  • 内置序列化支持,不受运行时束缚;
  • 最小化内存分配操作;
  • 确保安全:没有NULL、全局变量、未定义值和变量重定义。 内置缓冲区溢出检查。 支持通用函数(Generic)。 默认情况下无法更改的对象和结构;
  • “热”代码重新加载的可能性(即时反映代码的更改而无需重新编译);
  • 确保多线程的工具。 就像在 Go 语言中一样,“run foo()”这样的结构用于启动一个新的执行线程(类似于“go foo()”)。 未来,计划支持 goroutine 和线程调度程序;
  • 支持 Windows、macOS、Linux、*BSD 操作系统。 计划年底前增加对Android和iOS的支持;
  • 编译时的内存管理(如 Rust),无需使用垃圾收集器;
  • 提供用于图形输出的多平台工具包,使用 GDI+/Cocoa 和 OpenGL 进行渲染(计划支持 DirectX、Vulkan 和 Metal API)。 有用于处理 3D 对象、骨骼动画和相机控制的工具;
  • 提供一个库,用于生成带有每个操作系统本机设计元素的图形界面。 Windows 使用 WinAPI/GDI+,macOS 使用 Cocoa,Linux 使用自己的一组小部件。 该库已经在开发中使用 — Slack、Skype、Gmail、Twitter 和 Facebook 客户端;

    计划是创建一个类似Delphi的界面设计应用程序,提供类似于SwiftUI和React Native的声明式API,并为创建iOS和Android移动应用程序提供支持;

    V编程语言开源

  • 提供内置 Web 框架,用于为项目开发人员创建网站、论坛和博客。 支持HTML模板的预编译,无需对每个请求进行处理;
  • 交叉编译支持。 要为 Windows 构建可执行文件,只需运行“v -os windows”,对于 Linux,只需运行“v -os linux”(预计稍后将支持 macOS 的交叉编译)。 交叉编译也适用于图形应用程序;
  • 内置依赖管理器、包管理器和构建工具。 要构建程序,只需运行“v.”,无需使用 make 或外部实用程序。 要安装其他库,只需运行“v get sqlite”;
  • 编辑器中用于 V 语言开发的插件的可用性 VS代码 и Vim的.

进入菜单 感知到的 社区与 怀疑论,因为已发布的代码显示,并非所有声明的功能都已实现,并且需要非常大量的工作来实现所有计划。
此外,最初存储库有 放置 存在汇编和执行问题的损坏代码。 假设作者还没有达到他们开始注意到的阶段 帕累托法则,根据该理论,20%的努力产生80%的结果,而剩下的80%的努力只产生20%的结果。

与此同时,Project V 的 bug 跟踪器已删除了大约 10 个帖子 示范 例如,低质量代码表示使用 C 插入以及在函数库中使用通过调用 os.system("rm -rf $path") 删除 rm 命令的目录。 项目作者 他只删除了消息, 发表 巨魔 (修改确认了批评的有效性, 保持 в 编辑历史记录).

来源: opennet.ru

添加评论