Djgpp の歴史

2026/11/04 1:10

Djgpp の歴史

RSS: https://news.ycombinator.com/rss

要約▶

Japanese Translation:

DJGPP は、計算機技術の歴史において決定的な進歩を成し遂げました。当初は MS-DOS 向けの限られた GCC ポートであったものが、16 ビットハードウェア上で複雑なコードを実行可能な堅牢な GNU プログラミングプラットフォームへと変貌しました。プロジェクトは、リチャード・ストールマンが GCC を MS-DOS に移植できないと発言したことから 1989 年頃に「djgcc」として開始され、著者は ISC Unix システム上で動作する 386/16 コンピュータを用いて、独自のカスタムシステムコール置換と Phar Lap のエクステンダー向けリンカーを開発し、プロジェクトを構築しました。深刻なメモリ制約(具体的には物理 RAM の不足と、当時まだ仮想メモリをサポートしていなかった Phar Lap のエクステンダー)に対処するため、Go32 レイヤーが作成されました。初期ファイルとして control.c、mswitch.s、paging.c、valloc.c などを使用しています。標準ライブラリの基礎には、BSD libc.a を移植したものと独自の実行例が組み合わされており、ヘッダーファイルは g++ 1.37 のインクルードから導出されています。

プロジェクトは、Borland などの商業用コンパイラへの依存を脱し、完全な自己ブートストラップ化(Version 2)に成功しました。この Version 2 は、オリジナルの Go32 を構築するために Borland コンパイラが必要だったことから、Cygnus によって開始されました。取り組みの一環として、CWSDPMI(Charles Sandmann 氏)を介して DPMI に依存する 16 ビットスタブを生成するアセンブラ「djasm」の記述も含まれます。C++ サポートが追加されたことで名称は「djgcc」から「djgpp」に変更され、現在ではおそらく「DJ の GNU プログラミングプラットフォーム」を意味すると考えられています。

主要なマイナーバージョンリリースには、1.03(コピーレフト規則導入前のシェアウェア)、1.05(商業的に入手可能になった)、1.06(VCPI が追加された)、1.10(DPMI が追加された)、および 1.11(DPMIEMU が追加された)があります。Version 2.00 は 1996 年 2 月 5 日に、Version 2.01 は 1996 年 10 月 19 日に、Version 2.02 は 1998 年 12 月 6 日にリリースされました。DJGPP を使用して書き直されたか開発されたサードパーティ製アプリケーションには、Quake、Info-Zip、GhostScript、Executor/DOS、WatTCP、Xemu、DESQview/X の開発者キットなどがあります。制限のある 16 ビットアーキテクチャと高度なプログラミングニーズのギャップを架橋した DJGPP は、1990 年代末まで重要なソフトウェアアプリケーションの継続的な保守を可能にし、老朽化した技術の寿命を巧みな工学により延長する方法を示しました。

本文

DJGPP の歴史と概要

⚠️ 表記上の注意

「DJGPP」という用語は以下のルールに従って表記してください。

  • 全て大文字(
    DJGPP
    ):正式な呼称です。
  • 全て小文字(
    djgpp
    ):一般的な参照用として使用されます。
  • ❌ 禁止: 大小混在(
    Djgpp
    )、タイプミス(
    dgjpp
    、
    gjgpp
    )は正しくありません。

📜 はじめの物語

プロジェクトの発端(1989 年頃)

  • 誕生のきっかけ: Data General 勤務中の著者が NNEUUG の会議でリチャード・ストールマン氏に、「FSF は GNU コードを MS-DOS へ移植する予定はあるか?」と尋ねたことが始まりです。
    • 当時の目標:PC 用32 ビット OSの開発。
  • 当初の反応: Stallman 氏は「gcc が大きすぎるため、16 ビットの MS-DOS 上での実行は不可能」と回答しました。
  • 著者の決意: この言葉が新たな挑戦となり、すぐにプロジェクトが開始されました。

初期開発と GCC 1.35

  • 構築環境: gcc バージョン 1.35 を ISC Unix(386/16)上でビルドしました。
    • システムコールを独自実装し、ISC の
      libc.a
      とリンカしました。
    • Phar Lap のエクステンダーにより、生成されたバイナリを32 ビット EXEに変換する専用プログラムを作成しました。
  • 成果: これにより、MS-DOS で動作する最初の gcc が完成しました。

Go32 エクステンダーの開発

  • 背景: Phar Lap 社は仮想メモリ技術を知らず、gcc の再コンパイルに必要な物理メモリも確保できていませんでした。
  • 解決策: 仮想メモリ機能を付加できるGo32エクステンダーを作成しました。
    • 初期ファイル例:
      control.c
      ,
      mswitch.s
      ,
      paging.c
      ,
      valloc.c
      など。
  • リリース: この仕組みを動作させた gcc 1.37が、dos プラットフォーム上で構築された最初のバージョンとしてリリースされました。
    • 著者は現在も同プロジェクトのソースコード(32 ビット OS 開発用)を保存し続け、プロジェクトは継続中です。

ライブラリとヘッダー

  • 移植: インターネットより入手した最新の BSD ソースから
    libc.a
    を MS-DOS へ移植しました。
    • この移植版および独自ルーチンが、djgpp の標準ライブラリの基盤となりました。
  • ヘッダーファイル:
    g++ 1.37
    に付随したオリジナルの
    g++-includes
    をベースに作成。
    • ※ライブラリとヘッダーが完全に一致しない場合があります。

バージョン 1.03〜1.11 の展開

  • バージョン 1.03: 広く知られるようになった最初のバージョン(シェアウェアカタログで入手可能)。
    • 注意: GNU のコピレフト条件適用以前のバージョンのため、無断販売は違法です。
  • バージョン名変更: C++ サポート追加を機に、「djgcc」から**「djgpp」**へと改名されました。
    • ニュアンス変化: 「DJ 氏の G++」→「DJ 氏の GNU プログラミングプラットフォーム」。
  • 主要なリリースマイルストーン:
    • 1.05: 商業的に入手可能となった初期バージョンの一つ。
    • 1.06: VCPI の追加。
    • 1.10: DPMI の追加。
    • 1.11: DPMIEMU(バージョン 2 への第一歩)の追加。
      • GNU Compiler Binary CD-ROM や多数のプログラミング雑誌/CD-ROM に採用されました。

🚀 バージョン 2 の誕生と進化

開発背景:自己ブートストラップ化

  • 問題点: Go32 を構築するには Borland コンパイラが必要であり、「djgpp で自身をコンパイルする(自己ブートストラップ)」ことはできませんでした。
  • 要望: DJGPP の主要利用者を務める Cygnus 社から、自己ブートストラップ可能なバージョンの要望が出されました。

技術的転換点

  • djasm の記述: 16 ビットのスタブを生成できるアセンブラ(djasm)を開発し、自己ブートストラップを実現しました。
    • この手法は DPMI に依存するため、従来の「あらゆる環境で動作させる」というポリシーからの逸脱となります。
  • CWSDPMI の役割: 旧来の Go32 は子製品 CWSDPMI(チャールズ・サンドマン製)を通じて DPMI サービスを提供しており、今後 djgpp 付帯で出荷される予定です。
  • 将来の展望:
    • DPMI サーバー自体が 32 ビット gcc コードと 16 ビット djasm コードを組み合わせた実装へ移行。
    • gcc が将来的に 16 ビットコード生成をサポートすれば、それだけで実装が可能になる見込みです。

サードパーティ製ソフトウェアの活用

多くのアプリケーションが 16 ビットの限界を超えつつあり、djgpp の 32 ビット環境を活用した再書き換えが進んでいます。

代表的なプロジェクト(一部は現在も開発中):

  • ゲーム・エンターテインメント: Quake, Xemu
  • ユーティリティ: Info-Zip, Executor/DOS, WatTCP
  • 描画システム: GhostScript
  • その他: DESQview/X の開発者キット、世界各地のデータ処理プログラム等。

📅 現在の状況とリリース履歴

バージョン 2.00 から現在までの主要リリーススケジュールです。

バージョンリリース日概要
djgpp 2.001996 年 2 月 5 日約 2 年以上の開発期間を経てリリース。
djgpp 2.011996 年 10 月 19 日パッチ版として出荷。
djgpp 2.021998 年 12 月 6 日より安定したバージョンとして出荷。

同じ日のほかのニュース

一覧に戻る →

2026/11/09 4:08

Dux:ファイルマネージャーとテーマ機能を備えた、無料のオープンソース Wayland デスクトップシェル

## Japanese Translation: DMS 2.1 の最新リリース(コードネーム「Stormborn」)は、無料のオープンソースデスクトップ環境に大規模なアップグレードをもたらします。その統一されたビジュアル体験と強力な新機能により、アップデートの中心には Dux Modular Shell という動的デスクトップインターフェースがあります。このシェルはスムーズなアニメーション、ライトモードとダークモード間のシームレスな切り替え、および対応する GTK、GTK4 および Qt アプリケーション向けの一致した色の自動生成をサポートします。このバージョンでは高度なユーティリティも統合されており、其中包括 Dux Files — タブ、分割ビュー、検索、ゴミ箱、デバイス、ネットワーク共有を備えた高速でキーボードファーストのファイルマネージャー — と Dux GOP です。Dux GOP は CPU、メモリ、GPU、ディスク、ネットワークインターフェースなどのシステムメトリクスに対するステートレスなモニタリングを提供します。追加機能にはビデオウォールペーパー、改修されたメディアプレーヤー、インターフェースの密度調整、そしてライトおよびダークテーマの両方でターミナルの色とシンタックスハイライトを最適化する専門的な「dank16」アルゴリズムが含まれます。リリースでは、美しくデザインされたログイン体験を提供する Dux Greeter、超高速ファイルシステム検索ツールである Dux Search、Google、Microsoft、CalDAV、iCloud プロトコルを深く統合したクラウド連携機能を備えた Dux Calendar も導入されます。目立つ機能として、すべてのアプリケーションに単一のテーマを適用でき、手動設定なしで一貫した美的体験を実現できる点が挙げられます。「支払額自由」モデルを採用しており、開発インフラストラクチャの資金調達のために自主的なチップに依存しながらも、誰もがアクセスできるようにしています。高性能とモダンなデザインの組み合わせにより、DMS 2.1 はアクティブなコントリビューターコミュニティによって完全に牽引される統合的で高効率なデジタルワークスペースをユーザーに提供します。

2026/11/05 2:05

宣言的ドラッグ&ドロップ

## Japanese Translation: 元の要約は内容が充実していますが、Key Points List(特に引用および具体的なデモ例)に含まれる詳細な情報が不足しているため、完全性を保ちながら文の流れを維持しつつこれらの情報を統合した改良版を提示します。 以下に、主要な点をすべて取り入れた**改良された要約**を示します。 > Horowitz, Blinn, および Heer による論文「Declarative Dragging」は、UIST 2026 で最優秀論文賞を受賞しました。Andrew Horowitz が 2022 年に発表した数学を実感化するためのゲームプロトタイプに着想を得たこの研究は、2023 年シアトルで行われた著者間の議論を経て発展しました。本システムでは、「Declarative Dragging」(D2)というモデル駆動型アプローチによりドラッグアンドドロップのインタラクションを再定義しており、幾何学を手動で計算するのではなく未来の状態を定義します。**Dragology**ライブラリを SVG インターフェースの実装に用いた D2 は、**speculative rendering** を採用してインタラクションを瞬時にプレビューし、重労働なく滑らかなアニメーションを合成します。このフレームワークは非常に組み合わせやすく、スナップやフローティング、トランジションといったモディファイアを組み合わせて単純な動作と統合することができます。本アプローチは、代数やねじれた木、ベジェ曲線、編み目、カードの山、顔(face)、トロミノ、芽生える木などの教育用デモを含む幅広いアプリケーションを可能にします。注目すべき学術的な拡張には、並列データを同時に操作する**「Permutation lab」**と、宣言的なドラッグによってコードのリファクタリングを実感化・発見可能にする**「Hazel」**環境があります。今後の取り組みとしては、ゲームパッド制御への適応や、元の数学ゲームを 2D スクリーンから完全に機能する 3D ワールドへと移行することが挙げられます。

2026/11/09 3:16

ゴールドマンサックスが銀行家やトレーダーからClaude Codeの使用を取り下げる

ゴールドマン・サックスは、エンジニアに対し、Anthropic の Claude などのサードパーティ製の自律型 AI コーディングエージェントを用いて生産環境向けのソフトウェアを開発することを大幅に制限し、実質的にトレーダーや銀行家らが市場モデルや顧客分析のためにそれらを使用するのを禁じています。同社は全従業員向けに内部の AI アシスタントを維持しており、公式なエンジニアリング監査が欠落する外部エージェントの使用を停止しましたが、これは以前「vibe coding」として非エンジニアが最小限の監督下でツールを開発することを推奨していたガイダンスからの変更です。この方針転換は、検証されないコードがテストおよびレビュー統制を回避すること、顧客データに関する情報障壁違反、およびトークン単位で課金される生産性コスト(Accenture が現在は従業員 1 人当たり月々 29 ドルを負担して Claude を導入)への懸念に由来します。これはゴールドマンが以前トレーダー向けに同様のツールを推進したにもかかわらず、Anthropic のエンジニアと協力してバックオフィスのワークフロー向けのエージェントを開発していたことからの顕著な変化を示しています。この制限措置にもかかわらず、ゴールドマンは Anthropic の upcoming Nasdaq 上場において主要な引受業者として残っています。また、労働力削減を進めつつも Claude Code の大規模導入を計画するバークレイズなどの競合他社との対比も示されています。

Djgpp の歴史 | そっか~ニュース