Phobos ランタイムライブラリ
Phobos は、D言語のコンパイラに付属する標準ランタイムライブラリです。
PhobosのWiki
も合わせてご覧下さい。
設計方針
Phobosのどのモジュールも、
できる限り次の目標に適合するように書かれています。
ここに上げる項目は要求ではなく、あくまで目標です。
Dは宗教ではなくプログラミング言語ですから、時には、
定めたゴールが矛盾していたり非生産的になる場合があることを認識しています。
そして、
そんな時でもプログラマは仕事を進めないといけません。
- マシン・OS 非依存なインターフェイス
- 移植性のないコードを理由もなく書くのは避けよう、
という標語は広く受け入れられています。これはしかし、
OSの一般的でない機能へのアクセスを防ぐべき、
と解釈するのは間違いです。
- 簡単な処理は簡単に
- byteの配列をファイルに書き出す、
と言ったよく使う簡単な処理は、
簡単なコードで書けるべきです。私は今まで一度も、基本的なファイル
I/O を簡単で効率的に実装したクラスライブラリを見たことがありません。
- クラスは互いに独立となるよう努力すべし
- ファイルからでデータを読んでbyteの配列に格納しようとしたら、
メガバイト級のコードが読み込まれた、
という事態は避けたいものです。
クラス間の独立はまた、一つのクラスのミスを修正する際に、
クラスライブラリの他の部分に影響を及ぼさずに済むことも意味しています。
- OSのAPI関数やCランタイムライブラリへの、意味のないラッパを含まない
- Dは
Cのライブラリ関数やOSのAPI関数へ直接アクセスする手段を提供しています。
意味のないDのラッパは、
単にムダとゴミとバグを増やすだけです。
- クラスの実装にはDBCを使う
- これによって DBC (契約プログラミング) の価値を証明します。
DBCはクラスのデバッグの補助となるだけでなく、
ユーザーの皆さんが正しくクラスを使うための助けにもなります。
DBCは、クラスライブラリに対する偉大な力です。
- エラー処理には例外を使う
- エラー処理 参照のこと。
パッケージ一覧
実行時ライブラリは
import 文によってimportできます。
おのおの、
以下のパッケージのどれか一つに属しています:
- std
- 中核となるモジュール群です。
- std.windows
- Windows に特有のモジュール。
- std.linux
- Linux に特有のモジュール。
- std.c
- Cの関数への単純なインターフェイスモジュール。
例えば、標準Cライブラリ関数へのインターフェイスは std.c
の中に入ることになります。std.c.stdio が C の stdio.h
と対応します。
- std.c.windows
- Windows API 関数に対応するモジュールです。
- std.c.linux
- Linux API 関数に対応するモジュールです。
- etc
- std階層と同じ構造のモジュール階層のルートです。
etcモジュールの中身はDの標準モジュールではありません。ここにあるモジュールは、
実験中であるとか、stdに置けるほどには安定していないけれど役に立つ
などの理由でここに置かれています。
std: 中核ライブラリモジュール
- std.base64
- Base64 形式のエンコード/デコード
- std.bigint
- 任意精度整数演算
- std.bind
- 関数引数の部分束縛"
- std.bitarray
- Bit配列
- std.boxer
- 型のboxing/unboxing
- std.compiler
- Dコンパイラの実装に関する情報
- std.conv
- 文字列から整数への変換
- std.ctype
- 文字の簡単な分類
- std.date
- 日付と時刻に関する関数。ロケールに対応。
- std.file
- read, write, append などの基本的なファイル操作
- std.format
- 値を書式指定しながら文字列へ変換
- std.gc
- ガベージコレクタの制御
- std.intrinsic
- コンパイラの組み込み関数
- std.math
- 通常使われる数学関数 sin, cos, atan など全て
- std.md5
- MD5 ダイジェストの計算
- std.mmfile
- メモリマップド・ファイル
- object
- オブジェクトの継承階層のルートクラス
- std.outbuffer
- データをbyteの配列へと集積
- std.path
- ファイル名、パス名の処理
- std.process
- スレッドの生成/破棄
- std.random
- 乱数生成
- std.regexp
- 正規表現処理関数
- std.socket
- ソケット。
- std.socketstream
- 接続済みのブロッキングソケットのためのストリーム。
- std.stdint
- 目的に応じた様々な整数型の定義
- std.stdio
- 標準入出力
- std.cstream
- ストリーム入出力
- std.stream
- ストリーム入出力
- std.string
- 配列演算でカバーされない、文字列処理
- std.system
- CPUやOSに関する情報問い合わせ
- std.thread
- スレッド毎に1つが対応する。スレッドに関する操作
- std.uri
- URI(Uniform Resource Identifier)エンコード/デコード
- std.utf
- UTF文字列のエンコード/デコード
- std.zip
- zipファイルの読み書き
- std.zlib
- データの圧縮/伸張
std.windows: Windows OS 特有のモジュール
- std.windows.syserror
- Windowsのエラーコードを文字列に変換します
std.linux: Linux OS 特有のモジュール
- std.c.stdio
- printf() のような、C の stdio 関数へのインターフェイス
- std.c.windows.windows
- Windows API へのインターフェイス
- std.c.linux.linux
- Linux API へのインターフェイス
std.c.stdio
- int printf(char* format, ...)
- C の printf() 関数