# EMQX 6.1 中的不兼容变更

## 6.1.2

- [#17157](https://github.com/emqx/emqx/pull/17157) 新增规则引擎配置项 `rule_engine.limit_selects_in_namespace`，默认值为 `true`。启用后，规则仅对与规则自身处于同一命名空间的客户端所发布的消息触发。

- [#17325](https://github.com/emqx/emqx/pull/17325) 移除热升级 REST API 端点（`/api/v5/relup/*`）。热升级现在仅通过在每个节点上执行 `emqx ctl relup` CLI 命令进行操作，Dashboard 不再提供对应界面。

  将目标版本的 tarball 及其 `.sha256` 附件（文件名相同，位于同一目录）放置到 EMQX 进程可读的任意路径下。在每个节点上运行 `emqx ctl relup upgrade <TarballPath>` 以应用升级；目标版本号从 tarball 内的 `releases/emqx_vars`（`REL_VSN`）中读取。

## 6.1.0

- [#16368](https://github.com/emqx/emqx/pull/16368) 内部正则表达式引擎已升级为 PCRE2，带来了更高的匹配性能以及更严格的语法校验。

  如果你在规则引擎 SQL 中使用了 `regex_match`、`regex_replace` 或 `regex_extract` 函数，一些依赖于宽松或未定义行为的现有正则表达式，可能无法再成功编译或按预期进行匹配。

  **需要注意的关键变化包括：**

  - **更严格的转义规则**：此前被忽略的无效或不必要的转义序列，现在会被视为错误。
    - **不再支持**：`[\w-\.]`，在字符类中对 `.` 进行转义是不必要的，现已不被接受；只有元字符才需要转义。
    - **不再支持**：缺少有效十六进制数字的 `\x`（例如 `\xGG`），现在会导致编译错误，而不再被解释为字面量 `x`。
  - **更严格的分组名称校验**：正则表达式中不再允许使用重复或为空的命名捕获分组。

  **需要采取的行动：** 请检查并验证所有使用正则表达式的规则引擎 SQL 定义。对于复杂的正则模式，建议使用符合 PCRE2 规范的测试工具进行验证（大多数在线正则测试工具均支持 PCRE2），或在升级前于预发布 / 测试环境中进行充分测试。
