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:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    ですです。

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

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

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

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

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

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

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

    ReplyDelete

You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.