D言語/インストールおよび実行方法

D言語の処理系には、2022年7月現在以下の3つがあります。

  1. DMD - Digital Mars D compiler は、Walter Bright 氏によるの D コンパイラーのリファレンス実装で、w:Boost Software License の下でオープンソース化されています。 DMD フロントエンドは GCC と LDC で共有されており、コンパイラー間の互換性を高めるために使用されています。かつてはC++で記述されていましたが、現在はフルセルフホスト化されています。
    公式サイト - https://dlang.org/
    公式リポジトリー - https://github.com/dlang/dmd
  2. GCC - The GNU Compiler Collection は、Free Software foundation により、GNU General Public Licenseの下でオープンソースで公開されるマルチプラットフォーム多言語処理系で、2018年10月29日にGDCがGCC 9にマージされました。
    公式サイト - https://gcc.gnu.org/
    公式リポジトリー - https://gcc.gnu.org/git/gcc.git
  3. LDC - The LLVM-based D Compiler は、DMDフロントエンドをベースにしたコンパイラーで、コンパイラーインフラストラクチャーとバックエンドとしてLLVMを使用します。最初のリリース品質のバージョンは2009年1月9日に公開されました。
    公式サイト - http://wiki.dlang.org/LDC
    公式リポジトリー - https://github.com/ldc-developers/ldc

インストール方法編集

Winowsでは、D言語の開発元のDigitalMarsが配布しているコンパイラであるDMDをインストールするのがラクです。

Linuxでは、もしGnome系のデスクトップ環境を使っているなら、GCC(GNU Compiler Collection)を D言語用に拡張したコンパイラである gcc-gdc をインストールするのがラクです。 gcc-gdc は略して「gdc」とも呼びます。GNUとは、主にオープンソース関連のアプリケーションを開発しているコミュニティのひとつです。

gcc および gdc は、DMDとは別のコンパイラですので、混同しないように。gcc の開発元である GNU は、D言語以外の他の多くのプログラム言語のコンパイラも開発しています。


DMDのダウンロード/インストール編集

D言語の公式ホームページから環境に合わせてインストーラ、あるいはzipファイル等をダウンロードしてください。


Windows版もLinux版も存在します。

ですが、Windows版の場合、日本語対応が不十分で、文字化けが起こります。

なので、英語だけでWindows版D言語を使うか、あるいは日本語を表示したいならLinux版を使うと良いでしょう。


Windows版の場合、コマンドプロンプトからD言語を使えるようにするため、D言語インストーラーに出てくる「DMC」にもチェックを入れて、DMCを追加インストールしてください。

インストールの設定時、DMD動作環境として MinGWを使うか、Visual Studio を使うかを聞かれます。初心者には MinGW のほうが設定がラクでしょう。(Visual Stuido は設定が複雑だったり、アカウント登録が必要だったりと、なにかとメンドウです。)


さて、DMDがインストールが出来たら

rdmd -v

でバージョン確認します。

rdmd build 20200611
Usage: rdmd [RDMD AND DMD OPTIONS]... program [PROGRAM OPTIONS]...
Builds (with dependents) and runs a D program.
Example: rdmd -release myprog --myprogparm 5
(後略)

のように、表示されます。


gdcをインストールする場合編集

OS が Fedora Linux の場合なら、コマンド

sudo dnf install gcc-gdc

または

sudo dnf install gdc

でインストールできます。

バージョン確認

インストールに成功したと思ったら、動作確認を兼ねてバージョン表示をしてみましょう。コマンド

gdc --version

を実行すれば

gdc (GCC) 11.2.1 20210728 (Red Hat 11.2.1-1)
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

のように表示されます。

ldc と dlang-tools編集

ldcは、LLVMをベースに開発されたD言語処理系です[1]。 dlang-toolsは、DMDとともに再配布されるツールや、様々なビルドタスクで内部的に使用される様々なツールで、単体でもリリースされています[2]

両方ともFreeBSDのPort Collectionに lang/ldc と lang/dlang-tools の名前でエントリーがあるので

pkg
# pkg install lang/ldc lang/dlang-tools
ports
# make -C /usr/ports/lang/ldc all install clean
# make -C /usr/ports/lang/dlang-tools all install clean

でインストールできます。

ldc のコマンド名は ldc2 です。バージョンを確認確認してみます(サポートターゲットの数が多すぎるので head で割愛しました)。

バージョン確認
% ldc2 --version | head
LDC - the LLVM D compiler (1.23.0):
  based on DMD v2.093.1 and LLVM 10.0.1
  built with LDC - the LLVM D compiler (0.17.6)
  Default target: x86_64-portbld-freebsd13.0
  Host CPU: cascadelake
  http://dlang.org - http://wiki.dlang.org/LDC

  Registered Targets:
    aarch64    - AArch64 (little endian)
    aarch64_32 - AArch64 (little endian ILP32)

dlang-toolsには、rdmdなどが含まれているので

バージョン確認
% rdmd -v | head
rdmd build 20220408
Usage: rdmd [RDMD AND DMD OPTIONS]... program [PROGRAM OPTIONS]...
Builds (with dependents) and runs a D program.
Example: rdmd -release myprog --myprogparm 5

Any option to be passed to the compiler must occur before the program name. In
addition to compiler options, rdmd recognizes the following options:
  --build-only       just build the executable, don't run it
  --chatty           write compiler commands to stdout before executing them
  --compiler=comp    use the specified compiler (e.g. gdmd) instead of ldmd2
% cat hello.d
import std.stdio;

void main(){
  writeln("Hello world!");
}
$ rdmd hello
Hello world!

この様に、DMDを使っているのと変わらないコンパイル環境が用意できます。

実行の仕方編集

DMDで実行する場合と、gdcでインストールする場合とで、実行の方法が違います。

DMDの場合編集

コマンドプロンプトでカレントディレクトリを合わせた後

dmd 対象ファイル名.d
対象ファイル名.exe

でコンパイルと実行。もしくは

rdmd 対象ファイル名

の一行でコンパイルと同時に実行できます。

DMDとは、D言語の公式コンパイラです。

gdcの場合編集

コマンド

gdc ファイル名.d

です。

ファイル名を保存する際、ファイルの末尾に拡張子 d がついてないとエラーになりますので、コンパイルできません。なので、ファイル名はたとえば「test.d」や「hello.d」のような名称になります。

Linux の場合、特に出力ファイル名などを命名しなければ、「a.out」というファイル名になるので

./a.out

で実行できます。

※ 参考: Hello World編集

hello.d
import std.stdio;

void main()
{
    writeln("Hello World!");
}
※ 文法の解説については省略します(別ページで解説しています)。ファイル実行のチェックの際、実行するコードとして活用してください。

脚註編集

  1. ^ The LLVM-based D Compiler.
  2. ^ Ancillary tools for the D programming language compiler