feat: expose validated class registration to VM hosts

This commit is contained in:
2026-10-21 02:40:18 +08:00
parent 2b5539cd06
commit 44a02c9fd6
4 changed files with 15 additions and 2 deletions
+2
View File
@@ -11,6 +11,8 @@ ObjectStore/Vm 仍从空堆启动。宿主显式调用 `bootstrap_types()` 得
- Object 的实例类型是 Type。
- Type 的实例类型也是 Type。
`Vm::new_class(name, base, fields, methods)` 为宿主公开与源码相同的类构建校验和所有权协议,返回拥有式定义根;宿主注册普通值类型无需生成源码。
`new_type(name, base, constructor)` 创建一份新的名义定义,并沿 base 取得元类型。名字相同不代表类型相同。base 在创建时固定,不能通过替换载荷或修改属性改变,因此继承链不会因后续修改出现循环。`attach_type(instance, definition)` 只允许给尚未附加类型的对象设置一次类型,验证同堆、存活状态和 Type 载荷。已有 `type` 普通字段时拒绝附加,避免遮蔽数据。旧的原生对象可以继续保持未分类。
`type_of` 返回借用式类型引用;`is_subtype(candidate, expected)` 检查名义父链,含自身;`is_instance(instance, expected)` 先取得实例类型,再检查父链。非法句柄和非 Type 参数报错,不返回假值来掩盖错误。这些接口目前面向堆对象,直接保存在 Value 中的标量尚未统一接入。