2020-01-01から1年間の記事一覧
コードを読んでもとくにサイズ上限が規定されていなかったので実験した。 環境(mysql-nativeのバージョン) $ cat dub.selections.json| grep mysql-native "mysql-native": "3.0.0", 以下のようにmax_allowed_packetや受信サイズを調整して試した結果、max_a…
最近はMySQLを触っている中で、なにかしらメモを残しておくかという気分になった。 mysql-nativeにはbulk insert用のサポートがあるわけではないが、メタプログラミングでコンパイル時にクエリをある程度生成できたりすると便利だなあと思うなどした。 環境 …
D言語のtraitsのうちいくつか簡単に実装できそうなものを表現してみた。 といっても非常に不完全な状態であるが。 SWI-Prologを使ったが、他の実装でもおそらく問題ない。 $ swipl --version SWI-Prolog version 7.6.4 for amd64 ソースコードは以下のような…
D言語はIdentifierとしてUnicode Codepointを使うことができる。 identifierの定義 character setの定義 (直接的に定義されていないが、Letterはcharacter setで表現可能である文字と推測できる) 従って、以下のようなコードを書くことができる。 void ほげ(…
D言語でもRISC-Vやりたいんだが…? ← できた。そういう話です。 準備 LDCのバージョンは以下のもの。自前ビルドしてる人はRISC-V向けにしてることと、RISC-VはLLVM 9.0.0以降で公式にサポートされていることに注意されたい。 $ ldc2 --version | head -2 LDC…
(追記: なんやかんやでWASI Tutorialまでできるようになった: https://github.com/kubo39/ldc-wasi-tutorial ) はじめて記事書くな、17です(威圧)。 これにだいたい参加しています。 雑にWASIをwasmtimeで動かせないかな、と試すやつをやりました。 まずWA…
relroはすでにけっこう有名だけど、はわりとこのへんの話は知られていない気がしてきた。 relro relro、すなわちrelocation read onlyは再配置情報を格納している領域を読み取り専用にして実行時に書き換えられないようにすることだ。 そもそも再配置(リロケ…
とくになにかあるわけじゃなくてSharedObjectsの使い方の備忘録として。まあこういうのドキュメントないので。。 SharedObjectsというのはLinuxでだけ使えるやつで、実行プログラムがロードしている共有ライブラリを取得するために使うものである。 ようは d…
これ https://github.com/dlang/dmd/pull/11049 単にtraits.dを修正するだけではだめだった、というのはlive関数属性は名前修飾の定義も実装もされていなかったので、typeof内で普通の関数と区別されていなかったのである。 具体的に言うと以下のようになっ…
以前挑戦してだめだった vulkan 利用、実はIntel HD用のパッケージを入れればいけるのでは?となったので試す。 $ sudo apt install -y mesa-vulkan-drivers おお、どうやら動いたっぽい。 $ dub run :devices Performing "debug" build using /home/kubo39/…
【2020.04.08追記】 dlsが非推奨になったので以下の内容はすべて古くなってしまいました。なんてこった。。 https://forum.dlang.org/post/usqhsdtwfhrterzpstst@forum.dlang.org 注意: この内容はもう古いです。 またまたemacsのD言語環境をいじってLSP仕様…
たとえば自前で pragma(crt_constructor) とか使った場合にどういう順で実行されるんだろう、とか。 こういうコードを用意して、 enum body = "import std.stdio;writeln(__PRETTY_FUNCTION__);"; pragma(crt_constructor) extern (C) void crt_constructor(…
あらすじ ある日のこと、Travis上のプロジェクトがdub使ってるとSEGVで落ちる、というチケットが。さらにスレッドが進み、どうもいろいろなパッケージで同様の問題が起きているとのこと。 LinuxでしかおきないぞとかdubでParallel GC(注:mark&sweep gcのmark…
つらい話です、というかただの愚痴です。 D言語のOpenSSLバインディングとしては D-Programming-Deimos/openssl があるのですが、メンテナンスが行き届いているとは言い難い状態です。 それ以外にもいくつか問題があって、 新しめのAPIへの対応が追従できて…
LLVMはlibFuzzerというFuzzingの仕組みがあって、LDCからその機能を使うことができる。 こういうコードで試してみる。LDCは1.19.0。 import ldc.libfuzzer; import std.string; mixin DefineTestOneInput!fuzz_target; int fuzz_target(in ubyte[] data) { i…