タグ

ブックマーク / shinh.hatenablog.com (9)

  • MJIT で dlopen 使わずに ELF オブジェクトを直接ロードする話 - 兼雑記

    MJIT というのが Ruby に入ったのは聞いていて、すごいことするな、と思ってたんですが、実際に Ruby Kaigi で話を聞けて少し遊んでみたくなったのでした。そういえば https://turingcomplete.fm/5 の時に「MJITについてどう思うか聞いておいて下さい」とかリクエストしておいたのに聞いてくれなかったのであった。 https://k0kubun.hatenablog.com/entry/ruby26-jit すごいことするな、と思ったのはその手法で、 C 生成して dlopen という、よく雑談とかで言う話ではあるけど、実際広く使われる用途で使われたのは見たことが無かった(ICFPCとかでは見たことがある)ので、すごいなと。 一方で、 dlopen たくさんすると、いくつかの意味でオーバヘッドがかかると思われるため、あとでマイクロベンチに出ないところで大変

    MJIT で dlopen 使わずに ELF オブジェクトを直接ロードする話 - 兼雑記
    nurse
    nurse 2024/02/01
  • PEP 703 - 兼雑記

    https://peps.python.org/pep-0703/ Python の GIL 外す話。これすごく楽しい読みものでした。参照カウントのところが一番人気だと思うのですが、他のところも色々良い。こういう、「んーこういうことするとこういう問題が起きない?」と思ったら次の章くらいでそれが説明される、みたいな読みものは大変好きです 参照カウント: オブジェクトっていうのは作ったスレッドが解放するというのがほとんどなんだから、その場合はロックをいらなくする、他に渡ったら普通の参照カウントぽくする、という話。 Swift に 2018 年に導入された 話らしい。他のスレッドに渡された後で DECREF すると他スレッド用の参照カウントが負になりうるのだけど、その時に queue に入れるということをして、ややこしいので、なんかこれ無しですむ方法はないのかなぁ……と Immortalize

    PEP 703 - 兼雑記
    nurse
    nurse 2023/08/27
  • 2010-06-12

    このプレゼンで紹介した tgmath.h の実装が素晴らしいという話なんですが、資料は口頭で説明する前提すぎて、イマイチ詳しくないので別に書いておこうかなぁと思います。これは C で型計算やってると言えると思うのでなかなかなもんなのです。 そもそも tgmath.h というヘッダが何かと言うと、 Type-generic math の略で、 C99 の PDF の 7.22 に書いてあります。ちなみにたぶん私はこの PDF を参照してます。 http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf 書いてあることは以下 4 点: tgmath.h を #include すると math.h と complex.h も #include されて type-generic なマクロを定義しまっせ sinf やら sinl みたいなのじゃ

    2010-06-12
  • 就職して9年が過ぎる - 兼雑記

    転職して7年が過ぎたというのを読んで気づいたんだけど、そろそろ入社後9年が経過したらしい。僕は結構長い期間をここで過ごしたことになるんだなと思った。ちょっと以前のことを振り返ってみようと思う。言うまでもないけどこれは僕の書ける範囲での個人的な感想と体験談であって会社の見解等を表しているものではない。 きっかけ わりと重要でない Borgチーム (の周辺) いつのまにやらBorgという名前を普通に言って良くなっている。嬉しい。まあ当時もぶっちゃけ、秘密だから出してないっていうよりは、単に誰もアカデミア的なキャリアに興味が無いから出してなかったんだと思う(私見)。 さて、当時Borgというかクラスタマネージメントのあたりでは、コンピュータのリソースて適当にたくさん使ってるけど、これ節約したらすっげー支出減ったりしない?みたいなのがホットで、なんかとりあえず色々な人々が色んなことをやっていた。い

    就職して9年が過ぎる - 兼雑記
    nurse
    nurse 2016/03/11
  • 正規表現の文字クラス - 兼雑記

    Perl は正規表現とか " ではさまれた文字列の中にある変数とか配列を展開してくれるんですが、これは明らかに正規表現の文字クラス ([abc] とか書くヤツ) とブツかるわけです。 以下のコードは @a に 0-999 まで "x" っていう変数をつっこんでから s/$a[...]/y/; 的なことを実行して、 $_ に入ってる x を y に変えようとするコードをいくつか。 #!/usr/bin/env perl for ($i=0; $i < 999; $i++) { $a[$i] = "x"; } $_ = "x"; s/$a[12]/y/; print "12: $_\n"; $_ = "x"; s/$a[123]/y/; print "123: $_\n"; $_ = "x"; s/$a[-2]/y/; print "-2: $_\n"; $_ = "x"; s/$a[-22]

    正規表現の文字クラス - 兼雑記
    nurse
    nurse 2015/11/10
  • ARM にゅうもん - 兼雑記

    例のごとく、書かないと覚えられません。 参考文献 日語命令セット: http://www.ced.is.utsunomiya-u.ac.jp/lecture/2013/aca/ARMjp-vH.pdf コンパイラのマニュアルらしいけど概要的に便利なやつ: http://infocenter.arm.com/help/topic/com.arm.doc.dui0056d/DUI0056.pdf registers r0 から r3 は caller save なレジスタで引数に使う。 r4-r11 はたぶん普通は callee save 。 r12 は別名 ip 。 r12 は ARM Thumb の切り替え時に必要なら使うらしい…が、ぱっと見短い R_ARM_CALL なら使わない気もする。まぁいずれにせよ caller save r13 は sp 。 r14 は lr で bl か b

    ARM にゅうもん - 兼雑記
    nurse
    nurse 2015/03/17
  • static link について - 兼雑記

    案外、 static link ってわかってないもんです。というかリンカってわかってないもんです。そして案外はまるものです。以下のクイズに答えられるでしょうか。 クイズ1 $ nm main.o # int main() {} 0000000000000000 T main $ nm foo.a # void foo() { bar(); } void baz() {} foo.o: U bar 0000000000000010 T baz 0000000000000000 T foo $ nm bar.a # void bar() {} void baz() {} bar.o: 0000000000000000 T bar 0000000000000006 T baz $ gcc main.o foo.a bar.a最後のコマンドで、何が起きますか? 普通にリンクできる undefine

    static link について - 兼雑記
    nurse
    nurse 2014/10/04
  • 中二病と三大美徳とプロプログラマ - 2010-10-07 - 兼雑記

    プログラマに取って重要な能力というか気質として、中二病というのがあるんじゃないかなーとかふと思ったのだった。 なんかちょっとしたことを達成した時に、「おおなんてこったオレすげー!!やばいオレ新世界の神だ!!!」みたいなことを思ったことがある人は結構いると思うわけです。まぁ数年、一年、一ヶ月、時には一日で実はそんなにたいしたことでもなかったことに気付いて、恥ずかしい思いをしたりするわけです。だから自分の過去の日記とか見るのは面白いわけです。 でまぁこの気質って、後で考えると恥ずかしいことだったりするんだけど、しかしこの喜びを味わった瞬間というのはなかなか快感なもんで、プログラマの人だと結構こういう経験がある人は多いんじゃないかと思います。プログラマじゃなくても研究職とかでも結構ありそうですね。 で、こういう気質が無い人って、「あっそう Hello, world! って出たね、あっそうテトリス

    中二病と三大美徳とプロプログラマ - 2010-10-07 - 兼雑記
    nurse
    nurse 2012/01/11
  • raw_write.h - 兼雑記

    よく、 libc の関数呼べるかどうかはあやしい部分を printf デバッグしたいことがあると思います。あるんですよ! そういう時にシステムコールってどう呼ぶんだっけ…みたいなことを調べたり、ええと数字を出力したい…とかいうのは結構かったるいので、 #include するだけで使えるライブラリを書いてみました。 for linux 。 https://github.com/shinh/test/blob/master/raw_write.h 使いかたはテストの方を見てください。要は RAW_PRINT_STR, RAW_PRINT_INT, RAW_PRINT_PTR とかが print で、 RAW_PUTS_STR, RAW_PUTS_INT, RAW_PUTS_PTR とかが改行つきです。 https://github.com/shinh/test/blob/master/raw_

    raw_write.h - 兼雑記
    nurse
    nurse 2010/12/29
    次シグナル絡みとかで困ったときに使う
  • 1