登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
AI 队友
登录
注册
轻量养虾,开箱即用!低 Token + 稳定算力,Gitee & 模力方舟联合出品的 PocketClaw 正式开售!点击了解详情
代码拉取完成,页面将自动刷新
开源项目
>
程序开发
>
编程语言/脚本语言
&&
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
14
Star
157
Fork
19
JCNC
/
Snow
代码
Issues
3
Pull Requests
0
统计
流水线
服务
JavaDoc
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
开发画像分析
我知道了,不再自动展开
发行版
预览版本
v0.13.0
3de53a1
2025-12-05 18:12
对比
Snow v0.13.0
Luke
# 版本更新 ## 新增功能 ### 数字字面量与数值体系增强 * 新增 16 进制数字字面量完整支持: 支持 `0x / 0X` 前缀、下划线分隔、类型后缀校验以及错误提示,覆盖从词法扫描、语法、语义到 IR/VM 生成的全链路。 * 引入 NumberLiteralHelper / NumericConstantUtils 等工具类: 统一处理数字字面量归一化(去下划线、拆后缀、判断进制、浮点格式),提供基于进制的 int/long 解析能力,并支持编译期整型常量求值。 * 增强 编译期常量折叠: 支持一元负号、加减乘除取余、移位等整数运算的编译期计算,对数组字面量进行递归折叠;整合到 IR 构建流程中。 * 优化 数字类型推断与后缀规则: 去除不再支持的 b/s/d 后缀,仅保留 l/L、f/F 等合法后缀;十六进制默认推断为 int/long;通过统一的后缀提取与浮点识别逻辑提升准确性。 * 增强 std_parse 数值解析能力: 新增 / 简化 parseByte / parseShort / parseInt / parseLong / parseFloat / parseDouble 等函数实现,统一前导空白、正负号处理逻辑,并在示例中强化边界与异常场景展示。 ### 数组系统与集合能力升级 * 新增底层 数组系统调用族: 扩展 ARR_LEN / ARR_GET / ARR_SET,新增 ARR_PUSH / ARR_POP / ARR_INSERT / ARR_REMOVE / ARR_RESIZE / ARR_CLEAR 等系统调用及对应处理器,实现列表追加、弹出、插入、删除、调整长度和清空等操作。 * 新增 array / os_array / syscall_array 稳定层模块: 统一封装数组长度获取、元素读写、追加与弹出等操作,提供过程式接口,支持 数组 / List / 字符串 多种容器类型。 * 新增通用动态数组结构 std_array 与迭代器 std_array_iterator: 提供 append/push/pop/insert/removeAt/resize/clear/clone/copy/equals/reverse/iterator/toString 等完整方法集,并给出丰富的示例模块 std_array_example 展示从基础遍历到克隆、清空、多层封装的使用方式。 * 同步扩展 数组指令与 VM 支持: 在指令集与 VM 层加入数组操作指令与操作码范围,更新 CallGenerator/VM 处理逻辑,让高级数组 API 委托到底层系统调用与指令集。 ### 字符串与字节数组扩展 * 新增字符串封装结构体 std_string: 封装 string 类型,提供:构造、长度计算、子串截取、查找、包含、大小写转换、前后缀判断、去空白、toString 等常用方法。 * 增加 字符串与字节数组互转能力: 在 std_string 中新增 toBytes / fromBytes,并在示例中统一改用 toBytes 替代所有手动字节数组构造逻辑。 * 优化字符相关函数实现: chr 函数改为使用 RANDOM_BYTES + ARR_SET 组合,以单字节数组实现字符构造,摒弃原先基于管道与文件描述符的复杂逻辑,提高性能与可维护性。 ### 数值包装类型与示例完善 * 新增 std_int / std_short / std_long / std_float / std_double / std_byte 包装结构体: 提供:构造、拆箱(intValue/shortValue/longValue/...)、abs、equals、toString、valueOf、valueOfString 以及 MIN_VALUE / MAX_VALUE 常量。 * 扩展通用数学与解析工具 std_math / std_parse: 新增 compareInt/compareShort/compareLong/compareFloat 及对应 max*/min* 系列函数;所有示例统一使用新的 API 与类型。 * 新增 / 完善大量 Demo: 对 std_int / std_byte / std_short / std_float / std_double / std_string / std_array / std_parse 等模块补充演示模块,展示从构造、装箱、解析到常量与数学工具的完整使用流程。 ### 语言与编译器前端能力增强 * 支持 布尔逻辑短路(&& / ||): 在语义分析与 IR 构建阶段实现短路逻辑,采用条件跳转避免冗余计算,保证表达式语义与性能。 * 增强 二元运算与字符串拼接类型推断: 针对 + 运算,当任一操作数为字符串时将整个表达式标记为字符串类型;数值运算结果类型与 IR 操作码类型保持一致。 * 引入 结构体字段类型注册与查询: 通过全局结构体字段类型表记录字段类型信息,支持继承链字段类型合并,配合 _*index** / _*setindex** 生成类型精确的访问与赋值指令。 * 支持 函数参数类型注册与查询: GlobalFunctionTable 引入参数类型列表,VM 生成器可基于签名自动设置槽位类型前缀,为返回指令与调用参数自动转换提供基础。 * 增强 函数调用与字段赋值类型推导: 根据参数/字段目标类型自动选择合适加载与转换指令,统一类型前缀标准化,将 byte/short 参与运算时视为 int,保证类型检查与指令生成一致。 * 新增 new 表达式支持: 为结构体/类实例化生成匹配的 IR:自动分配寄存器、初始化字段、根据字段类型选择 _*setindex** 函数、自动调用构造函数等。 --- ## 性能和稳定性改进 ### 数值类型系统与常量处理优化 * 引入 NumericConstantUtils: 支持整型常量静态求值、窄化赋值判定(如 byte/short ← int 常量),在赋值、数组元素写入、函数调用、return 等场景允许安全窄化,避免误报类型错误。 * 重构 数字字面量语义分析器: 统一使用 NumberLiteralHelper 进行规整与解析,大幅减少手写字符串判断,增强类型推断和越界检查准确性,并针对浮点下溢等情况提供更直观错误信息。 * 优化 一元运算与 VM 指令选择: 针对 byte/short 的一元 NEG 运算选择窄类型指令,避免不必要的 int 提升和后续存储崩溃。 * 增强 返回指令生成与自动转换: 根据函数声明返回类型自动识别并插入数值类型转换,区分主函数与普通函数行为,提升运行时类型安全。 ### 标准库加载与路径搜索修复 * 修复 发行版无法使用标准库 的问题: 修正 SDK 搜索路径与标准库目录查找逻辑,确保二进制发行包可正确定位并加载标准库。 * 修复 Linux 系统下无限向上递归查找 lib 目录 的 bug: 限制向上查找层级(最多 8 层),并跳过系统级 /lib 目录,避免跑到根目录导致搜索异常。 ### 字符串与通用算法优化 * 优化 trim 函数逻辑: 简化末尾非空白查找循环与全空白字符串处理分支,在保持行为不变的前提下提升可读性和性能。 * 统一迭代器与数组遍历实现: 在数组和 std_array 示例中采用更清晰的迭代器模式与布尔变量,移除多余标志变量逻辑,减少无意义语句。 --- ## 开发者体验提升 ### 构建与发布链路重构(Maven / 版本管理) * 统一 groupId: 将所有模块(snow-backend、snow-common、snow-ir、snow-lexer、snow-parser、snow-semantic、snow-vm 等)的 groupId 从 org.jcnc.snow 统一为 com.snow-lang。 * 统一 artifactId 与模块命名: 将 frontend-* 模块重命名为 snow-* 系列,并同步更新所有依赖声明,实现模块命名与实际职责对齐。 * 完整重构 多模块 Maven 配置: * 为所有模块补充项目 URL、许可证、开发者和 SCM 信息。 * 统一 Java 编译配置、编码和描述信息。 * 调整依赖关系与 artifactId 顺序,清理无用插件和注释。 * 引入 中央仓库发布配置: * 增加 release profile,集成源码包、Javadoc 包与 GPG 签名插件。 * 集成 central-publishing-maven-plugin,并配置 Sonatype/Maven Central 发布地址。 * 优化 版本号管理: * 新增 .mvn/maven.config 中的 snow.version 变量,统一管理所有模块版本。 * 分批完成从固定版本 → 变量引用 → 回退/升级(0.12.0 → 0.13.0 → 0.13.1 等)的调整。 * 支持从 pom.xml 或 .mvn/maven.config 读取版本号,供生成 .env 与构建脚本使用。 ### 脚本与工具链(PowerShell / Shell / 运行配置) * 重构 Windows 发布与安装脚本: * 新增 install-modules.ps1 / release-windows.ps1 / ensure-pwsh7.ps1 等脚本,确保在 PowerShell 7 环境下运行。 * 抽取 detect-jdk.ps1 / detect-maven.ps1 独立脚本实现 JDK 与 Maven 检测复用。 * 提升日志输出格式,统一使用彩色输出与结构化 summary。 * 新增 / 优化 批量安装与发布流程: * 针对模块安装提供清晰的参数(是否 clean、是否跳过测试),按依赖顺序构建,统计失败模块并输出总结。 * 在安装/发布脚本中自动生成 .env 与 VERSION 文件,复制构建产物并打包归档。 * 运行配置整理: * 新增多个 .run 配置(Maven / PowerShell / Shell),统一脚本路径从 build 迁移到 builds 目录。 * 重命名并重构原有 frontend 相关运行配置为 snow-* 系列,保持名称与模块匹配。 * 其他辅助脚本: * 提供导出 PR 日志脚本,统一目标分支变量与参数校验。 * 添加 Docker Registry 网络性能测试、Demo 清理脚本等辅助工具。 ### 构建稳定性与错误容忍度 * 在多个插件配置中添加 failOnError=false: 包括文档生成、Javadoc 插件等,避免因文档警告或小错误导致整个构建失败,提高构建容错能力。 * 忽略 .env 文件: 在 .gitignore 中添加 /.env,避免敏感环境变量意外提交,同时保护本地配置不被覆盖。 --- ## Bug 修复 * 修正 整型字面量最小值与最大值声明: * 将 int 的 MIN_VALUE 从 -2147483647 修正为 0x80000000,MAX_VALUE 为 0x7FFFFFFF。 * 统一 byte/short/long 类型最值与示例中声明的写法,避免后缀和范围不一致。 * 统一 基本类型字面量语法: 移除 byte/short 上不支持的 b/s 后缀,统一 long 后缀为大写 L,修正文档和示例中的不正确写法。 * 修复多处 函数名大小写与调用不一致 问题: 包括 parselong → parseLong、parsefloat → parseFloat、comparefloat → compareFloat 等,确保示例与实现完全对齐。 * 修复 发行版标准库无法使用、数组长度系统调用参数错误、获取内部数组长度使用错误编号 等问题,确保系统调用与文档一致。 * 修正 fork/进程相关测试: 在特定 Demo 中注释掉 fork 子进程代码与 os_process 测试逻辑,防止批量测试时关闭测试进程或阻塞。 * 修复 数组 pop 实现与空数组行为: 改为返回空字符串而非 null,并通过新数组复制保证长度正确缩减。 --- ## 文档与代码风格改进 ### 文档体系完善 * 新增/扩展多篇技术文档: * 数字字面量助手、十六进制字面量处理全流程。 * 中间表示生成、数值常量窄化赋值。 * 二元运算类型推断、前端模块版本同步机制。 * 数组操作指令及数组体系架构文档。 * 编译任务库目录搜索、标准库路径解析与 Cloud/本地模式说明。 * 完善 系统调用与接口文档: * 为 SyscallHandler 接口补充完整 JavaDoc。 * 完善数组、时间、环境变量等系统调用的语义与参数说明。 ### 代码风格与排版统一 * 统一 负号与数字之间的空格格式: 全面规范 hex、byte、short、int、long 等示例中的负号写法,修正 fork 返回 pid 比较与 os_sync 演示代码中的负数参数格式。 * 统一 缩进与空行风格: 将缩进统一为 4 个空格,清理多余空行、补齐缺失空行;统一导入语句缩进、结构体与函数定义的层级,并修正多处代码块内缩进混乱问题。 * 规范 变量声明与注释格式: 统一变量声明中的空格风格、字符串拼接空格、日志与打印语句的间距;调整模块结尾空白行、修复文件末尾换行、整理多余注释。 * 优化 模板与示例文档: 修复拉取请求模板中的复选框格式、整理模块摘要描述,更新 GraalVM/JDK 版本说明等,使整体文档与代码风格更加一致。 > 如遇到使用问题,欢迎及时 [提交 Issue](https://gitee.com/jcnc-org/snow/issues)
最后提交信息为:
!104
release: 合并 v0.13.0 版本至 main 分支
预览版本
v0.12.0
7f997b2
2025-11-23 21:36
对比
Snow v0.12.0
Luke
# **版本更新** ## **新增功能** ### **标准库体系全面升级** * 新增 **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` → **fork** * `exec_replace` → **exec** * `wait_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](https://gitee.com/jcnc-org/snow/issues)
最后提交信息为:
!92
release: 合并 v0.12.0 版本至 main 分支
预览版本
v0.11.0
7300562
2025-09-27 18:29
对比
Snow v0.11.0
Luke
### 更新内容 #### 新增功能 * **系统调用家族大扩展**:覆盖文件系统、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](https://gitee.com/jcnc-org/snow/issues)
最后提交信息为:
!82
release: 合并 v0.11.0 版本至 main 分支
预览版本
v0.10.0
d5161d2
2025-09-12 22:36
对比
Snow v0.10.0
Luke
### 更新内容 #### 新增功能 * **方法重载**:引入按参数总数(含隐式 `this`)区分的重载机制;统一为为重载方法追加 `_N` 后缀的命名规则;新增重载表与 `addMethod` / `getMethod`;对象/静态方法调用自动追加 `_N`,普通函数调用不追加。 * **字符串/引用拼接**:IR 新增 `ADD_R`,并由 `IROpCodeMapper` 映射到 VM 指令 `R_ADD`;VM 新增 `RAddCommand`,实现「两引用出栈 → 转字符串 → 按左到右顺序拼接 → 压栈」的语义,延续非数值 `+` 的字符串连接行为。 * **类型系统扩展**:新增万能类型 `ANY`;`isCompatible` 增强以支持 `ANY` 与父类引用检查;类型提升工具支持引用类型 `R`; * **变量声明**支持自动类型提升。 * **平台**:新增 **macOS 打包配置**,完善分发能力。 #### 性能和稳定性改进 * **数值计算精确化**:实现数值加法的精确处理,消除常见浮点误差;非数值 `+` 仍保持字符串连接语义。 * **调用链路优化**:更新 `CallExpressionAnalyzer` 与方法查找算法,按参数计数解析更快、更准确。 * **执行路径简化**:精简 `CallCommand`,移除虚拟调用路径,仅保留静态调用;删除不再使用的 `Instance` 与 `VirtualTable`,降低复杂度与运行开销。 * **核心组件重构**:优化 `IRBuilderScope`、`SignatureRegistrar`、`LocalVariableStore` 等类的结构与文档,职责更清晰、内存/查询开销更低。 * **健壮性**:加强参数校验与异常处理,提升容错与可观测性;改进模块常量加载逻辑并简化实现。 #### 开发者体验提升 * 统一重载命名与结构体方法降级规则(`StructName.method_N`,`N` 含隐式 `this`),并梳理结构体签名注册与继承流程,易于理解与排错。 * 代码与注释全面整理:统一导入顺序与格式,清理未使用变量和冗余兜底逻辑,补充必要注释与包级文档。 * 日志与错误信息风格统一,定位信息更明确;示例/测试更完善,便于本地复现与演示。 * 新增 macOS 打包流程,降低本地试用与交付门槛。 #### Bug 修复 * 修复 **成员访问表达式** 在继承场景下父类字段下标重复计算的问题(已进行字段去重与索引纠正)。 * 修复 **`syscall` 子命令** 的解析异常,提升命令行稳定性。 #### 文档改进 * 补充与统一类型系统文档:完善 `BuiltinTypeRegistry` / `BuiltinType` 的注释与结构说明,新增 `ANY`、引用类型 `R` 的类型提升与兼容性示例。 * 完善 IR↔VM 指令映射文档,明确 `ADD_R` → `R_ADD` 的语义与边界。 * 梳理多处 README 与类文档,统一术语与风格,提升可读性与检索性。 > 如遇到使用问题,欢迎及时 [提交 Issue](https://gitee.com/jcnc-org/snow/issues)
最后提交信息为:
!78
release: 合并 v0.10.0 版本至 main 分支
预览版本
v0.9.0
a7966ea
2025-09-05 18:00
对比
Snow v0.9.0
Luke
### 更新内容 #### 新增功能 * 引入虚函数表(VirtualTable)与 `Instance` 运行时对象,支持基于继承链的虚拟调用与多态;新增 `@Class::method` 调用语法。 * 结构体继承能力:父类字段/方法复用,支持 `super.method(...)` 与 `super(...)` 构造链调用。 * 支持结构体多构造函数/重载与自动选择策略,增强面向对象建模能力。 * 新增对象创建表达式(`new`)及其语义分析与 IR 生成流程。 * 增加 `ModuleNode`、`StructNode` 及其序列化逻辑,扩展类型系统表示能力。 * 扩展签名注册器,支持结构体类型签名登记与跨模块校验。 * 支持 `this.xxx` 成员赋值与更复杂的表达式解析场景。 #### 性能和稳定性改进 * 优化 `emitCall` 与 CALL 指令执行路径,修复虚调度与 `super` 匹配边界问题,提高执行正确性与性能。 * 重构 `IRBuilderScope`、`VMProgramBuilder`、`IRProgram`、`IRContext` 等核心组件,简化依赖与上下文切换开销。 * 优化函数解析器、语义分析器与表达式构建链路,提升类型分派与错误恢复能力。 * 改进结构体的序列化/打印/调试输出,提升问题定位与可观测性。 * 移除不必要的调试代码和兜底逻辑,减少运行噪声、提升稳定性。 #### 开发者体验提升 * 新增与完善 Demo(Demo26–Demo33),覆盖多态、继承、构造函数等典型场景。 * 丰富单元测试与示例代码;调整运行配置,统一/清理调试参数,便于本地复现与演示。 * 重构 `StatementBuilder` / `ExpressionBuilder`,接口更清晰、可组合性更强;完善包级注释与文档结构。 * 统一错误提示风格并增强定位信息,提升排错效率。 #### Bug 修复 * 修复 CALL 指令在虚拟调用路径下的多处边界问题。 * 修复构造函数降级/匹配在继承链上的选择异常。 * 修复部分模块内/跨模块的符号解析问题,确保签名校验与查找一致性。 * 修复 `this.xxx` 赋值与复杂表达式解析的若干边界条件。 #### 文档改进 * 更新 Snow Common、CLI、VM、语义分析、语法分析等 README,示例与特性说明与代码保持同步。 * 完善 IR 包注释与整体代码注释,统一术语与风格,提高可读性与维护性。 * 优化日志与文档组织结构,便于检索与学习。 > 如遇到使用问题,欢迎及时 [提交 Issue](https://gitee.com/jcnc-org/snow/issues)
最后提交信息为:
!72
release: 合并 v0.9.0 版本至 main 分支
预览版本
v0.8.0
5b3d807
2025-08-27 15:46
对比
Snow v0.8.0
Luke
### 更新内容 #### 新增功能 * 字符串增强:支持转义符与 Unicode 字符,新增字符串转义/反转义工具类(Demo26)。 * 访问控制:下划线开头函数仅限模块内部调用,提升封装性(Demo25)。 * 常量与语义分析: * 新增 `const` 关键字与全局常量表,支持跨模块常量查找与折叠。 * 新增成员访问表达式与语义分析器,改进 `FunctionChecker` 扫描策略。 * 改进 IR 指令生成逻辑,支持浮点数(Demo23、Demo24)。 * 构建与发布:优化 Windows/Linux 并行构建,新增统一发布脚本与 Docker 自动构建支持。 #### 性能与稳定性 * 修复字符串常量在 `.water` 文件写入时的断行问题,VM 执行期可正确还原。 * 优化全局变量处理、常量折叠与声明语句的语义分析逻辑。 * 发布脚本简化,减少冗余错误提示与配置。 #### Bug 修复 * 修复字符串常量在 VM 与 `.water` 文件写入时的表示错误。 * 修复全局变量声明与作用域相关报错,提升语义分析健壮性。 #### 开发者体验提升 * 新增 Demo22–Demo26 测试与运行配置,覆盖字符串、私有函数、常量等场景。 * 更新测试配置文件,移除无用注释与调试参数。 > 如遇到使用问题,欢迎及时 [提交 Issue](https://gitee.com/jcnc-org/snow/issues)
最后提交信息为:
!67
release: 合并 v0.8.0 版本至 main 分支
预览版本
v0.7.0
39dff9e
2025-08-24 17:15
对比
Snow v0.7.0
Luke
### 更新内容 #### 新增功能 * 支持标准 URL 格式,增强模块兼容性与可用性。 * 编译器增强错误定位功能,定位信息更精准,便于问题排查。 * 支持一维及多维数组类型和字面量,丰富数据结构支持。 * 数组元素赋值、访问和数组常量递归序列化,提升数组操作能力。 * 检查和禁止全局变量重复声明,保证变量唯一性和安全性。 * 支持数组下标访问类型分派,类型推断更智能。 * 支持模块函数调用自动省略当前模块前缀,提升模块内调用便捷性。 #### 性能和稳定性改进 * 优化数字字面量的语义分析与错误提示,提升溢出检测准确性与用户体验。 * 修复常量类型在 VM 中的表示问题,区分浮点数、双精度、长整数,防止类型混淆。 * 优化常量生成逻辑,提升代码可读性和维护性。 * 重构关键字与标准库、模板代码,整体代码更规范,结构更清晰。 * 移除词法分析器中的调试代码,保持代码整洁性。 * 重构 VM 相关生成逻辑,移除冗余字段,简化结构。 #### 开发者体验提升 * IDEA 配置和运行配置文件优化,便于本地开发和演示。 * 多个 Demo、BugFarm 测试项目重构和完善,测试流程更加流畅。 * 命令行 debug 标志统一为 `--debug`,使用体验一致。 * 优化和完善文档及代码注释,增强代码可读性与维护性。 #### Bug 修复 * 修复数字字面量溢出、类型后缀、位宽符号等边界条件相关问题。 * 修复 NumberTokenScanner 误判和死循环问题,增强词法分析健壮性。 * 修复变量作用域与寄存器别名导致内外循环变量互相影响的问题,保证作用域隔离。 * 修复语法分析、词法分析等边界条件 Bug,提升整体稳定性。 * 修复模块内函数自动补全和语义分析相关问题,确保符号解析准确。 * 修复全局变量重复声明问题,保障全局作用域安全。 #### 文档改进 * 移除废弃的字面量后缀(如 i、d),文档更清晰。 * 更新 README 和相关说明文档,确保文档与代码同步。 * 完善方法与命令行文档主描述,参数显示更清晰,注释更完善。 > 如遇到使用问题,欢迎及时 [提交 Issue](https://gitee.com/jcnc-org/snow/issues)
最后提交信息为:
!61
release: 合并 v0.7.0 版本至 main 分支
预览版本
v0.6.0
f1069d6
2025-07-31 17:58
对比
Snow v0.6.0
Luke
### 更新内容 #### 新增功能 * 支持模块内函数调用自动补全当前模块前缀,提升模块内函数引用的便捷性。 * 编译器补全对取模运算符 `%` 的完整支持,增强算术表达能力。 * 新增对 `continue` 语句的支持,完善循环控制结构。 * 新增对 `break` 语句的支持,实现循环中断能力。 * 支持 `globals` 关键字及模块全局变量声明,增强模块作用域管理。 * 整数和浮点数取余运算指令支持,进一步完善运算指令集。 * 新增多项测试用例、演示 Demo(Demo15-18)、Bug 测试用例(Bug2-5),覆盖更多场景。 * 支持函数调用和模块处理机制的进一步改进,提升灵活性。 #### 性能和稳定性改进 * 优化数字字面量的语义分析及错误提示,提升溢出检测准确性与易用性。 * 优化数字字面量相关代码,修复溢出、边界条件等问题,提升健壮性。 * 重构 `RetCommand` 并添加日志记录,增强指令调试与追踪能力。 * 移除 VMCodeGenerator 中的冗余字段,简化生成器结构。 * 优化变量声明语句、循环变量作用域处理逻辑,修复嵌套循环下变量作用域问题。 * 修复变量声明初始化寄存器别名导致内外层循环互相影响的问题,保证作用域隔离。 * 优化部分输出与日志格式,提升调试和输出体验。 #### 开发者体验提升 * IDEA 配置优化与运行配置文件完善,减少开发配置干扰。 * 多个演示用例及测试代码重构与调整,便于测试和演示。 * 移除代码覆盖率配置,优化开发流程。 * 统一命令行 debug 标志为 `--debug`,提升命令一致性。 * 代码结构优化,部分枚举和模式定义重构,整体规范性提升。 * 完善文档和代码注释,增强核心类、命令类的说明与可读性。 #### Bug 修复 * 修复数字字面量溢出、类型后缀、位宽符号间空白符的判定问题。 * 修复 NumberTokenScanner 误判与死循环问题,增强词法健壮性。 * 修复变量作用域与寄存器别名问题,避免内外循环变量冲突。 * 修复语法分析、词法分析等若干边界条件 Bug。 * 修复函数调用和模块内符号自动补全相关问题,确保符号解析准确。 #### 文档改进 * 调整和完善方法文档主描述,提升参数显示与注释效果。 * 更新命令行子命令及相关文档,确保文档同步。 > 如遇到使用问题,欢迎及时 [提交 Issue](https://gitee.com/jcnc-org/snow/issues)
最后提交信息为:
!52
release: 合并 v0.6.0 版本至 main 分支
预览版本
v0.5.0
9a4ebaa
2025-07-24 22:41
对比
Snow v0.5.0
Luke
### 更新内容 #### 新增功能 * 核心引擎与标准库重构,增强标准库功能。 * 新增引用类型指令及相关支持(R\_LOAD、R\_STORE、R\_PUSH、引用类型常量等)。 * 支持字符串字面量解析。 * 支持 syscall 调用的 VM 指令生成,完善系统调用能力。 * 增强 LoadConstGenerator,支持更多常量类型。 * 增加 VM 退出时的提示信息,提升交互体验。 * 新增引用控制命令,进一步完善类型系统。 #### 性能和稳定性改进 * 优化 Native Image 相关代码,提升兼容性和性能。 * 优化数字字面量及相关指令处理,修复数字相关边界与死循环问题。 * 优化 CleanTask 和运行配置,修复产物目录被误删等问题,提升构建与运行稳定性。 * 调整操作数栈、程序终止、函数调用等输出格式,提升调试清晰度。 * 重构 VM 和编译器的调试输出逻辑,并新增 debug 参数,提升开发调试体验。 * 优化内置类型注册表(BuiltinTypeRegistry),提升类型处理效率。 * 修复函数末尾 CALL 指令未解析符号等潜在 Bug。 #### 开发者体验提升 * 更新运行配置并移除代码覆盖率设置,减少开发配置干扰。 * IDEA 配置优化,演示及测试用例调整,Demo 示例代码重构与更新。 * 优化 RetCommand、CallCommand、SyscallCommand 等类的输出与文档注释,提升代码可读性和维护性。 * 统一代码风格,重构部分枚举与模式定义,提升整体规范性。 * 保留 cloud 模式下的 "run" 和 "-debug" 标志,优化开发体验。 * 完善和新增多个测试用例与配置文件。 #### Bug修复 * 修复数字字面量、类型后缀、位宽符号之间空白符的判定问题。 * 修复 NumberTokenScanner 误判与死循环问题。 * 修复 clean & compile & run 时产物目录被误删导致无法输出字节码等问题。 * 修复函数末尾 CALL 指令未解析符号问题。 * 修复语法分析、词法分析若干边界条件的错误。 #### 文档改进 * 更新 LocalVariableStore 类及核心类(如 SyscallCommand、CallCommand)的注释与文档说明。 * 优化方法文档主描述,提升参数显示和注释效果。 * 更新子命令支持状态,完善命令行文档。 > 如遇到使用问题,欢迎及时 [提交 Issue](https://gitee.com/jcnc-org/snow/issues)
最后提交信息为:
!43
release: 合并 v0.5.0 版本至 main 分支
预览版本
v0.4.2
3e59529
2025-07-11 17:35
对比
Snow v0.4.2
Luke
### 更新内容 #### 新增功能 * 增加 IR 对类型转换指令的支持,补充基本数值类型转换相关指令,实现类型间全转换能力(如 long64/float32/double64/short16/byte8 等互转)。 #### 性能和稳定性改进 * 优化函数调用指令逻辑,支持 void 类型函数调用,修复空函数、非 void 函数缺失 return 的判断与报错。 * 修正比较操作的错误提示信息,增强容错和反馈能力。 * 修复函数参数重名、空函数不生成代码、比较跳转等边界问题,提升稳定性。 * 修正 CmpJumpGenerator 逻辑以适配新 VMOpCode。 * 统一修复类型转换相关注释与文档错误,提升类型转换的准确性和一致性。 #### 开发者体验提升 * 优化 CallInstruction 类设计与实现,提升结构清晰度与可维护性。 * 重构 AST 节点位置信息表示方式,便于调试与错误定位。 * 提取和统一类型提升逻辑至 TypePromoteUtils 工具类,简化代码结构。 * 同步 VMOpCode 指令到 OpHelper 工具类,提升代码一致性。 * 优化 IDEA 配置和 Demo 运行配置,调整 Demo 文件结构,减少根目录污染。 * 统一代码风格,实现代码规范化。 #### Bug修复 * 修复函数参数重名导致的语义冲突。 * 修复空函数不生成代码、非 void 函数缺少 return 等边界问题。 * 修复类型转换、比较指令、函数调用等相关细节 bug。 * 修复拼写和注释错误,提升文档质量。 #### 文档改进 * 完善 Snow-Lang 语法文档,新增 Snow-Lang-Syntax 相关文档。 * 补充并修正类型转换指令(byte8、short16、long64、float32、double64 等)相关说明。 * 优化 FunctionParser、L2I、ExpressionUtils、TypePromoteUtils、ComparisonUtils、CmpJumpGenerator 等核心类与方法的注释说明。 * 统一优化类型转换相关文档,消除歧义,提升可读性。 * 丰富类和方法的 JavaDoc 注释,解释用途和使用方式。 * 修改 README,优化项目说明。 * 优化测试用例及测试配置。 > 如遇到使用问题,欢迎及时 [提交 Issue](https://gitee.com/jcnc-org/snow/issues)
最后提交信息为:
!38
release: 合并 v0.4.2 版本至 main 分支
预览版本
v0.4.1
ae0baf3
2025-07-11 17:33
对比
Snow v0.4.1
Luke
### 更新内容 #### 新增功能 * 词法分析器全面状态机化:各类 TokenScanner(字符串、操作符、换行、标识符、注释、数字)重构为基于有限状态机(FSM)实现,提升准确性与可维护性。 * 支持行内注释解析:新增行内注释的解析能力。 * LexerEngine 增加整体校验机制,增强代码静态检查。 #### 性能和稳定性改进 * 数字字面量扫描重构与优化,提升错误处理与边界判定能力。 * CleanTask 逻辑优化,修复 build 目录被误删导致字节码无法写入等问题,行为更符合直觉。 * 修复数字后空格跟非法后缀等导致的编译死循环问题。 * 词法错误遇到即时报错,提升调试体验。 #### 开发者体验提升 * IDEA 配置优化,.water 文件与输出目录调整,避免根目录污染。 * 代码风格统一,优化缩进、变量命名,移除冗余局部变量,提升可读性。 * 测试配置完善,新增与优化多个测试用例及配置文件。 #### Bug修复 * 修复数字字面量与类型后缀、位宽符号之间空白符判定问题。 * 修复 NumberTokenScanner 误判及死循环问题。 * 修复 clean & compile & run 时产物目录被误删导致无法输出字节码问题。 * 修复语法分析、词法分析若干边界条件的错误。 #### 文档改进 * 优化方法文档主描述,提升参数显示效果。 * 完善 LexerEngine、VMOpCode 等核心类的注释说明。 > 如遇到使用问题,欢迎及时 [提交 Issue](https://gitee.com/jcnc-org/snow/issues)
最后提交信息为:
docs: 添加项目声明文件并更新 README
预览版本
v0.4.0
d020a7d
2025-06-28 18:17
对比
Snow v0.4.0
Luke
### 更新内容 #### 新增功能 * **SnowVM 指令集扩展**:支持更多运算和比较指令,增强了虚拟机的功能。 * **CLI工具**:新增了统一的命令行入口,可以方便地管理和生成项目结构。 * **64位整数支持**:增加对64位整数比较的支持,使得语言更加灵活。 #### 性能和稳定性改进 * 提升了字节码显示和比较运算符的显示效果,使得调试更加直观。 * 修复了类型转换和位运算的潜在问题,增强了语言的稳定性。 #### 开发者体验提升 * 代码结构优化,提供了更清晰的注释和文档,使得开发者更容易上手。 * 生成项目脚手架功能可以帮助开发者更快速地启动新项目,减少配置工作。 #### Bug修复 * 解决了多处语义分析和类型提升相关的问题,修复了多处操作数比较跳转的问题,增强了系统的健壮性。 #### 文档改进 * 完善了`VMOpCode.java`的注释,增加了更多使用示例和配置说明,提升了开发者的文档体验。 > 如遇到使用问题,欢迎及时 [提交 Issue](https://gitee.com/jcnc-org/snow/issues)
最后提交信息为:
!23
release: 合并 v0.4.0 版本至 main 分支
预览版本
v0.3.0
e134a7a
2025-06-14 09:45
对比
Snow v0.3.0
Luke
### 更新内容 #### 新特性 - 支持一元逻辑取反 `!x` - 支持一元数值取反 `-x` - 比较运算符(`>`, `<`, `>=`, `<=`, `==`, `!=`)统一返回 `boolean` - 完善 AST JSON 序列化输出 #### 修复 - 解决 `LXorCommand` 可能被截断的问题 - 补齐 `end function` 后的空行,防止解析异常 - 修正取反运算的类型推断错误 - 消除自我赋值时的冗余移动指令 #### 重构 - 核心实体类改为 Java `record` - 清理未使用的模式变量 > 如遇到使用问题,欢迎及时 [提交 Issue](https://gitee.com/jcnc-org/snow/issues)
最后提交信息为:
!11
release: 合并 v0.3.0 版本至 main 分支
预览版本
v0.2.0
6fa0277
2025-06-11 23:53
对比
Snow v0.2.0
Luke
### 更新内容 #### Bug 修复 - 修正比较运算映射时误用 `IC_EQ` 的问题,已改为 `IC_E` - 将 `loop` 语句和 `if` 语句中原本使用 `int` 表示条件的方式,统一改为 `boolean` #### 新功能 - 增加 `boolean` 基础类型支持 - 实现对布尔变量的声明与赋值的完整支持 - 新增 `TypeUtils` 工具类,提供静态方法 `isLogic(Type t)` 用于判断是否为逻辑类型 - 增加 Playground 示例,方便快速上手与测试 #### 构建 - Linux使用 `musl-gcc` 工具链构建静态原生可执行文件 > 如有问题欢迎反馈。 [新建 Issue](https://gitee.com/jcnc-org/snow/issues)
最后提交信息为:
!6
release: 合并 v0.2.0 版本至 main 分支
预览版本
v0.1.1
11037da
2025-06-10 12:01
对比
Snow v0.1.1
Luke
### 更新内容 #### Bug 修复 - 修复 `CallExpressionNode` 缺失行号和列号的问题 - 允许文件直接以 EOF 结束 `<code>end module</code>` #### 新功能 - 支持语义错误定位到具体文件,提高调试效率 > 如有问题欢迎反馈。 [新建Issue](https://gitee.com/jcnc-org/snow/issues)
最后提交信息为:
!4
release: 合并 v0.1.1 版本至 main 分支
预览版本
v0.1
c0e8cfb
2025-06-06 18:09
对比
Snow v0.1
Luke
第一个版本**完整的更新日志**: https://gitee.com/jcnc-org/snow/commits/v0.1
最后提交信息为:
docs: 增加README内容,增加心路历程链接
下载
请输入验证码,防止盗链导致资源被占用
取消
下载
Java
1
https://gitee.com/jcnc-org/snow.git
git@gitee.com:jcnc-org/snow.git
jcnc-org
snow
Snow
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册