有一段时间,我自己编写了所有代码,而不使用外部资源。然而,在我的问题变得更加复杂之后,我决定使用外部库。例如,为了保存和检查我的计算解决方案,我选择使用 vtk。我了解,我无法自己编写所有内容,但我担心这些外部库的新版本可能与之前的版本不兼容。我是否应该一直调整我的代码以适应较新的版本?我担心如果我将来必须重新安装我的系统,我将无法运行我的代码。
库的新版本
计算科学
图书馆
2021-12-21 07:05:01
1个回答
让我们假设典型的版本控制语义为 abc,在这种情况下:
- a - 主要版本,其中可能发生不兼容和 API 更改,
- b - 次要版本,可以添加新功能但以向后兼容的方式,
- c - PATCH 版本,其中进行了向后兼容的错误修复。
例如,如果您坚持使用 a1.b1.c1 版本,那么您的应用程序应该可以顺利编译和运行 b1 和 c1 以及常量 a1 的任何更改。
我是否应该一直调整我的代码以适应较新的版本?
更改 MINOR 或 PATCH 时,不应要求更改应用程序中的任何内容。如果是主要版本,则取决于。在科学图书馆的情况下,API 的重大变化非常罕见,并且总是在发布前以某种方式宣传。
补充说明:
您的应用程序可能需要特定版本的外部库来构建。这很好,在大型系统(如集群或超级计算机)中构建它应该不是问题,其中环境模块等解决方案经常用于解决多库问题。
您没有提及您正在使用的构建系统。强制使用特定版本的库可以解决您的问题,并且在 CMake 或类似构建系统的情况下很容易实现。
您可以从源代码构建必要的库,而不是使用操作系统存储库(yum、apt)提供的库。此外,您可以随您的软件提供特定版本的外部库,这些外部库已经过您的软件和作品的测试。但在大型图书馆的情况下,它没有任何意义。
如果您想支持多个版本的外部库,您可以随时准备一些单元测试来验证使用外部 API 以确保一切正常工作的重要方法的结果。
如果是VTK,我不会担心。它是一个写得很好的库,在任何地方都被广泛使用。重大更改不应破坏您的应用程序。
其它你可能感兴趣的问题