ITADN
hylo-lang/hylo-new
hylo-lang/hylo-new · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

Hylo

codecov

其他

嵌套类型只能在其主声明中定义。

  • 这样做可以简化限定名的查找,因为扩展模块无法定义新的嵌套类型。
  • 在作用域合规性的背景下,这种做法是合理的,因为扩展模块中的类型定义可能会破坏其他人的代码。(不过由于属性的存在,这一理由的说服力稍弱?)

应当区分扩展模块与给定模块。

  • 扩展模块会重新打开某个类型的作用域并添加新成员。
  • 给定模块则用于暴露某种合规性。

a.m为一个表达式,其中a的类型为T,我们可以将m解析为在a的主声明中或a的扩展模块中引入的实体,但无法解析为在给定模块中引入的实体。 如果m表示一个特质要求,那么名称解析应将其绑定到该特质中定义的实体,并通过a对该特质的合规性作为凭证。

优化建议

  • 将“小型”类型树的内容存储在其标识符的内联存储空间中。
  • 使用单独的数组来存储每个语法树的标签,而非调用tag(of:)
  • 对那些需要频繁“移动”的数据结构(例如ProgramIRFunction)使用外部存储。
  • 修改replaceSuccessor,以便在两个分支内容相同时能够直接将condbr合并到br中。

问题

  • 为上下文函数编写扩展模块是否可行?

构建说明

克隆该仓库并初始化子模块:

git clone https://github.com/hylo-lang/hylo-new
cd hylo-new
git submodule update --init

Linux

  • 安装 zstd 的开发包:sudo apt-get install libzstd-dev
  • 使用 swiftly 安装最新的 Swift 编译器
  • 下载并安装 Hylo's LLVM build
  • swift test

Windows

MacOS

  • swift.org 下载并安装最新的 Swift 编译器
  • 下载并安装 Hylo's LLVM build
  • swift test
  • 待办:检查是否存在缺失的依赖项

Hylo 编译器的运行时依赖项

hc 在链接时会使用 clanglld,这些依赖项会从 PATH 中查找。在 MacOS 上,您需要在 PATH 中添加 xcrun,以便编译器能够找到 SDK。