gcc-4.8の変更点
相変わらずchangesに何も書かれてませんのでメモっときます。
4.7の時の変更が派手だったぶん、今回はおとなしいです。まあでも4.8で一番嬉しいのは-Ogと思う。
Ada2012のattributeの更なる実装
'Overlaps_Storageとか'Importとか'Conventionとか。めぼしいのはだいたい揃った感じ。
'Valueで例外発生時、エラーメッセージに引数の文字列が入るようになった
地味に便利と思います。
pragma Overflow_Checks
今までコマンドラインオプションでしかON/OFFできなかったオーバーフロー検出をソース中でON/OFFできるように。
pragma Loop_Optimize
http://gcc.gnu.org/onlinedocs/gnat_rm/Pragma-Loop_005fOptimize.html
Adaフロントエンドでも自動ベクトル化ですよ奥さん。
pragma No_Inline
要るよね。
pragma Warnings
でバックエンドの警告も操作できるように。
アドレス値の配置が自由に
今まで、アドレス値は必ずアライメントされてたんですが、x86みたいなアライメントが必須ではないプラットフォームではアライメントしなくてよくなりました。
protected型がロックフリーに
できるようになりました。
pragmaが必要です。(デフォルトではread-write lock)
protected Prot_Obj is pragma Lock_Free; -- undocumented ... end Prot_Obj;
protectedがロックフリーになったんですか。エッグシェルモデルやめたってことですかね?
https://twitter.com/i_yudai/status/313838044199411714
エッグシェルモデルやめてcompare-and-swapになるっぽいですね。
訂正の訂正。本当にprotected型をロックフリーにできます。
バグ修正
とりあえず直ってるのを見つけられたのは
入ってないもの
- raise expressionはAdaCore版GNATのDev Logにはあるのですが、gccには入ってません。
- use all typeの実装は進展ないっぽいです。
- 4.7でControlled型の実現方法が変わって、それ関係で結構バグがあったのですが、直ってないです。