hylo-lang/hylo-new · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈
Hylo
其他
嵌套类型只能在其主声明中定义。
- 这样做可以简化限定名的查找,因为扩展模块无法定义新的嵌套类型。
- 在作用域合规性的背景下,这种做法是合理的,因为扩展模块中的类型定义可能会破坏其他人的代码。(不过由于属性的存在,这一理由的说服力稍弱?)
应当区分扩展模块与给定模块。
- 扩展模块会重新打开某个类型的作用域并添加新成员。
- 给定模块则用于暴露某种合规性。
设a.m为一个表达式,其中a的类型为T,我们可以将m解析为在a的主声明中或a的扩展模块中引入的实体,但无法解析为在给定模块中引入的实体。
如果m表示一个特质要求,那么名称解析应将其绑定到该特质中定义的实体,并通过a对该特质的合规性作为凭证。
优化建议
- 将“小型”类型树的内容存储在其标识符的内联存储空间中。
- 使用单独的数组来存储每个语法树的标签,而非调用
tag(of:)。 - 对那些需要频繁“移动”的数据结构(例如
Program和IRFunction)使用外部存储。 - 修改
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
- 从 swift.org 下载并安装最新的 Swift 编译器
- 下载并安装 Hylo's LLVM build
swift test
MacOS
- 从 swift.org 下载并安装最新的 Swift 编译器
- 下载并安装 Hylo's LLVM build
swift test- 待办:检查是否存在缺失的依赖项
Hylo 编译器的运行时依赖项
hc 在链接时会使用 clang 和 lld,这些依赖项会从 PATH 中查找。在 MacOS 上,您需要在 PATH 中添加 xcrun,以便编译器能够找到 SDK。