0

0

Snow 编程语言 v0.13.0 发布: 数值体系、数组系统与标准库全面升级版发布

DDD

DDD

发布时间:2025-12-05 20:54:30

|

495人浏览过

|

来源于php中文网

原创

snow 编程语言 v0.13.0 发布: 数值体系、数组系统与标准库全面升级版发布

版本更新

新增功能

数字字面量与数值体系增强

  • 新增 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-* 系列,保持名称与模块匹配。
  • 其他辅助脚本:

    Tellers AI
    Tellers AI

    Tellers是一款自动视频编辑工具,可以将文本、文章或故事转换为视频。

    下载
    • 提供导出 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

源码地址:点击下载

相关专题

更多
java
java

Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

841

2023.06.15

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

742

2023.07.05

java自学难吗
java自学难吗

Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

737

2023.07.31

java配置jdk环境变量
java配置jdk环境变量

Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

397

2023.08.01

java保留两位小数
java保留两位小数

Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

399

2023.08.02

java基本数据类型
java基本数据类型

java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

446

2023.08.02

java有什么用
java有什么用

java可以开发应用程序、移动应用、Web应用、企业级应用、嵌入式系统等方面。本专题为大家提供java有什么用的相关的文章、下载、课程内容,供大家免费下载体验。

430

2023.08.02

java在线网站
java在线网站

Java在线网站是指提供Java编程学习、实践和交流平台的网络服务。近年来,随着Java语言在软件开发领域的广泛应用,越来越多的人对Java编程感兴趣,并希望能够通过在线网站来学习和提高自己的Java编程技能。php中文网给大家带来了相关的视频、教程以及文章,欢迎大家前来学习阅读和下载。

16926

2023.08.03

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

19

2026.01.20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.5万人学习

Git 教程
Git 教程

共21课时 | 2.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号