憂鬱な午後のひととき

12月31日_

今年

自分のGitHubでの開発に専念してた(できた)年だった. mcl/blsはEthereum系で少しずつ認知度が上がり, 採用されるケースも増えた.

その結果, 様々なプラットフォームでの要件も増えていろんな環境に対応する作業が多かった. 嫌いじゃないけど面倒なことも多い. 特にGo(cgo)はちょっと王道から外れると途端にめんどい. あと.NET on Linuxやgomobile for iPhone/Androidなどのマニアックなのも.

主流じゃない環境だとclang 7でもC++11でもエラーになることもあってやっぱりC++03最強と認識したのであった(マジ).

もうちょっとがんばればデファクトになれなくもなさそうなのでもうしばらくこのまま続けたい.

XbyakはIntelの新CPU対応や落ち穂拾い的な対応など. gccもclangも対応してないときに新命令サポートするのはいろいろ気をつかう.

IntelがXbyakに当てた独自パッチが間違ってるのでそれに対して修正issue出すという, レアな経験もして面白かった(出すときはめちゃ緊張した).

Xbyak for fugakuはフェイントやった. まさかそのプロジェクトに関われるとは思ってもいなかったのでありがたいな. 13年前からなんかかんやと言われることもあったが, 続けてるといいこともあるもんだと素直に思う. 来年はその上で動くアプリで役に立ちたい.

自分のソフトを使ってもらえるというのはとてもありがたい. ものすごいマシンも2台やってきた. けれども, ひっきりなしの要望に対応しまくっていたら後半完全にキャパオーバーだった(休まるときがない). 12月は結構体調崩してダウンしてた. 来年はもう少し自分のペースを保てるように気をつけよう.

12月14日_

歩く

最近いろいろ詰め込みすぎていたので頭を空っぽにするために歩く. 三輪から天理までもくもくと. ついでに奈良公園に行って若草山の麓まで. 鹿たっぷり. 外国人多し. 特に中国系の人. お店もいろいろできていてびっくり. 山に登ろうと思ったけど閉山だった. 残念.

12月13日_

Joint Workshop of NTT Labs and NTT Research

聞きたいセッションがあったので上司にお願いして参加した. 京都8時半着の新幹線. 長年京都にいたけど京都直結のホテルに入ったのは初めて. 京都タワーのいつもと違う眺めが新鮮.

終わって実家に帰る.

12月12日_

USBつながらない

朝Windowsを再起動したらログインできない. 画面はでてるけど何も反応しない. 駄目元でリモート接続したらつながった. とりあえずデータバックアップをとUSB-SDDをつなげたけど認識しない. どうしたものかと一度電源を切って直接SDDをマザーボードにつないでバックアップ. 試しにPS/2キーボードをつなげたら入力できる.

修理依頼の電話をしてBIOSとかいろいろリセットしたらUSBを認識するようになった. 電源まわりが怪しい気がしてるのだけど動くようになってしまったので修理はまた今度に.

12月9日_

xbyak for fugaku

fujitsuからxbyak_aarch64が公開される. ARMv8 + SVE対応, つまり富嶽用. 最初その話を聞いたまさかと思ったけど実現した. めちゃうれしい. といってもやることはまだまだいっぱいある. できるだけ貢献したいな.

12月7日_

Re: MAP_JIT

結局

inline int getMacOsVersionPure()
{
    char buf[64];
    size_t size = sizeof(buf);
    int err = sysctlbyname("kern.osrelease", buf, &size, NULL, 0);
    if (err != 0) return 0;
    char *endp;
    int major = strtol(buf, &endp, 10);
    if (*endp != '.') return 0;
    return major;
}

inline int getMacOsVersion()
{
    static const int version = getMacOsVersionPure();
    return version;
}
#if defined(XBYAK_USE_MAP_JIT)
        int mode = MAP_PRIVATE | MAP_ANONYMOUS;
        const int mojaveVersion = 18;
        if (util::getMacOsVersion() >= mojaveVersion) mode |= MAP_JIT;

こんなコードになった. 実際, Xcode 9 + 10.13.6でMAP_JITつけると落ちるらしいので対策必要. どういう実装してるんだろうなあ.

12月6日_

MAP_JIT

macOSのmmapを使ってJITしたい場合はこのフラグをつけるべきらしい. しかし古いmacOSでつけるとクラッシュするらしい. 後方互換性...

12月5日_

メインマシン

なんか急にキーボードを受け付けなくなったと思ったら, リセットボタンも効かない. 強制リブートしたらWindowsが見つかりませんとか, BIOS画面で固まったりした. やばい. ちょうど2年しか使ってないのに.

12月4日_

JavaScriptのmapとarray

JavaScriptで

[1,2,3].map(x=>parseInt(x))

は[1,2,3]になるのに

[1,2,3].map(parseInt)

は[1,NaN,NaN]になるのはなぜと言われた. ほんまや, おもしろい.

実はparseIntは(string,radix)を受ける関数でradix=0だとよきに計らう. mapで渡される値は(現在の値, 配列のindex, 配列)なので (string,radix)=(1,0), (2,1), (3,2)となり最初以外はエラーになってしまう.

a=[1,2,...,9,10,..]を渡すと9番目から9,11,13,15,17,19,21,23,25,27,38,41,...となり一見意味不明な数列となる.

12月3日_

llvmのbmi2

いつのバージョンからか, mcl内部で使われているllvmが自動生成するコードが-mattr=bmi2してるのにmulxを使わなくなってしまった. 仕方がないので古いllvmの出力コードで固定する. ほっとくと勝手にavxを使って遅くなるのでわざわざ-mattr=-sseつけてる. 頼むから遅くならないでほしい.

12月2日_

振り返り

今年のメモを見ながらまとめてる. いろいろ好き勝手にやらせてもらってる. ありがたい.

12月1日_

回復傾向

ようやく喉の痛みが治まってきたが, 体のだるさが半端無い. 寝てるしかない.


御意見は光成滋生<herumi@nifty.com>までお願いします