[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[FDclone-users:00979] Prerelease info. for FD-3.00l



 しらいです。

 ようやく code freeze に入ったので FD-3.00l のリリース予告
をしておきます。


 実はここ二カ月程 Android 対応をしていまして、そういったモ
バイル向け環境の充実を図っていました。前回リリース直後のバグ
報告が放置状態だったのもこの作業中だったせいです。
 Android と言っても所詮は Linux なのですぐ済むとタカを括っ
てたんですが、予想以上に手間取りまして、こんなに時間が掛かっ
てしまいました。申し訳ない。

 一番の元凶は bionic です。bionic とは Android 用の libc の
ことで、一般的な Linux が用いる glibc とは異なり、BSD 由来の
全く別の libc が採用されています。
 違うだけならいいのですが、この bionic 何が困るかと言うと、
中身の実装されていない library 関数が山ほどあるんですよ。実
行すると機能しないでエラーを吐きます。
 機能が無いだけなら MINIX でも経験済なんですが、bionic の場
合は関数だけあって中身が無い点が困るんです。compile は普通に
通っちゃいますから。
 なので、個々の関数を実際に呼び出す操作を行なって初めて、そ
の機能が実装されていないことに気づかされるんです。これは洗い
出しが一苦労です。と言うか嫌がらせでしかないでしょ。

 ともあれ、何とか全バージョンの Android 環境に対応出来たと
思います。実機では 4.0 しか動作検証していませんが、emulator
や cross 環境では 1.6 から動いてます。
 Web 検索してみると、既に挑戦した人が何人かいたみたいなんで
すが、難なく成功しているみたいで不思議ですね。作者自身がこん
なに苦労してるのに。
 機能的に致命的なのは、マウント情報とユーザ管理の二点ですね。
マウント情報の方は無理矢理 /proc/mounts を読んで逃げましたが
ユーザ管理はどうしようもありません。
 そもそも Android ではユーザが動的に生成されるんで、ユーザ
やグループの一覧が存在しないんですよ。builtin の uid/gid 以
外は全て自動生成によるものです。
 ま、「~」の補完が効かないとか chown() 時に候補が出ないとか
いった程度の弊害なので無視出来る範囲ではありますが。

 そもそも Android でのニーズがあることが良く理解出来てない
ので、また無駄な対応をしてしまったかも知れません。似たような
環境でも iOS の方は誰も挑戦してないようなのに。
 因みに iOS 対応は考えてません。うちの Mac OS X は Leopard
なんで Xcode が古過ぎて iOS SDK が動きません。中身は OS X と
同じ Darwin なので対応可能だとは思うんですが。


 あと、MINIX 3.2 対応もしてあります。3.1 -> 3.2 で使える関
数が増えたので、3.1 での制限が幾らか緩和されました。

 cc が gcc -> LLVM Clang、libc が glibc -> NetBSD libc と変
更になり、結構別物になってしまったんですが、自動判別の術が無
くて苦労しました。
 一応 OS_VERSION という pre-defined な識別子はあるんですが、
これが数値じゃなくて文字列なもんで、pre-processor で引っ掛け
られないんですよね。
 色々探したら、3.2 からバージョン管理が SVN -> VCS と変更に
なっているので、_VCS_REVISION という識別子の有無で判別してい
るんですが、どうにも無理矢理感が強くてしっくり来ません。
 Tanenbaum 先生も老いたんでしょうね。MINIX 3 には殆んど関与
してないそうで、御大が監修してたらこんな不親切な設計は許して
なかったでしょうに。
 他にも glibc のバグで <signal.h> が include 出来ないとか、
全然 stable でない状況を許してしまってます。minix3.org も落
ちてること多いし。いい歳だし静かに引退させてあげた方が...。

 結局 MINIX って何だったんでしょうね。メリットと言えば同一
architecture 上での馬鹿みたいな軽さなんですが、世の主流は OS
の重たさをハードでカバーする方向ですし。
 そんな Wintel の悪習に一石を投じる存在として期待してみたこ
ともあったんですが、Tanenbaum 先生には特に哲学がある訳ではな
さそうなので、このまま存在意義を無くして消え去るのみかも。


 他にも幾つか仕様変更にならない範囲での要望を実装しています。
UTF-8 を既定値にしたいとか、*.tbl を埋込みにしたいとか、まぁ
色々 Google 先生に照会した結果を反映させてます。
 これらはコンパイル時に静的制御可能なので、仕様変更を伴わな
いんですが、そうでない要望に関しては revision up ではなくて
minor version up での対応を検討中です。
 3.00l release 後に 3.01 の開発に着手し、そこでは幾つかの設
定用変数を追加する予定ですので、何かリクエストのある方は今が
チャンスですよ。

                                               しらい たかし