Rafael Avila de Espindola ,LLVM
编译器贡献排名第五的资深开发者,日前发布了一封长邮件宣布已决定与该项目分道扬镳。 

写在前面:LLVM是(Low Level Virtual
Machine)的简称,官网为http://llvm.org/
LLVM随着这个项目的不断的发展,已经无法完全的代表这个项目了,只是这种叫法一直延续下来。
LLVM是一个开源的项目。它最早的时候是Illinois的一个研究项目,主要负责人是Chris
Lattner,他现在就职于Apple. Apple 目前也是llvm项目的主要赞助者之一。
LLVM的主要作用是它可以作为多种语言的后端,它可以提供可编程语言无关的优化和针对很多种CPU的代码生成功能。此外llvm目前已经不仅仅是个编程框架,它目前还包含了很多的子项目,比如最具盛名的clang.
LLVM这个框架目前已经有基于这个框架的大量的工具可以使用。

早在2015年,LLVM
社区就有发起对代码进行重新授权的提案,希望能从现有的 NCSA)
许可证更改为 Apache 2.0 。这三年内,关于许可证更换的可行性一直备受争议。

邮件具体内容
澳门新葡萄京官网首页 1

本文只是翻译LLVM官网的一小部分

NCSA 是基于 MIT/X11 和 BSD 3
的许可证,更换许可证的目的一是降低代码贡献的门槛,鼓励更多人参与;二是提供对现有的贡献者专利保护;三是确保 LLVM
运行时库可以被其他开源和专有编译器使用。

Rafael 自 2006 年以来已为 LLVM 贡献了超过 4,300 个 commits ,添加了
157,679 行代码,是 LLVM 的排名第五的贡献者。

The LLVM Complier Infrastructure

经过探讨,他们提议采用 Apache 2.0
许可证,而且做了额外条款补充,形成了一个专门针对 LLVM 的特殊版 Apache
2.0(Apache-2.0 WITH LLVM-exception)。

澳门新葡萄京官网首页 2

LLVM编译环境基础架构

—- Exceptions to the Apache 2.0 License: ——

As an exception, if, as a result of your compiling your source code,
portions of this Software are embedded into an Object form of such
source code, you may redistribute such embedded portions in such
Object form without complying with the conditions of Sections 4(a),
4(b) and 4(d) of the License.  

In addition, if you combine or link compiled forms of this Software
with software that is licensed under the GPLv2 (“Combined Software”)
and if a court of competent jurisdiction determines that the patent
provision (Section 3), the indemnity provision (Section 9) or other
Section of the License conflicts with the conditions of the GPLv2, you
may retroactively and prospectively choose to deem waived or otherwise
exclude such Section(s) of the License, but only in their entirety and
only with respect to the Combined Software.

—- end —

澳门新葡萄京官网首页 ,在邮件中,Rafael 回顾了他参与编译器开发的完整经历,从最初的
GCC,到之后转向并专注于 LLVM
,期间历经了许多事情。对于离开的原因,也做了详细解释:

The LLVM Project is a collection of modular and reusable compiler and
toolchain technologies. Despite its name, LLVM has little to do with
traditional virtual machines, though it does provide helpful libraries
that can be used to build
them. The name
“LLVM” itself is not an acronym; it is the full name of the project.

10月16日,LLVM 的长期开发者 Chandler Carruth
继续在邮件列表呼吁贡献者和组织填写和签署重新许可表格,也不出意外的再次有人提出反对意见。Pavan
Maddamsetti 认为 Apache 2.0 会让 LLVM
不那么有用,阻止其他开源项目使用它,让许多人围绕 LLVM 技术申请专利。如果
LLVM 被重新许可,像 OpenBSD
这样的项目将不再能够包含上游变更,因为专利终止条款限制了用户的权利。

The reason for me leaving are the changes in the community. The
current license change discussions unfortunately bring to memory the
fsf politics when I was working on gcc. That would still not be
sufficient reason to leave. As with the code, llvm will still have the
best license and if the only community change was the handling of the
license change I would probably keep going. 

The community change I cannot take is how the social injustice
movement has permeated it. When I joined llvm no one asked or cared
about my religion or political view. We all seemed committed to just
writing a good compiler framework.

LLVM项目是模块化和复用编译器和技术工具链的集合,虽然它可以提供有用的库去构建传统虚拟机,但还是与传统虚拟机有很大不同.LLVM并不是首字母的缩写而是项目的全名

Please do not agree to relicense LLVM under the Apache 2 license. It
will make LLVM less useful, prevent other open source projects from
using it,and encourage the proliferation of software patents on LLVM
technologies.

If LLVM is relicensed, projects like OpenBSD will no longer be able to
include upstream changes, because the patent termination clause
restricts users’ rights. Even if you do not use OpenBSD, you almost
certainly use OpenSSH, OpenBSD’s SSH implementation. If the project
loses the ability to include a recent compiler, many people will
suffer the consequences.

他表示近几年他的感受和以前已有所不同,LLVM 日益庞大且变化缓慢,LLVM
许可证变化相关的讨论令他想起早年为 GCC 开发期间发生的 FSF
政治,他也不赞成 LLVM
最近引入的社区行为规范,但这些都不足以让他离开项目。真正促使他做决定的是
LLVM 与一个公开根据性别和血统进行歧视的组织 Outreachy
进行合作,这让他感到非常不满。

LLVM began as a research
project
at the University of
Illinois, with the
goal of providing a modern, SSA-based compilation strategy capable of
supporting both static and dynamic compilation of arbitrary programming
languages. Since then, LLVM has grown to be an umbrella project
consisting of a number of subprojects, many of which are being used in
production by a wide variety ofcommercial and open
source projects
as well as being widely used in academic
research. Code in the
LLVM project is licensed under the “UIUC” BSD-Style
license.

(文/开源中国)    

据悉,Outreachy
是一个旨在将更多的女性和少数族裔开发者引入到开源自由软件社区的远程实习项目。Outreachy
招募的实习生排除白人男性和亚裔男性(组织规则)。

LLVM
开始在伊利诺伊大学作为一个研究项目,目标是提供一个支持任意语言的静态和动态编译的现代的,基于SSA编译战略目标的语言集合.从那时起,LLVM现已发展成为由许多子项目,其中有许多是正在生产由各种各样的使用的综合项目的商业和开源项目以及被广泛用于学术研究.LLVM项目遵循’UIUC’BSD风格的许可证

(文/开源中国)    

The primary sub-projects of LLVM are:
LLVM的子项目包括:

1.The LLVM Core libraries provide a modern source- and
target-independent optimizer, along with code generation support for
many popular CPUs (as well as some less common ones!) These libraries
are built around a well specified code representation known as the LLVM
intermediate representation (“LLVM IR”). The LLVM Core libraries are
well documented, and it is particularly easy to invent your own language
(or port an existing compiler) to use LLVM as an optimizer and code
generator.

1.LLVM内核提供一个现代化的源和目标无关的优化,随着许多CPU支持代码生成,这些库都是围绕着建立明确的规定被称为LLVM中间表示的代码表示(LLVM
IR),LLVM的核心库是有据可查的,它使得你可以很轻松使用LLVM作为优化器和代码生成器构建你自己的语言

2.Clang is an “LLVM native” C/C++/Objective-C compiler, which aims
to deliver amazingly fast compiles (e.g. about 3x faster than
GCC
when compiling Objective-C code in a debug configuration), extremely
useful error and warning
messages
and to provide a platform for building great source level tools. The
Clang Static
Analyzer is
a tool that automatically finds bugs in your code, and is a great
example of the sort of tool that can be built using the Clang frontend
as a library to parse C/C++ code.

2.Clang 是一个LLVM原生 用于提供 极速 编译的 C/C++/Objective-C
编译器(是GCC的3倍速度),非常有用的错误和警告消息,并为构建有效的源代码工具提供一个平台,该
锵静态分析是一种工具,自动查找代码中的错误,而且是那种工具,可以使用Clang前端作为一个库来解析C
/ C ++代码生成的一个很好的例子。

3.dragonegg integrates the LLVM optimizers and code generator with
the GCC parsers. This allows LLVM to compile Ada, Fortran, and other
languages supported by the GCC compiler frontends, and access to C
features not supported by Clang.
3.dragonegg 集成了GCC解析器和LLVM优化程序和代码生成器.这允许LLVM编译
Ada, Fortran, 和其他CGG前端编译器支持的语言以及访问Clang不支持的C功能.

4.The LLDB project builds on libraries provided by LLVM and Clang to
provide a great native debugger. It uses the Clang ASTs and expression
parser, LLVM JIT, LLVM disassembler, etc so that it provides an
experience that “just works”. It is also blazing fast and much more
memory efficient than GDB at loading symbols.

4.该LLDB项目建立在由LLVM和Clang提供的极大的调试库,它使用Clang
AST和表达式解析器,LLVM JIT,LLVM反汇编器等,以便于提供一个
“只工作”的经验。在加载符号时,它比GDB的速度更快,效率也更高。

In addition to official subprojects of LLVM, there are a broad variety
of other projects that use components of LLVM for various
tasks.
Through these external projects you can use LLVM to compile Ruby,
Python, Haskell, Java, D, PHP, Pure, Lua, and a number of other
languages. A major strength of LLVM is its versatility, flexibility, and
reusability, which is why it is being used for such a wide variety of
different tasks: everything from doing light-weight JIT compiles of
embedded languages like Lua to compiling Fortran code for massive super
computers.

除了LLVM的官方子项目,还有各种各样的其他项目使用LLVM的组件各项任务。
您可以使用LLVM编译Ruby,Python,Haskell,Java,D,PHP,Pure,Lua和许多其他语言。LLVM的一个主要优势是其多功能性,灵活性和可重用性,这就是为什么它被用于各种各样的不同任务:从轻量级JIT编译嵌入式语言如Lua到编译Fortran代码为大规模超级电脑。