Norm 0.16
Norm 0.16 交付流式系统 I/O、HTTP 客户端和统一结构序列化运行时,并补齐 extension function、字段反射与 Annotation 生命周期的语言链路。
系统 I/O 与 HTTP
ByteReader、ByteWriter、Resource与use统一流式资源生命周期,readAll保留显式读取上限;- 文件系统支持流式读取、写入、追加、同步模式和强类型失败映射;
std.http提供强类型 request、response、header、status 与 URI,响应 body 通过受控 reader 读取并确定性关闭;- JDK HTTP adapter 将发送、响应和 body 读取纳入同一 timeout 与 cancellation 预算,系统失败继续抛出领域 Exception。
语言与结构 metadata
- extension function 是显式导入的静态顶层函数,可使用成员式调用;Parser、类型推断、Core、格式化和语言服务共享同一语义;
- Annotation 的 passive target 与
FunctionInterceptor、ParameterInterceptor<T>、FieldInterceptor<T>生命周期分离; Type<T>.fields()与Field<T>按稳定 ordinal 暴露字段名称、类型、runtime Annotation 和受控读取,不使用 JVM reflection 或字符串方法调用;- Core schema、language semantics 和 identity 版本随 callable、field metadata 与 runtime binding 变化同步升级。
JSON、XML 与 YAML
std.serialization定义 immutableDataMapper、DataReader<T>、DataWriter<T>以及@Serializable、@SerialName、@SerialIgnore;std.json提供 typed mapping、UTF-8 bytes、JsonValuetree、parse/write 与带路径和位置的JsonException;std.xml与std.yaml复用 exact Core type shape 和 reader/writer plan,同时保留 XML attribute、YAML document 等格式专属规则;- 序列化直接按 Core field ordinal 访问 value,以规范构造器反序列化,并分别缓存 immutable reader/writer plan;
- Jackson streaming 与 Woodstox 被封装在格式 adapter 内,不参与 Norm 类型发现和对象构造。
工具与验收
VS Code 插件版本与 Norm 版本建立构建门禁,并覆盖 extension、反射、Annotation 和 JSON/XML/YAML 标准库。跨文件补全只对当前文档应用声明顺序,导入的标准库 extension 不再受其他文件 source offset 影响。文档站点的 GitHub Pages base、manifest 与公开链接统一由 /Norm/ 配置派生并在构建时校验。
JVM、Native Image、真实文件、HTTP 回环、结构 round-trip、失败矩阵、递归 shape、Extension Host 与发布包布局均进入自动化验收。
迁移与边界
只需要标记目标的 Annotation 应实现 TypeTarget、FieldTarget、FunctionTarget 或 ParameterTarget;需要执行生命周期时改用对应 interceptor。系统与数据格式失败统一抛出类型化 Exception。
自动结构映射当前只处理 value。class identity、对象图、循环引用和多态需要后续独立协议;HTTP server 尚未进入标准库。