修复一个有十五年历史的曲线拟合错误

主要观点:Perl 软件的向后兼容性很棒,但有时会遇到不工作的包,作者历经艰难追踪并解决了一个 15 年的 bug。
关键信息

  • 为处理北极海冰范围数据运行旧代码时,Algorithm::CurveFit包测试失败无法安装。
  • 通过创建 Debian jessie 的 Vagrant 虚拟机,更新 APT 仓库等操作,重建过去环境并成功安装该包及运行测试。
  • 深入研究代码发现参数传递错误是导致测试失败的原因,修改后测试通过,还发现可能存在未实现的“五点模板”计算等问题。
    重要细节
  • 作者使用cpanm --installdeps.安装依赖失败,Algorithm::CurveFit的测试在 Debian stretch 上不再工作,而在 Debian jessie 上曾工作。
  • 在虚拟机中更新/etc/apt/sources.list,安装vimcurlbuild-essential等软件,安装perlbrew并切换到 Perl 5.18.4 版本,成功安装Algorithm::CurveFit
  • 深入代码后发现@parameters数组传递给$function_sub时出错,导致数值不稳定,推测是整数精度变化引起,虽未找到确切原因但已修复该 bug 并创建 GitHub 仓库。
  • 作者还对软件维护等问题进行了思考。
阅读 7
0 条评论