Teyru

Third-party notices / 第三方组件声明

Teyru 项目实际使用与分发的第三方组件,以及各自的许可证与分发方式。

本文件列出 Teyru 项目实际使用与分发的第三方组件。项目本身的许可证见 LICENSE

编译器只用 Go 标准库,go.mod 没有任何外部模块依赖;生成的可执行文件只链接到 系统 C 函数库与本项目自带的运行时。因此本清单很短,而且是完整的。


1. 构建编译器所需

组件用途许可证分发方式
Go 标准库(go1.26 以上)构建 cmd/teyruinternal/*BSD-3-Clause(Copyright The Go Authors)不分发,用户自行安装

Go 标准库以 BSD 3-Clause 许可证发布,条款见 https://go.dev/LICENSE。本项目未修改标准库,也未将其嵌入产物。


2. 生成可执行文件所需(后端)

组件用途许可证分发方式
clang / LLVM(默认后端)将生成的 C 编译为原生可执行文件Apache-2.0 with LLVM Exceptions不分发,用户自行安装;也可用 gcc 替代
GCC(替代后端)同上GPL-3.0-or-later(运行时例外)不分发,用户自行安装
libc / libm / libpthread运行时使用的系统函数库因系统而异(多为 LGPL-2.1+ 或 MIT)动态链接,不分发

生成的可执行文件链接这些函数库,但不包含其源代码。Teyru 运行时 (internal/runtime/src)本身是本项目的原创代码,与上述组件无许可证关联。


3. 运行时与标准库

组件来源许可证
Teyru 运行时(internal/runtime/src/tyrt.htyrt.ctyrt2.ctyrt_net.htyrt_net.c本项目原创LICENSE
Teyru 标准库(lib/*.teyru本项目原创,以 Teyru 编写LICENSE

没有使用任何第三方 C 函数库(没有 Boehm GC、没有 libgc、没有 mimalloc 之类的 分配器):垃圾回收器、字符串、数组、异常与 box 类都是本项目自行实现。


4. 编辑器工具(teyru-lang/editors

组件来源许可证
tree-sitter-teyru/src/tree_sitter/alloc.harray.hparser.htree-sitter 复制,供生成的解析器使用MIT(Copyright (c) 2018 Max Brunsfeld)
tree-sitter-teyru/src/parser.c由 tree-sitter CLI(v0.25.10)从 grammar.js 生成的解析表与词法分析器MIT(同上)
tree-sitter-teyru/grammar.jsqueries/test/本项目原创GPL-2.0-only,见 tree-sitter-teyru/LICENSE
vscode/(TextMate 语法、语言配置、片段)本项目原创LICENSE

tree-sitter 的 MIT 条款要求著作权声明与许可声明随所有副本保留,本文件的这一节与 上游的 LICENSE 一并满足。这些文件只被编辑器用来做语法高亮与解析,不会进入 编译器,也不会进入任何生成的可执行文件。


5. 测试与工具

组件用途许可证
Go 测试框架(testinggo test ./...BSD-3-Clause(Go 标准库的一部分)
OpenJDK / HotSpot只用于 scripts/bench.sh 的对照测量GPL-2.0 with Classpath Exception

scripts/bench.sh 需要 java / javac 才会执行 JVM 那一半;若系统没有安装, 脚本只会跳过该部分,不影响 Teyru 的构建与测试。JVM 不是 Teyru 的运行环境, 也不是任何产物的依赖。


6. 许可证文件

文件说明
LICENSE本项目的主要许可证
LICENSE-CLASSPATH-EXCEPTION-2.0Classpath Exception 全文(条款来自 OpenJDK,随主要许可证一并保留)
tree-sitter-teyru/LICENSE(在 teyru-lang/editors该文法本身的许可证(GPL-2.0-only,与本项目主要许可证相同)

若发行时修改了上述任何一项(例如把 clang 静态链接进产物,或把 Go 标准库 嵌入发行包),必须重新生成本文件并附上对应的许可证全文。

本页目录