Eino: 发布记录 & 迁移指引

版本管理规范

Go SDK 项目通常遵循 语义化版本控制(Semver)的规范。Semver 的版本号由三部分组成,格式为:

💡 v{MAJOR}.{MINOR}.{PATCH}

  • MAJOR:主版本号,表示有重大更新或不兼容的 API 变更。
  • MINOR:次版本号,表示新增功能,且与之前的版本保持向后兼容。
  • PATCH:修订号,表示向后兼容的 bug 修复。

此外,语义化版本控制也支持预发布版本和元数据标签,用于标记预发版尝鲜版等非正式版本。其格式为:

💡 v{MAJOR}.{MINOR}.{PATCH}-{PRERELEASE}+{BUILD}

  • PRERELEASE:预发布版本标识,例如 alphabetarc(Release Candidate)。
  • BUILD:构建元数据(可选),通常用于标识特定的构建,例如 CI 构建号等。

Eino 遵循以上的语义化版本版本规范,会有如下几种版本类型:

版本类型版本号格式版本说明备注
稳定版(Stable Release)格式:
  • v{MAJOR}.{MINOR}.{PATCH}
  • 示例:
  • v0.1.1
  • v1.2.3
  • 发布稳定版本时,确保 API 的稳定性和向后兼容性。
  • 严格遵守语义化版本控制:只有在引入重大不兼容变化时才提升主版本号(MAJOR),新增功能时提升次版本号(MINOR),只修复 bug 时提升修订号(PATCH)。
  • 确保在发布前进行全面的单元测试、集成测试以及性能测试。
  • 在发布时提供详细的发布说明(Release Notes),列出重要的变更、修复、特性以及迁移指南(如有)。
  • 预发版(Pre-release)
  • Alpha
  • Beta
  • RC (Release Candidate)
  • 格式:
  • v{MAJOR}.{MINOR}.{PATCH}-{alpha/beta/rc}.{num}
  • 示例:
  • v0.1.1-beta.1
  • v1.2.3-rc.1
  • v1.2.3-rc.2
  • Alpha:内部测试版,功能不一定完备,可能会有较多的 bug,不建议用于生产环境。
  • Beta:功能基本完备,但仍可能存在 bug,适合公开测试,不建议用于生产环境。
  • RC(Release Candidate):候选发布版,功能完成且基本稳定,建议进行最后的全面测试。在没有严重 bug 的情况下,RC 版本会转化为稳定版。一般来说,RC 版本的最后一个版本会转换成稳定版本
  • 尝鲜版(Canary/Experimental/Dev)格式:
  • v{MAJOR}.{MINOR}.{PATCH}-{dev}.{num}
  • 示例:
  • v0.1.1-dev.1
  • v1.2.3-dev.2
  • 尝鲜版是非常不稳定的版本,通常用于测试新功能或架构的早期实现。这些版本可能会包含实验性功能,甚至会在未来被移除或大幅修改。
  • 尝鲜版一般是在仓库的实验性分支上进行
  • 一般来说,在字节内部用不到此种版本类型,可能在开源社区中使用

    关于 V0、V1、Vn(n>1)的一些潜在共识

    标题说明备注
    V0大版本内部的不稳定性
  • v0.x.x 表示该库仍处于不稳定状态,可能在 MINOR 版本的迭代中,引入不兼容更改,API 发生变化,不承诺向后兼容性。
  • 用户在使用这些版本时应该预期到 API 可能会发生变化
  • 版本号的提升不会严格遵守语义化版本控制的规则
  • v0.x.x 的设计目标是快速迭代,允许开发者在 API 不稳定的情况下发布库版本,并收集用户反馈。
  • V1、Vn(n>1)大版本内部的稳定性
  • v1.0.0 表示该库达到了稳定状态,API 设计已经成熟,承诺向后兼容性,即未来的
    v1.x.x
    版本会保证不引入不兼容的更改。
  • 严格遵循语义化版本控制
  • 不兼容的 API 变更 将需要通过主版本号(MAJOR)的提升才能发布。例如,需要将版本号提升到
    v2.0.0
  • 向后兼容的功能更新 将通过次版本号(MINOR)的提升来发布,例如
    v1.1.0
  • 向后兼容的 bug 修复 将通过修订号(PATCH)的提升来发布,例如
    v1.0.1
  • 💡 当前因 Eino 初次发布,虽然 Eino 的 API 已初具稳态,但未经过大规模业务验证,MAJOR 版本暂时定为 V0,经过至少 50+ 业务线验证后,会提升版本至 V1

    Release Notes 文档结构

    • 一个 {MAJOR}.{MINOR} 次版本单独一篇文档
      • 命名格式:“Eino: v1.2.* {标题描述}”
    • {MAJOR}.{MINOR} 次版本中记录这个版本下的所有 ChangeLog
    • 次版本的子目录中,可选放置每个 PATCH 的详细介绍
    .
    ├── v1.0.*
    │   └── bug_fix_1_x.txt
    ├── v0.2.*
    ├── v0.1.*
        ├── bug_fix_1_xxx.txt
        ├── bug_fix_2_xxxxx.txt
        └── bug_fix_3_xxxxxxx.txt
    

    最后修改 March 2, 2026: feat: sync eino docs (#1512) (96139d41)