从 CHANGELOG 看 Pathway 的演进:连接器生态、数据持久化与 LLM RAG 能力全景解析
Pathway 是面向流处理、实时分析与 LLM/RAG 管线的 Python 增量计算框架。仓库根目录的 CHANGELOG.md 完整记录了该项目从 0.2.0(2023-07-20)到 0.32.1(2026-07-29)及 [Unreleased] 区间的全部版本变更,遵循语义化版本(SemVer)。本文以这份变更日志为主体,按“近期变更、连接器生态、持久化与投递保证、LLM/RAG 能力、破坏性变更迁移”五条主线重新组织内容,并结合仓库源码与 pyproject.toml 依赖清单做交叉印证,帮助你在选型、升级与故障排查时快速判断每个版本带来了什么、改了什么、需要注意什么。
一、变更日志的组织约定:先理解再阅读
CHANGELOG.md 的开头声明:“All notable changes to this project will be documented in this file”,并注明项目遵循语义化版本规范。其条目组织有如下固定结构:
- 顶层小节:每个版本以
## [版本号] - 日期标注,最新的未发布变更集中在## [Unreleased]一节中,先于所有已发布版本出现; - 二级分类:每个版本内部按
### Added(新增)、### Changed(变更)、### Fixed(修复)、### Removed(移除)分类; - 破坏性变更标记:所有不向后兼容的条目一律以 BREAKING 前缀显式标出,并在条目内给出具体的迁移方式(如参数改名前后的对应写法)。
掌握这一约定后,升级 Pathway 时的正确姿势是:先扫 [Unreleased] 与目标版本的 BREAKING 条目,再确认自己用到的连接器(pw.io.*)、持久化(pw.persistence)、LLM xpack(pw.xpacks.llm)相关的 Added/Changed 条目。
二、最新变更:[Unreleased] 区间的核心内容
[Unreleased] 小节是距离发布最近的一批变更,技术密度最高,涉及持久化投递保证的破坏性修正、新连接器、Python 3.14 支持与依赖刷新。
2.1 MQTT 持久化要求稳定 client_id(破坏性变更)
- BREAKING:
pw.io.mqtt.read在启用 persistence 且qos为 1 或 2 时,连接 URI 中必须携带稳定的client_id,否则构造管线时直接报错;此前这类管线能启动,但重启时静默丢消息。 - 启用持久化后,MQTT broker 必须能为每个客户端缓冲“未确认 + 排队”的检查点窗口消息;以 Mosquitto 为例需要关注
max_inflight_messages与max_queued_messages,默认的 broker 限制可能压低吞吐。
对应的行为修复是:启用持久化后,qos 1/2 的消息只有在持久化检查点已覆盖它之后才会向 broker 确认,且 broker 会话可跨重启存活。因此崩溃前刚收到的消息、以及管线宕机期间发布的消息都会被重投(至少一次语义)。仓库中 MQTT 连接器 的文档字符串已把 client_id 写入所有使用示例(如 mqtt://localhost:1883/?client_id=test),并在说明中明确“启用持久化时连接 URI 必须携带稳定 client_id”,与 CHANGELOG 描述一致。
2.2 NATS JetStream 消费者的检查点延迟确认
pw.io.nats.read 在启用持久化时自动创建的 JetStream pull 消费者,现在会配置为检查点延迟确认:max_ack_pending 设为无上限、ack_wait 拉长,使消息只有在检查点覆盖后才确认,重启后由服务端重投(至少一次)。需要注意:服务端已存在的同名消费者会保留旧配置,必须重建才能生效。NATS 连接器 的文档中同样解释了 ack_wait 需大于检查点间隔的前提。
2.3 新增 Apache Pulsar 输入/输出连接器
pw.io.pulsar.read 与 pw.io.pulsar.write 进入 [Unreleased]:支持 Token 与 OAuth2 认证、TLS 加密连接、static 与 streaming 两种读取、动态输出 topic,以及启用持久化时的至少一次投递。该连接器属于 Pathway Scale 与 Enterprise 许可层。源码中 Pulsar 连接器模块 已存在,与变更日志相互印证。
2.4 Python 3.14 支持
- 发布的 wheel 覆盖 CPython 3.10–3.14,测试套件在最低版本(3.10)与最高版本(3.14)上同时运行。
- 唯一例外:PaddleOCR 文档解析在 3.14 上不可用,因为 paddlepaddle 尚未发布对应 wheel——
xpack-llm-docs额外依赖在 3.14 下会跳过 paddle 包,使用 paddle 解析器时会得到明确报错。 - Airbyte 连接器的
venv模式改用机器上找到的最新受支持 CPython(3.10–3.13)创建虚拟环境(连接器包尚不支持 3.14);若机器上没有对应版本,会给出建议enforce_method="docker"的明确错误。
pyproject.toml 中 requires-python = ">=3.10" 与该声明吻合;可选依赖定义 中 xpack-llm 对 3.14 专门放宽为 litellm == 1.83.0,xpack-llm-docs 中 paddleocr 带 python_version < '3.14' 标记,均为上述说明的落地证据。
2.5 依赖版本刷新与管线构建提速
[Unreleased] 中对“影响面最大的依赖”做了刷新,且明确Pathway 自身的用户可见 API 不变:
| 依赖 | 变更 | 仓库证据 |
|---|---|---|
deltalake |
0.17 线 → 1.6+(写路径大量正确性与性能改进) | pyproject.toml deltalake >= 1.6.0, < 2.0.0 |
pdfminer.six |
固定到 20260107 发布 | pyproject.toml |
litellm |
要求 1.84+(3.14 上为 1.83.0),连带 OpenAI SDK 2.x | pyproject.toml |
llama-index-core |
要求 0.13+ | pyproject.toml |
transformers |
上限从 4.49 提升到最新 4.x | pyproject.toml |
google-cloud-bigquery / google-api-core |
接受整个当前主版本线(重试、超时、正确性改进) | pyproject.toml、pyproject.toml |
pyarrow / cohere / beartype |
允许 25 / 7.x / 提升上限,下限不变 | pyproject.toml |
tests extra |
pytest 9 | pyproject.toml |
另一项重要性能改进:构建管线的速度显著提升。附加在每个表达式与算子上的位置信息(用于错误信息中 “Occurred here” 部分)现在不再物化完整堆栈轨迹来收集;对“构建大量小管线”的场景(典型如单测套件),图构建耗时最多可快约 6 倍,错误信息本身保持不变。
2.6 numpy 2.5 兼容与网络等待有界化
npt.NDArray[...]注解在 UDF 签名与 schema 中兼容 numpy 2.5+(该版本将NDArray改为惰性类型别名,此前会抛TypeError: Unsupported type NDArray[...]);同时修复了 2.1–2.4 中npt.NDArray[X]被误当作二维数组处理的问题,现在在所有 numpy 版本上统一表示“维度数不定的数组”。pw.io.mysql.read/write现在为所有网络等待(建连、socket 读写、TCP keepalive 探测)设置上限:此前已建立的连接“静默死亡”(如网络中断后的半开连接)会让管线无限期停摆且无任何日志;现在会在有界时间内检测到停顿、记录日志并自动重连续传。同一保护还覆盖了此前缺失的连接器:pw.io.mssql.read/write自动重连;pw.io.elasticsearch.read/write、pw.io.weaviate.write、pw.io.chroma.write与 Iceberg REST catalog 客户端对每个请求设时长上限;pw.io.postgres额外约束建连耗时(此前静默不可达的主机可能阻塞两分钟以上);pw.io.questdb.write配置tcp::传输时会告警(其等待无法有界),默认推荐的http::传输不受影响。
三、版本时间线总览(0.2.0 → 0.32.1)
CHANGELOG.md 覆盖的版本跨度大、节奏快,以下按里程碑重新索引,便于快速定位你关心的能力出现在哪个版本:
| 版本 | 日期 | 里程碑(节选) |
|---|---|---|
| 0.32.1 | 2026-07-29 | Chroma/Qdrant/DuckDB/Weaviate/Pinecone 写入连接器;udf_cache_directory;only_metadata 读模式扩展;pathway[twelvelabs] 原生 Video RAG |
| 0.31.1 | 2026-06-12 | Elasticsearch 读、ClickHouse 写、MySQL 读(binlog CDC);Iceberg 全类型解码与 struct 支持 |
| 0.31.0 | 2026-05-25 | SQLite 写连接器;Delta decimal/date 支持 |
| 0.30.1 | 2026-04-23 | RabbitMQ Streams 读写、SQL Server 读写、Milvus 写;pathway spawn --addresses 多机部署;pw.iterate 算子持久化 |
| 0.30.0 | 2026-03-24 | MongoDB 读、PostgreSQL 读(解析 WAL);Airbyte dependency_overrides |
| 0.29.1 / 0.29.0 | 2026-02 / 2026-01 | Worker 自动伸缩;Web Dashboard;Kafka OAUTHBEARER;Bedrock 集成 |
| 0.28.0 | 2026-01-08 | 连接器组空闲时长、源优先级;连接器组可用于多进程运行 |
| 0.27.x | 2025-11/12 | Table.filter_out_results_of_forgetting;NATS JetStream;Iceberg Glue catalog |
| 0.26.x | 2025-08/10 | forget/buffer/ignore_late;max_backlog_size 反压;Kinesis 读写;PaddleOCR 解析器 |
| 0.25.x | 2025-07 | MCP 服务器、DynamoDB 写、to_stream/from_streams |
| 0.24.x | 2025-06 | MQTT 读写;Confluent Schema Registry |
| 0.23.0 | 2025-06-12 | TableOptimizer 运行时优化 Delta 输出 |
| 0.22.0 | 2025-06-05 | Azure Blob 持久化后端;UDF 批处理(max_batch_size);表达式批量求值(BREAKING) |
| 0.21.x | 2025-03/05 | 输入同步组;CSV 全类型序列化;运行时错误报告增强 |
| 0.20.x / 0.19.0 | 2025-02 | DoclingParser 结构化分块;fully_async_executor 与 Future 类型 |
| 0.18.0 | 2025-02-07 | JSON 全类型序列化;py.typed 标记 |
| 0.17.0 | 2025-01-30 | pw.io.iceberg.read;连接器 name 参数;大规模弃用 API 清理 |
| 0.15.0 | 2024-09-12 | DocumentStore(实验性 RAG 索引) |
| 0.11.0 | 2024-05-10 | 索引体系:LSH/USearch 的 k-NN、Tantivy BM25、DataIndex 查询 |
| 0.7.10 | 2024-01-26 | OpenAI 封装、VectorStore(向量索引管线雏形) |
| 0.3.0 | 2023-08-07 | 要求 Python ≥ 3.10,类型检查更严格 |
| 0.2.0 | 2023-07-20 | 变更日志起点 |
四、连接器生态:输入、输出与数据湖
Pathway 连接器演进的主线是“先补齐输入侧快照+增量双模式,再在输出侧统一快照/变更流两种语义”。以下按类别梳理变更日志中的关键事实。
4.1 数据库连接器
- PostgreSQL:0.30.0 引入
pw.io.postgres.read,直接解析 WAL 获取变更;0.29.0 起连接默认配置约 5 分钟死对端检测的 TCP keepalive(keepalives_idle=300、tcp_user_timeout=300000等),使被 SIGKILL 的进程在数分钟内释放临时复制槽;0.29.1 起连接以application_name=pathway[:<name>]标注,便于在pg_stat_activity中识别。0.31.1 中读写连接器都增加了大量预检校验(不支持的类型、数组元素类型不匹配、可空性不匹配、非 append-only 流表上的REPLICA IDENTITY NOTHING等),把误配置暴露为清晰的启动期错误。写入侧 0.32.1 改为通过二进制COPY协议流式写入,批量吞吐最高提升约 100 倍:stream_of_changes模式直接 COPY 到目标表,snapshot模式先落临时表再单次集合级 upsert/delete。 - MySQL:0.31.1 引入
pw.io.mysql.read,流式模式通过二进制日志做 CDC(要求log_bin开启、binlog_format=ROW、binlog_row_image=FULL及复制权限);与 PostgreSQL 逻辑复制不同,它不在服务端留下状态,没有会堆积日志的复制槽;启用持久化时保存 binlog 坐标并在重启时恢复,所需 binlog 已被服务端过期清除时会报清晰错误。0.26.4 起有pw.io.mysql.write;0.32.1 起写入改为批量:启动时探测服务端能力,允许LOAD DATA LOCAL INFILE时走该通道,否则回退分块多行INSERT,两条路径结果一致。 - SQL Server:0.30.1 引入
pw.io.mssql.read(先全量快照,再用 CDC 跟踪增量)与pw.io.mssql.write(MERGE/DELETE);0.31.1 起对配置与 schema 做构造期校验(primary_key非法、与自动追加的time/diff列冲突、目标列缺失或类型不符等);0.32.1 写入改用原生INSERT BULK批量加载协议,批量吞吐约提升 25 倍。 - SQLite / ClickHouse / QuestDB / DynamoDB:分别由 0.31.0(
pw.io.sqlite.write,INSERT ... ON CONFLICT DO UPDATE维持快照)、0.31.1(pw.io.clickhouse.write,支持stream_of_changes与ReplacingMergeTree快照两种输出)、0.25.0(pw.io.questdb.write)与 0.25.1(pw.io.dynamodb.write)引入;0.32.1 又新增了基于原生进程内连接器的pw.io.duckdb.write,numpy数组/list[float]向量列会落到原生DOUBLE[]列表列,可直接用 DuckDB 向量距离函数做 RAG 检索,且detach_between_batches允许每批提交后释放文件锁、供独立查询进程短连接读取。 - MongoDB:0.15.3 起有
pw.io.mongodb.write;0.30.0 引入pw.io.mongodb.read(快照 + change stream 增量)。0.29.1 起写入支持output_table_type="snapshot";0.31.0 起stream_of_changes模式正确产出更新时的撤销+插入两个事件,并拒绝 schema 中含_id(任意模式)或diff/time(流模式)列的表,避免静默丢值或运行期报错。
4.2 消息队列与流
- Kafka / Redpanda:0.4.1 起支持 zstd 压缩消息;0.24.1 支持 Confluent Schema Registry;0.29.1 支持 OAUTHBEARER;0.21.4 起
pw.io.kafka.read支持 static 模式;0.31.1 起所有 Kafka 连接器在构造期校验参数(空 topic、缺bootstrap.servers、非正的max_backlog_size等),pw.io.kafka.write拒绝会静默丢数据或产生畸形消息的配置(重复 header、与保留头pathway_time/pathway_diff冲突等),并修复了 static 模式间歇性读不到数据的问题(改为显式分配分区并读到启动时捕获的 end offset,彻底摆脱 consumer-group 依赖)。 - NATS:0.15.4 引入读写连接器;0.27.0 支持 JetStream;0.32.1 的 [Unreleased] 修复了多 worker 写入 JetStream 时因“全批次无等待发布”压垮服务端导致的 429 与丢消息问题——写入端现在限制在途未确认发布数量(背压)并指数退避重试瞬态失败。
- MQTT:0.24.0 引入;0.32.1 修复了大于 10 KB 载荷默认被拒、broker 瞬断后停摆、发布主题未校验等问题(详见 [Unreleased] Fixed 与下文 2.1)。
- RabbitMQ Streams:0.30.1 引入,支持 JSON/明文/raw、流式与静态、偏移恢复、动态 topic、TLS,要求 Scale/Enterprise 许可。
- Kinesis / PubSub / Pulsar:分别由 0.26.2(AWS Kinesis 读写)、0.9.0(Google PubSub 写)、[Unreleased](Apache Pulsar 读写,Scale/Enterprise)引入。
4.3 数据湖与对象存储
- Delta Lake:0.13.1 引入
pw.io.deltalake.read,0.13.0 起写入支持 S3,0.21.0 起建表时把 Pathway 元数据存入 Delta 表自身(读表可免 schema 参数),0.23.0 起可用TableOptimizer定义运行时输出表优化(compact 频率、保留期等),0.31.0 起读支持decimal(p, s)(声明float有损、声明str无损)与date/timestamp_millis列。0.26.4 起start_from_timestamp_ms支持非 append-only 表按版本重放历史变更。 - Iceberg:0.17.0 读、0.16.3 写,0.19.0 起支持 S3 数据后端与 Glue catalog,0.27.0 的 BREAKING 变更把
catalog参数改为必填(RestCatalog或GlueCatalog)。0.31.1 是类型能力的集中补齐:读侧解码全部 Iceberg 原始类型(date→DateTimeNaive零点、time→Duration、uuid→规范 8-4-4-4-12 十六进制串或原始bytes、fixed(N)→bytes、decimal有损float或无损str);写侧与目标表既有 schema 对账,把 Pathway 宽类型收窄写入窄列(如int→32 位int带溢出检测、str→decimal/uuid、Duration→time);struct<…>通过位置式tuple[…]绑定,写外部建表时自动采用目标字段名。 - S3 / MinIO / 文件系统:0.16.1 起 S3 读监控删除与修改,0.26.2/0.32.1 起
pw.io.fs.read、pw.io.s3.read、MinIO、pyfilesystem、SharePoint 等连接器统一支持format="only_metadata"模式——只跟踪对象的增删改、不下载内容,表里仅有_metadata列,适合监控大桶变更而不付出流量代价;S3/MinIO 的该模式在引擎层面直接跳过下载。0.26.0 起输入连接器普遍支持max_backlog_size反压,应对“初始大批量 + 后续小增量”的源。
4.4 向量数据库写入:面向 RAG 的输出层
0.32.1 一次性补齐了五大向量库的同步式写入连接器,共同语义是“把 Pathway 表作为单一事实源,增/改/删事件同步到目标集合”:
pw.io.chroma.write:显式列映射——primary_key→记录 id(缺省用 Pathway 内部键)、embedding→向量、document→存储文本、metadata_columns→元数据;目标 collection 必须已存在。pw.io.qdrant.write:每次新增 upsert 一个 point、每次删除移除对应 point(更新即替换而非重复);预建 collection 的 schema 驱动写入——每个命名向量槽绑定同名表列(稠密槽对list[float]/一维ndarray,稀疏槽对(index, weight)对列表),单点全部向量在一次 upsert 中原子写入,从而支持原生混合(dense + BM25)检索;缺失集合或槽/列不匹配时快速失败;batch_size限制单请求点数,api_key面向 Qdrant Cloud。pw.io.weaviate.write:以由必需primary_key派生的 UUID 为键做 upsert/删除,跨 worker 并行写(pathway spawn -n),batch_size/concurrency调节吞吐。pw.io.pinecone.write:默认用表内部行键作 id(并行写),传primary_key则用自定义 id(必须唯一,冲突报错且退化为单 worker);vector列可为稠密(list[float]/一维ndarray)或稀疏((index, weight)对),混合检索即同一张表两次write()喂两个索引、以相同记录 id 客户端融合。- 上述连接器均要求目标集合/索引预先存在(DuckDB 除外,其写入文件级数据库),维度不匹配等错误在启动期即报出。
4.5 输出端 output_table_type 语义的普及
变更日志显示,stream_of_changes(追加所有事件并附 time/diff 元数据列)与 snapshot(用 primary_key 维护当前状态)这一对输出语义从 PostgreSQL(0.26.4 起 pw.io.postgres.write_snapshot 废弃并入 output_table_type)逐步推广到 MongoDB(0.29.1)、MySQL(0.26.4)、SQLite(0.31.0)与 ClickHouse(0.31.1),形成了跨数据库的一致心智模型,这也是阅读各版本条目时识别输出连接器能力的关键参数。
五、数据持久化与投递保证:变更日志中反复出现的主线
持久化(persistence)相关的条目在 CHANGELOG.md 中分布最广,反映其是 Pathway 的持续加固方向:
- 持久化后端扩展:0.15.2 起元数据与流存储统一为单后端(
pw.persistence.Config取代simple_config),0.22.0 增加 Azure Blob 后端,0.23.0 起所有云后端操作自动重试,0.26.2 起对 S3/Azure 后端把后台算子快照压缩频率限制在snapshot_interval与 30 分钟中的较大者,避免高频调用昂贵操作。 - 恢复正确性修复:[Unreleased] 与 0.31.1 集中修复了一批“重启后丢输入”的边界——
pw.iterate内部快照曾写在无输出依赖的分支上,导致检查点可能先于写入提交而丢失最近输入;快速连续重启时检查点逻辑时间可能落回上一个被杀运行的区间,现在被钳制在当前运行自身的时间范围内;重启后各输入源恢复时统一到一个共享时间戳进入计算(显式autocommit_duration_ms=None时保留旧的按源行为);OPERATOR_PERSISTING模式下左键保持型 join(含join_left)不再把重启后的行更新误报为重复键。 - 至少一次语义闭环:[Unreleased] 的 MQTT/NATS 条目(见第二节)把“确认时机”与检查点对齐,是投递保证从“读侧不丢”扩展到“写侧确认不超前”的标志。
- 资源侧配套:0.29.1 起 worker 可按负载自动伸缩(需启用持久化,经
worker_scaling_enabled与workload_tracking_window_ms配置);0.32.1 新增的udf_cache_directory(见 pw.run 参数定义 与 engine.pyi)把非确定性 UDF 的记忆化缓存落盘到 SQLite 文件,内存占用不再随缓存结果数量增长——变更日志特别提示/tmp常是内存盘(tmpfs),应指向真实磁盘,且该缓存是运行时工作集而非持久化机制(重启后重建、关停时清理,持久化快照仍是事实源)。相关测试 覆盖了陈旧文件忽略、清理、多 worker 与多进程场景。
六、LLM 与 RAG xpack 的演进脉络
pw.xpacks.llm 的能力在变更日志中呈清晰的累积轨迹:
- 2024-01/02(0.7.10–0.8.3):OpenAI Chat/Embedding 封装、LiteLLM/HuggingFace 聊天与 SentenceTransformers 嵌入封装、初代
VectorStore向量索引管线(query_as_of_now支持无限查询流下恒定内存);0.8.3 为pw.UDF增加return_type、deterministic、executor、cache_strategy参数,并引入 LlamaIndex/LangChain 集成。 - 2024-05(0.11.0):索引体系成型——
pathway.stdlib.indexing下提供 LSH 与 USearch 两种 k-NN、Tantivy BM25 全文索引、DataIndex统一查询接口(返回JoinResult与_pw_index_reply_score评分列),以及 reranker 模块。 - 2024-09 起(0.15.0–0.16.x):
DocumentStore取代 VectorStore 成为文档处理与索引主体(0.21.6 起VectorStoreServer/Client废弃并改为DocumentStore/DocumentStoreClient),配套QARestServer、SlidesDocumentStore、DeckRetriever。 - 2025-02(0.20.x–0.19.0):
DoclingParser(表格与图像解析、image_parsing_strategy、结构感知分块)、fully_async_executor+ Future 数据类型 +Table.await_futures(结果可在未来处理时间返回的全异步 UDF)、sort_by输出排序、pw.io.kafka/nats.write支持按列动态指定 topic。 - 2025-06–07(0.24.1–0.25.1):
PathwayMcp把DocumentStore与问答端点以 MCP(Model Context Protocol)工具形式对外提供。 - 2026-01(0.29.0):Web Dashboard 上线(交互式图、延迟/内存指标);原生 AWS Bedrock 集成(
BedrockChat走 Converse API,BedrockEmbedder支持 Titan/Cohere)。 - 2026-04/07(0.30.1–0.32.1):
AudioParser(Whisper 转写);TwelveLabsVideoParser与MarengoEmbedder从 Video RAG 示例模板提升为原生 xpack 组件(pip install pathway[twelvelabs]即可构建 Video RAG;解析器异步并发、支持on_error="skip"、上传前拒绝超限视频,且要求具备advanced-parser权限的 license key)。 - 0.32.1 的 KNN 工厂修复值得注意:用
OpenAIEmbedder构造BruteForceKnnFactory/UsearchKnnFactory/LshKnnFactory时不再向 OpenAI API 发探测请求(此前为学向量维度会嵌入".",导致建图需要网络且瞬时故障会中断整条管线)——已知模型维度取自查找表,未知模型才查询 embedder。
pyproject.toml 的 xpack-llm 额外依赖(OpenAI 2.x、LiteLLM、Cohere、LangChain、llama-index-core、fastmcp 等)与上述能力一一对应,可据此判断各 RAG 组件的最小依赖面。
七、破坏性变更(BREAKING)与迁移指引
变更日志中所有不兼容变更都带 BREAKING 标记并附迁移说明,以下按主题归集对升级者影响最大的一组(完整清单以 CHANGELOG.md 为准):
API 重构类
- 0.4.0:
ix/ix_ref变为pw.Table上的独立变换,join/groupby 内部使用时可能需要显式上下文; - 0.17.0:一次性移除大量弃用 API(
pw.indexing排序族、unsafe_promise_*、UDFSync/UDFAsync、连接器旧参数value_columns/types等),排序统一用pw.Table.sort; - 0.20.0:
DoclingParser的parse_images改为image_parsing_strategy; - 0.27.0:Iceberg 连接器
catalog参数改为必填。
参数改名类
- [Unreleased]:
pw.io.airbyte.read的refresh_interval_ms(毫秒)被refresh_interval(秒数或timedelta/pw.Duration,默认 60 秒)取代,传旧参数会报错并附换算值——迁移写法即refresh_interval_ms=60000→refresh_interval=60。同一节还把各连接器/xpack 的时长参数统一为“秒数或timedelta”,新公共别名pw.io.DurationLike命名该类型,非法时长在调用期即报错; - 0.13.0:
pw.io.deltalake.write的path改名为uri; - 0.17.0:连接器
persistent_id改名为name(日志与监控面板可见)。
行为/数据表示类
- 0.22.0:
DateTimeUtc/DateTimeNaive构造对时区信息的约束互斥化;表达式改为批量求值(更快但中间状态大时内存占用可能上升); - 0.25.0:
pw.io.fs.read移除format="raw"(改用binary/plaintext_by_file/plaintext),pw.io.s3_csv.read移除(改用pw.io.s3.read+format="csv");Elasticsearch 与 BigQuery 连接器移至 Scale 许可层; - 0.26.0:多项持久化状态优化(小对象、大输入快照)被明确标注为需要重算持久化状态的破坏性变更;
- 0.30.0:MongoDB 连接器对
np.ndarray改存保持形状的嵌套 BSON 数组(一维表示不变,多维不再扁平化); - 0.31.0:写 Glue catalog 不再接受
DateTimeUtc(Glue 元仓无时区感知时间戳,此前静默丢时区)——需转DateTimeNaive(UTC 值)或改走 REST catalog; - 0.21.0:CSV 序列化表示变更(
Bytes用 base64、Duration用纳秒数、tuple/ndarray用 JSON 表示)。
性能类(无破坏但值得知晓):0.32.1 的 PostgreSQL 二进制 COPY、SQL Server INSERT BULK、MySQL 批量写入分别带来约 100 倍、25 倍量级的批量吞吐提升;0.32.1 [Unreleased] 的图构建提速(约 6 倍,小管线场景)不改变任何错误信息。
八、如何把这份 CHANGELOG 用进日常工作
- 升级决策:先定位目标版本的 BREAKING 条目,与自己的连接器列表(
pw.io.*)、持久化配置(pw.persistence)与 LLM 依赖(xpack-llm系列 extra)交叉比对;0.26.0 与 0.22.0 的持久化状态重算类变更意味着需要丢弃旧状态重跑 backfill。 - 故障排查:大量 Fixed 条目给出了“症状 → 版本”的倒查索引,例如“Elasticsearch
_bulk413/429”(0.32.1 起启动期读取集群http.max_content_length与indexing_pressure.memory.limit并自动拆分)、“Kafka static 模式读不到数据”(0.32.1)、“重启后 key missing/duplicate key”(0.31.1 持久化时间戳钳制)、“Airbyte venv 安装卡死”(0.32.1 起每次 pip 安装带超时重试且只装一次)。 - 许可层核对:RabbitMQ Streams、Milvus 写、SharePoint、[Unreleased] 的 Pulsar 等均标注需要 Scale 或 Enterprise 许可层;Elasticsearch/BigQuery 自 0.25.0 起属 Scale 层——阅读条目时应把许可标注与自身部署形态对照。
- 源码印证:变更日志条目与仓库实现一一对应,例如 MQTT 的
client_id要求见 python/pathway/io/mqtt/init.py,NATS 的ack_wait/max_ack_pending说明见 python/pathway/io/nats/init.py,Pulsar 连接器见 python/pathway/io/pulsar/init.py,udf_cache_directory的运行参数透传链见 python/pathway/internals/run.py。
九、小结
CHANGELOG.md 呈现的 Pathway 演进有三条清晰主线:其一,连接器从“能读”走向“读得全、写得快、停得稳”——输入侧统一快照+CDC/偏移恢复的增量模型,输出侧统一 stream_of_changes/snapshot 双语义,并以有界网络等待、批量写入协议、构造期参数校验系统性消除静默失败;其二,持久化与投递保证的持续收敛——检查点与确认时机对齐、重启恢复的边界情形逐一修复、缓存与伸缩的资源侧配套;其三,LLM/RAG xpack 从模型封装走向端到端——索引、文档解析(Docling/PaddleOCR/视频)、MCP 服务化与 Web Dashboard 构成完整闭环。对使用者而言,这份日志既是最可靠的升级检查单,也是最细粒度的故障倒查索引。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0623
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00