GCC 3.3登場 18
ストーリー by Oliver
one-compiler-to-rule-them-all 部門より
one-compiler-to-rule-them-all 部門より
dseg 曰く、 "GNU Project は5/14日、GCC v3.3をリリースした。v3.2から9ヶ月ぶりのリリースだ。 既に国内のミラーサイト(例えば、IIJ)にも行き渡っている。 変更点一覧によると、大量のバグフィクスがなされている。 また、C99 標準への対応も強化された。タイムリーなところでは、x86-64版も大幅に改良されたという。"
どうせなら (スコア:1)
それはそうと、-traditional オプションがなくなってしまった…
Re:どうせなら (スコア:2, 参考になる)
今年の1/9にgcc-3.2.1用の Stack Smashing Protection [ibm.com] のパッチがGCCのMLに投稿されました。
しかしながら、「パッチの中身がGNUのconding standardに従ってない」という理由でレビューが拒絶されてしまいました。それ以後沙汰止みになっています。
研究所の人にとってはconding standardに会わせてコードを 書き直すことはどうでもいいことなのかもしれませんが、 パッチを採用してもらえればたくさんの人に恩恵があるはずです。 ここは是非、パッチ採用となるまで面倒をみて頂きたい所です。
あるいは別の誰かが直す手もありですね。
typo発見.... (スコア:1)
(誤)conding (正)coding
#恥ずかしい...
C++はあまり変化なしか? (スコア:0)
今回追加のnonnullってのは微妙に便利そうですね。でもこういう どうでもよさげなGCC拡張って、どういう基準で追加を決定して るんでしょう。
Re:C++はあまり変化なしか? (スコア:0)
Re:C++はあまり変化なしか? (スコア:5, 興味深い)
ccache を使うと、コンパイル時間が結構削減できます。
どれくらい速くなるかは、webにある表を見てください
使い方も簡単で
CC=gcc を
CC=ccache gcc
に変えるだけです。gccのバージョンには依存しません。
gcc自体がpre-compileの機能をサポートしてくれるまでの
つなぎとしては十分に使えると思います。お試しを。
PCH と ccache (スコア:1)
ccache というソフトウェアの存在を初めて知ったのですが、 Web ページを見たところそんなことができるとは思えないのですが……。
Web ページを読んだ限り、 ccache というのは、 Makefile を正しく書くのが大変な場合などに make に頼らずに(毎回 clean build するだけで)不要なコンパイルを省き make とほぼ同じ効果を得るために使うもののように見えます。 PCH とは関係がないのでは?
鵜呑みにしてみる?
Re:C++はあまり変化なしか? (スコア:1)
#defineやテンプレートなどのマクロ系の機能にとって、
キャッシュしときたい情報が何なのかというと、
「処理前」のデータをキャッシュしても駄目(それじゃソースそのまんまだから当然)だし、
「処理後」のデータをキャッシュしても駄目(マクロに毎回違うパラメータを与えられるたびに無意味になる)である、
…という点が問題なわけです。
だから、プリプロセスの「途中」の段階を、キャッシュしとかないとならない。
パーサーの内部状態みたいな、半完成の情報を。
まあ、それでも相互依存性が高いクラス同士になると、PCHですら十分じゃない、ということがあるようですが。
#クラスをちょっと直すたびにコンパイルが1時間、ってな世界はもうウンザリなのでG7
#C++みたいに埋め込みObject方式の選択肢があると、中間形式にとっても変更コストが大きいみたいですね。
##delphiならクソでかいアプリのコンパイルでも1分かかることは稀、大抵数秒、という世界なので、その生産性の違いたるや…
元を正せば、コンパイラが「最初から」そういう中間情報をファイルに落とすってのをきちんとやるべき
なんでしょうけど、Cだとそれが文化的(?)に後回しになるようですね。
今時の言語はDelphi(笑)にせよJavaにせよ、コンパイル結果のファイルにヘッダ相当の情報が
(後からコンパイラが素早く読みやすいように)入ってるっぽいし、依存関係の解決ももう少しスマートにやれるようになってるっぽい。
#リンカに渡す-lの「順番」を自分で解決するのはもうウンザリなのでG7。順番なんざ機械が内部的に面倒見ろ。javaみたいに。
Re:C++はあまり変化なしか? (スコア:0)
Re:C++はあまり変化なしか? (スコア:0)
C++ の場合、山のようにある class 定義を .cc ファイルごとに
毎回読むから遅くなるのであって、それと比べれば CPP の
オーバーヘッドは感覚的には大したことはないです。
Re:C++はあまり変化なしか? (スコア:2, 参考になる)
C++ でも C 同様の効果が得られますよ。 プリプロセスして、その得られたソースコードのハッシュを キーにして以前コンパイルしたオブジェクトファイルを 取り出すんですから。.ccache ファイルの中を nm なりなんなりしてみたらわかるかと。
公式サイト [samba.org]の最初の段落を訳してみると…
ccache ってのは "compiler cache" です。 こいつは C/C++ コンパイラのプリプロセッサとして働きます。 コンパイラの -E オプションとハッシュを 使ってコンパイルする必要があるかどうかを調べることができます。 これはしばしば標準的なコンパイルを 5 から 10 倍の速度にします。
てなところですかね。
Re:C++はあまり変化なしか? (スコア:0)
という気がするんですけど、気のせいかな……
いずれにしろ、pch の導入の最大の目的である、C++ のクラス定義の
キャッシュにはならない気がしますけど。
Re:C++はあまり変化なしか? (スコア:3, 参考になる)
3.4では他にもC++パーサの書き直しなども行われているようです。
Re:C++はあまり変化なしか? (スコア:0)
# PCH = pre-compiled header
C99? (スコア:0)
これってC99に採用されたと聞いたのですが、ボツになったんでしょーか。
'for' loop initial declaration used outside C99 mode
て言われるし。
# 未だにイカしたニックネームが思いつかないのでAC
Re:C99? (スコア:1)
Re:C99? (スコア:0)
for (int i = 0; i < 3; i++) printf("hoge\n");
みたいなのは通りませんよね?
Re:C99? (スコア:0)