タグ

2015年12月22日のブックマーク (2件)

  • Clojure Language Update 2015 〜一年の出来事と1.8の機能紹介〜 - Qiita

    この記事は、Clojure Advent Calendar 2015 19日目のエントリーです。 先日、Clojure 1.8 RC4が公開され、1.8のリリースも間近に迫ってきています。今回はそんなClojure 1.8の機能紹介をメインに据えつつ、今年1年でClojure/ClojureScript界隈であったことを振り返ります。 今年1年であったこと Clojure 1.7リリース 今年の前半にはまずClojure 1.7がリリースされました。かなり前からアナウンスされていたトランスデューサ(transducer)が導入され、シーケンスだけに限らない値の列に対する変換処理が統一的に書けるようになりました。また、reader conditionalが取り入れられ、それまではcljx等のツールを必要としていたClojureとClojureScriptの間でのコード共有が標準の範囲内でやり

    Clojure Language Update 2015 〜一年の出来事と1.8の機能紹介〜 - Qiita
    knjname
    knjname 2015/12/22
  • とても賢いコンパイラーの逆襲

    The Hacks of Life: The Dangers of Super Smart Compilers Clangの最適化が未定義の挙動を検出してコード片を消し去ってしまったことに引っかかった開発者の嘆き。 今日初めて、RenderFarmのDSF render(global scenaryを作成するのに使っている内部ツール)をClangで最適化コンパイルして実行した。 結果はsegfaultだった。これは驚きだ(そして自身消失だ)。というのも、最適化していないデバッグビルドは問題なく動くし、GCCでコンパイルされた最適化ビルドも正しく動く。-O0ではバグがない(つまり#if DEVコードのバグではない)ので、「最適化は何をやっているんだ」の時間だ。 大量のprintfと試行錯誤の結果、最適化は以下のようなコード片を丸ごとすっ飛ばしていることが判明した。 for(vector<me

    knjname
    knjname 2015/12/22