<!-- MHonArc v2.4.4 --> <!--X-Subject: [MUD-Dev] DGD Description --> <!--X-From-R13: "Quevfgbcure Oyyra" <QuevfgbcureONExbgbf.arg> --> <!--X-Date: Tue, 11 Apr 2000 14:26:06 -0700 --> <!--X-Message-Id: NDBBIGFBGLEIKKPEAHIBMEAIEEAA.ChristopherA@Skotos.net --> <!--X-Content-Type: text/plain --> <!--X-Head-End--> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <html> <head> <title>MUD-Dev message, [MUD-Dev] DGD Description</title> <!-- meta name="robots" content="noindex,nofollow" --> <link rev="made" href="mailto:ChristopherA@Skotos.net"> </head> <body background="/backgrounds/paperback.gif" bgcolor="#ffffff" text="#000000" link="#0000FF" alink="#FF0000" vlink="#006000"> <font size="+4" color="#804040"> <strong><em>MUD-Dev<br>mailing list archive</em></strong> </font> <br> [ <a href="../">Other Periods</a> | <a href="../../">Other mailing lists</a> | <a href="/search.php3">Search</a> ] <br clear=all><hr> <!--X-Body-Begin--> <!--X-User-Header--> <!--X-User-Header-End--> <!--X-TopPNI--> Date: [ <a href="msg00179.html">Previous</a> | <a href="msg00175.html">Next</a> ] Thread: [ <a href="msg00242.html">Previous</a> | <a href="msg00169.html">Next</a> ] Index: [ <A HREF="author.html#00176">Author</A> | <A HREF="#00176">Date</A> | <A HREF="thread.html#00176">Thread</A> ] <!--X-TopPNI-End--> <!--X-MsgBody--> <!--X-Subject-Header-Begin--> <H1>[MUD-Dev] DGD Description</H1> <HR> <!--X-Subject-Header-End--> <!--X-Head-of-Message--> <UL> <LI><em>To</em>: <<A HREF="mailto:mud-dev#kanga,nu">mud-dev#kanga,nu</A>></LI> <LI><em>Subject</em>: [MUD-Dev] DGD Description</LI> <LI><em>From</em>: "Christopher Allen" <<A HREF="mailto:ChristopherA#Skotos,net">ChristopherA#Skotos,net</A>></LI> <LI><em>Date</em>: Tue, 11 Apr 2000 12:55:41 -0700</LI> <LI><em>Importance</em>: Normal</LI> <LI><em>Reply-To</em>: <A HREF="mailto:mud-dev#kanga,nu">mud-dev#kanga,nu</A></LI> <LI><em>Sender</em>: <A HREF="mailto:mud-dev-admin#kanga,nu">mud-dev-admin#kanga,nu</A></LI> </UL> <!--X-Head-of-Message-End--> <!--X-Head-Body-Sep-Begin--> <HR> <!--X-Head-Body-Sep-End--> <!--X-Body-of-Message--> <PRE> I was surprised at the Mud-Dev dinner that a number of people were not familiar with DGD, so I thought that I would post this description of it. ------------------------------------------------------------------------ .. Christopher Allen Skotos Tech Inc. .. .. 1512 Walnut St., Berkeley, CA 94709-1513 .. .. <<A HREF="http://www.Skotos.net">http://www.Skotos.net</A>> o510/649-4030 f510/649-4034 .. DGD - Dworkin's Generic Driver ============================== DGD is an Internet server designed for extremely stable, high- performance, multi-user Internet applications. DGD offers an object- oriented run-time environment for a C/C++-like language known as LPC, as well as an integrated, persistent object database. DGD benefits from a highly efficient design; it runs on any modern Unix system and has been ported to Win32, BeOS, and the Macintosh OS. Each of these features makes DGD an ideal rapid-prototyping environment. DGD has a long track record of proven performance in commercial and non-commercial settings. DGD formed the foundation of iChat's ROOMS system and powered Yahoo! Chat, which served thousands of users. DGD was developed by and is maintained by Felix Croes since 1993; he continues to update it with new features. Architecturally DGD has a number of distinct parts: * an object-oriented dialect of C/C++ named LPC, which supports rapid prototyping; * a compiler that translates LPC source code into internal minimalist byte-code; * a runtime environment that supports a tight interpreter loop for said byte-code; * an integrated, persistent database for gigabyte-sized object state spaces; * a built-in I/O API for file and network operations;* an extremely powerful generic string parser; and * a kernel LPC library that maintains security, stability and extensibility The LPC Language ---------------- The LPC language (also known as Pike) is an object-oriented dialect of C/C++ designed to be intuitive yet powerful. LPC has a type system that helps you write structured and disciplined code, yet is flexible enough not to be constraining. * object-oriented dialect of C/C++ supports multiple and private inheritance * LPC values have run-time type: int, float, string, array, mapping, object - strings are null-safe binary byte arrays - dynamically resizable arrays support concatenation, subtraction, union, and intersection; arrays are passed by pointer, i.e. call-by-name - mappings are associative arrays with O(lg N) look-up and insertion complexities; mappings are passed by pointer, i.e. call-by-name - objects reference classes [programs] or instances [clones] - objects are persistent and must be explicitly destructed, which turns referencing values to nil The LPC Compiler ---------------- LPC classes are compiled at run-time, and DGD supports in-place recompilation. This means the server never needs to be shut down for maintenance: all object code is "hot-swappable". For even higher performance, the driver allows the compilation of LPC objects into raw C source, which may then in turn be compiled and linked with DGD itself. * peephole-optimizing run-time LPC compiler generates internal byte code * ability to recompile programs in-place with automatic data space upgrading * off-line LPC pre-compiler generates high-performance C source for linking with the DGD binary itself Runtime Environment ------------------- DGD's runtime environment is built on stability and persistence. It offers full system-state rollback and garbage collection via reference counting deallocation mechanisms. Programs and clones can be compiled, cloned, destroyed, and interrogated at runtime. * atomic function calls allow full system-state rollback in the event of a run-time error * stack-machine interpreter loop executes byte code in many single threads of short, restricted execution time * reference-counting deallocation mechanism complemented by copying garbage collection and periodic swap-outs of all objects to disk with subsequent freeing of any remaining (circular) data structures * global object namespace allow for named reference of programs and their clones SMP Support ----------- The system design of DGD includes the planned capability to support Symmetric Multi Processing (SMP) in near future. This allows for development of code today that will work with multiple processors in the future. * multi-threaded execution of the single-threaded LPC environment using the 'atomic' functionality to rollback system-wide changes when threads conflict in resource usage Database -------- DGD maintains persistence as a characteristic of its runtime environment. It does this through an integral database without any internal or external separation of functionality. Object swapping allows for gigabyte-sized databases. * full system state dump files implement persistence across reboots as well as snapshot-style state backups using fast database copy without forking * seamless object swapping mechanisms allow for smoothly running systems with states exceeding machine capacity by orders of magnitude * the mapping data type allows for rapid (O(lg N)) data lookup within objects I/O API ------- DGD's built-in I/O functionality provides for network and file operations. TCP and UDP are fully supported; ports and sockets are associated with DGD objects. All standard file access functions are available, including the ability to modify and query files and directories. * networking functionality includes ability to: - open a TCP port and associate it with an object; asynchronous connection attempts communicated through a call-back system - accept a connection, create a socket, and associate it with an object; similarly call-back based - open a UDP port and associate it with an object; asynchronous datagram input communicated through a call-back system - create outbound TCP connection attempts - send outbound UDP datagrams * file access functionality includes ability to: - write/read a range of bytes from/into a file - read the names, modification times, and sizes of the contents of a directory - delete or rename a file or directory - create a directory String Parsing -------------- DGD's string parser deconstructs text input according to the rules of a given formal grammar. The parser is more powerful than programming language compilers; its ability to accept a potentially ambiguous grammar makes it ideal for analyzing natural languages e.g. English sentences. * Tomita general LR parsing technique * generic run-time parsing ability based on BNF-style formal grammars * lazy construction of tokenization DFA and compressed parser PDAs * ambiguous grammars allowed, yielding parse trees generated in parallel * LPC functions called run-time, allowing for run-time context-sensitive pruning Kernel Library -------------- A kernel library is distributed along with the driver itself; this library is written in LPC and sits as a layer between DGD and higher-level LPC. It deals with resource control, file and object security, and user management, and offer basic functionality in the form of events. * self-contained low-level LPC layer meant to constitute the foundation of developers' own LPC systems * restricts clonable programs to reside in /obj/ directories, inheritables in /lib/ ; this discipline makes upgrading of inherited programs easier * an object ownership system * linked lists of objects per owner * an extensible resource control system with quotas * a file security system * a "thread-local storage" mechanism for data; vital for multi-processor performance * It guarantees a maintenance-level logon even in the event of an emergency malfunction in other parts of the LPC library. Availability ------------ DGD is Copyright 1993 - 2000 BeeHive Internet Technologies, Inc. The primary distribution site for the non-commercial version of DGD is at <<A HREF="ftp://ftp.imaginary.com/pub/LPC/servers/DGD/">ftp://ftp.imaginary.com/pub/LPC/servers/DGD/</A>>. Patches for the experimental branch are at <<A HREF="ftp://ftp.dworkin.nl/pub/dgd/experimental/">ftp://ftp.dworkin.nl/pub/dgd/experimental/</A>>. A commercial version of DGD is available under a license from Skotos Tech <<A HREF="http://www.skotos.net">http://www.skotos.net</A>> -- contact <<A HREF="mailto:sales#skotos,net">mailto:sales#skotos,net</A>> for more information. Skotos holds its commercial rights by a license from Acuity Corporation (formerly iChat and now a wholly owned subsidiary of Quintus Corporation). The DGD FAQ is at <<A HREF="http://www.eyesbeyond.com/dgd/faq/faq.html">http://www.eyesbeyond.com/dgd/faq/faq.html</A>>. A DGD mailing list is maintained by CIE and can be joined from the list's web page at <<A HREF="http://list.imaginary.com/mailman/listinfo/dgd">http://list.imaginary.com/mailman/listinfo/dgd</A>> or <<A HREF="mailto:dgd-request#list,imaginary.com?subject=subscribe">mailto:dgd-request#list,imaginary.com?subject=subscribe</A>>. Archives of the mailing list for are available at <<A HREF="ftp://ftp.dworkin.nl/pub/dgd/list-archive/">ftp://ftp.dworkin.nl/pub/dgd/list-archive/</A>>. _______________________________________________ MUD-Dev mailing list MUD-Dev#kanga,nu <A HREF="http://www.kanga.nu/lists/listinfo/mud-dev">http://www.kanga.nu/lists/listinfo/mud-dev</A> </PRE> <!--X-Body-of-Message-End--> <!--X-MsgBody-End--> <!--X-Follow-Ups--> <HR> <!--X-Follow-Ups-End--> <!--X-References--> <!--X-References-End--> <!--X-BotPNI--> <UL> <LI>Prev by Date: <STRONG><A HREF="msg00179.html">RE: [MUD-Dev] Historical perspective (was: dealing with foul language)</A></STRONG> </LI> <LI>Next by Date: <STRONG><A HREF="msg00175.html">Re: [MUD-Dev] Fw: 16K mud server competition !</A></STRONG> </LI> <LI>Prev by thread: <STRONG><A HREF="msg00242.html">Re: [MUD-Dev] Sony to ban sale of online characters from its popular gaming sites</A></STRONG> </LI> <LI>Next by thread: <STRONG><A HREF="msg00169.html">[MUD-Dev] Sony to ban sale of online characters from its popular gamingsites</A></STRONG> </LI> <LI>Index(es): <UL> <LI><A HREF="index.html#00176"><STRONG>Date</STRONG></A></LI> <LI><A HREF="thread.html#00176"><STRONG>Thread</STRONG></A></LI> </UL> </LI> </UL> <!--X-BotPNI-End--> <!--X-User-Footer--> <!--X-User-Footer-End--> <ul><li>Thread context: <BLOCKQUOTE><UL> <LI><STRONG>Re: [MUD-Dev] Sony to ban sale of online characters from its popular gaming sites</STRONG>, <EM>(continued)</EM> <ul compact> <ul compact> <ul compact> <LI><strong><A NAME="00217" HREF="msg00217.html">Re: [MUD-Dev] Sony to ban sale of online characters from its popular gaming sites</A></strong>, Matthew Mihaly <a href="mailto:the_logos@achaea.com">the_logos@achaea.com</a>, Wed 12 Apr 2000, 07:07 GMT </LI> </ul> <LI><strong><A NAME="00199" HREF="msg00199.html">Re: [MUD-Dev] Sony to ban sale of online characters from its popular gaming sites</A></strong>, Ryan Palacio <a href="mailto:rpalacio@verant.com">rpalacio@verant.com</a>, Wed 12 Apr 2000, 04:05 GMT </LI> </ul> <LI><strong><A NAME="00194" HREF="msg00194.html">Re: [MUD-Dev] Sony to ban sale of online characters from its popular gaming sites</A></strong>, Travis Nixon <a href="mailto:tnixon@avalanchesoftware.com">tnixon@avalanchesoftware.com</a>, Wed 12 Apr 2000, 04:03 GMT <UL> <LI><strong><A NAME="00242" HREF="msg00242.html">Re: [MUD-Dev] Sony to ban sale of online characters from its popular gaming sites</A></strong>, Ryan Palacio <a href="mailto:rpalacio@verant.com">rpalacio@verant.com</a>, Fri 14 Apr 2000, 02:51 GMT </LI> </UL> </LI> </ul> </LI> <LI><strong><A NAME="00176" HREF="msg00176.html">[MUD-Dev] DGD Description</A></strong>, Christopher Allen <a href="mailto:ChristopherA@Skotos.net">ChristopherA@Skotos.net</a>, Tue 11 Apr 2000, 21:26 GMT <LI><strong><A NAME="00169" HREF="msg00169.html">[MUD-Dev] Sony to ban sale of online characters from its popular gamingsites</A></strong>, F. Randall Farmer <a href="mailto:randy@communities.com">randy@communities.com</a>, Tue 11 Apr 2000, 18:46 GMT <UL> <LI><strong><A NAME="00181" HREF="msg00181.html">RE: [MUD-Dev] Sony to ban sale of online characters from its popular gamingsites</A></strong>, Zak Jarvis <a href="mailto:zak@voidmonster.com">zak@voidmonster.com</a>, Tue 11 Apr 2000, 21:26 GMT </LI> <LI><strong><A NAME="00178" HREF="msg00178.html">Re: [MUD-Dev] Sony to ban sale of online characters from its popular gaming sites</A></strong>, maddog <a href="mailto:maddog@best.com">maddog@best.com</a>, Tue 11 Apr 2000, 21:26 GMT </LI> </UL> </LI> <LI><strong><A NAME="00160" HREF="msg00160.html">[MUD-Dev] History, background and religion</A></strong>, Pileborg Joachim - FMT <a href="mailto:joachim.pileborg@fmt.se">joachim.pileborg@fmt.se</a>, Tue 11 Apr 2000, 17:22 GMT </LI> </UL></BLOCKQUOTE> </ul> <hr> <center> [ <a href="../">Other Periods</a> | <a href="../../">Other mailing lists</a> | <a href="/search.php3">Search</a> ] </center> <hr> </body> </html>