Snow 编程语言 v0.11.0 发布: 全面扩展系统调用
更新内容
新增功能
-
系统调用家族大扩展:覆盖文件系统、I/O、网络、进程、线程、并发、环境与时间等领域:
- 文件系统:
CHDIR、GETCWD、MKDIR、RMDIR、READDIR、CHMOD、FCHMOD、UTIME、TRUNCATE/FTRUNCATE、RENAME、LINK/SYMLINK/READLINK、STAT/FSTAT。 - I/O:
OPEN、CLOSE、READ、WRITE、PIPE、DUP/DUP2、SEEK、SET_NONBLOCK、STDIN/STDOUT/STDERR封装。 - 网络:
socket/bind/listen/accept/connect/send/recv,以及getsockopt/setsockopt/shutdown/getpeername/getsockname/getaddrinfo。 - 进程:
EXIT、FORK、EXEC、WAIT、GETPID/GETPPID。 - 线程:
THREAD_CREATE、THREAD_JOIN、THREAD_SLEEP。 - 并发:
MUTEX/COND/SEM/RWLOCK系列(new/lock/unlock/trylock/wait/signal/broadcast等)。 - 环境与系统信息:
GETENV/SETENV、NCPU、RANDOM_BYTES、ERRSTR/ERRNO、MEMINFO。 - 时间:
CLOCK_GETTIME、NANOSLEEP、TIMEOFDAY、TICK_MS。
- 文件系统:
-
模块化 OS 层:新增并细化
os模块为io、fd、fs子模块,统一系统调用入口与封装。 -
标准 I/O 统一:移除
PrintSyscall,全面切换为底层STDOUT_WRITE;修正/统一stdio导入与调用。 -
注册表与工具集:新增/完善
FDTable、ProcessRegistry、ThreadRegistry、Mutex/Cond/Sem/RwlockRegistry、SocketRegistry、EpollRegistry;引入EnvRegistry、SyscallUtils(统一errno/errstr)、SelectorUtils(NIO 多路复用)。
性能和稳定性改进
-
升级至 graalvm-jdk-25+37.1
-
I/O 路径与多路复用:基于
SelectorUtils的 NIO 多路复用与SET_NONBLOCK支持,降低阻塞与上下文切换成本。 -
FD 管理与调度:优化
FDTable结构与查找性能,减少热路径开销。 -
执行链路简化:精简
SyscallFactory/SyscallCommand与CallGenerator路径,统一错误返回与异常传播。 -
并发健壮性:完善锁/条件变量/信号量/RWLock 语义与边界条件处理,提升高并发场景稳定性。
开发者体验提升
- 一键运行:每个 Demo 均提供
.run.xml;同时更新运行配置与命名规范(含 Demo44–46 标准化)。 - 一致的错误语义:通过
SyscallUtils统一errno/errstr;日志与错误信息风格收敛,定位信息更明确。 - 工程化细节:更新
.gitignore(新增demoDir、忽略*.txt/output.txt);stdio与os子模块导入一致化。 - 迁移提示:如仍使用
PrintSyscall,请迁移至STDOUT_WRITE封装。
Bug 修复
- 修复 Demo62/63 文件描述符未关闭与路径配置错误。
- 修复
close栈平衡问题与字节数组编码异常。 - 修复多处 Demo 运行配置与边界输入下的异常处理不一致问题。
文档改进
- 术语与格式统一:清理冗余导入与代码片段,统一缩进/风格,提升可读性与检索性。
如遇到使用问题,欢迎及时 提交 Issue