20051001とか20051008とか

アップキャスト(ダウンキャストではなくて!)でnullチェックと変換で式を2回評価してて、式の中で関数呼んでたらその関数も2回呼ばれてしまうのは何のいじめですか…。

項目gcc 4.1.0?gcc 4.0.1
not null access
匿名のaccess変数
匿名のaccess引数
匿名のaccess返値×
for access型'Storage_Size use 0;×
downward closure
overriding明示×
interface×
Object.Method形式の呼び出し
拡張return文××
Ada.Tags.Generic_Dispatching_Constructor×
Ada.Calendar.Formatting××

匿名accessとnull

procedure P (A : access T);

何も装飾を付けない匿名アクセス型は、Ada95との互換のためにnot null扱いで、allを付けて区別…と昔のPowerPointやpdfのAda0Yの紹介ではそうなっていたはずなのですが…。Note that 1 and 3 are the same (compatibility)と書いてありましたし…。
ところが、gcc 4.1.0(のスナップショット)では、上記宣言でnullを受け付けるようになってました。また匿名アクセス型のallは全面禁止になってました。GNAT(gcc)では-gnat05の有無で、nullを渡すのがエラーになったりならなかったりします。
これって…。
http://www.ada-auth.org/ai-files/grab_bag/Amendment-D10.htmlではgeneral_access_modifierになっていたのが、http://www.ada-auth.org/ai-files/grab_bag/Amendment-D11.htmlではconstantのみに…。
言語の美しさのためだけに互換性を切り捨てたー!!
いや、AdaのWGが互換性など気にしてないのは周知、でも、コンパイルエラーになる方向であればわかりますが、これは甘い方向へ、です。いいのか宇宙開発や兵器用の組み込み言語。C++委員会も見習って(略)

並列オブジェクト指向

そんなこんなでtask interfaceが使用可能になったので、並列オブジェクト指向に触れてみたいと思いつつ…google:並列オブジェクト指向JavaSchemeと研究用に作られた言語以外に何か無いんですか何か…。
Futureパターンなんて、最初からランデブーが使えるので関係ないですよ…。
英語かな…。
http://www.cs.wustl.edu/~schmidt/patterns-ace.html とか。

gccを静かにビルドしたい!

最近gccのビルドばかりやっていて、絶対HDDに良く無いと思ったら前のノートの記憶がフラッシュバックしてきて、HDDに優しくするために、USBのメモリースティックの、高速転送とかなんとか書いてあるやつを買ってきました。
…スナップショットのアーカイブを解凍したら512MBがほとんど埋め尽くされた…orz
512MBと1GBの境で突如値段跳ね上がるのですよね。
それでもソースはUSB、ビルドはHDD、或いはその逆でも、ヘッダの移動が少なくなるだけ優しい…と思いきや。
相対パスでconfigureしないとまともなMakefileができない…orz
仕方ないので今日もHDD…。
容量喰ってるのはいらないgcjなので、次からcoreとadaだけ拾うことにします…。
gnat_ugn_unw.infoのmakeinfoに失敗するとか、adaincludeに環境非依存のソースがコピーされないなどは毎度なのでいいというかよくないですが慣れたというか、しかし新たに、stderrがことごとく内部エラーになったり、asやcollect-ldがshのスクリプトの形のエイリアスとして作られてしかもわざわざ虐めのように'\'のWindows系パス表記で呼ばれるためシェルを介さず従って動作しないのはどうにかならないのでしょうか…。あとライブラリのshared object版というかdll版もビルドできないしlibsspもビルドできないし…--disable-なんとか付けまくりです。MinGW上のbootstrapよりもMinGW-FreeBSDのクロスビルドのほうが問題が少ないというこの事実…。