Qbs 生成工具 2.1.0 版已发布。
Qbs 是一个由社区驱动的、与语言无关的构建自动化系统。它速度快,并提供基于 QML 的易学语言。
新功能
正如 2.0 版的主要内容是 JavaScript 后端切换一样,此次发布的 2.1.0 版也对实现进行了重大重写,但对用户的影响更为直接。
新的项目解析实现
您可能听说过,一旦一个新的软件项目从概念验证转变为实际产品,扔掉脏兮兮、黑乎乎的原型,从头开始实现一切,只使用最美观的算法和闪亮得几乎让人睁不开眼的代码,这被认为是一种好的做法。
你可能也听说过现实世界,它有最后期限、资源限制和懒惰的开发人员,所以你可能不会对第一次正式发布 qbs 时没有重写代码感到惊讶。
因此,原始代码被保留了下来,从未得到应有的审查,而且不得不在狭窄的肩膀上承担越来越多的功能。
“你可能会问:”但作为用户,我为什么要关心这些呢?这个问题很有道理,答案就在于代码的复杂性和性能之间的关系有些被忽视了:代码越简单,不仅包含明显错误的可能性就越大,而且效率也会非常低,原因很简单,因为你无法在所有干扰因素中发现性能陷阱。
事实上,正是这个性能问题让我们最终决定从头开始重写项目解析代码,因为我们逐渐发现在一些难以捉摸的递归代码中潜藏着非线性行为。如果你想知道的话:”项目解析 “是将 qbs 文件的文本表示转化为构建图的阶段,之后才开始实际构建。
那么,结果如何呢?从开发人员的角度来看,我们现在有了人类可以理解的代码,不会再吓跑可能的贡献者,而用户在解析中大型项目时应该会发现速度大大加快。例如,Qt Creator 的 qbs 项目文件加载速度现在提高了约 40%,而对于一些模块和/或产品之间存在深度和复杂依赖关系的项目,我们发现速度提高了 90% 或更多。如果您过去觉得您的项目解析速度太慢,这个版本很可能会解决这个问题。
其他更改
有关此版本中修复和功能的完整列表,请参阅变更日志。
下一步
新实现的另一个优点是它似乎可以实现并行化,而这在以前是完全不可能的。我们目前正在对此进行研究;如果成功,我们可能会看到另一个可观的速度提升。(再说一遍,这与项目解决有关。当然,实际的构建已经实现了并行化)。