# About Versioning in Manticore

We're adopting Semantic Versioning with Manticore 7.4.6, bringing clearer communication, better dependency management, and improved stability signaling. Learn about our transition from the previous versioning approach to this industry-standard system.

## 我们的版本控制策略的演变

随着 [Manticore 7.4.6 的发布](/blog/manticore-search-7-4-6/)，我们很高兴宣布在软件版本控制方面的重要改进。这一变化标志着我们在提供更透明、可预测和开发者友好的体验方面的承诺迈出了重要一步。

## 旧方式：几乎但不完全的语义化版本控制

此前，我们的版本控制方法存在一些令人困惑的怪癖：

- 版本号的增加基于对变更重要性的主观评估，而非遵循一致的模式
- 我们使用奇偶编号来区分开发版本（奇数，例如 1.2.3）和发布版本（偶数，例如 1.2.4）
- 开发构建在发布之间共享相同的版本号，依赖提交哈希和时间戳进行标识

例如，开发版本可能看起来像：
```bash
7.0.1-25021913-e4b93ef47
7.0.1-25021915-e2c41b2e5
7.0.1-25021917-b8f605339
7.0.1-25021919-b4b3611db
7.0.1-25022103-101e878ef
```

这种方法使得：
- 跟踪开发构建的进展变得困难
- 理解版本之间的变更性质变得困难
- 自动化依赖管理变得困难
- 清晰地沟通兼容性变得困难

## 新方式：真正的语义化版本控制

从 [Manticore 7.4.6](/blog/manticore-search-7-4-6/) 开始，我们采用了标准的 [语义化版本控制](https://semver.org/)（SemVer）。这种标准化方法使用三部分版本号（MAJOR.MINOR.PATCH）并有明确的规则：

1. **MAJOR** 版本在我们进行不兼容的 API 更改时增加
2. **MINOR** 版本在我们以向后兼容的方式添加功能时增加
3. **PATCH** 版本在我们进行向后兼容的错误修复时增加

## 我们新方法的优势

### 1. 更清晰的沟通

现在每个版本号都传达了关于变更性质的有意义信息。当你看到版本号提升时，你将立即了解预期的变更类型：
- 主版本变更？准备应对潜在的破坏性变更
- 次版本变更？预期新功能不会破坏现有代码
- 补丁版本变更？维护兼容性的错误修复

### 2. 独立的包版本控制

现在每个包都有自己的版本号，独立递增。这意味着：
- 更细致地跟踪生态系统中的变更
- 在使用 Manticore 组件的项目中实现更好的依赖管理

### 3. 简化的开发跟踪

开发构建现在具有唯一且递增的版本号，明确表明其在开发时间线中的位置，同时仍保留提交哈希和时间戳以进行精确跟踪。这为开发版本的进展提供了更好的可见性。

### 4. 更好的自动化支持

标准化的版本控制使：
- 包管理器中的依赖解析更加可靠
- 与 CI/CD 管道的集成更加容易
- 自动化兼容性检查
- 简化发布流程

### 5. 与行业标准的对齐

通过采用 SemVer，我们与广泛接受的行业实践保持一致，使 Manticore 更易于那些已经熟悉这种版本控制方案的开发者使用。

### 6. 改进的稳定性信号

用户现在可以做出更明智的升级决策：
- 补丁更新可以以最小风险应用
- 次版本更新带来具有向后兼容性的新功能
- 主版本更新表明需要更仔细的测试和潜在的代码更改

## 展望未来

向语义化版本控制的过渡代表了我们致力于提供更开发者友好的体验的承诺。我们相信这些变更将使与 Manticore 的协作更加可预测和愉快。

对于现有项目，这一变更应该是无缝的，但它意味着您将获得关于每个更新内容的更好信息，并能做出更明智的升级决策。

## 过渡期

虽然我们已从 Manticore 7.4.6 开始完全实施语义化版本控制，但我们仍在将所有组件迁移到新的版本控制模式的过程中。在此过渡期间，某些开发版本可能仍遵循旧模式并共享版本号。然而，所有发布版本将始终遵循新的语义化版本控制方法。

我们预计将在未来几个月内完成所有组件的迁移，届时开发版本和发布版本都将完全遵循语义化版本控制原则。

我们对这一改进感到兴奋，并欢迎您在我们继续为所有用户增强 Manticore 的过程中提供反馈。
