LLVM / C 疯狂的GCC?

llvm徽标

我不得不写一篇关于这个争议的文章 发表在LWN。 正是LLVM / Clang编译器开始 担心 在GNU邮件列表中。

曾经有一个叫做GCC的编译器,它已经存在25多年了,一直对其自由和版权保留许可以及Linux内核以及直到最近由FreeBSD所使用的编译器都表示敬意。 任何想学习如何用C或C ++开发的人,无论计算机的体系结构如何,都一定会使用GCC。 但是,海湾合作委员会遭受了 保密一方面是由于创建者的理念,另一方面是由于其大教堂式的发展,即对海湾合作委员会(GCC)中正在发生的事情以及尚未发生的事情(现在没有那么多但仍然存在)进行了强有力的控制,这为GCC最终采用的前端和其他功能的构建方式。 要了解有关...的短暂历史的更多信息 电子控制系统, 我离开这个连结.

同时,在2002年左右的伊利诺伊大学香槟分校的一个研究项目中,创建了一个以模块化方式创建的编译器,以使其前端,代码生成器和优化器等各个元素得以创建。 他们叫他 LLVM 因为起初它是一个低级虚拟机,但最终却超出了它。 他们用他自己的许可证给他颁发了 类似于BSD (免费,非copyleft,符合GPL)。 多年后,Apple对LLVM产生了兴趣,并将其用于iOS和OS X操作系统,以及并以与LLVM相同的免费许可发布)您自己的前端 ,对于C和目标C。不利之处是可能包含LLVM / Clang 在专有程序中NVIDIA的CUDA编译器和Apple的IDE XCode就是这种情况。

但是几周前的一天,在emacs邮件列表上,在讨论针对Clang设计的自动完成模式时, 迪米特里·古托夫 他说:“很久以前我被告知理查德·斯托曼 非常讨厌Clang 谁反对在emacs中包含使用它的代码。” 然后,这引发了关于clang和自由软件的另一讨论,其中 理查德本人澄清:«我们的政策是不接受对任何可用于Clang但不适用于GCC的GNU软件包的更改。 Emacs不会鼓励人们离开GCC。 如果有机会,我们将鼓励在Clang上使用GCC。”

不久之后,埃里克·雷蒙德(Eric Raymond)(以创造大教堂和集市而闻名,以及开放源代码的定义)出现了,谁在半场唱歌, 半拖, 去说 LLVM / Clang是对GCC项目对更高互操作性的抵制的回应,此外,Clang在多项技术措施方面均优于GCC。 按照他的说法 (并显示 视频 (来自Chandler Carruth的演讲),Clang开发人员问Stallman,是否有任何理由无法将GCC前端转换为可被任何要解析源代码的程序链接的动态库。 斯托曼回答说,海湾合作委员会的一个目标是 避免 专有程序来使用它的任何部分,因此他们故意避免了各种各样的事情 可能 他们本来会促进这种使用……他们认为 无益的答案。 他们想创建共享编译器代码的IDE和其他工具,而GCC不允许这样做,因此 创建Clang并将GCC发送到/ dev / null。 GCC开发人员 他们跳到他bit子上 未被充分告知(Clang在多项技术措施上都超过了GCC)。 在妓女中间,斯托曼似乎在说 LLVM是一次可怕的失败,不是出于技术原因,而是仅出于非版权保护的许可,这使苹果受益。

然后,LWN文章在GCC的模块性以及它们故意包括的措施上使用了较长的段落,以使难以通过专有程序使用其内部表示形式。 GCC运行时库异常 解决了GCC是否应编译专有代码的问题。 我还要补充一下 FreeBSD的 (最近发布的版本10用LLVM / Clang作为主要编译器替换了GCC)。 他们使用的最新版本的GCC 是4.2.1 (最新的GPLv2许可证)和 也不疯狂 他们打算将其更新为带有GPLv3的版本(他们只是想要 没有任何GPL的BSD),因此LLVM / Clang出现在他们身上 像手套.

简而言之,永恒的GPL与BSD之战是另一场战斗。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。

  1.   潘德夫92

    没意思,让我们让开发人员互相残杀。

    1.    埃利奥时间3000

      因此,我们还有另外一个不满意的工人在Microsoft和Apple工作。

    2.    框架

      没错,我支持该软件始终免费,以便任何人都可以阅读(这是我支持和使用Linux的唯一原因),但最终程序员才是硬道理。

  2.   F3NIX

    很好的文章,我一直喜欢diazepan文章,它们与众不同。

  3.   Germán

    事实是,对于gcc而言,这是一个非常愚蠢的想法,更多时候是LLVM的创建者向gcc的代码提供了代码,但他们拒绝了它,CLang的设计目的是让IDE可以验证实时代码,不仅有益于私有应用程序,还包括诸如Vim,Kate,emacs等高级编辑器的开源程序(如KDevelop或QtCreator)。 我猜想egcs最终会发生类似的事情,并且只要egcs发生这种情况,一旦Linux可以编译,它将被gpl许可吸收。

    1.    埃利奥时间3000

      如果他们不能改善EGCS和/或使其成为CLang的最佳替代品,那么我不推荐CLang和LLVM。

    2.    超短线

      笨? 我不这么认为。 GCC不能用于创建专有软件的事实是优先开发自由软件的一种方式,并且没有将其用于专有软件的开发。 它是捍卫自由软件的一种方法,因此应予以支持。 斯托曼先生是绝对正确的,这是倒退的一步。 此外,如文章中所述,像Apple这样的公司将从LLVM / Clang中受益,而无需对社区做出绝对的贡献,也无需对该项目给予任何荣誉。

      干杯!

      1.    Germán

        GCC和LLVM / CLANG都可以编译专有软件,不能修改的是GCC,并且不知道这些修改。 LLVM / CLANG可以重新授权为gpl,它们之间的最大区别是,对于LLVM / CLANG,他们必须使用C ++,而GCC的则直到最近才希望看到它或对其进行绘制。 从我的角度来看,与其将GCC改写成C ++,不如将它们移植到GCC支持的架构上,而LLVM / CLANG则不支持,而将语言移植到后者,并拥有更简洁的代码并维护它们自己的发展部门

    3.    阿图斯

      我认为您的观点是没有根据的,在技术问题之上是免费软件。 这正是斯托曼先生最担心的问题。 从我看来,最适合您的是技术部分,您是您的权利,但是当您因公司接管您的技术而无法选择时,您会三思而后行。
      另一方面,使用GCC,您可以实时验证代码,正如我重复的,您的观点是没有根据的。

      1.    Germán

        1-如果GCC制作了LLVM / CLANG和公司的分支,并将其重新许可为GPL,则它们包含在该分支中的所有代码将在GPL之下,而LLVM的代码将必须请求许可才能重新许可并包括在他们的回购中。 谨此通知您,许可证类型MIT(XORG,WAYLAND,...)或BSD(FreeBSD,...)与LLVM一样允许
        2-使用GCC,不可能通过它提供的库(不同于CLANG)实时实现代码完成自动或代码验证程序
        3-LLVM是GCC的高级解决方案,不仅在技术上而且在效率上,LLVM / CLANG二项式仅花费一半的时间进行编译

  4.   安德库拉

    GNU和GPL万岁!

    1.    埃利奥时间3000

      看看他们是否可以用酒精,赌博和荡妇来制作自己的CLang。

      1.    安德库拉

        嗯?

    2.    埃利奥时间3000

      不,理查德。 SELinux是NSA的工作,这并不意味着任何其他未经GPL许可的工具(例如LLVM / CLang)都来自同一矩阵。

      认真地说,我认为这样做是有完全理性的动机的,但是我发现FSF比岩田聪(Satoru Iwata)或MAFIAA的任何成员都更为保守。

      1.    团队

        可以看出,您没有阅读邮件列表,而只停留在两行之间。
        给出了合理的论据,甚至提供了技术选择,但是无论如何,阅读标题并直接进入注释是很常见的。

  5.   可怜的taku

    ÑuhhhhGCC + Emacs。 如果您想生存,请牵我的手(斯托曼)

  6.   拉夫

    清教徒会原谅我,但我不得不说:我从不喜欢斯托曼,在我余下的日子里似乎都是这样。

    你不能那么拘谨。 他看起来像是一个狂热者,一个疯子,是的,尽管他应为自己的成就和他所代表的东西而受到应有的尊重,但我不喜欢他。

    1.    氧化锆

      我同意。 起初我很喜欢他,但现在他似乎太极端了……

      1.    卡纳莱斯

        极端主义者...疯狂的...狂热的...是的,这取决于您如何看待它。 对我而言,理查德·斯托曼先生是一个有巨大社会良知的人。 他一生的意义一直是并且正在改善社会,而不是改善软件。 自由软件/开源软件之间的区别在于,前者关注社会问题,而后者关注技术问题。

    2.    超短线

      埃拉夫(Elav)伴侣,这不是成为清教徒的问题。 自由软件是作为一种社会运动而诞生的,这也是斯托曼先生所捍卫的,许多人也是如此。

      你不能那么拘谨。 他看起来像是一个狂热者,一个疯子,是的,无论他应该为自己的成就获得多大的尊重以及他所代表的立场,我都不喜欢他。

      实际上,情况恰恰相反。 目的是任何人都可以自由访问该软件,而无需任何人通过专有修改来限制其使用,并且正如我在之前的评论中所说,他们优先考虑并强调了自由软件的开发。

      我认为您将狂热与另一个术语混淆了。 正如历史所证明的那样,狂热主义致死。 您正在寻找的术语可能是激进的,但如果没有这种激进主义,那么免费软件和GNU / Linux运动将不复存在,至少就我们今天所知。 关于疯狂的事情,我不与您争论,但是鉴于我在这几年中看到的情况,疯狂的人并没有那么疯狂。

      在本段中,我想说的是,自由软件运动不仅是计算机运动,而且是社会运动,必须加以捍卫。 如果是埃拉夫(Elav),您必须对社会保持激进态度。 苹果或微软等公司会毫不犹豫地利用这种情况。 我们必须提高对用户和人民权利的认识。

      PS我之所以命名为Elav,是因为我回答了他,但评论是针对所有GNU / linuxers的。

      干杯!

      1.    先生

        @Xlash:先生!…谢谢! 这就是我需要阅读的内容。 +1

        我复印你,打印出来,然后放在圣经的一边。 (出于记录:不在其上方或上方)。
        最后,得益于此举以及Linus和社区的努力,正在取得一些改变世界的成就:
        “ Linux之前存在,而LINUX现在存在。”

      2.    安德库拉

        +10

    3.    先生

      😀@Elav:
      我没有道歉,但我不得不说:
      您以前的一些帖子喜欢我,但不喜欢我...如果他们继续这样:也许在我余下的时间里,情况会一直如此。
      不要心胸狭窄。 您似乎狂热,疯狂,并受到与您的成就(此论坛)和您应得的成就一样的尊重...我不喜欢(您的评论)。
      😀-呵呵! 现在您可以体验到(与RMS相同)。 您只需要拥有与他相同的扩散轨迹,并且感觉几乎完全一样即可。
      问候cuñao!

  7.   氧化锆

    我不明白为什么斯托曼如此封闭。 我冒着风险说我认为LLVM比GCC更免费,因为它甚至在专有程序中也提供了使用它的自由。 是的,我知道GCC中的限制可以帮助自由软件,但是以这种方式反对LLVM对我来说似乎很荒谬。

    问候

    1.    威尔逊

      斯托曼尚未关闭。 本文非常倾向于作者的个人观点。
      实际上,海湾合作委员会的决定主要是技术性的。 在GCC中,他们想要模块化并且正在这样做,但是采用了不同的方式(避免CLANG中确实存在问题)。
      欲了解更多信息 https://gcc.gnu.org/ml/gcc/2014-01/msg00176.html
      这就是雷蒙德(Raymond)所写的,并且得到了开发人员的回应。

  8.   圣克鲁克

    在我看来,这似乎是谁在做的更大。
    两种编译器都很出色。 但是像任何工具一样,它取决于您的使用方式。
    可以用C#编写免费代码,并使用Linux制作导弹。

  9.   高卢克斯

    我认为在这里您应该更加务实。 斯托曼应该有远见,不要停止迷路。 令人担忧的是,当前的社区并不零散,这是正在发生的事情。 最明智的是,尽管bsd许可证允许在专有环境中使用bsd许可证,但只要能够认可作者(甚至包括他们的派生),便使用相同的逻辑,但使用gpl v2或更高版本。

  10.   潘德夫92

    幸运的是,一段时间以来几乎没有听到摊贩的消息。 另外,计算机程序或编译器将永远不会成为社会问题,除了总有一些并非免费的替代方案! 但免费。
    关于llvm clang,该争议没有任何意义,因为源将永远是bsd许可下发布的,因此它是免费软件,公司可以将其用于黑暗目的,并不意味着您无法再访问原始代码,但是我知道,这里只有2或3个线索。

    1.    超短线

      “计算机程序或编译器永远不会成为社会问题”
      那不是什么意思我尊重您不能像其他许多人一样捍卫自由软件运动,但是否认自由软件对您而言不尊重那些花费大量时间,金钱和精力来捍卫和创造自由的人们。

      当然,llvm是自由软件,但这并不意味着它的修改和派生。 这个想法不仅是为了能够自由访问原始软件,还在于它的修改。 如果我开发一个程序并与您共享,那么我希望您对将要提供修改版本的人也这样做。 这就是自由软件和copyleft捍卫的东西,因此,这是一个社会问题。

      “但是我知道,这里只有2个或3个没有线索。”
      当此处发布的评论指的是比较两种许可之间的差异(即使它们彼此兼容)的软件的哲学和自由性时,我不知道您如何得出这个结论。

      1.    地塞潘

        对于使用这种编译器编译的会计程序一无所知的会计师的日常生活有什么影响?

        1.    超短线

          一点也不,只要我有空。 但是我在评论中处理的主题是另一个主题,Diazepan。 我谈论的是使用X编译器来编译专有软件,谈论每个编译器中使用的许可证及其区别,我也总是从自由的角度出发,提到GLP优于BSD的优势。

    2.    团队

      大声笑,声称没有人有线索,这对于说软件不是社会问题的人来说是很有说服力的。
      当甚至有一些国家(或多或少地)迁移到自由软件时,或者当所有国际媒体都在回响专有软件如何成为私有软件的工具时,您必须是盲目的或者至少有些近视才能看不到它。当世界上最富有的人正致力于操作系统时,就会大规模地进行间谍活动。
      有什么要阅读。

    3.    安德库拉

      ...我希望听到更多的摊贩和更少的Pandevs ...

  11.   团队

    文章从标题开始有点倾向,因为LLVM是那些被问到是否“变得有点疯狂”的人,因为他们是痛苦的抱怨者。

    在这个问题上,您会看到那些首先大喊大叫反对“碎片化”的人的虚伪,以及那些对自由软件的“可怕”的人。
    但是,当某人与他的言论和所作所为一致时,遵循了他的说法,不同意免费编译器成为了无数专有编译器的平台,那么,是的,万岁,每个人都可以创建派生!

  12.   卡纳莱斯

    从定义上讲,自由软件是一种社会运动。

    关于GPL与BSD:
    “ Freedom 3包含将修改后的版本发布为自由软件的自由。 免费许可证还可以授权其他形式的出版; 换句话说,它不必是copyleft许可证。 但是,要求修改版本为非免费的许可证不能被视为免费。”
    “ Copyleft(非常简短地定义)是一个规则,基于该规则,当您重新分发程序时,不能添加限制以拒绝他人享有主要自由。 这条规则与主要自由并不冲突,而是保护了他们。”

    如您所见,copyleft虽然在短期内会夺走一些自由,但从长远来看会保护它。 这就是Stallman先生为GPL辩护的原因:“我在自由软件方面的工作受到理想主义目标的激励:传播自由与合作。”

  13.   卡纳莱斯

    http://www.gnu.org/philosophy/open-source-misses-the-point.html

    “开源是一种编程方法,自由软件是一种社会运动。 对于自由软件运动,自由软件是道德上的当务之急,对用户自由至关重要。 相反,开源哲学仅在实际意义上就如何“改进”软件提出了问题。 它认为专有软件不是解决实际问题的最佳解决方案。 在大多数情况下,在讨论“开源”时,不考虑善与恶,而只考虑流行和成功。”

  14.   丹尼尔·诺列加(Daniel Noriega)

    我已经对它进行了数次评论,并且我会重复一遍,总的来说,我很喜欢linux,但是如果我讨厌linux,那是社区。 当您能够跳下悬崖以继续像“自由软件”那样“封闭”的意识形态时,您就会意识到世界已经颠覆了。 我认为免费软件一开始就很清楚,但今天的情况有所不同。

  15.   罕见的情况

    我认为许多人不清楚GPL许可的条款和目的。 GPL许可是非常宽松的,但其限制是不允许从使用其许可的程序中获利。 我同意Stallman的观点,但不能完全拒绝使用自由软件。 用户想使用LLvm / Clang是他们的权利,但是SLF想要用LLVM / Clang代替GCC将与自由软件的原则相矛盾。