术语表
按字母/拼音整理本仓库高频出现的术语,给定义并指向相关页。
核心概念
- tsgo / typescript-go:TypeScript 编译器的 Go 移植版,模块
github.com/microsoft/typescript-go。ttsc 建在它之上。catalog 固定typescript@7.0.1-rc。 - shim:
packages/ttsc/shim/<name>,把 tsgo 的internal/*包逐个再导出,因为 Go 禁止跨模块 importinternal/。见 shim 子系统。 - driver:
packages/ttsc/driver,Go 侧编译器外观层,唯一允许 import shim 的包。见 driver 子系统。 - 原生宿主 / sidecar(旁车):ttsc spawn 的 Go 二进制(
cmd/ttsc、cmd/utility-host等),做编译/转换/lint 重活。 - 插件描述符:
transform指向的 JS 模块返回的ITtscPlugin,声明 Go 源、阶段、能力。见 描述符协议。
插件机制
- stage(阶段):
"check"(emit 前跑、报诊断)或"transform"(emit 阶段注入)。check在transform前。 - kind(种类):
executable(package main,独立旁车)或linked(非 main 包,链接进通用宿主)。只有 transform 能 linked。 - composes(水平组合):多个插件条目派发到一个二进制,各仍是顶层公民。
- contributors(垂直组合):一个二进制静态链接额外 Go 源,不作顶层条目出现(如 lint 第三方规则)。
- 共享宿主:多个 transform 插件共享的拥有 emit 进程的那个二进制(
selectSharedHostPlugin)。 - 链接插件 manifest:
TTSC_LINKED_PLUGINS_JSON,driver 按注册顺序配对。
CLI
ttsc:build/check/watch/transform CLI。ttsx:带类型检查的 TypeScript 执行器。见 ttsx 运行时。ttscserver:LSP 宿主,代理tsgo --lsp --stdio。见 LSP 代理。ttscgraph:图谱 dump CLI。fix/format:check 插件的 autofix 子命令;fix 跑 lint+format,format 只跑 format 且不类型检查。
编译器内部
- Program:
driver.Program,下游唯一看到的 shim 无关外观,持 tsgo Program + 租来的 Checker。 - Checker / 单 checker 约束:ttsc 把 checker 池钉到 1(
forceSingleChecker),因串行 transform/rewrite 需同一 checker。见 Program 与 Checker。 - emit 重写:在 tsgo emit 出的 JS 里植入插件代码。两条路径:文本 splice(
rewrite.go,旧)与 AST 集成(emit_plugin.go,新)。见 Emit 与重写。 - RewriteSentinel:
/* @ttsc-rewritten */,标记已 patch 文件让重跑 emit 幂等。 - source preamble:插件在 parse 前注入的源文本(如 banner)。
- overlay FS:内存编辑覆盖在真实文件系统上的 VFS,Session 与 serve 用。
lint
- Rule / Engine / Context:lint 三核心抽象。Rule 注册、Engine 遍历分派、Context 是 per-(file,rule) 句柄。见 lint 引擎。
- Finding:规则报的诊断,带
IsFormat标志。 - FormatRule / typeAwareRule:标记接口,分别标格式化规则与需 checker 的规则。
- format block:
lint.config.ts里配置格式化的专门块(不是rulesmap)。
代码图谱
- Node / Edge:图谱节点(声明)与边(checker 解析的关系)。Node ID 位置无关(
path#name:kind)。 - barrel re-export:
index.tsre-export 兄弟符号;图谱靠Checker_getAliasedSymbol解包。见 构建与解析。 - external leaf:node_modules /
.d.ts边界节点,只作边目标进图。 - MCP:Model Context Protocol,
@ttsc/graph经它向编码代理暴露图谱。
构建与缓存
- buildSourcePlugin:把 Go 插件源编译成缓存二进制的引擎。见 go build 缓存。
- 缓存键:覆盖所有能改变二进制的输入的 SHA-256。
- 跨进程构建锁:
mkdir原子锁,让 fan-out 只构建一次。 - 打包 Go SDK:平台包
bin/go/,让 ttsc 不依赖系统 Go。 - overlay 目录 / go.work:插件构建时把 shim 模块 wire 进去的机制。
工具链
- gen_shims:生成 shim
surface.go的生成器。 - shim_audit:shim 完整性闸门(三层 + 遍历探针)。
- gen-flags:从 schema 生成 flag 表的生成器。
- bumpp:版本递归 bump 工具。