Rerun 数据模型术语重构:`datatypes` 正式更名为 `encodings`(含 Python / Rust / C++ 三端迁移指南) Rerun 数据模型术语重构datatypes正式更名为encodings含 Python / Rust / C 三端迁移指南【免费下载链接】rerunVisualize, query, and stream to train on multimodal robotics data.项目地址: https://gitcode.com/GitHub_Trending/re/rerun本篇技术指南聚焦 Rerun 0.37 中一项影响全 SDK 的破坏性变更数据模型中构成组件Component的底层类型从datatypes更名为encodings。文章以官方变更记录为主线结合仓库源码re_types_core、rerun_py、rerun_cpp为你梳理更名动机、三端代码迁移路径、参考文档与旧链接的跳转策略帮助你在升级版本后快速完成存量代码的替换。一、为什么要把datatypes改名为encodings一次术语歧义的收敛在 Rerun 的数据模型中datatype数据类型这个词曾经同时指代两种含义底层可复用类型组件Component是由更底层的可复用类型构建的例如Vec3D、Angle、Utf8、Blob、Color等Arrow 的DataType这些底层类型在序列化存储时对应的 ArrowDataType结构。这两者名称重叠在文档、API 与代码讨论中极易混淆。Rerun 0.37 决定将第一种含义统一命名为encoding编码从术语层面彻底消除歧义。正如变更记录changeset-0-37.md所述现在的说法是低层类型datatype被重命名为 encoding因此rerun.datatypes变成了rerun.encodings。这一更名的直接结果就是各语言 SDK 中所有与低层类型相关的命名空间、导入路径、头文件路径与参考文档 URL 都发生了同步迁移。二、认识 encodings数据模型的最底层在深入迁移细节前先明确encodings在 Rerun 数据模型中的位置。根据参考文档encodings.md的定义数据类型Encodings是数据模型层级中的最底层它们是组件所复用的类型Data types are the lowest layer of the data model hierarchy. They are re-usable types used by the components.。其典型成员包括AbsoluteTimeRange、Angle、AnnotationInfo、Vec3D、Utf8、Blob、ImageFormat、PixelFormat、TensorBuffer等约 90 个内建类型。组件Component与蓝图Archetype构建在其之上因此这次更名影响的命名空间贯穿了 Python、Rust、C 三个 SDK。三、Python SDK 迁移rr.datatypes→rr.encodings在 Python 中最核心的改动是模块名的替换。变更记录给出的前后对照如下rr.datatypes.Vec3D([1, 2, 3]) # before rr.encodings.Vec3D([1, 2, 3]) # after仓库源码证实了这一结构在 rerun_py/rerun_sdk/rerun/init.py 中包入口通过from .encodings import (...)暴露新的命名空间。同时旧名称并未立刻失效。从源码可以看到包入口还保留了针对旧名称的兼容逻辑__init__.pyif name datatypes: from . import datatypes # The module itself warns. return datatypes即访问rr.datatypes时仍然可用但该模块自身会发出弃用警告deprecation warning。官方变更记录明确说明旧拼写暂时可用、已标记弃用并将在未来某个版本中移除。因此建议新代码一律使用rr.encodings存量代码尽快替换。四、Rust SDK 迁移re_types::datatypes→re_types::encodingsRust 端的改动是模块路径的替换。变更记录给出的对照如下use re_types::datatypes::Vec3D; // before use re_types::encodings::Vec3D; // after源码层面同样可以验证在核心类型库 crates/store/re_types_core/src/lib.rs 中模块声明已变更为pub mod encodings;。所有通过re_types::encodings::*导出的低层类型即本次更名的对象。如果你编写自定义组件Component或编码需要同步更新use路径如果仅使用内建组件与蓝图Archetype导入路径不受影响无需改动。五、C SDK 迁移命名空间别名保留头文件路径迁移C 端的处理策略略有不同分为两个层面命名空间别名继续可用rerun::datatypes这个命名空间别名仍然有效不需要修改代码中的命名空间引用头文件包含路径已迁移每个类型的 per-type 头文件路径从datatypes/目录移动到encodings/目录#include rerun/datatypes/vec3d.hpp // before #include rerun/encodings/vec3d.hpp // after仓库中可以看到迁移后的实体目录rerun_cpp/src/rerun/encodings/下按类型逐个生成头文件例如absolute_time_range.hpp、angle.hpp、annotation_info.hpp、blob.hpp、bool.hpp、channel_count_pair.hpp、channel_datatype.hpp、class_description.hpp、vec3d.hpp等目录共约 50 余个文件。升级后如遇头文件找不到的编译错误检查#include中的datatypes/路径并替换为encodings/即可。六、参考文档与旧 URL 的跳转策略本次更名同步影响了文档参考页的组织结构参考页面从reference/types/datatypes/…迁移到reference/types/encodings/…旧 URL 自动跳转redirect到新位置不会直接 404。新地址的入口为 docs/content/reference/types/encodings.md其中按字母序列出了全部 encoding 类型的说明页面如AbsoluteTimeRange、Angle、AnnotationInfo等。仓库中的跳转配置也印证了这一策略docs/content/_redirects.yaml中登记了changelog/upcoming/datatypes-renamed-to-encodings → changelog/changeset-0-37#datatypes-renamed-to-encodings等条目确保旧链接与旧文档路径都能平滑指向新内容。七、相关联动变更RustLoggabletrait 拆分为四个序列化 trait与本次更名同属 0.37 数据模型改造、且同样围绕 encodings 概念的另一项 Rust 破坏性变更是Loggabletrait 被拆分为四个反序列化 trait。它虽然主要影响 Rust 自研组件/编码的开发者但与encodings术语直接相关一并说明以便全面升级。Loggable旧设计将五个函数捆绑在一个 trait 中导致Arrow 编码永不为空的类型也必须实现会运行时失败的to_arrow_opt且只实现了序列化的类型会得到互相递归调用的默认from_arrow实现。拆分后的结构如下Trait函数状态ArrowDataTypearrow_data_type、arrow_empty其余四个 trait 的 supertraitToArrowto_arrowComponent必需ToArrowOptto_arrow_opt可选FromArrowfrom_arrow、verify_arrow_arrayComponent必需FromArrowOptfrom_arrow_opt可选迁移要点将原来的impl Loggable拆分为每个 trait 一个impl并显式导入所调用的具体 traitComponent现在要求ToArrow FromArrow即组件必须能完整往返round-trip但不强制可空可空变体*Opt只在真正作为其他类型的可空字段时实现——在约 90 个内建 encodings 中只有 19 个需要例如Utf8、Blob、ImageFormat、PixelFormat、TensorBuffer组件从所包装的 encoding 继承 trait因此其中 11 个如Text、Name、MediaType、ImageBuffer具有可空变体而Position2D、Color等则没有新代码应优先使用非可空变体。旧写法示例迁移前use rerun::Loggable as _; impl rerun::Loggable for Confidence { fn arrow_datatype() - arrow::datatypes::DataType { rerun::Float32::arrow_datatype() } fn to_arrow_opta( data: impl IntoIteratorItem Optionimpl Intostd::borrow::Cowa, Self, ) - rerun::SerializationResultarrow::array::ArrayRef where Self: a, { rerun::Float32::to_arrow_opt(data.into_iter().map(|opt| opt.map(Into::into).map(|c| c.0))) } }迁移时将其拆分为ToArrow/FromArrow等独立 trait 的impl块即可。需要强调的是Python 与 C SDK 以及数据格式本身不受影响——Arrow 编码在字节层面完全一致byte-for-byte identical。八、升级检查清单完成本次变更迁移后可按以下清单自查Python搜索rr.datatypes.全部替换为rr.encodings.运行代码确认不再出现弃用警告Rust搜索re_types::datatypes/re_types_core::datatypes替换为encodings路径若实现过自定义组件按第七节拆分Loggable实现C检查#include rerun/datatypes/...头文件路径替换为rerun/encodings/...命名空间别名无需改动文档与链接如引用了reference/types/datatypes/…的旧参考页 URL更新为reference/types/encodings/…旧链接虽有跳转但长期维护应使用新地址。术语上的更名并不改变 Rerun 数据模型的本质——组件仍然构建在底层可复用类型之上Arrow 编码格式也保持不变但它让底层类型与Arrow 数据类型在命名上彻底分离降低了文档与 API 的认知负担也为后续 Rust 序列化 trait 的精细化拆分扫清了障碍。【免费下载链接】rerunVisualize, query, and stream to train on multimodal robotics data.项目地址: https://gitcode.com/GitHub_Trending/re/rerun创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考