パスワードを忘れた? アカウント作成
5701 story

GCC 3.3登場 18

ストーリー by Oliver
one-compiler-to-rule-them-all 部門より

dseg 曰く、 "GNU Project は5/14日、GCC v3.3をリリースした。v3.2から9ヶ月ぶりのリリースだ。 既に国内のミラーサイト(例えば、IIJ)にも行き渡っている。 変更点一覧によると、大量のバグフィクスがなされている。 また、C99 標準への対応も強化された。タイムリーなところでは、x86-64版も大幅に改良されたという。"

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by yosshy (3545) on 2003年05月15日 23時28分 (#316509) 日記
    スタックオーバーフロー対策を標準で入れてくれたら良いのに。
    それはそうと、-traditional オプションがなくなってしまった…
    • Re:どうせなら (スコア:2, 参考になる)

      by ShibaQ (2782) on 2003年05月16日 10時20分 (#316745)

      今年の1/9にgcc-3.2.1用の Stack Smashing Protection [ibm.com] のパッチがGCCのMLに投稿されました。

      しかしながら、「パッチの中身がGNUのconding standardに従ってない」という理由でレビューが拒絶されてしまいました。それ以後沙汰止みになっています。

      研究所の人にとってはconding standardに会わせてコードを 書き直すことはどうでもいいことなのかもしれませんが、 パッチを採用してもらえればたくさんの人に恩恵があるはずです。 ここは是非、パッチ採用となるまで面倒をみて頂きたい所です。

      あるいは別の誰かが直す手もありですね。

      親コメント
  • by Anonymous Coward on 2003年05月15日 22時51分 (#316458)
    C99なんてどうでもいいからC++のexportキーワードが欲しい。

    今回追加のnonnullってのは微妙に便利そうですね。でもこういう どうでもよさげなGCC拡張って、どういう基準で追加を決定して るんでしょう。

    • PCHはまだかな?
      • by annoymouse coward (11178) on 2003年05月16日 12時28分 (#316913) 日記
        http://ccache.samba.org/ で公開されている
        ccache を使うと、コンパイル時間が結構削減できます。
        どれくらい速くなるかは、webにある表を見てください

        使い方も簡単で
        CC=gcc を
        CC=ccache gcc
        に変えるだけです。gccのバージョンには依存しません。

        gcc自体がpre-compileの機能をサポートしてくれるまでの
        つなぎとしては十分に使えると思います。お試しを。
        親コメント
        • by tix (7637) on 2003年05月17日 15時19分 (#317751) ホームページ
          precompiled header (PCH) というのは、 main.cc から大量のヘッダファイルをインクルードしている状況で、コンパイル後に main.cc だけを変更して再度コンパイルすると、ヘッダファイルが変更されていないことを検出してコンパイル時間を短縮してくれる機能です。 ccache で同じことが実現できるのでしょうか。

          ccache というソフトウェアの存在を初めて知ったのですが、 Web ページを見たところそんなことができるとは思えないのですが……。

          Web ページを読んだ限り、 ccache というのは、 Makefile を正しく書くのが大変な場合などに make に頼らずに(毎回 clean build するだけで)不要なコンパイルを省き make とほぼ同じ効果を得るために使うもののように見えます。 PCH とは関係がないのでは?
          --
          鵜呑みにしてみる?
          親コメント
        • by G7 (3009) on 2003年05月17日 18時16分 (#317837)
          そのソフトがどういうソフトなのかはまだ見てないんですが…

          #defineやテンプレートなどのマクロ系の機能にとって、
          キャッシュしときたい情報が何なのかというと、

          「処理前」のデータをキャッシュしても駄目(それじゃソースそのまんまだから当然)だし、
          「処理後」のデータをキャッシュしても駄目(マクロに毎回違うパラメータを与えられるたびに無意味になる)である、

          …という点が問題なわけです。

          だから、プリプロセスの「途中」の段階を、キャッシュしとかないとならない。
          パーサーの内部状態みたいな、半完成の情報を。

          まあ、それでも相互依存性が高いクラス同士になると、PCHですら十分じゃない、ということがあるようですが。

          #クラスをちょっと直すたびにコンパイルが1時間、ってな世界はもうウンザリなのでG7
          #C++みたいに埋め込みObject方式の選択肢があると、中間形式にとっても変更コストが大きいみたいですね。
          ##delphiならクソでかいアプリのコンパイルでも1分かかることは稀、大抵数秒、という世界なので、その生産性の違いたるや…

          元を正せば、コンパイラが「最初から」そういう中間情報をファイルに落とすってのをきちんとやるべき
          なんでしょうけど、Cだとそれが文化的(?)に後回しになるようですね。
          今時の言語はDelphi(笑)にせよJavaにせよ、コンパイル結果のファイルにヘッダ相当の情報が
          (後からコンパイラが素早く読みやすいように)入ってるっぽいし、依存関係の解決ももう少しスマートにやれるようになってるっぽい。

          #リンカに渡す-lの「順番」を自分で解決するのはもうウンザリなのでG7。順番なんざ機械が内部的に面倒見ろ。javaみたいに。
          親コメント
        • これ、プリプロセッサのキャッシュしかしないので、C++ だとあまり意味がないです。
          C++ の場合、山のようにある class 定義を .cc ファイルごとに
          毎回読むから遅くなるのであって、それと比べれば CPP の
          オーバーヘッドは感覚的には大したことはないです。
          • C++ でも C 同様の効果が得られますよ。 プリプロセスして、その得られたソースコードのハッシュを キーにして以前コンパイルしたオブジェクトファイルを 取り出すんですから。.ccache ファイルの中を nm なりなんなりしてみたらわかるかと。

            公式サイト [samba.org]の最初の段落を訳してみると…

            ccache ってのは "compiler cache" です。 こいつは C/C++ コンパイラのプリプロセッサとして働きます。 コンパイラの -E オプションとハッシュを 使ってコンパイルする必要があるかどうかを調べることができます。 これはしばしば標準的なコンパイルを 5 から 10 倍の速度にします。

            てなところですかね。

            親コメント
            • なんか、ちょっと賢くて遅い make くらいの効果しかないんじゃないか、
              という気がするんですけど、気のせいかな……
              いずれにしろ、pch の導入の最大の目的である、C++ のクラス定義の
              キャッシュにはならない気がしますけど。
      • by Anonymous Coward on 2003年05月16日 9時27分 (#316702)
        precompiled headersは開発中のgcc-3.4 [gnu.org]で対応されています。
        3.4では他にもC++パーサの書き直しなども行われているようです。
        親コメント
      • 欲しいね。OSXの奴みたいにツカえないのは嫌だけど。
        # PCH = pre-compiled header
  • by Anonymous Coward on 2003年05月16日 21時40分 (#317350)
    さっそくビルドしてみましたが、C++で可能なfor文の条件文の中での宣言ってやっぱりだめなんですねえ。
    これってC99に採用されたと聞いたのですが、ボツになったんでしょーか。
    'for' loop initial declaration used outside C99 mode
    て言われるし。

    # 未だにイカしたニックネームが思いつかないのでAC
typodupeerror

※ただしPHPを除く -- あるAdmin

読み込み中...