付 録 - 1

□現在配布可能な GNU ソフトウェア□

---GNU Software Available Now---

「GNU ダイジェスト」#13/'92 年 6 月号

 FSF が提供する Unix ソフトウェア・ソースの配布テープは tar 形式で入っており、次の種類の媒体を扱っている。1600 bpi(9 トラック) リール・テープ、8mm Exabyte テープ、Sun QIC-24 カートリッジ・テープ、Hewlett-Packard(16 トラック) カートリッジ・テープ、IBM RS/6000(1/4 インチ) カートリッジ・テープ (RS/6000 テープには Emacs のバイナリも含む)。また、ソース・ファイルと VMS の実行形式の入った GNU Emacs と GNU C コンパイラ用のテープも提供している。

 Unix システム用の各種 9 トラック・テープとカートリッジ・テープの内容は、(RS/6000 Emacs テープ用の場合以外は) 同じで、媒体の種類だけが異なる。Texinfo 形式のドキュメントも含む。GNU ソフトウェア・テープには texinfo.tex と texi2roff の両方のファイルが入っている。

 プログラム名に含まれているバージョン番号は、1992 年 6 月時点のものである。配布テープを注文の際は、更新されているプログラムがあれば新しいバージョンを配布する。

◎Emacs テープの内容

 このリリース・テープ (Emacs Tape) に入っているソフトウェアはかなり安定していると思われるが、いつものようにバグ報告を歓迎する。ソフトウェアによっては、以前の「言語テープ」や「ユーティリティ・テープ」に入っていたものもある。

●GNU Emacs 18.58

 1975 年に Richard Stallman は最初の Emacs を開発した。それは拡張性に富み、カスタム化が可能なリアルタイム表示のエディタであった。彼が 2 番目に実現した Emacs が GNU Emacs である。(エディタで容易に統合するために) 真の Lisp を提供している Unix システム用の初めての Emacs で、拡張性に富み、MIT の X Window System 用の特別なインタフェースも用意されている。 強力な基本コマンド群に加えて、その他の人気のある 3 つのエディタ (vi、EDT(DEC VMS エディタ)、Gosling(別称 Unipress)Emacs) をエミュレートするような拡張性も備えている。GNU Emacs は、「GNU Emacs Manual」や「GNU Emacs Lisp Reference Manual」で説明されており、ソフトウェアと共に提供される。リファレンス・カードも配布可能である。

 GNU Emacs(バージョン 18.58 時点) では、次に示す多種にわたる Unix システム上で動作する。

Alliant、Altos 3068、Amdahl(UTS)、Apollo、AT&T(3B マシンと 7300 PC)、Aviion、CCI 5/32 と 6/32、Celerity、Convex、Digital(DECstation 3100 と DECstation 5000、BSD や System V あるいは VMS が動作する Vax)、Motorola Delta(System V/68 リリース 3)、Dual、Elxsi 6400、Encore(DPC と APC、XPC)、Gould、HP(9000 シリーズ 200/300/700/800、ただし 500 では動作しない )、HLH Orion 1/05、IBM(4.2 と AIX が動作する RT/PC、AIX が動作する PS/2(i386 のみ) や RS/6000)、Integrated Solutions(Optimum V で 68020 と VMEbus を使用)、Intel 社 80386(BSD、Microport、System V、Xenix と PS/2)、Iris(2500、2500 Turbo と 4D)、LMI(Nu)、Masscomp、MIPS、National Semiconductor 32000、NCR(Tower 32)、Nixdorf Targon 31、Plexus、Pmax、Prime EXL、Sequent(Balance と Symmetry)、SONY NEWS、Stride(システム・リリース 2)、Sun(386i を含む全ての機種)、Stardent 1500 と 3000、Tahoe、Tandem Integrity S2、Tektronix(NS32000 と 4300)、Texas Instruments(Nu)、Titan P2 と P3、Ustation E30(SS5E)、Whitechapel(MG1)。

●GNU Calc 2.02

 Calc(Dave Gillespie が Emacs Lisp にて作成) は、GNU Emacs の一部として動作し、拡張性のある高性能電卓にもなる数学ツールである。共に提供される「Calc Manual」は入門と詳細のいずれにも対応している。Calc を単純な四則演算の電卓としてのみ利用してもよいが、さらに、数式形式あるいは (スタックを基にした) 逆ポーランド形式の入力方法の選択、対数、三角関数、金融関数、任意精度、複素数、ベクトル、行列、日付、時間、無限大、集合、数式処理における簡単化、微分、積分などの数式ツールとして利用可能である。

●MIT Scheme 7.0、Yale T 3.1

 Scheme は Lisp の方言の一種で、簡素化して構文上のスコープ・ルールを導入したものである。これは、MIT とほかの幾つかの大学によって、学生にプログラミングを教える目的と新しい並列プログラムの構成やコンパイルの技法を研究する目的のために設計された。MIT Scheme は C で記述され、多くの Unix システム上で動作する。これは資料「Revised3 Report On The Algorithmic Language Scheme」(MIT AI Lab Memo 848a) に従っている。資料自体は、配布ファイルに TeX で記述されたテキスト・ファイルとして入っている。

 T は Yale 大学で開発された Scheme の変形である。T は実際のプログラム開発での使用を目的としている。実際のマシン・コードを最適化、生成するコンパイラが入っており、一般のプログラミング言語で書かれているプログラムの実行速度に匹敵するほどのオブジェクト・コードの品質で、実行可能なコードを生成する。これは、BSD Vax と 680x0 システムの数機種、Sparc ワークステーション、MIPS R2000 ワークステーション (DECstation 3100 を含む)、NS 社 32000 マシン (Encore Multimax を含む) 上で動く。T は T 言語自体で記述されているので、バイナリ (これも含まれている) がないとブートストラップすることができないが、使ってみれば素晴らしいものである。いくつかのドキュメント・ファイルが配布テープに入っている。

●texinfo 2.14、texi2roff 2.0

 texinfo は、ハードコピー用のマニュアルやオンライン・ハイパー形式のマニュアル (Info と呼ばれる) に変換するユーティリティの集まりである。最新のベータ・テスト・バージョンの Texinfo パッケージには、現在のバージョンからの拡張部分や改良されたマニュアルが入っている。

 texi2roff は Beverly Erlebacher が作成した。GNU texinfo 形式のファイルを [gnt]roff プログラムで扱える形式に変換する。オプションを指定して、‐mm、‐ms、‐me などのマクロ・パッケージを使った書式へ変換する。GNU ドキュメントを印字する TeX を持っていない (が、[gnt]roff は持っている) 人のために、全ての Unix テープにこれが入っている。

●データ圧縮ソフトウェア

 配布テープには、圧縮されたファイルもある。今のところ、そのファイル名には .Z という接尾語がつく。テープには圧縮、復元ソフトウェアが入っている。compress に関わる特許問題のために、ほかの圧縮アルゴリズムに切り替えようとしている。prep.ai.mit.edu マシンからのオンライン配布対象のうち、まず、新しいソフトウェアから替える予定である。各テープには圧縮されたファイルを復元するプログラムを入れておく。

◎言語テープの内容

 このテープ (Language Tape) には、プログラミング言語ツールが入っている。コンパイラ、インタープリタ、関連プログラム (字句解析、変換プログラム、デバッガ) などである。これらのプログラムの多くは、昔のコンパイラ・テープに入っていたもので、コンパイラ・テープはもはや存在しない。

●GCC 1.40

 GNU C コンパイラはかなり移植性の良い最適化プログラムで、次の機能を持っている。レジスタの自動割り当て、共通部分式の削除、ループ内の不変式のループ外への移動、誘導変数の最適化、常数の伝搬や複製の伝搬、スタックに積んだ関数引数の遅延回復、末尾再帰関数最適化、インライン関数の展開、フレーム・ポインタの削除、ターゲット・マシンの仕様を記述したファイルから自動的に生成されるさまざまな局所最適化コード、などである。

 GCC は ANSI C の規格に完全に準拠している。32000 と 680x0(68000 系の CPU)、80386、Alliant、Convex、Tahoe、Vax CPU と RISC CPU である i860、Pyramid、Sparc、SPUR 向けの高品質のコードを生成する。MIPS RISC CPU もサポートされている。こういった CPU を使うマシンには、AIX が動作する 386、Alliant FX/8、Altos 3068、Aegis が動作する Apollo 68000/68020、AT&T 3B1、Convex C1 と C2、DECstation 3100、DECstation 5000、DEC VAX、Encore MultiMax(NS 社 32000)、Genix NS32000、Harris HCX-7 と HCX-9、HP-UX 68000/68020、BSD が動作する HP、AIX が動作する IBM PS/2、Intel 386(System V、Xenix、BSD、ただし MS-DOS 上では動作しない)、Iris MIPS マシン、ISI 68000/68020、MIPS、NeXT、Pyramid、Sequent Balance(NS 社 32000)、Sequent Symmetry(i386)、SONY NEWS、Sun-2、Sun-3(FPA オプション)、Sun-4、SPARCstation、Sun-386i がある。

 力のあるプログラマならば、大方のアーキテクチャ用のクロスコンパイラをほとんどのシステム上で構築できるだろう。作業の大部分は GCC 自体ではなく、コンパイラをサポートするツールに対して費やされることになるだろう。

 「GCC Manual」はコンパイラと共に提供される。このマニュアルは、GNU C コンパイラの起動方法、インストール方法、新しい CPU への移植について記述されている。コンパイラの新しい機能や非互換機能についての説明は、C 言語に馴染みのない人にとっては C 言語に関する良書も必要となるだろう。

●G++ 1.40.3、libg++ 1.39.0、NIH クラス・ライブラリ 2.204a

 G++ は、C++ をコンパイルするための GCC との差分の集まりである。C++ は有名なオブジェクト指向言語である。cfront(AT&T コンパイラ) は最近、ANSI とは異なってきているので、それに従わないで作成中の ANSI 規格ドラフトに G++ をできる限り準拠させたい。ANSI から大きく反れているという理由から、cfront(AT&T コンパイラ) との互換性は考慮しない。G++ は、「GNU G++ Users Guide」(まだ印刷、製本していない) と共に提供される。G++ はソース・コードを高速にコンパイルし、わかりやすいメッセージを用意して GDB ともうまく連携して動く。G++ は GCC に依存するので、GCC の同じバージョンのものを用いなければならない。

 GNU C++ ライブラリ (libg++) には拡張性に富んだ C++ のクラス・ライブラリと、G++ と共に使うためのツールが入っている。

 NIH クラス・ライブラリ (以前は OOPS(オブジェクト指向プログラムの支援、Object-Oriented Program Support) として知られる) は、Smalltalk-80 のクラス・ライブラリに似た移植性の良いクラスの集まりである。これは、NIH の Keith Gorlen が作成したもので、C++ プログラミング言語を使っている。

●gas 1.38.1、binutils 1.9、dld 3.2.3、COFF サポート

 GNU アセンブラ (gas) はかなり移植性の良い 1 パス・アセンブラである。Unix の as より約 2 倍高速で、32x32(32000 系の CPU)、680x0、80386、SPARC(Sun-4)、Vax をサポートする。

 ar、gprof、ld、nm、ranlib、size、strip の GNU 版 (binutils) がある。GNU リンカ (ld) は BSD 版よりかなり速い。多重定義のシンボルや未定義の参照部分に対して、エラー・メッセージにソースの行番号を入れて表示するという GNU リンカだけの特徴がある。

 dld は、W. Wilson Ho が作成したダンナミック・リンカである。dld ライブラリを使うプログラムは、そのバイナリの実行中に、動的にオブジェクト・ファイルをロードできるようになる。

 全面的に COFF を置き換えれば、一連の GNU ソフトウェア・ツールを全て System V 上で動かすことができる。GNU ツールは、System V のカーネルが解釈する COFF ヘッダーを使って BSD のオブジェクト・ファイルを操作することが可能である。それには robotussin というプログラムを使って、システムのライブラリを COFF フォーマットから GNU フォーマットに変換する。

●flex 2.3.7、Bison 1.18

 flex は、Unix の lex(字句解析生成プログラム) とほとんど互換性がある。Lawrence Berkeley 研究所の Vern Paxson が作成した。flex は、lex と比べて非常に効率の良い字句解析プログラムを生成する。

 Bison は Yacc と上位互換性があり、構文解析を生成する GNU 版代替ソフトウェアで、数々の特徴が備わっている。「Bison Manual」はソフトウェアと共に提供される。

●make 3.62、GDB 3.5、indent 1.2

 GNU make には独自の改良に加えて、BSD make、System V make のほとんどの特徴が備わっており、POSIX.2 上でコンパイルすることができる。並列処理や条件実行、テキスト処理といった GNU 版独自の拡張も数多く施されている。GNU make バージョン 3.62 はかなり安定している。「GNU Make Manual」もソース・ファイルと共に提供される。

 GNU デバッガ (GDB) バージョン 3.5 は、BSD 4.2 と 4.3 で動作する Vax や Sun(2、3、4、SPARCstation)、Altos、Convex、BSD が動作する HP 9000/370、HP/UX が動作する HP 9000/320、(GNU や固有のオブジェクト・ファイル・フォーマットを使う)System V 386 マシン、ISI Optimum V、Utex 2.1 が動作する Merlin、SONY NEWS、Gould NPL と PN マシン、Pyramid、Sequent Symmetry(386 ベースのマシン)、Umax 4.2 が動作する Encore マシン上で動作する。

 GDB の特徴として、(立ち上がりを速くし、メモリもそれほど必要としないようにするための) シンボル・テーブルの必要に応じた取り込み、コマンド行の編集、デバッグしているプログラムの中での関数の呼び出し機能、シリアル・ラインを用いたリモート・デバッグ、値の履歴、ユーザが定義できるコマンドを追加した。C や C++、Fortran プログラムのデバッグに用いることができる。「GDB Manual」にはリファレンス・カードが入っている。

 indent は、フリーに配布可能な UCB 版プログラムを GNU 版に修正したものである。既定値で、GNU コーディング規則に従った C ソース・コードに変換する。しかし、オプションで指定すれば、もともとの既定値であった形式や別の形式へも変換可能である。

●GAWK 2.13.2、Smalltalk 1.1.1、perl 4.019

 GAWK は System V Release 4 版の awk と上位互換である。「GAWK Manual」はソフトウェアと共に提供される。

 GNU Smalltalk は、移植性の良い C 言語で記述されたインタープリタ型オブジェクト指向のプログラミング言語システムである。機能としては、インクリメンタルなガーベージ・コレクタ、バイナリ・イメージの保存機能、ユーザの記述した C コードの呼び出しやそれに引数を渡す機能、GNU Emacs の編集モード、バイト・コードのコンパイル状況をトレースするオプションやバイト・コードの実行状況をトレースするオプション、各ユーザの初期化ファイルの自動ロードがある。

 Larry Wall は perl と呼ばれる高速なプログラムを作成した。これは、sed や awk、sh、C 言語の特徴を組み合わせたもので、これらのプログラムの機能に加えて、TCP/IP ソケットの呼び出し機能、その他の各種システム・コールのためのインタフェース、C ライブラリ・ルーチンが備わっている。

●gperf 2.1、ae、f2c 3.2.90

 gperf は、完全 (perfect) ハッシュ関数のテーブル生成ユーティリティである。実際には 2 つのバージョンの gperf があり、1 つは C 言語で書かれ、もう 1 つは C++ 言語で書かれている。いずれも C または C++ でハッシュ関数を生成する。

 ae は GCC 用のプロファイル・プログラムで、詳細な情報を出力することができる。

 f2c は、Fortran-77 のソース・ファイルを C 言語または C++ 言語へ変換する。

●gdbm 1.5、gmp 1.2

 gdbm ライブラリは、標準の dbm と ndbm 版の GNU 版代替品である。gdbm は両方の関数形式をサポートしているが、(Unix とは違って) データベースのファイルの中に無駄な空間を作らない。

 GNU MP(gmp) は、任意精度の符号付き整数あるいは有理数演算を行なうライブラリである。豊富な関数が用意されており、全て統一されたインタフェースを有している。

●texinfo 2.14 と texi2roff 2.0

 いずれも Emacs テープに入っているものと同じである。

◎ユーティリティ・テープの内容

 このテープ (Utilities Tape) には、GNU プロジェクトで作成されたプログラム (いくつかの第三者グループによって開発されたソフトウェアを含む) が入っている。ほとんどは、小物のユーティリティやその他のアプリケーションから構成されている。これらのプログラムの多くは、旧 Emacs テープや、今や現存しないコンパイラ・テープに入っていたものである。

●bash 1.12、groff 1.05、gptx 0.2

 GNU のシェル bash(Bourne Again SHell) は Unix の sh と互換性があり、csh と ksh の両方に拡張を施したものである。ジョブ制御機能や、csh スタイルのコマンド履歴、(Emacs や vi モードが組み込まれており、キーの再割り当てが可能である) コマンド行編集機能が備わっている。bash はほとんどのシステム上でインストールすることができる。

 groff は文書処理システムで、troff や pic、eqn、tbl、refer、マクロの‐man、‐ms、‐mm だけでなく、PostScript、TeX dvi 形式、タイプライタのような文字を出力するデバイスなどの各種ドライバもある。また、Berkeley 版の―me マクロの修正版や X11 用の xditview というプリビュアの拡張版も入っている。

 gptx は ptx の GNU バージョンで、交互参照表生成プログラムである。機能の 1 つとして、nroff を使わないで読みやすい KWIC(KeyWords In their Context) を生成し、TeX 互換の出力を行なうオプションもある。

●texi2roff 2.0、texinfo 2.14、make 3.62

 texi2roff と texinfo は Emacs テープに入っているものと同じである。make は言語テープに入っているものと同じである。

●tar 1.10、cpio 1.5

 GNU tar はマルチボリュームをサポートしており、まばらなファイルをアーカイブする機能、リモート・アーカイブ、アーカイブの自動圧縮 / 復元などをサポートする。とりわけ、tar を使ってファイル・システムの差分や全体のバックアップをとるという特徴がある。

 cpio は、tar とは異なるアーカイブ・フォーマットを採用している。

●diff 1.15、grep と egrep 1.5、fgrep 1.1、patch 2.0.12u6

 diff と [ef]grep プログラムは、Unix の同じ名前プログラムの GNU 版である。昔からある Unix のそれらと比較するとかなり高速に動作する。

 patch は Larry Wall のプログラムで、diff の出力結果を取り込んで元のファイルに差分情報を反映させ、パッチをあてたバージョンを生成する。

●RCS 5.6、CVS 1.3

 RCS(Revision Control System) は、大規模ソフトウェア・プロジェクトのバージョン制御と管理のためのプログラムである。GNU diff を使えば、RCS の最近のバージョンでバイナリ・ファイル (実行形式やオブジェクト・ファイル、8 ビット・データ・ファイル) を取り扱うことが可能となる。CVS(Concurrent Version System) は、複数の開発者や、複数のディレクトリ、複数のグループ環境においてソフトウェアの修正やリリースを制御する。RCS バージョン 4 以降の解析が最もうまく動作するが、それ以前の古い RCS フォーマットを解析すると、CVS の特徴を活かすことができない。「CVS-II: Parallelizing Software Development」(Berliner、Brian 共著、Proceedings of the Winter 1990 USENIX Association Conference) を参照。

●find 3.5、fileutils 3.2、shellutils 1.6、textutils 1.3

 find は、会話時に、あるいはシェル・スクリプト内で頻繁に用いられる。ある基準に一致したファイルを検索し、任意の操作を行なうような場合である。

 fileutils はファイルを対象とし、次のようなものがある。

chgrp、chmod、chown、cp、dd、df、du、install、ln、ls、mkdir、mkfifo、mknod、mv、mvdir、rm、rmdir、touch

 shellutils は、シェルの中で使う小さいコマンドやシェル・スクリプトを集めたもので、次のようなものがある。

basename、date、dirname、env、expr、groups、id、logname、nice、nohup、pathchk、printenv、printf、sleep、stty、tee、test、tty、uname、whoami、yes

 textutils プログラムには、次のようにテキスト・データを操作するものがある。

cat、cmp、comm、csplit、cut、expand、fold、head、join、nl、paste、pr、sort、split、sum、tac、tail、tr、unexpand、uniq、wc

●Ghostscript 2.4.1、Ghostview 1.3、fontutils 0.4、gnuplot 3.1

 Ghostscript は GNU のグラフィック言語である。PostScript 言語とほぼ完全な互換性を持つ。Ghostview は Ghostscript インタープリタを X11 上で使うためのユーザ・インタフェースである。Ghostview と Ghostscript が協調して動作する。Ghostview はウィンドウを作成し、そこで Ghostscript が描画する。

 fontutils は Ghostscript あるいは TeX で使うフォントの作成が可能である。まず、イメージを読み取り、ビットマップをアウトラインに変換する。汎用の変換プログラムやほかのユーティリティも入っている。

 gnuplot は、数式やデータをプロットするための対話型プログラムである。念のために、gnuplot プログラムは GNU プロジェクトで作成したものではなく、名付けたものでもない。単なる偶然である。

●m4 1.0、sed 1.08、bc 1.02

 GNU m4 は、昔からある Unix のマクロプロセッサの GNU 版で、System V Release 4 とほぼ完全な互換性を持ち、さらにいくつかの拡張が施されている。例えば、マクロに対して位置に関する引数を 9 個以上扱う。また、m4 にはファイルのインクルードやシェル・コマンドの実行、演算機能、などを行なう組み込み関数もある。

 sed は ed の入力ストリームを操作するバージョンで、テキストを扱うためにある。

 bc は会話型の任意精度の計算言語である。GNU bc は POSIX P1003.2 規格のドラフトに基づいて作られたものであるが、拡張が施されている。変数名に 2 文字以上の指定が可能で、else 文があり、論理式全てを網羅している。

●elvis 1.5、screen 2.1c、less 177

 elvis は Unix のエディタ vi/ex のクーロンである。vi/ex の表示と行モードの両方のほとんど全てのコマンドをサポートする。elvis は BSD、System V、Xenix、Minix、MS-DOS、Atari TOS 上で動作しているが、ほかのプラットホームへの移植は容易であろう。

 screen は端末エミュレータで、1 台の端末上で複数の論理的なスクリーン (ttys) を扱う。生成された仮想端末ごとに、ANSI X3.64 と ISO 2022 のいくつかの機能を加えた DEC VT100 をエミュレートする。

 less は more や pg に似ており、ページごとに読むフィルタであるが、ほとんどの類似品にはないさまざまな特徴を備えている (例えば、逆にスクロールする機能)。

●time 1.3、tput 1.0、Termcap 1.0

 time という関数は、(通常はシェルから)time コマンドの実現に用いられ、1 つのプロセスのユーザ・タイム、システム・タイム、おおよその実経過時間の統計情報を出力する。

 tput は、特殊な端末機能をシェル・スクリプトで扱えるようにするために、移植性の高い方法を提供する。通常の terminfo ではなく、termcap データベースを扱う。

 GNU termcap ライブラリは Unix の libtermcap.a の GNU 版代替であり、気軽に利用することができる。通常の termcap とは異なり、termcap の記述項目に大きさの制限を外した。多方面にわたって記述された Texinfo 形式のドキュメントを含む。

●MandelSpawn 0.06、GNU Chess 3.1、NetHack 3.0、GnuGo 1.1

 MandelSpawn は、X Window System のマンデンブローの並列プログラムである。

 GNU チェスには、テキスト・ベースのものと X 端末のインタフェースが入っている。

 NetHack は、Rogue に似たディスプレイ指向のアドベンチャー・ゲームである。GnuGo は囲碁プログラムであるが、まだ強くない。

◎体験テープの内容

 このテープ (Experimental Tape) には現在ベータ・テストのソフトウェアも含む。ソフトウェアによっては既に配布テープへリリースされたものもある。冒険好きな人に配布可能である。

●GCC 2.1

 GCC バージョン 2 の新しい機能を次に示す。命令スケジューリング、ループの展開、遅延スロットの活用、末端関数の最適化、定数との乗算最適化、基本ブロック間でのある程度の共通部分式の削除 (CSE)(命令スケジューリングや遅延スロットの活用は全てのマシン記述に用意されているわけではない)。関数間の CSE は完成したが、組み込む前に整理する必要がある。位置独立コード生成は 88000 と Sparc をサポートする。まもなく 680x0 もサポートする予定である。

 また、GCC 2 では、64 ビット演算のコードも生成可能になっている (long long int と入力する)。バージョン 1 でサポートしているほとんどのマシン・コードを生成する。さらに、IBM RT/PC や IBM RS/6000、Motorola 88000、Acorn RISC マシン、AMD 29000、HP-PA(700 あるいは 800) もサポートしている。IBM 379 や Intel 社 960、NCUBE への移植も進んでいる。バージョン 2 では、適切なアセンブラがあれば a.out や COFF、Elf、OSF/Rose ファイルを生成することができる。デバッグ情報も次に示すいくつかの形式で生成可能である。BSD stab や COFF、ECOFF、stab 付きの ECOFF、Dwarf(RS/6000 用のデバッグ情報はまだサポートしていない)。

 バージョン 1 のマシン記述を全て更新したわけではないので、機種によっては動作しないものもあり、命令スケジューリングや遅延スロットの特徴を活かす作業が必要なものもある。(Tron 向けの新しい移植と同様)Pyramid や Alliant、Tahoe、Spur 用の古いマシン記述の作業は行なっていない。しかし、その作業を行ないたい人のために配布の中にそれらをまだ入れてある。

 バージョン 2 では、新しいコンフィギュレーションの方法を採用し、クロスコンパイラを作成する場合は、ホスト・マシンと同じ機種のターゲット・マシン用のコンパイラを作成する場合と同様の手間で容易に行なうことができる。また、より一般的な呼び出し形式もサポートする。引数を「参照渡し」にし、スタック上に引数の場所を予め確保しておくことができる。Sparc マシン上では、構造体の引数を扱う場合の標準的な方法を採用している。構造体を返す値についてはまだ問題がある。幸い、じきに修正される予定である。

 バージョン 2 のコンパイラは、3 つの言語 (Objective C、C、C++) をサポートする。ソース・ファイル名から言語を選択するようになっている (Objective C のフロントエンドは NeXT 社から寄付された)。Objective C プログラムの実行に必要な実行時ルーチンの作業はだいぶ進んでいるが、まだ配布することはできない。

 C 言語は拡張され、関数の入れ子や、関数をまたがる goto、ラベルのアドレスの取得をサポートする。

●GDB 4.5

 GDB 4 には、3.5(現在のリリース・テープのバージョン) 以降の多くの新しい機能が入っている。例えば、シリアル・ラインや TCP/IP 上のリモート・デバッグ、ウォッチ・ポイント、読みやすい出力や簡単化したコマンド・インタフェース、多くのバイナリ形式のサポート (BFD を使って)、C++ 用の制限付きデバッグ (GCC バージョン 2 を使った場合)、Modula-2 用の基本的なデバッグ機能のサポート (このコンパイラは New York 州立大学 Buffalo 校で開発され、その他のバージョンの GDB では動作しないだろう)、SunOS 共用ライブラリを使ったプログラムやコア・ファイルのデバッグ機能、などである。

 GDB 4 は、クロスデバッグも可能である。あるプラットホームをターゲットにするというのは、そのマシン上で対象プログラムを実行し、クロスデバッグが可能ということである。GDB 4 で与えられたプラットホームをホスト・マシンにすると、その上で作成することは可能だが、必ずしも対象プログラムをデバッグすることができるとは限らないことを意味する。GDB 4 は次に示すマシンをサポートする。

 さらに、DEC を含むほとんどのベンダが使うコンパイラで生成されるシンボル・テーブルを GDB 4 ならば解釈することができる (このシンボル・テーブルは、ほかではどこでも使っていない形式ではあるが)。G++ のデバッグに関しては、まだ問題がある。GDB 4 は、G++1 のどのバージョンとでもうまく動作しないだろう。

●BFD

 BFD(Binary File Descriptor、バイナリ・ファイル記述) ライブラリは、Cygnus ソフトウェアからリリースされており、一連のライブラリを使うと、異なるオブジェクト・ファイルを透過的に扱えるようになる。ある GNU ソフトウェアでは、これを使うように変更している。ドキュメントが併せて提供されている。

●GNU C Library 1.03

 ライブラリは ANSI C と POSIX.1 に準拠しており、POSIX.2 ドラフト 11.2 で提案されたほとんどの関数を備える。4.3BSD C ライブラリと上位互換で、System V の多くの関数を含み、さらに GNU の拡張が施されている。

 4.3BSD が動作する HP 9000/300 シリーズと、Sun-3 と Sun-4 の SunOS 4.1 上で動作する。i860 クロス開発システムで作成することに成功した。移植は難しくない。

●libg++2.0

 これは GCC バージョン 2 用の GNU C++ ライブラリである (libg++ の詳細は「言語テープの内容」を参照)。最新バージョンは、自分で自動的にコンフィギュレーションを行なう。従って、多くのホスト・マシンで抱える問題を解決する。iostream の機能も改善された。

●GNU Graphics 0.17

 GNU グラフィックは、ASCII データやバイナリ・データから plot ファイルを生成する一連のプログラムである。Tektronix 4010、PostScript、X Window System、またはそれと互換のウィンドウ・システムの出力ドライバをサポートする。

 GNU グラフィックの新しいバージョンは、αテストの段階である。改良点は、マニュアルの改訂、graph や xplot、plot2ps の新しい機能、ln03 や TekniCAD TDA ファイル形式のサポート、スプライン・プログラムの差し替え、graph や plot を用いたシェル・スクリプトの例、統計ツールキットの追加、インストール用 configure の利用である。

◎X11 テープの内容

 X11 テープには 2 種類あり、いずれも MIT の X Window System のバージョン 11 リリース 5 が入っている。1 番目の FSF テープには、コアのソフトウェアやドキュメント、寄付されたクライアントが入っている。FSF では、X の起動や X 上での GNU Emacs の実行に必要なので、「必要な (required)」X テープを 1 番目のテープとしている。2 番目の「オプションの」FSF テープには、寄付されたライブラリやその他のツールキット、Andrew ソフトウェア、ゲーム、その他のプログラムが入っている。

●Berkeley Networking 2 テープ

 Berkeley「Net2」リリースには 4.3BSD の 2 番目の配布が含まれており、4.3BSD-Tahoe や 4.3BSD-Reno よりも新しい。ほとんど全ての BSD を含むが、一部のカーネルのモジュールやライブラリが欠けている。自分が使っている C ライブラリと同じ機能を一部提供するだろう。このリリースには、以前のリリースよりさらに多くのソフトウェアを含み、サードパーティのソフトウェアも入っている。例えば、Kerberos や GNU ソフトウェア (例えば、BSD の標準コンパイラとして採用している GCC) などである。カーネル以外で欠けているソフトウェアの代替は、GNU プロジェクトがこの他の GNU 配布テープで提供している。

◎VMS Emacs とコンパイラ・テープ

 FSF では 2 種類の VMS 用テープを提供している。1 つは GNU Emacs エディタだけが、もう 1 つには GNU C コンパイラや Bison(GCC のコンパイルに必要)、gas(GCC の出力のアセンブルに必要)、ライブラリ、インクルード・ファイルが入っている。VMS に GDB を移植したという話は聞いていない。DEC VMS C コンパイラにはいくつかのバグがあって GNU C をコンパイルすることができないので、いずれの VMS 用テープにも、ブートストラップすることができるように実行可能ファイルが入っている。