[DGD] changes between 1.2 and 1.2.85

Felix A. Croes felix at dworkin.nl
Fri Mar 12 14:02:53 CET 2004


An overview of the most important changes between 1.2 and the upcoming
1.3:

 - Light-weight objects: a new type of object which is automatically
   deallocated when the last reference is removed.  Their typical use
   is data abstraction, rather than providing persistent storage.  The
   addition of light-weight objects makes LPC more of a general-purpose
   programming language.
   Other LPC drivers use structs or classes for data abstraction.
 - Both the ports listened on and the address bound to can now be
   specified in the config file, using the following mapping-like
   notation:

        telnet_port = ([ "*":6047, "10.0.0.1":6048, "localhost":6049 ]);

   This mapping can be empty.
 - IPv6 is transparently supported.  "*":6047 listens on both IPv4 and
   IPv6 ports.  "hostname":6048 listens on IPv4 and IPv6 ports,
   depending on whether the hostname lookup resolves for either protocol.
   "127.0.0.1":6049 and "::1":6050 only listens on the IPv4 and IPv6
   port, respectively.
 - A new kfun, datagram_challenge(), is used to help tie a UDP connection
   to a particular TCP connection.  DGD's UDP implementation is meant to
   efficiently manage communication with many different clients on the
   same port, rather than to provide raw UDP access to existing internet
   protocols.
 - A minimal crypto API has been added, consisting of arbitrary size
   integers and DES encryption/decryption in ECB mode.  DGD provides the
   programmer with the basic tools only.  Implementing particular
   communication protocols has to be done in LPC.
 - Garbage collection is now fully automatic.  In DGD 1.2, a mud would
   have to call swapout periodically to get rid of self-referential
   LPC datastructures in memory.
 - The kfun call_touch() can be used on an object, without swapping it
   in, to schedule a maintenance function call for the first time it is
   accessed thereafter.
 - A new config file parameter, dump_interval, specifies the expected
   interval in seconds between state dumps.  This affects the speed at
   which a swapfile is rebuilt after a state dump.
 - compile_object() now has an optional second argument, a string with
   LPC source code to compile the object from.  This effectively
   introduces arbitrary names for objects.
 - The position of a whitespace token rule in a grammar is now
   significant.  Previously, it was implicitly assumed to be the first
   (and highest priority) token rule, no matter where it was declared.
 - A "nomatch" token rule may be used in grammars, which matches as
   a single token a sequence of characters matched by no other token      
   rule.  This can be used to implement regular expression pattern
   matches on strings.

Regards,
Dworkin
_________________________________________________________________
List config page:  http://list.imaginary.com/mailman/listinfo/dgd



More information about the DGD mailing list