兼容术语
兼容意味着解决以下问题:对给定的两个版本(比如 1.2和1.5),在一个版本上书写的代码能否在另一个版本上运行?以下的内容描述了不同模块版本的兼容问题。需要注意的是版本号越小,版本越老(即使较小版本号的正式版本比较大版本号的版本后发布)。
我们使用OV代表老版本(Old Version),使用NV代表新版本。
C----全兼容
- 语言:无语法变化;新的警告或提示信息会被加入或删除。
- API(kotlin-stdlib-* , kotlin-reflect-*):无API改变;不建议使用的内容有可能被加入或删除。
- ABI(二进制):运行时的二进制数据交换;编译时的二进制交换。
BCLA----语言和API的后相兼容
- 语言:老版本的不建议使用的语法有可能在新版本删除;新版本兼容老的版本;新版本有可能会加入新的语法;一些老版本中的限制条件可能会在新版本中进行提升;新的警告可能被删除或增加
- API(kotlin-stdlib-* , kotlin-reflect-*):可能会加入新的API;警告级别的不推荐使用可能被添加或删除;警告级别的不推荐使用可能被提高到错误或隐藏级别。
BCB----二进制后向兼容
- 二进制API:运行时,新版本的二进制可以在旧版本使用;新版本编译器,依然可以编译老版本的代码;旧版本编译器,有可能不会在新版本二进制文件中适用。
BC----全后向兼容
- 包括BCLA和BCB的内容
EXP----实验特性
NO----不保证兼容性
- 我们以最大努力提供平缓的版本升级,但是不保证兼容
- 对每个不兼容的子系统计划独立的版本升级