ArchWizard

DGD/

source navigation ]
diff markup ]
identifier search ]
file search ]
Version: [ 1.0.a0 ] [ 1.1 ] [ 1.2 ] [ 1.2p1 ] [ 1.2p2 ] [ 1.2p3 ] [ 1.2p4 ] [ 1.2.151 ]

  1 DGD (which stands for "Dworkin's Generic Driver") is a rewrite from scratch
  2 of the popular LPMud server.  It runs on Unix, Mac and Win32.  A minimal
  3 development library is included with DGD.
  4 
  5 The latest version of DGD can be found at
  6 ftp://ftp.lysator.liu.se/pub/lpmud/drivers/dgd/
  7 
  8 ---
  9 
 10 Most important changes since 1.0.9:
 11 
 12  - lock() has been replaced with a new LPC construct, rlimits.
 13 
 14     rlimits (stackdepth; ticks) { code; }
 15 
 16    The code between the curly brackets is executed with the specified limits
 17    on function call depth and ticks (= execution cost).  The value 0 can
 18    be used to mean "no change", and -1 means unlimited.  All calls are
 19    started without limits, so be sure to use rlimits in the proper top-level
 20    functions (see doc/Introduction for a list of functions called by the
 21    driver).
 22  - DGD has been ported to Win32 (95, NT) and MacOS.
 23  - It is now possible to recompile an object without first destructing it,
 24    as long as the object is not inherited.  This has the effect of replacing
 25    the program for the object as soon has the current thread has finished.
 26    Variables are preserved if they keep the same name and type.
 27  - A kernel LPC library has been added.  See doc/mud/kernel/overview for
 28    an introduction.
 29  - The commercial status of DGD has changed.  See doc/Commercial for details.
 30 
 31 ---
 32 
 33 List of incompatibilities between 1.0.9 and 1.1:
 34 
 35  - The config parameters `call_stack', `value_stack', `reserved_cstack',
 36    `reserved_vstack' and `exec_cost' are obsolete and have been removed.
 37  - driver->path_ed_read() and driver->path_ed_write() have been renamed to
 38    driver->path_read() and driver->path_write(), respectively.
 39  - driver->log_error() has been renamed to driver->runtime_error().  A
 40    third argument has been added to runtime_error(), the number of ticks
 41    left at the time the error occurred.
 42  - driver->compile_log() has been replaced with
 43    driver->compile_error(string file, int line, string error).
 44  - When the last instance of a program is removed, the function
 45    remove_program(string program, int timestamp, int index) is called in
 46    the driver object.
 47  - driver->path_object() has been replaced by call_object(), which returns
 48    an object.
 49  - driver->path_inherit() has been replaced by inherit_program(), which
 50    returns an object.
 51  - driver->compile_object() has been removed.  You can do your own object
 52    renaming by redefining find_object() and adjusting driver->call_object().
 53  - driver->interrupt() is called if the server process is terminated from
 54    the outside.
 55  - lock() has been replaced with rlimits.  Replace
 56 
 57     lock(code)
 58 
 59    with
 60 
 61     rlimits (-1; -1) { code; }
 62 
 63  - The functions driver->compile_rlimits() and driver->runtime_rlimits()
 64    have been added to compile access to rlimits at compile time and runtime,
 65    respectively.
 66  - catch() doesn't behave differently anymore when used by the driver object.
 67    The old special behaviour can be simulated with catch + rlimits.
 68  - Objects are no longer automatically compiled on first reference.  In
 69    driver->call_object(), use compile_object() to load the object if needed.
 70  - find_object() doesn't call driver->path_object() to translate the path,
 71    anymore.
 72  - STRING->function() from the auto object now also calls driver->call_object()
 73    to get the object named by STRING.  Replace such calls in the auto object
 74    by
 75 
 76     ::find_object(STRING)->function();
 77 
 78  - function_object() doesn't find static functions in other objects anymore.
 79  - clone_object() now takes an object as argument.  Redefine it in the auto
 80    object:
 81 
 82     object clone_object(string path)
 83     {
 84         object obj;
 85 
 86         obj = ::find_object(path);
 87         if (!obj) {
 88             obj = compile_object(path);
 89         }
 90         return ::clone_object(obj);
 91     }
 92 
 93  - The kfun get_exec_cost() has been removed.  Use status()[ST_TICKS] instead.
 94  - MAX_ARRAY_SIZE and MAX_MAPPING_SIZE are no longer defined in limits.h.
 95    Use status()[ST_ARRAYSIZE] instead.
 96  - send_message() now returns the number of bytes that could be sent in
 97    one call.  If this is less than the length of the string sent, the
 98    remainder is buffered and sent later.  Once the last bit of buffered
 99    data has been sent, message_done() is called in the sending object.
100  - State dumps made by DGD 1.0.9 cannot be restored by DGD 1.1.  If you
101    depend on a state dump made by DGD 1.0.9, contact me (felix@simplex.nl).

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.