D言語
Comparing k-NN in Rust | Huon on the internet というblog postを見つけたので、Dに移植してみた。 std.parallelism ひさしぶりに使った気がする。 import std.algorithm; import std.array; import std.conv; import std.range; import std.stdio; import…
こんなのを作ってみました。 kubo39/threadedtcpservergithub.com D言語でマルチスレッドなサーバを作ろうと思うと、 cast() とか cast(shared) とか使わざるをえなかったりしてだいぶ辛いです。 workerスレッドの死活監視もなんとかしたいですね。。
こちらにまとめました. kubo39/tiny-d-demogithub.com これ解決したらgcc -static版も作りたいなあ. [Issue 12268] New: full static linking does not work, unresolved __tls_get_addr - D Programming Language Discussionforum.dlang.org 一応今のままで…
D言語にはfunctionとdelegateというよく似た使い方をするものがあります。 functionはただの関数ポインタ(Cとだいたい同じもの)ですが、delegateはclosureに対する参照も保持してるので必要となるメモリ量が2倍になります。 import std.stdio; void func_for…
DMD 2.067.0 で地味にインラインアセンブラで syscall 命令がサポートされたので、それを軽くラップするようなライブラリを書いてみました。 https://github.com/kubo39/syscall.d コード例: import syscall : syscall, WRITE; void main() { string buf = "…
import std.stdio : writeln; import std.conv : to; class Fib(T) if (__traits(isIntegral, T)) { T opIndex(T n) const pure nothrow @trusted @nogc in { assert(n > 0); } body { T y; { T x = 1; foreach (_; 0..n) (((x = n = x) += y) ? y : y) = n;…
ちょっと興味がでたのでやってみる. 前準備. $ sudo apt-get apt-file $ apt-file update $ apt-file search XInput.h libxi-dev: /usr/include/X11/extensions/XInput.h $ apt-file search Xrandr.h ... libxrandr-dev: /usr/include/X11/extensions/Xrandr…
sharedの勉強がてらに、Lock-free Queue実装のひとつである制限付きMulti-Producer Mulit-Consumer QueueをD言語で実装してみた。 https://github.com/kubo39/mpmcqueue このQueueはatomicなread/writeとCAS(当然この操作もatomicだ)のみで操作が行われてい…