www.delorie.com/djgpp/history.html   search  
The history of djgpp

Note: DJGPP is spelled all upper case when it would normally be capitalized, and all lower case otherwise. It is never correct to spell it ``Djgpp''. Also, please be careful not to let your fingers get confused and type something like dgjpp or gjgpp.

How it all began

DJGPP was born around 1989 (originally called djgcc), when Richard Stallman spoke at a meeting of the Northern New England Unix Users Group (NNEUUG) at Data General, where I then worked. I asked if the FSF ever planned on porting gcc to MS-DOS (I wanted to use it to write a 32-bit operating system for PCs), and he said it couldn't be done because gcc was too big and MS-DOS was a 16-bit operating system. Challenge in hand, I began.

The first gcc I built was 1.35, which I built on an ISC Unix system running on a 386/16. I wrote custom replacements for the system calls, linked with ISC's libc.a, write a custom program to turn the resulting binary into a 32-bit EXE that Phar Lap's extender could use, and had the first gcc that ran on MS-DOS.

Because Phar Lap hadn't discovered virtual memory yet, and I didn't have enough physical memory to let gcc compile itself, I had to write an extender that could provide virtual memory. Go32 was born. The first files were control.c, mswitch.s, paging.c, and valloc.c, among a few other minor files. By the time I got this working, gcc 1.37 was out, so that was the first version that was built on a dos platform. I used this version for a while to work on my 32-bit OS, which I still have lurking around on my hard drive (in source form).

I scrounged through the net and found the recently free'd BSD sources, and ported their libc.a to MS-DOS. This, and many custom routines, was the basis for djgpp's standard library. The headers were based on the original g++-includes from g++ 1.37. This is why the headers don't match the libraries all the time.

The first version that made it big was djgpp 1.03, which can still be found in a few shareware catalogs, even though 1.03 was pre-grok-copyleft, and those shareware dealers are distributing it illegally.

The name was changed from djgcc to djgpp when C++ was added. I forget which release this was. Since C++ is integral to gcc, djgpp no longer stands for "DJ's G++" but probably stands for something like "DJ's GNU Programming Platform".

djgpp 1.05 was another big hit, as this was one of the first that was commercially available. djgpp 1.06 added VCPI. 1.10 added DPMI. 1.11 added DPMIEMU, the first step towards version 2, and appeared on the GNU Compiler Binary CD-ROM. Today, djgpp appears in many programming journals and on many CD-ROM distributions in many countries and languages.

Version 2 began due to a need to have a system that could be fully self-bootstrapping. Since go32 requires a Borland compiler to build, it didn't fit the bill. Cygnus, a big user of djgpp for their DOS-based products, requested a self-bootstrapping version, so version 2 was born. The first part was writing an assembler that could produce the 16-bit stub, so djasm was written. This stub relies on DPMI, a break from djgpp's traditional "run on anything" policy. The old go32 was used to provide DPMI services through an offspring product called CWSDPMI (Charles Sandmann), which will ship with djgpp. Eventually, even the DPMI server will be written in a combination of 32-bit gcc code and 16-bit djasm code, or if gcc can produce 16-bit code by then, in that.

Many "third-party" software has been written for djgpp, and many applications that are outgrowing their 16-bit roots are being rewritten to take advantage of djgpp's 32-bit environment. Popular examples of these (some are still in the works) are Quake, Info-Zip, GhostScript, Executor/DOS, WatTCP, Xemu, DESQview/X's developers kit, and countless data processing programs used by companies and individuals throughout the world.

Where we are now

Version 2.00 shipped on February 5, 1996, after more than two years of development. Version 2.01 shipped October 19, 1996. Version 2.02 shipped December 6, 1998.

  webmaster     delorie software   privacy  
  Copyright © 1998     Updated Dec 1998