C言語の FastCGI に続いて、次は D言語版。
D言語版と言っても、使用しているライブラリは、C言語で使った libfcgi なので、C言語版と差はありません。
今回使用した libfcgi 以外にも、D言語ネイティブな FastCGI ライブラリもあるようなのですが、tango の方がずいぶんと新しくなってしまったことで使えませんでした。
しょうがないので、libfcgi-dev にあったヘッダを htod で変換できるように手を入れ、さらに変換された .d ファイルもコンパイルが通るように手を入れてあります。
こいつを dmd の -I オプションで import できる位置に配置してあげれば libfcgi ライブラリを D言語から使用できるようになります。
てなわけで、D言語版 FastCGI プログラムサンプルを以下に。
import com.fastcgi.fcgi_stdio;
void main() {
while (FCGI_Accept() >= 0) {
printf("Content-Type: text/plain; charset=UTF-8\r\n\r\n");
printf("Hello World!");
}
}
tango 版でコンパイルする分には問題ないようですが、なぜか phobos 版では、printf がコンフリクトを起こすみたいです。phobos 版だと以下のようにしてあげてください。
import com.fastcgi.fcgi_stdio;
void main() {
while (FCGI_Accept() >= 0) {
com.fastcgi.fcgi_stdio.printf("Content-Type: text/plain; charset=UTF-8\r\n\r\n");
com.fastcgi.fcgi_stdio.printf("Hello World!");
}
}
処理速度を計測すると、ごくわずかではありますが、C言語版より遅い(計測誤差の範囲?)結果が出てきます。
