Skip to main content
文档站副本

术语表上游为 ZTSTest/Docs/GLOSSARY.md;修改后执行 npm run sync-spec

术语表(GLOSSARY)

规范性术语以本表为准;实现细节见「实现落点」列。

核心架构

术语含义实现落点
ZTSUnity 下 C# 与 JavaScript(QuickJS)互操作框架;Editor 用 Mono,Player 用 Il2CppPackages/com.code-philosophy.zts
JS 可见语义脚本侧可观察的行为契约;Mono 与 Il2Cpp 必须一致spec/**
双运行时ZTS.Mono(Editor)+ ZTS.Il2Cpp(Player);门面 TsAppDomain00-OVERVIEW.md
libil2cpp/ztsPlayer 侧 native 实现根目录build-win64/.../libil2cpp/zts
GetFunctionC#→JS:TsAppDomain.GetFunction<T> 按 ES 模块与导出名绑定 Delegate01-HOST-API.md
MethodBridgeJS→C# 方法桥;Il2Cpp 按 ReducedType 复用 stub;Mono 每成员 Emitimpl/codegen/
QuickJS嵌入式 JS 引擎;每域 JSRuntime + 一个主 JSContext00-OVERVIEW.md §2
Exotic object(异质对象)带内部槽(internal slots)的 JS 对象,用于类型门面与 CLR 实例;要求 ECMAScript Proxymetatable/01-LAYOUT.md

类型与命名

术语含义实现落点
CSharp 根对象全局对象;属性 miss 时懒加载程序集 → 类型;权威低层入口02-TYPE-SYSTEM.md §2
csharp: 虚拟模块保留 specifier 前缀;import { T } from "csharp:{assembly}/{namespace}"CSharp[assembly][typeFullName] 同一类型对象02-TYPE-SYSTEM.md §2.11
类型对象(typeObject)CSharp[assembly][typeFullName]csharp: named export 解析得到的静态门面 exotic object§3.1
typeFullNameCLR 全名;namespace 用 .;嵌套类型用 +§2.3
typeArgzts API 中描述 C# 类型的实参:类型对象 / zts.types.* / mscorlib 字符串spec/05-LIB.md§3
门面(view)实例 exotic object 对外暴露的声明类型;可与运行时具体类型不同spec/marshal/06-CLASS.md
__typeid闭合泛型、数组等无法仅凭字符串反查的类型 idTypeRegistry
Intern相同 make_*_type 实参多次调用返回同一类型对象TypeRegistry

属性分派(metatable 目录)

术语含义实现落点
静态类型 exotic(STO)类型对象上的静态成员分派载体;等价 ZLua SMT 职责metatable/01-LAYOUT.md
实例 exotic(IEO)CLR 实例 exotic object 上的实例成员分派载体;等价 ZLua IMT 职责同上
三表分派methodTable / fieldGetterTable / fieldSetterTable 属性读写分派metatable/02-INDEX.md
属性 miss未注册成员 → throw Errorzts: member not found: …;禁止反射 fallback,禁止静默 undefinedmetatable/02-INDEX.md
只写属性读 misssetter 存在但 getter 不存在 → zts: property has no getter: …同上
Bind 期扁平化继承链 public 成员在 EnsureBinding 时写入当前类型三表;运行时向上查找02-TYPE-SYSTEM.md §5
dispatch closure多重重载时默认方法名绑定的运行时分派函数spec/04-METHOD-OVERLOAD.md
direct method function单重重载、全签名键或别名绑定的桥接函数MetaBinding
全签名键同名多候选时自动挂的 Name(Type.FullName,…) direct 键(不含返回类型)spec/04-METHOD-OVERLOAD.md §3.7
方法调用 this 绑定obj.Method(args) 作为方法调用时自动传入 CLR this提取const fn = obj.Method; fn(args) 自动绑定metatable/02-INDEX.md §3

Marshal 形态

术语含义实现落点
ByVal handle值类型 payload 内嵌于 exotic object 内部槽(struct 拷贝语义)spec/marshal/05-STRUCT.md
ByObj handle托管引用 / boxed 值经 ObjectRegistry 的 exotic objectspec/marshal/06-CLASS.md
OpaqueValue无属性分派的临时 native 句柄(ref/in/out 或显式标注)spec/marshal/04-OPAQUE.md
StructHandlestruct 在 C#→JS 默认路径上的 opaque 句柄(同步调用链内有效)同上 + struct 分册
ReducedTypeIl2Cpp 桥接按简化签名复用 stub 的键;Mono 不做此复用impl/codegen/
undefined vs nullundefined 表示「未传 / JS 缺失」;null 表示 CLR 引用 null 或 Nullable 无值;细节见 marshal 分册00-OVERVIEW.md §1.4;spec/marshal/
bigintv1 不支持作为 CLR 整数通道;脚本侧 bigint 不得隐式映射为 long/IntPtr00-OVERVIEW.md §1.3

Registry 与生命周期

术语含义实现落点
ObjectRegistryByObj exotic object 槽位 + (identity, view) 弱缓存 + GC rootspec/10-LIFETIME.md
StructRegistrynon-blittable struct handle 拷贝与 GC 扫描同上
OpaqueParameterScopeC# 调 JS 期间 opaque handle 的 generation 域OpaqueValueMarshal
JSContext宿主默认每域一个主上下文;跨线程须遵循帧泵 / 同步规则spec/10-LIFETIME.md §4

宿主 API

术语含义实现落点
GetFunction<T>C#→JS 正式入口;返回 MulticastDelegate;调用方负责缓存01-HOST-API.md
[TsMarshalAs]参数 / 返回值 / 字段 / 属性的 Marshal 标注spec/marshal/02-MARSHAL-AS.md
[TsAlias]为方法追加最终 JS 名;可与默认名/其它别名重复,按名分组进 overloadspec/04-METHOD-OVERLOAD.md §5
Delegate 桥C#→JS 调用路径:GetFunction 绑定导出函数为 closed delegate 后 Invokespec/marshal/09-FUNCTION.md
ES module脚本模块单位;GetFunctionjsModulecanonical specifier不含 .js / .ts);csharp: 为 ZTS 保留的类型模块 scheme01-HOST-API.md §1.3;14-TYPESCRIPT.md
TsProject工程根下的 TypeScript 源码与生成声明目录;emit 到 out/,运行时不读 .ts14-TYPESCRIPT.md

明确不支持(rewrite 规则)

术语含义
Event 专用对象 { get, set, fire } 子对象;使用 add_EventName / remove_EventName 普通方法
运行时继承 promotion实例成员 不在 属性 miss 时沿链查找并缓存;改为 Bind 期扁平化
Lua 冒号语法 obj:Method();统一 obj.Method(args)
Proxy 作为分派机制规范不要求、不依赖 ECMAScript Proxy;实现使用 exotic object 内部槽
bigint → CLR 整数v1 不支持

文档缩写

缩写路径
SPECDocs/spec/**
IMPLDocs/impl/**
MTDocs/spec/metatable/**
MARDocs/spec/marshal/**