Skip to content

v2.3.0

Latest

Choose a tag to compare

@thun-res thun-res released this 30 Sep 10:17
1793889

v2.3.0 (2026/09/30)

新增功能

  • Proxy 桥接与配置:支持跨域镜像与下发、URL 过滤及全部启动参数的 JSON 配置;主动采集下发默认关闭,WebViz 本地代理同步支持。
  • FastBuffer:新增通用 CPU/GPU 缓冲区、发布池与 CUDA、HIP、hbmem、shm 提供者。
  • Python 接口补齐:补齐 ProxyAPI/ProxyServer(含桥接配置)、发现消息循环、Bag 插件、点云与对象数组深拷贝、日志回调重置接口。
  • Bag 拼包:新增 vlink-bag merge,支持 clone 的选项、进度显示和覆盖确认。
  • Bag 分包轮转:BagWriter::Config 与 vlink-bag record 新增 max_split_count,超限时删除最旧分包。
  • VCAP 块校验开关:BagWriter::Config、TriggerRecorder、Python API 与录制 CLI 可启用 MCAP chunk CRC;默认关闭,VDB 不受影响。
  • DDS 非阻塞发送:新增 VLINK_DDS_NOBLOCK 与节点属性 dds.noblock,支持发送缓冲区满时丢包而不阻塞。
  • 发现多网卡:新增 VLINK_DISCOVER_IP,DiscoveryReporter 逐地址发送、DiscoveryViewer 逐地址加入发现组播;未设置时收发仍按系统路由走。
  • 发现进程地址:ip 改为 ip_list,合并多网卡重复进程,地址按数值排序、独立过期;同步 CLI、Viewer 及绑定,API/ABI 与 Proxy 协议不兼容旧版。
  • 发现域隔离:新增 VLINK_DISCOVER_DOMAIN(0–255,默认 0),发现端口取 51600 + domain。
  • 日志 PID 隔离:新增 VLINK_LOG_PID_ENABLE,置 1 时默认日志目录追加 <PID> 子目录,同名多实例不再共享轮转文件集;默认关闭,目录布局与旧版本一致。

改进

  • 消息拷贝:减少共享内存回复、加密响应及混合类型 RPC 中 Bytes 请求的拷贝,字符串反序列化复用目标缓冲。
  • 基础库热路径:减少 Base64 解码拷贝、进程缓冲搬移与调度开销。
  • Python 绑定结构:按功能拆分绑定实现,保持导入方式不变。
  • WebViz 重构:统一消息解析、字段映射与实时/离线转换,支持 Foxglove 全部官方 FBS 类型及 Rerun 数据 Archetype。
  • Monitor hostname 过滤:新增 --hostname,按 URL 关联进程的 hostname 关键字筛选。
  • eproto / efbs 终端显示:各类订阅内容超过终端显示宽度时主动换行,并在终端尺寸变化时重新分页,暂停状态下同步重排。
  • Native DDS 地址:CLI、Proxy、Viewer 与 WebViz 在 native 模式下创建的 DDS 节点从 VLINK_DDS_NATIVE_IP 读取 IP。
  • vlink-check diag:VLink 发现项在设置 VLINK_DISCOVER_IP 后校验其地址是否存在于本机,未设置时仍检查 239.255.0.100 路由。
  • 发现热路径:收包批量投递,快照仅在内容变化时重建,上报按 500ms 节流。
  • 日志热路径:减少重复初始化检查,回溯回调交换复用缓冲以消除逐条拷贝。
  • 日志环境变量:VLINK_LOG_ENABLE_UTC 更名为 VLINK_LOG_UTC_ENABLE,语义不变;旧名不再识别,部署环境须同步更新。
  • 发现端口:发现通道 UDP 基础端口由 51694 改为 51600(实际端口为 51600 + VLINK_DISCOVER_DOMAIN);新旧版本进程互不发现,须同批升级并同步防火墙规则;域 94 的端口与旧版本默认端口重合,滚动升级期间避免使用。
  • 内存池热路径:free-list 分片数按硬件并发度取值,消除超过 8 线程后的吞吐崩塌;命中与释放计数移入分片锁内,去掉每次分配的原子累加;直通与超大块路径在默认对齐下改用普通 operator new,计数按线程条带化,全哨兵配置跳过档位扫描。
  • 内存池回收:trim() 改为锁外分组,不再毫秒级阻塞并发分配。
  • 内存池档位:新增 VLINK_MEMORY_LAZY_SCALE=1 / MemoryPool::Config::lazy_scale(默认关闭),开启后懒增长单次安装上限随档位配额放大;Config 新增字段,使用它的外部 C++ 二进制需重新构建。

修复

  • Proxy 桥接:联合主机名、IP 与 machine-id 判断同机,以兼容的发现来源标记防止回流,镜像与下发 Pub 均可发现;绑定参数统一为 allow_ip。
  • 零拷贝:修复 Client 留存 CPU 响应的载荷生命周期、混合类型 RPC 与 Python 发送丢失 loan 身份,以及自身视图赋值和点云转置覆盖源数据的问题。
  • Viewer 套件:修复递归消息与字段编辑、录放状态、图表与三维渲染及资源释放,减少载荷拷贝、重复解析与 URL 扫描。
  • Extension:修复 Bag 录放与 Schema、空 Protobuf、URL 重映射、插件启动、SQLite 关闭构建及 OpenSSL 退出期线程资源泄漏,减少 Schema 拷贝。
  • 发现卡顿丢报:消息循环饥饿时延迟执行而非丢弃发现任务,过期阈值随调度间隔放宽,避免快照误清空。
  • Proxy 业务线程:心跳与控制任务迁到 ProxyServer 自身循环,异步转发改用独立循环,避免被批量转发阻塞而心跳断连;订阅拆除增加 3 轮缺失滞回。
  • 时间命名分包:同一毫秒内按大小连续分包时追加序号,避免 record/clone/merge 覆盖已写分包。
  • Bag 同戳顺序:SQLite 读取以录制行序打破相同时间戳的并列,避免复合索引按 URL 重排消息。
  • Bag 强制录制:vlink-bag record -g 改为跳过服务发现,直接订阅 -u 指定的 URL 并按原始字节录制;此前仅跳过收集等待,订阅仍依赖发现结果。
  • 通信后端:修复回调分发、嵌套同步请求死锁、Zenoh 字段通知生命周期与共享订阅暂停隔离;SHM / SHM2 服务命名变更,需同批升级。
  • 公共通信接口:修复 Field 去重、连接回调取消,以及安全退出的锁顺序死锁。
  • 安全 RPC:修复同步 Bytes RPC 解密失败仍返回成功,以及同步响应加密失败后自动应答后端发送明文的问题。
  • Field 录放:统一触发录制、节点隐式录制(含 Python)、CLI 与 Viewer 的 Field 动作和回放路由,补齐后端角色适配与初值接收;NodeImpl 增加初始化角色,应用、绑定及后端插件需同批重新编译,Proxy 两端需同步更新。
  • URL 插件赋值:修复复制赋值后仍保留旧后端配置的问题。
  • 基础任务调度:修复图依赖传播、移动参数及返回类型推导、协程生命周期与 deferred future 等待。
  • 基础库:修复并发与生命周期问题,以及计时、终端输出、插件多继承和智能指针识别错误;十六进制输出统一大写。
  • 定时器与日志:修复定时器计数、回调状态与生命周期;修复 handler/回溯重入、退出期 TLS、首次 Trace、运行期开启文件通道及控制台 flush,磁盘故障后仍可控制台重放。日志宏内联调用的内部接口有变化,应用与日志插件需重新编译。
  • 进程与系统工具:修复进程参数与回调、键盘与信号处理及退出顺序,以及时区、环境变量、DDS 地址和 macOS 信号量问题。
  • Python 稳定性:修复浅视图与空数据深拷贝的生命周期问题,以及满队列投递、日志回调并发替换、Process 重启、Timer 回调释放、异步 RPC 与自定义加解密的并发死锁;补齐 UUID 序列构造。
  • C API:修复安全 Getter 更新与读取交叠时的防重放误拒绝,以及 Schema 枚举窄化校验遗漏。
  • 后端初始化清理:修复 SHM 监听器满载时的异常终止,以及 SHM、SHM2、Zenoh 部分初始化失败后的空对象清理崩溃;Getter 传播接收注册失败并回滚初始化,DDS 双向 Server 拒绝缺失响应 writer 的监听。
  • 日志格式化:修复 VLOG_* 传入 std::hex 等标准操纵符时的编译错误。
  • Bag 克隆与退出:防止克隆覆盖源包及关联文件,修复 RPC 过滤、时间换算和初始化/退出异常;明确单 .vcap 不支持修改标签。
  • Parse 导出与切片:修复二进制导出缓冲生命周期和 JSON 错误处理;保护源包及关联文件。
  • 消息调试:修复 eproto/efbs 刷新丢失、根路径和资源释放问题,支持显式空文本输入,并完善后端初始化失败处理。
  • Monitor / List / Check:修正监控采样与过滤统计、同名进程计数和 Cyclone DDS URI 诊断;隐藏 TLS 密码,处理监控重复初始化异常。
  • Bench 正确性:修正测量窗口、统计与图表,修复参数校验、取消响应和初始化/JSON 异常处理,保留已有输出目录权限。
  • Foxglove 协议与路由:完善多输出路由和动态 Schema 同步,修复发布 ID 冲突、连接图、参数订阅及 RPC 调用状态。
  • WebViz 数据与退出:修复退出崩溃、障碍物快照残留及 Rerun 共享实体清理、重连和 YUV 色彩问题;离线导出禁止覆盖源 Bag 及其链接别名。
  • Monitor 动态刷新:URL 上下线导致列表排序变化时保持当前选中的 URL 与详情面板;选中 URL 下线时清除选择,避免跳转到其他 URL。
  • CLI 修复:bag fix 按实际数据重算计数;parse --hz 在 bag 下按帧时间计时;bench 非法 URL 不再中止进程;trigger 拒绝负毫秒字段。