HN 日本語サマリー

← 一覧へ戻る
プログラミング

DJGPPの歴史

The History of Djgpp (delorie.com)

38 pointsby atan211 コメント

要約

この記事は、DJGPP(DJ's GNU Programming Platform)というMS-DOS用の32ビット開発環境の歴史を解説しています。筆者のDelorie氏が、Richard Stallman氏の「gccはMS-DOSに移植できない」という言葉に挑戦し、1989年頃に開発を開始した経緯が語られています。初期のgo32エクステンダーから、標準ライブラリの構築、バージョン2での自己ブートストラップへの移行、そしてQuakeなどの有名なソフトウェアがDJGPP上で開発されたことまで、その進化の道のりが詳細に記されています。

全文翻訳

www.delorie.com/djgpp/history.html検索

DJGPPの歴史

注意:DJGPPは、通常大文字で表記されるべき場合はすべて大文字で、それ以外の場合はすべて小文字で表記されます。「Djgpp」と表記するのは間違いです。また、指が混乱してdgjppやgjgppのようなものをタイプしないように注意してください。

すべてはどのように始まったか

DJGPPは1989年頃(当初はdjgccと呼ばれていました)に誕生しました。Richard Stallman氏が、私が当時勤務していたData GeneralのNorthern New England Unix Users Group(NNEUUG)の会議で講演したときのことです。私は、FSFがgccをMS-DOSに移植する計画があるのか尋ねました(PC用の32ビットオペレーティングシステムを書きたいと思っていました)。彼は、gccは大きすぎ、MS-DOSは16ビットオペレーティングシステムなので不可能だと言いました。挑戦を受けた私は、開発を開始しました。

私が最初にビルドしたgccは1.35でした。これは386/16で動作するISC Unixシステム上でビルドしました。システムコールのカスタム置換を作成し、ISCのlibc.aとリンクし、結果のバイナリをPhar Lapのエクステンダーが使用できる32ビットEXEに変換するカスタムプログラムを書き、MS-DOSで動作する最初のgccを手に入れました。

Phar Lapがまだ仮想メモリを発見していなかったため、gccが自分自身をコンパイルするのに十分な物理メモリがありませんでした。そのため、仮想メモリを提供できるエクステンダーを書く必要がありました。Go32が誕生しました。最初のファイルは、control.c、mswitch.s、paging.c、valloc.cなど、いくつかのマイナーなファイルでした。これが機能するようになったとき、gcc 1.37が出ていたので、それがDOSプラットフォームでビルドされた最初のバージョンでした。私はこのバージョンをしばらくの間、私の32ビットOSの開発に使用していました。このOSはまだハードドライブのソースコード形式で眠っています。

ネットを漁り、最近解放されたBSDソースを見つけ、それらをMS-DOSに移植しました。これが、djgppの標準ライブラリの基盤となりました。ヘッダーは、gcc 1.37の元のg++インクルードに基づいています。このため、ヘッダーとライブラリが常に一致するわけではありません。

最初に大きな成功を収めたのはdjgpp 1.03でした。これは、まだいくつかのシェアウェアカタログで見つけることができますが、1.03はコピーレフト以前のものであり、これらのシェアウェアディーラーは違法に配布しています。

C++が追加されたときに、名前がdjgccからdjgppに変更されました。どのリリースだったかは忘れました。C++はgccに不可欠であるため、djgppはもはや「DJ's G++」を意味するのではなく、「DJ's GNU Programming Platform」のようなものを意味するようになったと思われます。

djgpp 1.05も大きなヒットでした。これは商用で入手可能になった最初のものの一つでした。djgpp 1.06はVCPIを追加しました。1.10はDPMIを追加しました。1.11はDPMIEMUを追加し、バージョン2への最初のステップとなり、GNU Compiler Binary CD-ROMに登場しました。今日、djgppは多くのプログラミングジャーナルや、多くの国の多くのCD-ROM配布物に登場しています。

バージョン2は、完全に自己ブートストラップ可能なシステムが必要になったために始まりました。go32はビルドにBorlandコンパイラを必要とするため、要件を満たしませんでした。Cygnusは、DOSベースの製品でdjgppを多用していたため、自己ブートストラップ可能なバージョンを要求しました。そこでバージョン2が誕生しました。最初の部分は、16ビットスタブを生成できるアセンブラを書くことでした。そのため、djasmが書かれました。このスタブはDPMIに依存しており、djgppの従来の「何でも実行可能」ポリシーからの逸脱です。古いgo32は、CWSDPMI(Charles Sandmann)という派生製品を通じてDPMIサービスを提供するために使用され、djgppにバンドルされる予定です。最終的には、DPMIサーバー自体も、32ビットgccコードと16ビットdjasmコードの組み合わせで書かれるか、もしgccがその時点で16ビットコードを生成できるようになれば、それらで書かれるでしょう。

多くの「サードパーティ」ソフトウェアがdjgpp用に書かれており、16ビットのルーツから成長しつつある多くのアプリケーションが、djgppの32ビット環境を活用するために書き直されています。これらの人気のある例(いくつかはまだ開発中)は、Quake、Info-Zip、GhostScript、Executor/DOS、WatTCP、Xemu、DESQview/Xの開発者キット、そして世界中の企業や個人が使用する数え切れないほどのデータ処理プログラムです。

現在の状況

バージョン2.00は、2年以上の開発を経て、1996年2月5日にリリースされました。バージョン2.01は1996年10月19日にリリースされました。バージョン2.02は1998年12月6日にリリースされました。