Getting and Compiling &dgd; Where can I get &dgd; from? Dworkin hosts the primary distribution site for &dgd; himself. Both the source code (with patches up to the current version of 1.2p2) and binary releases (for selected architectures) of the stable development branch of &dgd; can be found at the site. This site also provides patches for the experimental releases. These experimental releases are (by definition) not guaranteed to be stable but contain developmental code which will eventually become the next stable release (likely &dgd; 1.3). In terms of bug fixes the following table indicates the correspondence between the experimental and stable branches. Stable versus experimental &dgd; series Corresponding versions 1.2 1.2p1 1.2p2 1.2.28 1.2.50
There is also an earlier &dgd; distribution site (which only contains patches up to 1.1p5). In addition to what one can find at the main site there are some &lpc; packages for &dgd;. Note that the contents of the README file on lysator are outdated, the main site is now ftp.dworkin.nl, not ftp.imaginary.com.
Is &dgd; available on my platform/OS? &dgd; is available as both source code and precompiled binary distributions. The source code is primarily provided for Unix-like operating systems and will compile on just about all such systems and platforms. Binary distributions are provided for a variety of operating systems where this the traditional method of distributing applications. Specifically, binaries for Windows 9x/NT are available in zip format, for MacOS as a binhex'ed stuffit archive, for BeOS in zip format, for the Amiga as an lha archive, and for the Atari as a zoo archive. A list of the current versions available for each OS is: OS versions available Platform: Unix Windows 9x/NT/2000/ME/XP MacOS BeOS Amiga Atari Version: 1.2 (source code) 1.2p2 1.2p2 1.2p1 (for the ppc architecture) 1_1p6 1.0a71 (very out of date and no current support) patches p1 and p2 1.2p2 (for the i386 architecture)
Compiling &dgd; For this task you will need a C compiler, the gunzip/gzip program, the tar program, the make program and the patch program (should you wish to install the patches -- and you really do). These are standard on most Unix-like systems. You will also need to select the appropriate HOST Makefile -- see doc/Platforms for more information on selecting the appropriate HOST setting for your machine. If you do not have one or more of these tools, the excellent GNU versions are available for almost any flavour of Unix (plus a few other platforms) from the main GNU ftp site or any of its many mirror sites. &dgd; is known to compile on Windows 95/NT using MSVC++ 4.x and better. It should be noted, however, that while this compilation works out of the box with MSVC++ 4.x, users of 5.x and later will need to turn off optimizations in the supplied project file. &dgd; source has also been compiled on Windows 95 with gcc from the Cygwin tools (beta 20.1 version) using a HOST configuration of LINUX and replacing src/host/lrand48.c with src/host/pc/local.c. One suspects it would also compile with the Borland compiler as well, although there are no reports one way or the other on this. If you are using OS X you can compile the unix source code if you have the Mac Dev Tools. One user points out that you may run into trouble with the ones prior to 10.2 (Jaguar) due to missing support for random(). Driver/kfun packages for &dgd; As has been mentioned before &dgd; is built with a minimalistic philosophy. This has resulted in a number of people issuing "packages" for &dgd;. The general idea behind most of these is to extend the functionality of &dgd; in some way that is of use to the author (and hopefully others) but that isn't essential. Currently the following packages are available (in the pkg directory unless otherwise specified) for the stable branch of &dgd; development. These packages must all be installed prior to compilation. Those listed in the following table were all written for &dgd; 1.1 or &dgd; 1.2. Packages for &dgd; (stable) Author Package &dgd; Description Th. Lockert of SigmaSoft alarms 1.1 Replaces the call_out related kfuns with kfuns that provide fraction (1/10th) of a second alarms and which are repeatable. comment 1.1 Allows &lpc; coders to use C++ style // comments. ctors 1.1 Provides &lpc; objects with constructors/destructors. str2val 1.1 Converts any variable to and from the string format used in save files produced by save_object. strftime 1.1 Ability to format dates and times as per the C strftime function is provided by this package. wildmat 1.1 A subset of regexp string pattern matching functionality is provided by this package. Richard Braakman net-10 1.1 The network package extends the IP networking features, allowing you to open/close TCP ports, start outgoing TCP connections and receive and send UDP packets. precomp-3 1.1 This package makes it easier to compile your &lpc; objects into C by keeping track of inherited programs for objects you wish to compile this way. It is only available for Unix-like operating systems. Wim van der Vegt 95-api 1.1 Adds 4 kfuns to dgd which make use of the win32 API and thus are specifically for Windows 95/NT. NT-api 1.1 Adds an extra 2 kfuns on top of the 95-api package which makes specific use of the NT API. This package is specifically for Windows NT. ansi 1.1 By default &dgd; filters out the escape code of the so-called ANSI colour codes and the VT100 terminal codes. This package provides a patch which allows these codes to be input and output successfully. Robert Leslie rgx 1.1 Full regular expression string pattern matching facilities are provided by this package. It was written for &dgd; 1.0.9 and uses the GNU regex library. Greg Lewis mdbm 1.1 This package provides a kfun interface for manipulation of ndbm/gdbm databases. regex 1.1 Full regular expression string pattern matching facilities are provided by this package in a somewhat different fashion than that used by the rgx package (no external libraries are involved). object_info 1.1 Provides kfuns which give you information about inherited programs, functions and global variables in an &lpc; object. Unknown rusage 1.1 Borrows the rusage efun code from the 3.2 &lpc; (Amylaar) driver and adds it as a kfun. It uses the getrusage(2) system call. In addition to those available for the stable branch of &dgd;, the following table lists packages (by name and &dgd; version) which have tracked at least partially into the experimental development line(s):
Packages for &dgd; (experimental) Author Package &dgd; Description Richard Braakman net-11 1.1.64 The network package extends the IP networking features, allowing you to open/close TCP ports, start outgoing TCP connections and receive and send UDP packets. (Last maintained by Erwin Harte.) precomp-3 1.1.44 This package makes it easier to compile your &lpc; objects into C by keeping track of inherited programs for objects you wish to compile this way. It is only available for Unix-like operating systems at the moment. Erwin Harte epp-2.3 1.2.48 EPP is for "Easy Precompilation Package". Similar in purpose to the precomp-3 package, it is a package to allow &lpc; objects to be easily precompiled into the &dgd; driver. While we have noted, for consistency, the driver version this package was produced for it should work with any later version of &dgd; too, as it doesn't actually require any &dgd; source code alterations. If you wish to use a Unix-only package on a Windows 95/NT box I suggest looking over the Cygwin package. Alternatively, if you wish to use a win32-only package on a (PC-based) Unix box then look at Wine (specifically, details on winelib, not the wine program itself). &dgd;'s extension interface &dgd; has a documented extension interface to make it easier for others to add kfuns or add special object types. See the dgd/doc/Extensions interface for details and a worked out example.