kubo39's blog

ただの雑記です。

Nim

Nimと名前修飾の小ネタ

Nim

NimはDWARF v5の時点では DW_AT_language の割当はないけど、ソースコードはDWARFに入れることが できて $ eu-readelf --debug-dump=info hello とかで確認できる。 proc main() = echo "Hello!" main() $ nim c --debugger:native hello.nim (...) $ file h…

プロセス起動でposix_spawnとかvforkとかを使うはなし

posix_spawn/vfork/clone(CLONE_VFORK) はメモリを共有するので速い. 速いが、親子でメモリを共有するので危険である. それでも速いのでプロセス起動で気をつけて使っている言語があり、どういう実装をしているか調べた. 前提 fork-exec間はasync-singal-saf…

nimのiterator実装

Nim

ちょっと気になって調べてみた。 結果としては、nimのiteratorはPythonのgeneratorのように状態を持ったVMのスタックフレームのコピー/リストアによって実現している。 Frameのpush/popのコードはこのあたり。 https://github.com/Araq/Nim/blob/ccb9ae2d52c…

emacsでnimを使う設定

めも。特別なことはしていない。 M-x package-install で nim-mode とac-nim を入れて、 inite.elに (eval-after-load 'nim-mode '(add-hook 'nim-mode-hook 'ac-nim-enable)) を追記しているだけです。

nimでsegv

Nim

2パターンで。 パターン1 コード1: import sequtils var x = cast[string](@[1, 2, 3, 4, 5]) 出力1: % $HOME/Nim/bin/nim -version Nim Compiler Version 0.11.2 (2015-05-20) [Linux: amd64] Copyright (c) 2006-2015 by Andreas Rumpf git hash: 45…

nimのcast[string]がバグってるぽい件

Nim

再現コード import unsigned, sequtils echo cast[string](newSeq[uint8](10).mapIt(string, $(it))) 出力結果がランダムに変わってるけど、この挙動はおかしいのではなかろうか。 ( ՞ਊ ՞) :~/dev/nim $ nim -version Nim Compiler Version 0.11.2 (2015-05-…