delphij's Chaos

选择chaos这个词是因为~~实在很难找到一个更合适的词来形容这儿了……

29 Jan 2009

GCC运行环境豁免条款再次狠狠地打了苹果的耳光

今年 1 月 27 日发表的 《GCC运行环境豁免条款 (英文版)》 再次狠狠地打了苹果的耳光。

原先的豁免条款如下:

// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.

新的豁免条款则强调了一些新增的限制。我们关注其中的两段,定义:

A Compilation Process is “Eligible” if it is done using GCC, alone or with other GPL-compatible software, or if it is done without using any work based on GCC. For example, using non-GPL-compatible Software to optimize any GCC intermediate representations would not qualify as an Eligible Compilation Process.

授权:

You have permission to propagate a work of Target Code formed by combining the Runtime Library with Independent Modules, even if such propagation would otherwise violate the terms of GPLv3, provided that all Target Code was generated by Eligible Compilation Processes. You may then convey such a combination under terms of your choice, consistent with the licensing of the Independent Modules.

这些条款是希望打击类似 llvm-gcc 这样的妥协产物,llvm-gcc使用gcc前端,并使用llvm的优化器来优化生成的代码。当然,这些条款本身并不直接导致 llvm-gcc 项目的问题,但其间接后果是人们无法继续通过改良 llvm 来改善 gcc 的优化结果,更具体地说,相当于是给了向 gcc 投资多年并贡献了相当多代码的 Apple 公司一记响亮的耳光。

这是意料之中的事情(去年 LLVM 在 Cupertino 召开峰会的时候,llvm-gcc已经基本停止开发,而 clang 的开发则热火朝天地进行并得到了大量资助),也更加坚定了为 llvm/clang 投资的商业公司离开 gcc 的决心。FSF完成了这场争议中自己的历史使命,双方从此各走各路了。