CUJJ#9/'90.6.18 発売号掲載
USENIX という Unix のコンファレンスについて、このあいだまで書いていたと思っていたら、もう既に 6 月の USENIX の準備を開始しなければならなくなった。今回の USENIX のコンファレンスでは次のような GNU 関連の催しがある。
GNU BOF…GNU ソフトウェアを使っている人、興味がある人の集まりがある。「GNU's Bulletin」という小冊子も配布する。併せて、日本語に訳したもの「GNU ダイジェスト」も配布する。◆1
例によって、この英語版の作成にあたっては我々がどんなことを行なっているかを FSF 内のメーリング・リストに報告しておかなければならない。この報告に載せきれない情報は、加筆という形で「GNU ダイジェスト」版へ反映させていく。
もちろん英語版ができたらすみやかに日本語に訳し、日本に役立つ情報を更新して加筆もしなければならない。さらに、コピーを 300 部程度作成し、コンファレンス会場のパンフレット置き場の机の上に置くのである。だから時間が非常に限られている。
GNU C コンパイラのチュートリアル…FSF の社長である Richard M.Stallman が講師の gcc チュートリアルが開かれる。USENIX の講師は 2 度目である。前回もこの夏の USENIX での gcc であった。
先月までの説明では、GNU の歴史はまだ Richard M. Stallman の個人史の段階であったが、そろそろプロジェクト GNU を始めた経緯に触れよう。
これまでの社会的事件の中で、これは歴史に残るに違いないと事件発生当時に感じたのものは、小さいころ (10〜20 年前、というと年がばれてしまうかな :-) ちなみにこの記号はスマイル・マーク、顔を横にして見ると納得がいくだろう。Unix の世界ではなじみの方も多いと思う) よりも最近の方が多く発生している気がする。例えば、冷戦の終結、東西両ドイツの併合などなど。昔の話で当時、歴史ものだと思った事件といえば、よしのぶちゃん事件に 3 億円事件、石油ショック、ちょっとローカルかもしれないが、仙台沖地震などである。
高校のころ (正確に言うと高専なのだが) いつもテストの間際になって思ったことがある。もう 1 週間テストが延長になれば結果は完璧なのに、といつも思ってテスト勉強していたものである。ところが、これまでに 1 度だけこの思いが天に通じたことがある。ドイツ語のテストの前日のことである。夕方の 5 時ごろ、テストに備えて仮眠をとっていたときに地震が起きた。本棚の本が落ち、ロッカーの上の荷物が崩れてくるほど大きなものである。もちろん停電、仙台市の市街地の方では心なしか煙が上がっている。学生はというと、テスト勉強に備えて町にさっそくろうそくの買い出しに出かけた。もしかしたら、テストが延期になるかもしれないとも考えたが、その通知はまだ受けていないのでテストがあるものとして、ろうそくのもとで試験勉強をしなければならない。その時に町に出かけた人の話によれば、石垣が崩れていたところもあったそうな。校庭はひび割れし、学校の裏側では一部崖が崩れていた。
そのころの計算機端末として、よく使われていた Teletype 社の ASR 33 という若干頭でっかちの機械式電動テレタイプもひっくり返っていた。面白いことに、同じ大きさの同じくらいの重さの本棚が、方向によってひっくり返っているものとそうでないものがあった。おそらく地震の揺れの方向が関係しているのだろう。
結局、その日の夜 11 時にテストの 1 週間延期の知らせが入った。みんな (筆者を含めて) 大喜びであった。しかし、1 週間後に行なわれたテストのできはというとふだんとそれほど変わらなかった。
原稿にも同じことが言えるかもしれない。締切が 1 週間延びたからといって品質はそれほど上がらないだろう (それでも 2〜3 日延びればだいぶ違うと都合のいいことを考えている)。
脱線につぐ脱線、閑話休題。歴史的な事実が発生当時から後世に残る出来事だとわかるものは希だろう。
そういった意味で、今は認識していないが動いているプロジェクト GNU は歴史的存在価値があるのかもしれない。
前回に引き続き、GNU の歴史を紐解くことにする。この歴史はまだ終わっていない。現在進行形なのである。表 1 に 1984 年から 1987 年までのプロジェクト GNU の歴史を示す。
表 1. プロジェクト GNU 歴史年表
年 代 出 来 事 1984/M GNU システムは Unix ベースのシステムとする。 GNU Manifesto(GNU 宣言) を作成する。 GNU Emacs の開発を開始する。 1985/? GNU Emacs の配布を開始する。 1985/3 GNU Manifesto を Dr. Dobb's Journal 誌に発表する。 1985/ 夏 GNU Manifesto を付けて GNU Emacs バージョン 16 を配布する。 1986/2 Free Software Foundation, Inc. (通称 FSF) を設立する。 GNU Bulletin Vol.1 No.1 を発行する。 GNU Emacs バージョン 17 や Is、make、texinfo を配布する。 1986/? gcc (GNU C Compiler) の開発を開始する。 1987/7 Byte 誌に Richard M. Stallman のインタビュー記事が掲載される。 1986/E〜 1987/B gdb(GNU Debugger) を作成する。 1987/1 各種 GNU ソフトウェアを配布する : gdb、GNU Emacs V.18(VMS 用)、gcc、gas(VAX 用)、GNU Window(X)、 Is、grep、make、ld、cron、at、m4、gawk、bison、MIT Scheme、 Hack、GNU Chess diff や lex の作成を開始する。
これは文献★2 によると、GNU Emacs は、最初から作ったり、あるいは MIT 時代に rms(Richard) が作成した Emacs(Twenex Emacs あるいは TOPS Emacs) を元にしたのではなく、当初 James Gosling Emacs(James Gosling が作ったのでこう呼ばれている) をベースに作成した。
この James Gosling Emacs は筆者らが初めて使った Emacs である。当時 CMU(カーネギー・メロン大学) の学生であった James Gosling が、Unix 用の Emacs として最初に 1979 年に開発した。MOCH Lisp と呼ばれるカスタマイズ用の拡張言語を備えている。この MOCH Lisp は一般の Lisp と比較すると、あるいは GNU Emacs の拡張言語である Emacs Lisp と比較すると、機能は十分ではない。この Emacs の作成時に掲げた目標は「プログラム言語を作っているのではなく、拡張言語付きエディタを作ること」とのこと。ちなみに彼は CMU で Andrew ウィンドウ・システム上のエディタを開発したのち、Sun で NeWS の開発に携わっていた。★3 当初、このエディタのソース・コードは大学間で自由にコピーすることができたが、その後、この Emacs のバージョンアップは Unipress Inc. という会社で販売とともに行なわれるようになったため、それより後のものは自由にコピーできなくなった (この会社の手に渡ったものは Unipress Emacs と呼ばれる)。
TOPS Emacs(オリジナル PDP-10 Emacs、Twenex Emacs) のフルセットと同じものを Unix 上に狙ったものに次のものがある。
【Gosling Emacs】
James Gosling が作成したもの。現在は Unipress 社が販売している。日本国内では DIT 社が扱っている。現在のバージョンは MS-DOS 上でも動作しているとのこと。最初に発売されたワークステーション SONY NEWS のシリーズには Unipress Emacs がバンドルされていたことを思い出す。
【CCA Emacs】
Computer Corp. of America で作成されたもの。USENIX という米国の Unix のユーザ・グループがある。そこの活動の一貫として、USENIX テープと銘打って面白そうなソフトウェアを配布している。何年か前に CCA Emacs を USENIX テープの中に入れて配布したことがある。しかし、数カ月の後に CCA Emacs のソース・コードの中にライセンスに触れるものが入っていたことがわかったのですぐに全てを消すように、との連絡がきたことがあった。その後、米国のソフトウェア販売会社が CCA Emacs を売り出した。日本国内ではライフボートが扱っていた覚えがある。特徴として GNU Emacs よりも TOPS Emacs に似ている。
【GNU Emacs】
これら 3 種類のうちの 2 種類 (CCA Emacs と GNU Emacs) に関して、以前、「UNIX Review」誌で取り上げられたことがある。★4 その文献では GNU Emacs の方が優れているとの結論を出している。Golsing Emacs や CCA Emacs、Twenex Emacs を rms が比較討論した結果が、GNU Emacs 配布テープに emacs/etc/GOSDIFF と emacs/etc/CCADIFF、emacs/etc/DIFF というファイル名で入っている。
アーカイブ・プログラムとは複数のファイルを 1 つにまとめるプログラムである。使用目的に合わせてさまざまなオプションがある。
使用目的を分類するとおおむね次のようになるだろう。◆2
バックアップ用
システムのディスクのバックアップとして使用する。
配布用
ソース・プログラムやライブラリ、パッケージを配布する際に使う。例えば、サイズが小さければフロッピー・ディスクに入れてもいいし、大きければ MT やストリーマを使うことになる。このようなメディアの使い分けで、バックアップの目的で使われる場合もある。
ライブラリ用
オブジェクト・ファイルやソース・プログラムをまとめておき、リンク時やインクルード時に必要なものだけを取り込む。
1 つにまとめた後、圧縮するオプションもある (配布用)。アーカイバと呼ばれることもある。ディスク上のファイルをテープにコピーする場合によく使われる。テープというのは基本的に複数のレコードをバラバラに管理しにくいメディアなので、見かけを 1 つのファイルとして記録、再生して用いる。
例えば、フロッピー・ディスクに格納することを考えてみる。1 つにまとめないで格納すると、オーバヘッドがあり多くのファイルが入らない。アーカイブ・プログラムを用いればファイルをより多く格納することができ、圧縮するオプションを併用するとさらに効率がよくなる。
また、anonymous ftp マシンにファイルを置いておく場合にも、ハードディスクの節約のため、あるいは取り扱いを楽にするためにアーカイブして圧縮する。anonymous ftp とは、以前の回でも説明したように、ファイル転送プログラムを使って、広域ネットワーク内で広くファイルの交換を行なう場合に用いられる方法である。
アーカイブ・プログラムと共に用いられる圧縮プログラムにもさまざまな種類がある。
これらの 3 種類の機能を比較したものを表 2 に示す。ここではバックアップ用や配布用、ライブラリ用の代表的な Unix のコマンド dump、tar、ar を想定した。
この表でマルチボリュームとは、アーカイブを複数のメディア (フロッピー・ディスクやテープ) に分けて入れる機能があるか否かを示している。また、ファイル名のリストをアーカイブ・ファイルの先頭に置けば、アーカイブ・ファイル全てをスキャンしなくても、その先頭を見るだけでアーカイブされているファイル名がわかる、という利点がある。
GNU ソフトウェアのアーカイブ・プログラムである GNU tar は表の△の機能を満たしている。
表 2. アーカイブ・プログラムの特徴
×: 機能なし △:GNU tar にある機能 ○: 機能あり
- : この項目での比較は無意味
機能 バックアップ用 配布用 ライブラリ用 (dump) (tar (ar) あるいは GNU tar) ---------------------+---------------+-----------+--------------- 内容のリストを作成する ○ ○ ○ ファイルの削除 × △ ○ ファイルを抜き出す ○ ○ ○ ファイルを追加する × △ ○ ファイルを移動する × × ○ 比較する × × ○ アーカイブ・ファイルの移植性× ○ ○ マルチボリューム ○ △ - 圧縮 × △ × ファイル名をアーカイブ・ ファイルの先頭に置く オプションがある ○ △ ○
今月は、新 / 旧 GNU ソフトウェアのリリースについてその特徴や入手方法などを紹介し、各種マシン上での GNU の採用状況と Mach カーネルの日本国内再配布について報告する。
rms も含む複数の GNU ボランティアの共同作業でこの GNU ファイル・ユーティリティ (fileutils) は作成された。これらは本年になってリリースされ、まだまだ不安定な部分もあると思う。早期品質向上のためにもユーティリティ・プログラムに関する提案やバグを報告してほしい。宛先は電子メールで bug-gnu-utils@prep.ai.mit.edu へ。
fileutils に入っているものは次の通りである。dir と vdir というのは、ls の出力結果の表示方法を変えたものである。create や mkinfo は POSIX 規格に則ったものである。
cat、chmod、cmp、cp、create、dd、dir、du、head、ln、ls、mkdir、mkfifo、mv、rm、rmdir、tail、vdir
最大の特徴は、高速な処理と使い勝手の良い点である。
コピー・フリーで適切な C ライブラリがないとの理由で、国際化機能をサポートしていない。◆3
Unix のオプションのような省略形と、長い名前の指定の両方を採用している。
-h オプションや無効なオプションを指定すると、使い方ヘルプを表示する。
GNU tail には、逆方向に表示する-r オプション (reverse) は用意されていない。そうしたい場合は、4.3BSD に入っている tac コマンドの方が便利である (tac の GNU 版は、将来 GNU 配布テープに入る予定である)。
ftp でアクセスできる方は次の情報を参考にお試しいただきたい。
方 法 anonymous ftp
マシン名 prep.ai.mit.edu
IP アドレス 18.71.0.38
ファイル名 pub/gnu/gdbm-1.3.tar.Z か、または
pub/gnu/gdbm-1.2-1.3.shar.Z
電子メールにて bug-gnu-utils@prep.ai.it.edu へ。
xgnuplot は gnuplot(グラフィック・プログラム)2.0 の X11R4 対応版で、Chris Peterson や Dana Chee、他によって作成された。
X ツールキットのコマンド・オプションやリソースを採用する。
ウィンドウのリサイズに追従する。
異なる色で点をプロットする。
FASYNC ソケットをサポートしないシステムの移値
man マクロ形式のマニュアル
X グラフィック・プログラムの初心者に役立つ例題やテストベッド (テスト・プログラムを動かすためのドライバ)
次の情報を参考に ftp でアクセスするか、あるいは電子メールにて ejk@uxh.cso.uiuc.edu へ問い合わせる。
方 法 anonymous ftp
マシン名 uxc.cso.uiuc.edu
ファイル名 pub/xgnuplot/xgnuplot.shar
ウィスコンシン大学は、作成したシミュレータ SPIM S20 に copyleft(GNU 一般公的使用許諾) を採用して、4 月から配布を開始した。◆4
copyleft を採用したからといって、すぐに GNU の ftp マシンに置かれたり配布テープに入るとは限らないが、プロジェクト GNU 以外のプロジェクトでもこのように copyleft で保護し、GNU のいうところの「フリー」な配布を保証する例が多くなっている。これによって、フリーに配布したいが商用目的には使われたくないというプログラム作成者の、あるいは配布者の意思表示が法的に有効となるわけである。殊に、米国においては (正確には日本以外では) 共有精神分かち合い感覚が日常的にも浸透しているので、copyleft の理解層も急速に広まりつつある。
SPIM S20 は、RISC チップを使った MIPS R2000/R3000 マシンのアセンブリ・ソース・プログラムをアセンブルしてからシミュレートするシミュレータで、デバッガや OS のインタフェースを持ち単体で動作するプログラムである。コンパイラを学ぶ学生のために作成された。
全ソース・コードと、MIPS マシンにはあるが Kane の本★5 に載っていない命令も含めて全ての命令について説明したマニュアルが提供される。
アセンブリ・ソース・ファイルを解読後、すぐに実行することができる。
移植性は良い (DECstation、Sun-3/4、PC/RT 上でテスト中)。
処理速度は遅い。ベンチマーク・テスト・プログラム (Dhrystone) の実行結果は 1000 で、DECstation 3100 や 68010 チップを使ったシステムに比べて約 25 倍遅い。
拡張した MIPS アセンブラ命令セットを実現する。
X Window System 用のインタフェースの採用 (今年の夏にリリース予定)◆5
ftp でアクセスできる方は次の情報を参考にお試しいただきたい。今後のバージョンアップについては電子メールにて larus@cs.wisc.edu へ問い合わせる。
方 法 anonymous ftp
マシン名 primost.cs.wisc.edu
IP アドレス 128.105.8.17
ファイル名 pub/spim.tar.Z
ワシントン大学の Robert Bedichek が、今年 1 月の USENIX コンファレンスで「Some Efficient Architecture Simulation Techniques」と題して、Tektronix 社の XD-88(88k マシン) のシミュレータ開発についての研究を発表している。OS は System V である。
System V が動作する Tektronix XD-88 ワークステーション上で動作する。
System V のシェル上で、Motorola 社 8800 のシミュレータ (I/O を含む) を使ってターゲット・マシンのカーネルをブートすることができる。
Dhystone ベンチマーク・テストによると、20MHz の 68020 ホスト・マシンでは、1 秒間に 88100 命令を 130,000 個実行する。
高速な処理 (XD-88 のカーネルのブートにはシングル・ユーザ・モードで 40 秒かかった)
フロントエンドに gdb を採用。これで、88k(88000) カーネルのシンボリックなデバッグなどが可能になる。
I/O 部分の拡張。これで新しい I/O シミュレータの追加が容易になった。
シャドウ・レジスタを固定させて、ブレークポイントやシングル・ステップを設定することができる。
ディスクは実際にないものをシミュレートしているが System V カーネルの実行には十分である。
実際のマシンか、あるいはシミュレートしている環境か、カーネルから判別できないくらいタイマー・チップやシリアル・チップ、割り込みシステムをうまくシミュレートしている。
トレース機能…キャッシュのシミュレーション用にトレース・データを変換することができる。カーネルやユーザ・データを変換することができる。カーネルやユーザ・コード用の正確なトレース・データをとるための方法はあまりない。一例を提供している。従って、特異なハードウェアには不向きである。
このシミュレータを使ってみたいと思う方は、どのようなホスト・マシンの上でどのような目的で使おうとしているのかを、Robert Bedichek(robert@june.cs.washington.edu) に電子メールで連絡してほしい。そのコードに対して何をしなければならないかを研究する情報を得られ、また品質の向上にもつながる。
OMRON が Mach OS のソース・コードを手数料のみで再配布する。受付は (1990 年)5 月 20 日から、再配布は 6 月 20 日からで、詳細は同社へ問い合わせのこと。この Mach は将来の GNU カーネル候補にあがっている分散 OS で、カーネギー・メロン大学の Mach プロジェクトが開発している。
この再配布によって、Mach ユーザへは研究の自由と容易性を提供し、Mach OS へはその普及に伴う品質向上をはかることができる。ソフトウェアがソース・コードで提供されることの意義にその価値を認識できる良い先例だと思う。
特にワークステーションの性能向上曲線が急カーブな近頃では、マシンの性能評価の一端となるベンチマーク・テストを標準化し、ユーザ・アプリケーションのように評価しようという動きがある。その先頭をきっているのが SPEC(Systems Performance Evaluation Cooperative) という非営利団体である。
標準化によって、各種ベンチマーク・テスト・プログラムの欠点も補われ、結果としてマイクロプロセッサの演算能力に依存した現実的でないデータが出にくくなるだろう。
興味ある点はこの SPEC ベンチマーク・テスト・プログラムの 1 つとして gcc が採用されたことである。整数演算速度の目安にしている。問い合わせ先を次に示す。◆6
SPEC c/o Waterside Associates 39510 Paseo Padere Suite 350 Fremont, CA 94538 U.S.A.
プロジェクト GNU の歴史の一部と Emacs にまつわる話をした。今月のニュースでは GNU の一般公的使用許諾で保護したプログラムや gdb(GNU DeBugger、GNU デバッガ) のフロントエンドを採用している話題を取り上げた。いろいろな GNU ソフトウェアの応用がさまざまなユーザによって行なわれている。◆7
アーカイブ・プログラムの一般概要とほんの少し GNU tar について触れた。詳細は回を改めてレビューしたい。
栗田多喜夫、「コンピューティングの玉手箱 (41)、ファイル圧縮」「bit」1988 年 5 月号
リチャード・ストールマン、斉藤康己、高木茂行、竹内郁雄、近山隆「座談会 リチャード・ストールマン氏を囲んで」「bit」1987 年 8 月号、共立出版
Scott McREGOR「James GOSLING が語るユーザー・インターフェイス」「UNIX MAGAZINE」1987 年 1 月号、アスキー
Issac J. Salzman「製品評価--from UNIX REVIEW、EMACS」"UNIX Review"1989 年 10 月号
Gerry Kane, mips RISC ARCHITECTURE, Prentice Hall, 1988
付録 表
アーカイブ・プログラム tar と cpio の比較
(×: 機能なし、○: 機能あり)
機 能 tar GNU tar cpio GNU cpio -----------------------------+------+---------+-------+---------- 内容のリストを作成する ○ ○ ○ ○ ファイルの削除 × ○ × × ファイルを抜き出す ○ ○ ○ ○ ファイルを追加する ○ ○ × × ファイルを移動する × × × × 比較する × × × × アーカイブ・ファイルの移植性 ○ ○ ○ ○ マルチボリューム × ○ ○ ○ 圧縮 × ○ × × ファイル名をアーカイブ・ ファイルの先頭に置く オプションがある × ○ × × 操作対象のファイル名を 標準入力から与える オプションがある × ○ ○ ○
GNU の小冊子「GNU ダイジェスト」を USENIX ごとに 300 部配布していたが、最近は 120 部に減った。
どうしてだろうか ? 米国の人の間で当初物珍しくて持っていったようだが、最近はそういった熱もさめたのか ?
アーカイブ・プログラムを取り上げている。BSD 系の Unix で tar コマンドが配布イメージによく用いられる。System V 系では cpio である。GNU 版も用意されている (第 7 回で触れる)。tar と cpio を比較した表をこの章の最後に示す。
GNU C ライブラリを作成しており 1992 年現在バージョン 1.05 である。
前述のように現在は GNU 一般公有使用許諾と呼んでいる。
X Window System 用のインタフェースは既にリリースされている。
SPEC ベンチマーク・テストプログラムの一部を変更した最新のバージョンを SPEC 92 と呼び、古い SPEC のバージョンと区別している。コンパイラの改良により 10 倍程度差が出るテスト・プログラムを省いた点と、整数テスト・プログラムと浮動小数点テスト・プログラムの性能を分けて表記することも勧めている。
現在は GNU 一般公有使用許諾と呼んでいる。