ITADN
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

Hylo(原名 Val)

codecov

Hylo 是一种利用 可变值语义泛型编程 进行高级系统编程的编程语言。

注意:我们目前的大部分工作都集中在位于 https://github.com/hylo-lang/hylo-new 的新编译器上。鼓励新贡献者针对该仓库进行开发。

本仓库包含 Hylo 旧实现的源代码。请访问我们的 网站 以获取有关该语言本身的更多信息。

开发/使用要求

本项目使用 Swift 编写,并以包的形式分发,使用 Swift Package Manager 或 CMake 构建。 你需要 Swift 6.2 或更高版本才能从源代码构建编译器。 本仓库包含 子模块, 因此克隆后,请执行 git submodule update --init 以填充 它们。

Windows 用户: 本仓库包含符号链接,因此你需要 启用支持 才能检出它。

LLVM

此包需要由 Hylo 打包的 LLVM 20,其中包含用于 SPM 的 .pc pkgconfig 文件,并启用了断言以帮助在开发期间发现错误。注意:LLVM 的主要版本 不兼容或向后兼容。

如果你使用的是开发容器,这已经预安装在系统上。运行 llvm-config --prefix 以查看其位置。

Windows 上,将环境变量 VSINSTALLDIR 设置为你 visual studio 的安装路径,例如 C:/Program Files/Microsoft Visual Studio/2022/Community,末尾不带 /,以便 LLVM 的 CMake 文件能够定位 DIA SDK。

使用 CMake 和 Ninja 构建

  1. 配置:选择一个 build-directory 和一个 CMake build type (通常为 DebugRelease)。<LLVM> 是 指向 LLVM 安装根目录的路径。

    cmake 
      -D LLVM_DIR=<LLVM>/lib/cmake/llvm  \
      -D CMAKE_BUILD_TYPE=<build-type>   \
      -D BUILD_TESTING=1                 \
      -G Ninja -S . -B .build
    

MacOS 特定标志 - 如果你未使用默认的 Swift 工具链,你可能需要 -D CMAKE_Swift_COMPILER=swiftc 以防止 CMake 使用 Xcode 的默认 swift。 - 添加 -D CMAKE_OSX_SYSROOT=$(xcrun --show-sdk-path)

  1. 构建

    cmake --build .build
    
  2. 测试(需要第 1 步中的 -D BUILD_TESTING=1):

    ctest --parallel --test-dir .build
    

使用 CMake 和 Xcode 构建

您需要 CMake 3.30 或更高版本。

  1. 生成 Xcode 项目:选择一个 build-directory,然后, 其中 <LLVM> 是您 LLVM 安装根目录的路径,

    cmake 
      -D LLVM_DIR=<LLVM>/lib/cmake/llvm \
      -D BUILD_TESTING=1                \
      -G Xcode -S . -B .build
    
  2. Profit: 在 build-directory 中打开 .xcodeproj 文件, 并使用 Xcode 的 UI 进行构建和测试。

使用 Swift Package Manager 或 Xcode 构建

如果您正在使用开发容器,则可以跳过以下步骤。

  1. 安装 pkg-config.
  1. a) 当不使用 Xcode 时:将 LLVM 安装pkgconfig 子文件夹添加到 PKG_CONFIG_PATH,除非你正在使用 Xcode。

b) 使用 Xcode 时:你需要将 llvm.pc 安装到 Xcode 已经搜索的目录中,例如 /usr/local/lib/pkgconfig/。Hylo LLVM 安装包含一个位于 <LLVM>/pkgconfig/install-pc.sh 的脚本,可帮助完成此操作: cd <LLVM>/pkgconfig ./install-pc.sh llvm.pc /usr/local/lib/pkgconfig/

  1. 现在你应该能够构建和测试:
    swift build -c release
    swift test -c release

该命令将在 .build/release 中创建一个名为 hc 的可执行文件。 这就是 Hylo 的编译器!

要测试你的编译器,请运行

swift test -c release --parallel

致 macOS 用户:

  1. Package.swift 中添加 platforms: [.macOS("xxx")],其中 xxx 是 你的 macOS 版本,以解决关于“object file was built for newer macOS version than being linked”的警告。

使用 VSCode 构建 Hylo Devcontainer

虽然 Hylo 原生支持 Linux,但它也提供了一个 Devcontainer 规范,以便通过 Docker 容器在其他平台上为 Linux 进行开发。我们的 Linux CI 使用该规范;这使得可以在 macOS 等其他操作系统上本地运行 Linux CI。虽然该规范应该适用于任何支持 devcontainers 的 IDE,但请记住该团队仅使用 VSCode。

首次使用 VSCode 打开 Hylo 项目时,你应该会收到提示,要求安装 .vscode/extensions.json 中的扩展 recommendations。如果没有收到提示,请在扩展市场中搜索扩展标识符以手动安装扩展。

然后,使用 VSCode 命令构建 Devcontainer:> Dev Containers: Rebuild and Reopen in Container

最后,在 VSCode 中打开一个新的集成终端,并确认 shell 用户是 vscode。你可以运行 whoami 来检查这一点。

该集成终端已连接到 Devcontainer,就像通过 ssh 一样。
你现在可以按照使用 [CMake 和 Ninja](#building_with_ cmake_and_ninja) 或 Swift Package Manager 进行构建和测试的说明进行操作。 所有先决条件,包括默认 PKG_CONFIG_PATH 中的 llvm.pc 文件,均已预装。

Hylo 仓库文件已挂载到容器中,因此任何在本地(在 VSCode 或其他编辑器中)所做的更改都会自动同步到 Devcontainer。但是,如果需要修改 .devcontainer 目录中的任何文件,您需要使用 > Dev Containers: Rebuild and Reopen in Container 重新构建容器。

提交问题

提交问题报告时,您需要手动更新 Hylo 版本。 如果没有此步骤,hc --version returns unknown

./Tools/set-hc-version.sh

实现状态

本项目正处于积极开发阶段;请预期功能可能会失效,API 可能会发生变化。

编译器流水线组织如下。 您可以使用以下选项选择编译器在流水线中应深入的程度:

  • --emit raw-ast:仅解析输入文件,并将无类型 AST 输出为 JSON 文件。
  • --typecheck:对输入运行类型检查器。
  • --emit raw-ir:将有类型 AST 降低为 Hylo IR,并将结果输出到文件中。
  • --emit ir:运行强制 IR 通道,并将结果输出到文件中。
  • --emit llvm:将程序转译为 LLVM,并输出 LLVM IR。
  • --emit intel-asm:为所有用户模块输出 Intel 汇编。
  • --emit binary(默认):生成可执行文件。

例如,hc --emit raw-ast -o main.json main.hylo 将解析 main.hylo,将无类型 AST 写入 main.json,并退出流水线。

有关当前实现状态的更详细描述,请参阅我们的路线图页面

贡献

我们欢迎对 Hylo 的贡献。 请阅读 CONTRIBUTING.md 以了解如何开始的详细信息。

您还可以通过加入我们的 Slack 或每周二和周四太平洋时间 12:00-13:00 或中欧时间 21:00-22:00 的 Teams 会议 与社区联系。

许可证

Hylo 根据 Apache-2.0 许可证条款分发。 详见 LICENSE