quickat
quickat
1084 0 0

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!

工程地址 https://github.com/titzer/virgil

0

See Also

Nearby


Discussion

Login Topics