2013-01-09

LLVMがC++11の機能を使うかどうか議論

[Phoronix] LLVM Developers Ponder Using C++11 Features

[LLVMdev] Using C++'11 language features in LLVM itself

LLVMのMLで、LLVMのコードにC++11のいくつかの基本的なコア言語機能を使うべきかどうかという議論がなされている。議論を発起したChris Lattnerのメールによれば、

平穏な日だから、ちょっと混ぜっ返すことをしようか。

LLVMで、auto指定子とかrvalueリファレンスとかlambda式等といった、基本的なC++11の言語機能(C++11のライブラリ機能は除く)を使い始めるのは、狂気だろうか? 思うに、いくつかの簡単な決まりを設ければ、まともにやっていけるんじゃないだろうか。例えば、言語機能はMSVC 2010以降と、GCCのあるバージョン以降(GCCのバージョンはLinux畑の奴らが選ぶべきかな?)、Clangのあるバージョン以降(FreeBSD畑の連中?)

一方では、コードをすばらしく綺麗にでき、また将来的にも当然のことである。他方で、ビルドと開発の負担を増やし、LLVMの受け入れや利用に支障をきたすようなことはしたくない。

もし、C++11の機能を使うことが重大な問題があると思うのならば、どうか発言して、どうやって、またいつ、その問題が解決できるのか説明してもらいたい。我々はいつか確実にC++11に移行するので、今すぐではないにせよ、議論して問題を発見するべきだ。

-Chris

LLVMのライセンスは、オープンソース(笑)である。オープンソース主義者はソフトウェア利用者が自由かどうかを気にしない。ソフトウェアの直接のソースコードがオープンならそれでいいという思想だ。ソースコードが派生されて不自由な利用をされようがかまわないという劣った考え方だ。

したがって、LLVMは何よりも使われることを優先する。コンパイラーが使われるには、特に、C++コンパイラーのような基本的なコンパイラーが使われるには、その環境にLLVMをコンパイルできるC++コンパイラーが存在する必要がある。もちろん、LLVMは自分自身をコンパイルできるが、GCCほど利用率が高くない現状では、別のコンパイラーでもコンパイルできるということが、利用率を高める戦略的に重要だ。この卵と鶏のような問題は厄介だ。

自由なGCCは、最近までコードベースがC言語のみであった。C++に移行するにあたって、既存のどのコンパイラーが、また自分のどのバージョンまでは、最新のGCCを正しくコンパイルできるのかという不安の声もでた。不自由なMSVCは、Microsoft一社のみで開発しているため、他のコンパイラーでコンパイルできるかどうかということは気にしなくてよいだろう。

13 comments:

Anonymous said...

University of Illinois/NCSA Open Source LicenseはFSF approvedなのに、自由なソフトウェアではない。新説ですね。

コピーレフトと自由ソフトウェアの概念をごっちゃにしちゃだめですよ。まるでGPL汚染という言葉を見るときのように、読んでいて違和感しかありません。
あまりあなたのような不用意な言葉で自由とかライセンスとかについて語ってもらいたくないものです。誤解を招きますから。

江添亮 said...

FSF approvedは、単にGPLと互換性のあるライセンスというだけでは?

soda said...

LLVM は、FSF の Free Software Directory に載っています。
http://directory.fsf.org/wiki/LLVM

このblogにおける自由ソフトウェアというのは、FSF のいう Free Software とは別概念だということでしょうか?

Anonymous said...

本気で仰っているなら、FSFの提唱する自由の定義を500回くらい読み直した方がいいですよ。Debianの方でもいいですけど。
コピーレフトが自由の必要条件ではないことが理解できたら、GNUのVarious Licenses and Comments about ThemのページにあるGPL-Incompatible Free Software Licensesの節も100回くらい確認してください。

Anonymous said...

あ、見事に突っ込みが他の人と被った。

soda said...

"GPLv2 only" と GPLv3 は非互換ですが、どちらも free software なんですよね。

ライセンスの互換性と、free software であるか否かは独立した概念ですので、それを混同するのは、いただけません。
anonymous さんが言っているのはそういう意味です。

Anonymous said...

sodaさん、Free Softwareと大文字で書くのが正解ですよ。
さらに捕捉すると、江添さんが本文中で混同してるのはコピーレフトと自由の概念で、そこにさらにコメント欄でGPL互換の話を混同させてる状態です。おおもとから勘違いしてるからどんどん訳がわからなくなってるんですね~。

江添亮 said...

もちろんRMSが提唱した4つの自由は知っています。
多くのオープンソースなライセンスは、この自由を満たしています。

私が問題にしているのは、自由を強く保証しないということです。

soda said...

> sodaさん、Free Softwareと大文字で書くのが正解ですよ。

ああっと、あまりちゃんと意識してませんでした。
今後気をつけます。ありがとうございます。

> さらに捕捉すると、江添さんが本文中で混同してるのはコピーレフトと自由の概念で、

そうなんですよね。
コピーレフトと Free は別概念なのに、混同して扱っているのが問題です。

> そこにさらにコメント欄でGPL互換の話を混同させてる状態です。

ですです。

soda said...

「LLVMのライセンスは、自由なソフトウェアではなくて」と書くのは、FSF の定義する「Free Software」とは違う意味で「自由なソフトウェア」という言葉を使っていることになります。せっかく「自由なソフトウェア」という言葉が FSF の Free Software の意味として定着しかけている状況で、別の意味を定義するのは、FSF にとって迷惑ですから、やめていただきたいと言っているのです。
「LLVMのライセンスは、コピーレフトではない」と書くのであれば何の問題もありません。

あとライセンスの互換性と、自由なソフトウェアであるか否かも独立した問題ですから、混同しているのは、いただけません。

Anonymous said...

>多くのオープンソースなライセンスは、この自由を満たしています。
>私が問題にしているのは、自由を強く保証しないということです。
なら、「自由ソフトウェアではあるがコピーレフトではない」とでも書いたらいいじゃないですか。
この文面では単に自由とコピーレフトの意味を取り違えているようにしか読めませんよ。
コメント欄ではFSF approvedとGPL互換の意味も区別できてないし……

江添亮 said...

ああ、そこですか。たしかに問題ですね。
「、自由なソフトウェアではなくて」の部分を削除しました。

Anonymous said...

「オープンソース(笑)」じゃ意味が分かりませんがね。「非コピーレフト(笑)」くらいにしておけばいいんじゃないですか。
まあ本文の意味が分からなくても、意味の混同が無くなったので俺としては構いませんが。

あとついでにこの記事もさっさと修正してくださいね。

本の虫: 邪悪なクリエイティブ・コモンズで起こるべくしておきた事件
http://cpplover.blogspot.jp/2012/09/blog-post_2200.html