Norm 0.19
Norm 0.19 将单文件应用与 GitHub 包管理合并为同一条用户路径:一个 .norm 文件声明模块、依赖、业务类型和应用入口,norm web.norm 自动解析、编译并运行。
单文件应用
Module module()与Application application()由声明内容识别,不依赖module.norm或application.norm文件名;- CLI 与 Language Server 通过同一个
ProjectLoader构建模块图,因此运行、诊断、补全和导航使用一致依赖语义; - 服务生命周期仍由
std.application.Application管理,CLI 不包含框架特例。
GitHub 包仓库
repository: "github"通过normlanguage/registry定位一个 Module 的所有者仓库;- 每个 Module 在独立仓库以
v<version>不可变 Release 发布 NAR 与 SHA-256,下载后使用内容摘要验证并原子写入缓存; - Java Binding 的根制品和传递依赖继续由内置 Maven Resolver 获取,用户不需要 Maven、Gradle、POM 或锁文件;
- Norm 主仓库只保留语言、工具链和消费示例,不再保存 Java Binding 包源码或集中 NAR 仓库。
自包含运行时
- Windows CLI 发布为单个
norm.exe,可以直接运行;norm.exe setup会按用户安装并自动配置PATH; - Windows、Linux 和 macOS CLI 内部统一使用
norm/bin、norm/lib、norm/runtime,不要求用户安装 Java; - CLI、Language Server、VSCode 和 Java Binding 使用同一 JVM 执行模型,独立包可以动态引入发布时尚不存在的 JAR 与 Annotation Processor;
- 发布验收会通过最终目录运行完整语言程序集,并从 GitHub Registry 与 Maven 仓库真实加载 Commons Lang binding。
Windows 从旧版压缩包升级时,下载新的 norm.exe 并运行一次 norm.exe setup,不再手动维护 PATH。
可直接运行的契约见 Micronaut 单文件应用,包发布与所有权模型见包管理器。