ハック PowerNex
スウェーデンの兄ちゃんが目下開発中の OS がある。その名は PowerNex、もちろん D 言語製である。ユーザ空間のアプリケーションが書けるようになり、コマンドラインシェルを中心として、ちょっとしたデモが標準搭載されている。
OS があってコンソールがあるなら、D 言語くん AA を降臨させようとするのが人情というもの。Advent Calendar だけに。
Advent of D-man
ただコンソールに表示させるだけならば、ユーザ空間の Hello world プログラムを参考にすれば容易に可能だ。注意が必要なのは Phobos は移植されていないということだ。独自のユーティリティライブラリとシステムコールはそれなりに用意されているし、object.d もそれなりに移植されているようなので、ちょっとした遊びには困らない。
PowerNex でも D 言語くんが通り過ぎる
さて、D 言語くんを降臨させたら、動かしたくなるのが世の常だ。そこで、dl コマンドを移植することにした。
このためには ANSI エスケープコードをコンソールが解釈する必要があり、それはカーネル側に実装する必要があったので、下のページを参考に、パーサを書いて使うことにした。
例によって Phobos はないもの、カーネル自体がクラスを多用しているため、クラスをゴリゴリ使えるような object.d が最低限用意されているのが強い。配列や連想配列でうぉりゃーとしようとするとリンカに怒られたりするが。そんなこんなで、それなりのエスケープコードを使えるようになったコンソールのデモがこれだ。
Does PowerNex dream of ANSI escape codes? Ya, I've landed my parser partially on PowerNex's console! #dlang pic.twitter.com/zTrxbJ1Lgi
— えれ (@e10s) 2016年11月12日
これは最初期の状況で、今は各種エスケープコードに対応できるようにハックを続けている。GitHub に作業中のリポジトリがあるのである。この記事を書いている時点では D 言語くんプログラムをコミットしていないが。
〆
普通の OS で動く普通の超高級な D 言語プログラムに飽きたときは、変な環境向けの処理を書くと新鮮な気持ちを D 言語くんが届けてくれる気がする。
どっちかっつーと、D 言語くん Advent Calendar 向きの記事になってしまった。