kubo39's blog

ただの雑記です。

2019-01-01から1年間の記事一覧

opamでnumのインストールに失敗してcoqが入らなかったのでocamlfind removeで解決した

opamでcoqをインストールしようとすると以下のようなエラーになった。 $ opam --version 2.0.5 $ opam list # Packages matching: installed # Name # Installed # Synopsis base-bigarray base base-threads base base-unix base camlp5 7.10 Preprocessor-…

LDCにおいてもはや必要なくなったcopy-relocation checkのためのワークアラウンドを消した話

LDCのバグで困っている、というので調査をしてみた。 調べてみると、どうもこれはLDCで実行バイナリを生成する場合(より正確にはmain関数を定義している場合)のみ行われるcopy-relocation checkのために必要とされるようだ。 なんでcopy-relocation checkが…

DMDのDWARFが2019年でまだv3だった

ふと、DMDが生成するデバッグ情報を調べていたところDMDはDWARF v3でデバッグ情報を付与するようだ。 DMDのバージョンは2.089.0を使っている。 $ dmd --version DMD64 D Compiler v2.089.0 Copyright (C) 1999-2019 by The D Language Foundation, All Right…

山陰のうまい飯 2019年

前回の帰省のタイミングでアップデート。松江・米子近郊。 松江 山美世(うなぎ) おすすめ度: 9/10 値段: やや高め 今松江近辺で一番美味しいうなぎはここ。 ちょっと立地がわるいかも、米子空港からは近い。 うなぎの名店は他に「いずも」や「おおはかや」な…

ずっとdruntimeのベンチマークのコンパイルがリンカエラーで落ち続けてる

最近ちっともDMDのビルドがうまくいかない。 ホストのコンパイラとしてDMD 2.087.1にパスを通した状態で、全部(dmd,druntime,phobos)のレポジトリに make -f posix.mak clean をかけた状態でmasterを更新してdmdで make -f posix.mak -j4、 phobosでも make …

いまさらマンデルブロー集合を書くので、なるべく型安全っぽくを意識した

プログラミングRustをちらちら読んでいたら並列化の例としてあったので、いまさらマンデルブロー集合を実装した。 元のコードがRustなのでなるべく型安全な感じに書いてみたつもり。 他の言語でfind相当のものがcountUntilという名前で、findは別の操作を行…

zshを自前でビルドして使う

zsh

zshにパッチあてて使ってるんだけど、ビルド方法とか一応メモしておく。 zshのビルドは楽にできる、まあ今回の作業では必要なかったのだけれど。 $ apt install -y yodl # 依存ライブラリ, あとPerlとかも必要 $ ./Util/preconfig $ ./configure $ make パッ…

jailingをD言語にポーティング、やってみた!

kazuho/jailing をD言語に置き換えてみました。 これです。 目的 実用的にはLinuxであればどの環境でもPerl5が入っていることは期待できるし外部依存もないので特に意義はないです。 あくまで学習目的というやつです。コードサイズも小さいし、いいかなって…

ベイルート・ロンドン・リバプール旅行記

3/25~4/2でベイルート(レバノン)、ロンドン・リバプール(イギリス)旅行に行っていたので雑に記録を残しておく ベイルート 直行便がないのでフランクフルト経由。フランクフルトのラウンジで食べたパン・ソーセージとビールがこの旅で一番うまかった可能性が…

けものフレンズ2を総括する

人にはそれぞれの感想がある、これは自分のために整理するくらいの意味合い よかったところ ゴマちゃんことゴマすりクソバードがいいキャラだった フレンズのキャラデザがよかった ゴマすりクソバードとバンドウイルカがかわいかった ごまちゃんやチーターの…

argc = 0 でプロセスを動かす

DMDのコード内ではargcが0な環境を想定してコードが書かれているが、そういう環境は存在するのだろうか。 調べてみるとわりとすぐにstackoverflowがみつかった。 c - executing a process with argc=0 - Stack Overflow posix_spawnを使えばできるようなので…

Isabelleちょっとやってます、という近況報告?

ここ最近Isabelleを触っている。 Coqと比べると日本語の資料が少ないのでつらい。 とりあえずいろいろわからないことが出てきたので並べてみる。 2以上の自然数を扱うと簡約できない 例としてmap関数を定義する。 fun map :: "('a \<Rightarrow> 'b) \<Rightarrow> 'a list \<Rightarrow> 'b list</rightarrow></rightarrow></rightarrow>…

小ネタ: safe functionとcast function of null

おなじみ(?), safe functionを考えてみようの会です. 突然ですが, 以下のコードは合法でしょうか? void main() @safe { (cast(void function() @safe) null)(); } 結果はおおかた予想がつくとは思いますが、Segmentation Faultになります。 (dmd-2.084.0)$ …

scope parameter storage class と in parameter storage class

(2019/02/07; いくつか追記したのでそちらのほうもみてください) 現在の最新版コンパイラ(DMD 2.084.0)だと, このコードはSEGVで落ちてしまう. auto foo(scope void delegate() @safe dg) @safe { return dg; } auto bar(void delegate() @safe dg) @safe …

DMDでprofileオプションを使ったときだけスタックオーバーフローする不思議なバグの調査

なんかおもしろいコンパイラのバグに遭遇したのでめも。 もともとはpeggedを使ったプロジェクトで dub build --build=profile でビルドしたバイナリを実行するとSEGVに遭遇するんだけど・・・、という問題だった。 とりあえずgdbにかけてみると >>> bt 10 #0…

C言語のmainでめちゃくちゃできる、ってネタみたけど別にDでもできるよな。 main is usually a function はでないけど。 extern (C) void main() pure nothrow @nogc { asm pure nothrow @nogc { naked; db 0x31; db 0xC0; // xor EAX, EAX; db 0xFF; db 0xC…