kubo39's blog

ただの雑記です。

shibuya.d #1 を開催しました

shibuya.d の一回目を開催しました。

http://connpass.com/event/26486/

発表内容

repeatedly さんによる std.experimental.ndslice の解説・デモ

つい最近 Phobos に入った std.experimental.ndslice (n-dimentional slice) という行列演算を行うためのライブラリの話と簡単なデモンストレーションをしていただきました。

転置行列や飛び地計算といった標準的な行列操作の実装が標準ライブラリに入ったことで、pure Dな画像処理ライブラリや機械学習ライブラリを実装することが容易になることが期待できます。実際に https://github.com/ljubobratovicrelja/dcv のようにndsliceをベースとした画像処理ライブラリも生まれていることも紹介していただきました。

experimentalなパッケージなので、今後API非互換な変更が入りうることに注意が必要とのことです。

ueshita さんによる D言語GCとの上手な付き合い方の話

D言語GCをもっている言語であり、Mark and SweepでStop the World(全スレッドが停止する瞬間が存在する)があるという実装です。

ゲームプログラミングのような場合だとGC発生タイミングを制御できないと困ることがあるので、いくつかのGCを起こさないプログラミングのテクニックとして、

  • オブジェクトプールを使うことでメモリ再確保を走らせないようにする方法
  • @nogcを使ってコンパイラによるチェックを行う
  • vgcオプションでGCを使用している箇所を特定
  • 秘伝のGC.disable

などを紹介していただきました。

vgcオプションは自分知らなかったです、これいつから入ったんでしょうか。--verbose-gc という意味ですかね?

自分は他によく Thread.detachThis でGC rootから特定のスレッドを外すようなこともしています。

ocxtal さんによる D言語SIMD の話

D言語SIMD演算を行う方法の発表です。

DMDのサポートにshuffleやpermutationのような操作が提供されていないこと、LDC inline IR と ldc.simd を使うことでLLVM IRのコードを生成して高度なSIMD演算を行う方法を紹介していただきました。

D言語SIMDサポートはコンパイラによって対応がまちまちでなかなか大変そうです。

個人的にはLDCのinline IRに強い興味を持ちました。

pandaman64 さんによる unity4d を動かしてみる話

D言語からUnityを操作するためにD to CILを使う、という話でした。まだ20歳!とのことです。

CIL生成を行って実際にD言語からUnityの機能を呼び出すデモを行っていただきました。

しかし、古いDMDを使わざるをえなかったり配列が使えない(!)などまだまだ多くの困難があるとのこと。

Unity3d + D言語 で Unity4D Unity for D でかけた命名がセンスがあります。

そしてD言語くんの鳴き声は馬でした、これTLでみかけたようにUMAとかけたんですかね????

解散後

解散、と言った後に来場者から提案があって一人ずつマイクをまわしていって自己紹介と今どんなことやってるか?みたいなのを話しました。

学生の方がとても多かったのが印象的だったのと同時に、非常に古くからD言語を触っておられる方々と同じ場にいられたことが感慨深かったです。

懺悔

大変gdgdで雑な進行で大変申し訳ありませんでした。。

gdgdな進行でもいいから2回目やってくれ、という声があれば是非また開催したいと思います。

あと最後にgopherをもってきてすまんかった。許して。