[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