kubo39's blog

ただの雑記です。

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

jemallocator/tikv-jemallocatorのdisable_initial_exec_tlsってなに?

GitHubでよくjemallocatorを使っているときにdisable_initial_exec_tls featureを有効にしているのをみかける。 これはなにかという話をする前に、TLSモデルについて知っておく必要がある。 TLSにはアクセスモデルというものがあり、モジュールの種類(実行バ…

preExecFunctionのはなし

preExecFunctionとはなにか preExecFunctionはspawnProcessでfork-execのあいだに行う任意の処理を記述するためにある。 import std.process; import std.stdio; void main() { Config config = { preExecFunction: () nothrow @nogc @trusted { import core…

Is it safe in safe cast in safe functions?

safe functionの定義 より、 The following operations are not allowed in safe functions: * No casting from a pointer type to any type with pointers other than void*. void*を除く異なるポインタ型へのキャストは@safe関数内では禁止されている、と…

浮動小数点数の10進表記についてまとめてみた

リソースをまとめたのみで、これといってアルゴリズムを解説しているわけではない。 後々時間をみつけて気になったものは記事化するかもしれない(しないかもしれない)。 はじめに 以下の前提をおく。 IEEE754準拠 IEEE 754-2008 IEEE754とかなにかというのは…

タプル型をキャストしたときに型変換が走らない話

連日のキャストとタプル型ネタです。 現行のD言語の驚くべき振る舞いの一つとして、タプル型をキャストにより変換した際に指定した型への変換が行われないということがある。 動作確認を行ったコンパイラのバージョンは以下。 )$ dmd --version DMD64 D Comp…

小ネタ: D言語はいかなる型もタプル型へのキャストはできない

いかなる型であってもできない。これはタプル型そのものの値であっても例外ではない。 void main() { alias tuple(A...) = A; tuple!int tup; cast(tuple!int) tup; } (dmd-2.098.1)$ dmd -c cast.d cast.d(5): Error: cannot cast `__tup_field_0` to tuple…