Virgil:一种快速且轻量级的编程语言,可编译为 WASM
Virgil 是一种为快速、无依赖程序设计的编程语言。其设计融合了功能性和面向对象编程范式,以实现表达性和性能。Virgil 的编译器为 JVM 生成优化的独立本机可执行文件、WebAssembly 模块或 JAR。为了快速恢复测试和调试,程序也可以直接在内置解释器上运行。它非常适合编写小而快速的程序,这使得它非常适合构建某些类型的程序,如编译器和虚拟机。它目前正在用于虚拟机和编程语言的研究,特别是开发下一代 WebAssembly 虚拟机 Wizard。
该存储库包括整个编译器、运行时系统、一些库、测试、文档和用于Virgil各种编译目标的支持代码。
语言设计
Virgil 专注于在静态类型语言中平衡这些主要功能:
- 类-用于基本面向对象编程
- 功能-用于功能的小规模重用
- 元组-用于有效聚合和统一处理多参数函数
- 类型参数-用于对类型进行强大而清晰的抽象
- 代数数据类型-便于构建和匹配数据结构
支持的目标
Virgil 可以编译为 Linux 或 Darwin 的本机二进制文件、JVM 的 jar 文件或 WebAssembly 模块。Linux 二进制文件可以使用 Windows 的 Linux 系统调用层在 Windows 下成功运行。编译器自然是一个交叉编译器,能够从任何受支持的平台编译到任何其他受支持的平台,因此您只需要能够在其中一个平台上运行,就可以针对任何其他平台。
- x86 darwin:32位darwin内核(MacOS)
- x86-64-darwin:64位darwin内核(MacOS)
- x86 linux:32位linux内核
- x86-64-linux:64位linux内核
- jar:Java虚拟机的jar文件
- wasm:任何wasm引擎的WebAssembly模块
Hello World!
这里我们只定义一个主方法,并调用一个内置函数以打印到控制台。
def main() {
System.puts("Hello World!\n");
}
简单地运行它
% virgil HelloWorld.v3
输出
Hello World!
0
See Also
- WatchYourLAN:轻量级网络 IP 扫描器
- 绿色轻量级的程序守护程序joker
- Go 1.12.3 紧急发布,修复linux 下使用cgo 编译失败的问题
- Go 1.10 出来了,编译速度明显变快
Nearby
- 上一篇 › Vite: 下一代前端工具
- 下一篇 › Deprank:使用 PageRank 查找代码库中最重要的文件