Vox 项目介绍
概述
Vox 是一种多范式的编程语言,借鉴了 D 语言(60%)、Jai 语言(30%)和 Zig 语言(10%)的设计理念。它是一种小型、快速的即时编译(JIT)和提前编译(AOT)的编译器,不需要额外的依赖(仅需一个 D 编译器)。
主要特点
- 快速编译:Vox 以快速编译速度著称。
- 强大的元编程能力:Vox 支持强大的元编程,这让程序员能够在编译时生成代码。
- 多用途:支持脚本开发及独立程序开发,适用于 JIT 和 AOT 编译。
- 零依赖:除编写程序所需的 D 编译器外,Vox 不需依赖任何其他库或包。
与 D 语言的相似之处
Vox 与 D 语言保持高度相似,尤其在以下方面:
- 语法结构:结构体、函数、枚举、循环控制等。
- 条件编译和模块/包支持。
- 模板、可变参数模板与函数。
- 与 C 的互操作性。
与 D 语言的不同之处
尽管与 D 语言相似,Vox 也有其独特之处:
- 无垃圾收集:最低限度的运行时支持,没有类(只支持结构体),没有异常处理。
- 更快的编译时功能(CTFE):优化编译时的特性支持,促进代码生成。
- 不支持 C++ 的互操作:Vox 专注于 C 的互操作。
支持平台
- 已支持:Windows-x64、Linux-x64(均为主机和目标平台)、macOS-x64(仅支持 JIT 模式)。
- 计划支持:Linux-arm64、WebAssembly、Windows-arm64、SPIR-V(适用于 Vulkan/OpenCL/OpenGL 着色器)。
项目目标
Vox 致力于:
- 强调应用程序扩展性。
- 最大化用户生产力和应用程序性能。
- 支持 AOT 和 JIT 编译,插件支持,运行时编译,嵌入式编译器。
- 提供静态类型支持和出色的错误消息。
- 提供快速增量编译,降低安装、设置、集成的难度。
语法示例
Vox 的语法类似于 D,以下是一些常用功能的代码示例:
i32 fib(i32 number) {
if (number < 1) return 0;
if (number < 3) return 1;
return fib(number-1) + fib(number-2);
}
struct Point {
i32 x;
i32 y;
}
T min[T](T a, T b) {
if (a < b) return a;
return b;
}
使用命令行接口
帮助信息可以通过 vox --help
获取,.vx
文件为源码文件,可以使用 vox program.har
进行编译。
编译器与工具
Vox 编译器提供了一些内嵌工具,例如 PDB 文件的内容输出。此外,支持通过 GitHub 定制语法高亮,并且提供 Vim 的语法高亮插件。
编译器统计
- 实现规模:约 40k 行D语言代码,3MB 可执行文件。
- 编译时间:调试模式 4s,发布模式 45s。
- 测试套件运行时间:361 个测试,耗时 95ms。
- 编译 10MLoC Fibonacci 程序的时间:Windows 上为 8s,Linux 上为 7.5s。
Vox 致力于提供一个高效、易用的编程体验,通过其独特的设计和特性,迎合那些需要快速、高性能编译的开发者需求。