v2025.June: CSM核心资源管理与参数Token

【v2025.June 精简公告】CSM v2025.June 已发布并推送至 VIPM。本期重点:异步启动的 CSM 模块资源生命周期绑定到后台线程、引入 Argument Token 概念统一参数类型标识,以及新增识别状态触发原因的工具 VI。

2025 年 7 月的 CSM 更新已经推送到 VIPM。Communicable State Machine Framework - Package List. 如果你觉得 CSM 对你有帮助,请在 GitHub/Gitee 上 star 对应的仓库!也欢迎有经验的 LabVIEW 高手参与到 CSM 的开发中来。

版本亮点

  • 重要架构改进#437#474#472#469):异步启动的 CSM 模块,其队列、用户事件、DVR 等资源的生命周期现绑定到一个后台线程 VI,确保资源正确释放,避免资源泄漏。
  • Argument Token 概念#466):新增 CSM - Argument Token.vi,使用 <NewType> 前缀统一标识自定义参数类型,扩展性更强。
  • 新增状态触发原因识别 VI#195):可判断状态是由本地调用、远程调用还是状态回调触发,便于编写更精确的状态逻辑。
  • Debug Console 增强#463):新增广播状态的操作支持。
  • INI 插件修复多分区变量优先级逻辑(#81#82)。

按仓库变更

1. Communicable-State-Machine

功能改动(重点)

核心(Core)

  • [important] #437#474#472#469 将异步启动的 CSM 模块的资源(Queue、User Event、DVR)生命周期与后台线程 VI 绑定,确保异步模块退出时资源正确释放。

参数(Arguments)

  • [update] #466 引入 Argument Token 概念:自定义参数类型通过 <NewType> 前缀标识。新增 CSM - Argument Token.vi 用于解析参数类型。

工具(Tools)

  • [update] #463 改进 Debug Console,新增广播状态操作支持。
  • [update] #467 显示过滤后日志的速度而非数量。
  • [update] 小幅更新(#465)。

工具 VI(Utility)

  • [add] #195 新增工具 VI,用于识别状态的触发原因(本地调用、远程调用、状态回调)。

2. CSM-INI-Static-Variable-Support

功能改动(重点)

  • [fix] CSM - Sync Configuration Variables to File.vi 在无缓存变更时将跳过写入,减少不必要的磁盘操作。
  • [fix] #81#82 修复多个分区中 INI 变量优先级顺序逻辑错误。

3. 其他仓库

  • CSM-API-String-Arguments-Support:本期无 v2025.June 发布,已忽略。
  • CSM-MassData-Parameter-Support:本期无 v2025.June 发布,已忽略。
  • CSM-TCP-Router-App:本期无 v2025.June 发布,已忽略。
  • CSM-Continuous-Meausrement-and-Logging:本期无 v2025.June 发布,已忽略。

按功能变更

1. 功能新增

  • 新增状态触发原因识别工具 VI(#195)。
  • 新增 CSM - Argument Token.vi,支持自定义参数类型前缀标识(#466)。

2. 改进优化

  • 异步启动 CSM 模块的资源生命周期管理从根本上改善,与后台线程绑定(#437 等)。
  • Debug Console 新增广播状态操作(#463)。
  • Debug Console 日志统计改为显示过滤后速度(#467)。
  • INI Sync to File 在无变更时跳过写入,提升性能。

3. 问题修复

  • 修复 INI 多分区变量优先级顺序逻辑(#81#82)。

破坏性变更

  • 资源生命周期变更#437 等):异步启动的 CSM 模块资源现绑定至后台线程 VI。如果项目中有在 CSM 模块退出后仍访问其队列或用户事件的代码,需要重新评估资源使用时序。
  • 其余本期无破坏性变更。

升级指引

  1. 直接通过 VIPM 更新即可完成本次升级。
  2. 使用异步启动(Async Start)模式的项目,建议在升级后回归测试模块的创建和销毁流程,确认资源生命周期行为符合预期。
  3. 如需扩展自定义参数类型,可参考新的 Argument Token 机制(#466)实现标准化的类型标识。

完整变更来源

Release

结尾

欢迎大家使用并提出反馈!如有问题,请在 GitHub 上提交 Issue,或加入社区讨论。