Snow 编程语言 v0.12.0 发布: 标准库体系扩展与系统调用规范化
版本更新
新增功能
标准库体系全面升级
- 新增 std_env / std_fs / std_process / std_sync / std_sys / std_thread / std_time / std_io 等标准库模块,封装环境变量、文件系统、进程管理、并发原语、系统信息、线程与时间功能。
- 新增 std_float / std_double / std_long,支持 abs/min/max、完整的数值常量、示例及文档。
- 重命名并重构 std_integer,扩展数学能力(abs/max/min),统一结构与示例风格。
- 新增 os_ 系列模块*:
os_fs、os_fd、os_multiplex、os_net、os_process、os_sync、os_sys、os_thread、os_time等,对系统调用提供稳定封装。
系统调用与时间接口扩展
- 新增 TICK_MS (0x1703) 系统调用:返回单调时钟毫秒值。
- 新增 NANOSLEEP / sleep_ns,支持纳秒级睡眠、线程中断恢复、详细异常文档。
- 标准化系统调用编号(如 CHMOD/FCHMOD/MKDIR/UTIME/OPEN 等)并修正与实现之间的不一致。
- 同步扩展系统信息能力:
cpu_count、memory_info、last_error_message、last_error_code等。
前端、IR 与类型系统增强
- 引入前端词法分析模块
frontend-lexer,支持 Java 21/25 编译。 - 增加对 struct / fields / this / super 的解析支持。
- 在 IRBuilderScope 中新增 统一寄存器类型跟踪:
registerTypes映射、类型推导、结果类型标记等。 - 优化标签生成(带函数名前缀),提高字节码可读性与调试能力。
- 扩展字符串与引用比较,新增
R_CE / R_CNE / CMP_REQ / CMP_RNE操作码。
调试能力升级
- 新增 --trace 指令级跟踪模式,输出字节码执行路径。
- 扩展 LoggingUtils,新增 trace 级别日志过滤。
- 为构建器添加函数作用域标签,方便 IR/VM 调试。
批量测试与工具链增强
- 新增 test-all 测试命令:支持批量编译运行 Demo、跳过测试、失败停止、超时控制等。
- 提供详细彩色输出和完整测试摘要。
- 新增 PowerShell 工具:批量测试、PR 日志导出、Docker Registry 性能测试。
性能和稳定性改进
虚拟机数值体系重构
- 新增 NumberUtils:集中处理数值弹栈与类型转换,统一 popInt/popLong/popDouble/popFloat 等。
- 所有整数/短整型/长整型相关 VM 指令均重构为依赖 NumberUtils,消除重复代码与隐式类型转换。
- 支持处理 Float/Double/Boolean/Number 等多类型,错误检查更严格。
科学计数法字面量支持
- 增强数字扫描器,支持
1e3、-2.5E-4、指数校验规则、d/D 后缀。 - 移除非法格式(如指数中的下划线)。
进程/线程与同步模型增强
-
重构 os_process 接口:
spawn→ forkexec_replace→ execwait_pid/wait_any→ wait
-
FORK/EXEC 改为同步模型:子进程结束后才返回,增强可用性。
-
引入 StreamForwarder,支持子进程 stdout/stderr 实时转发。
开发者体验提升
文档体系全面规范化
- 系统化统一为 JSDoc 注释风格:
@module/@function/@summary/@param/@returns/ 异常说明。 - 完善所有系统调用文档,覆盖 OPEN/READ/WRITE/CLOSE、SELECT/EPOLL、SOCKET、GETENV、CLOCK_GETTIME 等。
- 移除重复示例,统一模块级文档结构。
- 明确 readdir 非递归语义、chmod/fchmod 退化说明、utime 时间戳格式等。
- 统一 Snow SDK 目录、SNOW_HOME、模块解析规则说明。
示例(Demo)体系整理
- 新增大量 Demo:整数数学、Fibonacci、TCP 客户端/服务端、线程/进程、exec、乘法表、files 等。
- 清理过时 demo、统一目录结构、统一模块名小写(snow)、重写部分示例代码。
- 增加
.run.xml运行配置,方便直接运行。
构建/发布链路改进(Windows / Linux / Docker)
-
重构 Windows 发布脚本:
- Compress-Archive → ZipFile(解决兼容性问题)
- 改进 JDK 选择逻辑、PATH 设置方式、VERSION 文件生成
- 统一 Join-Path,异常改为 throw
-
Linux 构建:
- 强制使用 PowerShell 7 打包
- 更新 Docker 镜像与脚本结构
-
Docker Registry 测试脚本:
- 多镜像并行测速、响应时间分析、镜像拉取验证
编译链路增强
- native-maven-plugin 版本管理调整
- maven-compiler-plugin 升级
- 本地编译优化级别提升到 -O3
- 修正 Unix/Mac OS X 构建家族划分
Bug 修复
- 修正大量系统调用编号不一致问题(OPEN/CHMOD/FCHMOD/MKDIR/UTIME 等)。
- 修复 readdir/mkdir/chdir 等返回值描述不统一问题。
- 修复 SEEK 文档与实现不一致、whence 参数缺失说明。
- 修复 std_long 常量范围与 long 字面量大小写不一致。
- 修复多处 Demo 路径、运行配置、空白行、宏重复的问题。
- 修复多语言文档、系统调用边界情况说明缺失。
文档改进
- 语言文档大规模重构:语法、访问控制、最佳实践、结构体继承、数组注意事项等。
- 重写 API 参考与系统调用说明,补充参数/返回值/异常/边界。
- 完整补全 TIMEOFDAY、CLOCK_GETTIME、GETENV、SOCKET、EPOLL 等所有系统调用文档。
- 清理多余注释、空行,统一格式与术语。
如遇到使用问题,欢迎及时 提交 Issue